1、进程和线程
进程是资源分配的最小单位(时间,线程,内存?),线程是CPU调度的最小单位。
某一时间,一个线程只会属于某一进程,但一个进程可以有多个线程。
进程可以看做火车头,线程作为车厢。
不同进程间的数据很难共享,同一进程下的不同线程间的数据比较容易共享。
进程间相互不影响,但一个线程挂掉会导致整个进程挂掉。
进程可以拓展到多机。
可以通过 pstree -up来查看当前进程树;
使用fork来创建父进程的子进程;
从系统实现角度来讲,进程的实现是调用fork,线程的实现是调用clone
父进程与子进程参考文章:
https://my.oschina.net/cnyinlinux/blog/422207
时间片轮转调度算法:
https://blog.csdn.net/u013630349/article/details/47732731
《Linux内核设计与实现》读书笔记
https://www.cnblogs.com/wang_yb/p/3514730.html
进程调度算法:
1、先到先服务进程算法(FCFS):先进先出
2、短作业优先进程算法:分配给当前就绪队列中服务时间最短的进程
3、时间片轮转算法(RR):周期性产生时钟中断,结束当前运行进程,调入就绪队列,再基于FCFS策略去运行下一个时间片的进程
4、优先级调度算法:根据就绪队列中所有进程的优先级选择级别最高的进程
Linux中创建进程与其他系统有个主要区别,Linux中创建进程分2步:fork()和exec()。
fork: 通过拷贝当前进程创建一个子进程
exec: 读取可执行文件,将其载入到内存中运行
TLB:CPU中的一块固定的cache,包含了部分Page Table的映射关系,用于快速实现虚拟地址与物理地址的转换。