目录
0.总览
1.进程描述
1.1 进程的定义
1.2 进程的组成&进程与程序的比较
1.3 进程的特点
1.4 进程控制结构
不同功能的操作系统的进程控制块的组织方式可能不一样.
链表适合频繁进程创建结束的操作系统,如果有特殊需求,可以有不同的组织方案.
2.进程管理
2.1 进程的生命期管理
最开始操作系统初始创建第一个进程,叫做init进程,这个进程再负责创建其他新的进程.
什么时候创建新的进程呢?
是用户在向操作系统发出请求之后会创建新的进程.
另外正在运行的进程执行创建进程的系统调用也会创建新的进程.
查看systemd这个程序是干啥的.
有多个就绪进程的时候什么时候选择,如何选择与后面要介绍的调度算法有关.
'
忙等待浪费的是CPU资源.
进程的等待是放弃CPU资源给别的进程使用.
等待也可以称为阻塞,比如说将内容从硬盘中读到内存中,这个过程相对于CPU的执行速度来说很慢,如果
让CPU执行忙等待是很浪费CPU资源的,这时候就需要CPU等待起来,让其他就绪的进程执行,它自身等待操
作系统把文件读到内存中去.
其次,需要和其他进程协同完成某个工作,如果其他进程没有执行,它无法执行的话,这也需要等待.
再次,需要的数据没有到达.
进程由于某种原因不得不等待的话,操作系统将会把进程从运行态变到等待状态,一旦编程等待状态就不会占用CPU了.
课后查询:忙等待与等待之间的关系?
2.2 进程状态模型
2.2.1 进程状态变化模型
2.2.2 进程状态变化图
2.2.3 进程可能的状态变化
不会持续很久,这里只是完成一个PCB的初始化过程.
2.3 进程挂起
2.3.1 什么是进程挂起
2.3.2 挂起的状态
2.3.3 与挂起相关的状态转化
2.3.4 操作系统如何管理PCB实现进程的调度
3.进程小结
4.线程
4.1 为什么使用线程
4.2 什么是线程
线程控制段TCB中包含的内容:
1.PC--程序计数器;
2.SP--堆栈
3.State--
4.Regiseters--寄存器信息
...
早期MS-DOS支持单进程;
早期UNIX多进程单线程模式;
现在Windows-NT和Linux支持多进程且在单进程中有多线程的模式.
线程有独立的寄存器和堆栈,独立的堆栈能给线程一个相对独立的控制流.
共享代码段,数据,打开的文件及网络数据等.
线程有自己独占的资源和与其他线程共享的资源.
高性能计算时强调性能,代码相对统一,用线程比较好, 如天气预报,空气动力学的计算等,
也不容易出现错误.
之前的浏览器有些使用的是多线程,现在有的比如说chrome用的是多进程,早期可能注重资源的
节省,现在更注重安全.
为什么同一进程内的线程切换时间比进程短?
与内存管理相关,因为同一进程中的线程有同一个地址空间,有同一个进程的页表,切换的时候
不需要切换内存管理所需要的的页表,所有信息可以重用,但对进程而言,切换进程,需要切换页
表,这个代价是比较大的,许多cache和tlb等硬件信息都会无效,需要重新加载.
4.3 线程的实现
4.3.1 三种线程的实现方式
线程的分类:
用户线程
内核线程
轻量级进程
用户线程操作系统是看不见的,那么用户线程是由谁来管理呢?
是由应用程序的库来管理,有专门的应用线程库来实现用户线程的管理.
内核线程有操作系统自己来管理.
4.3.2 用户线程与内核线程的对应关系
4.3.3 用户线程的实现
4.3.4 内核线程的实现
4.3.5 轻量级进程的实现
有点晕...
Linux中有哪些种类的线程?
晕啥?Linux中既有内核线程也有用户线程啊
不过轻量级进程还需要再研究一下.