一、进程的基本概念
1、前趋图:有向循环图,用于描述程序/进程之间执行的前后关系。
2、程序的顺序执行:一个、独占所有资源、只想不受外界因素影响、顺序执行。
程序顺序执行的特点有:顺序性(程序之间顺序执行)、封闭性(计算结果不受外界因素的影响)、可再现性(一个程序内:程序的结果与执行速度无关【顺序】,相同的输入,相同的输出)。
3、程序的并发执行:执行时间重叠、一个未结束,另外的一个已经开始。
程序并发执行的特点:间断性、失去程序的封闭性(多个程序共享程序中的资源)、不可再现性(并非所有的执行都是不可再现【有无共享资源,共享存储器】)。
补充:为什么引入进程?实现并发运行(解决不可再现性的问题)。
4、进程:
进程的实体:程序段、数据段、进程控制块(PCB)。
(1)进程的概念:指进程实体的运行过程,是系统进行资源分配和调度的一个独立单位。
(2)进程和程序的区别:
a. 程序为静态的,进程是动态的。
b. 程序为永久的,进程是暂时的。
c. 进程更能真实的描述并发。
d. 进程是由程序和数据、进程控制块三部分组成的。
e. 进程具有创建其他进程的功能,而程序没有。
f. 同一程序可以对应多个进程。
(3)进程的特点:
a. 结构特征:由程序段和数据段、进程控制块三部分组成的。
b. 动态性:进程是程序的执行。
c. 并发性:多个进程同存在内存中,能在一段时间内同时运行。
d. 独立性:独立运行的基本单位,独立获得资源和调度的基本单位。
e. 异步性:各个进程按各自独立的不可预知的速度向前推进。
5、进程的三种基本状态:
(1)就绪状态
(2)运行状态:单处理机(一个进程);多处理机(多个进程)。
(3)阻塞/等待状态:通过队列来管理处理
补充:
当前进程:有处理机执行(正在执行的)。
进程被唤醒,意味着进程处于就绪状态。
6、三状态的转换模型:就绪、运行、阻塞。eg:Windows
7、五状态的转换模型:就绪、运行、阻塞、新(创建新进程:许可)、退出(释放)。
8、七状态的转换模型:就绪挂起(静止就绪)、阻塞挂起(静止阻塞)、就绪、运行、阻塞、新、退出。
9、九状态的转换模型:在内存中就绪、在内存中睡眠、被抢占、用户态的运行、内核态的运行、创建、就绪且换出、睡眠且换出、僵死。eg:Linux
补充:
(1)挂起状态(不被调度):引入的原因(5条)。挂起数据放(堆栈……)在外存,PCB放在内存。
(2)进程切换和CPU模式切换(用户态/内核态)的关系:
进程切换(系统调度来做,内核来做),会引发CPU模式切换(用户态->内核态)。
一个进程中,有CPU模式的切换。eg:写磁盘(用户态 切换到 内核态)。
总结:进程切换 一定引发 模式切换;模式切换 不一定引起 进程切换。
10、进程的控制块(PCB):
(1) PCB中记录了OS所需要的、用于描述进程当前情况以及控制进程运行的全部信息。
(2)进程与PCB是一一对应的,并且PCB常驻于内存。
(3)它的作用是:
a. 将一个不能独立运行的程序编程变成一个可以独立运行的基本的单位,一个与其他进程并发执行的进程。
b. OS利用PCB来对并发执行的进程进行控制和管理,PCB是OS感知进程存在的唯一标志。
补充:
进程的创建:
A、获取进程的PID
B、申请空白的PCB
C、为新的进程分配资源
D、初始化进程控制块(PCBo)
E、将新进程插入就绪队列
(4)PCB的内容:
a. 描述信息:进程标识符(PID,唯一,通常为整数);进程名(可执行文件名);用户名,进程组关系。eg:打开任务管理器就可以查看。
b. 进程控制信息:当前状态;优先级;代码执行入口地址;程序外村地址;//;运行统计信息;进程之间的同步和通信(eg:管道);阻塞原因;进程的队列指针;进程的消息队列指针。
c. 所拥有的资源和使用情况:虚拟地址空间状况;打开文件列表。
d. CPU现场保护信息:寄存器的值;指向该进程的段/页表的指针。
(5)PCB的组织:
PCB/进程表:系统把所有的PCB组织在一起,并把他们放在内存的固定区域,就构成了PCB表。
a. 链接结构:相同状态的进程PCB组成一个链表,不同状态对应多个不同的链表。eg:就绪链表、阻塞链表……(缺点:数据丢失)
b. 索引结构:相同状态的进程,设置一个PCB索引表,存放这些进程PCB在PCB表中的地址。