1、进程概论

进程管理、内存管理和文件管理是操作系统的三大核心功能。进程定义就是进展中的程序,或者说进程是执行中的程序。就是说,一个程序加载到内存后就变为进程。即:进程=程序+执行

2、进程模型

从物理内存的分配来看,每个进程占用一片内存空间,从这点上说,进程就是内存的某片空间。由于在任意时刻,CPU上只能执行一条指令,所以任意时刻上在CPU上执行的进程只有一个,而到底执行哪条指令由物理程序计数器指定。也就是说,在物理层面上,所有进程共用一个程序计数器。
从逻辑上来看,每个进程可以执行,也可以暂时挂起让别的进程执行,之后又可以接着执行。进程就需要某种办法记住每次挂起时自己所处的执行位置,这样才能在下次接着执行时从正确的地点开始。因此,从这个角度看,每个进程有着自己的计数器,记录自己下条指令所在的位置。从逻辑上说,程序计数器可以有很多个。

3、多道编程的效率

进程的存在是为了多道编程,而多道编程的目的则是提高计算机CPU的效率,例如,如果一个进程用20%的时间使用CPU进行计算,另外80%的时间用来进行I/O,则如果使用单道编程CPU的利用率只有20%,但如果使用双道编程,则CPU利用率将提高到36%。
同理,如果三道编程,则CPU利用率将提高到48.8%,四道编程CPU利用率将为59%,五道编程CPU利用率为67.2%。随着进程数量的增加,CPU利用率将逐步提升,直到某个临界点时为止。这个临界点就是多道编程的极限。超过这个极限,多道编程的好处将逐步消失。
10--进程 - 图1

4、进程的产生与消失

进程的产生事件:
1、系统初始化(神创造人)
2、执行进程创立程序(人生子)
3、用户请求创立新进程(试管婴儿)
进程的消亡事件:
1、寿终:进程运行完成而退出
2、自杀:进程因错误而自行退岀
3、他杀:进程被其他进程强行杀死
4、处决:进程因异常而强行终结
前面两种情况均为自愿退出,后面两种情况均为非自愿退出。

5、进程的状态

进程分为三种状态:执行、阻塞和就绪,如图所示:
10--进程 - 图2
三个状态之间可以进行各种转换。如果毎个状态都可以转换为另外一个状态,则一共有6种转换:
执行–就绪
执行–阻塞
阻塞–就绪
就绪–执行
阻塞–执行(不可以)
就绪–阻塞(不可以)
第5、第6两种转换是不可以的。因为阻塞进程即使被给予CPU,也无法执行,操作系统在调度时并不会在阻塞队列里挑选。因此阻塞状态无法转换为执行状态。对处于就绪状态的进程来说,它因为并没有执行,自然无法进入到阻塞状态。这就像一个人不往前走,自然就不会有任何人是其障碍。

6、进程创立

进程创立步骤:
1、分配进程控制块
2、初始化机器寄存器
3、初始化页表
4、将程序代码从磁盘读进内存
5、将处理器状态设置为用户态
6、跳转到程序的起始地址(设置程序计数器)
这里一个最大的问题是跳转指令是内核态指令,而在第5步时处理器状态已经被设置为用户态,而用户态下是不能执行内核态指令的。这个问题就要求硬件必须将第5、第6两步作为一个步骤一起完成。