一、进程与线程
1.进程映像(进程实体):由程序段、相关数据段和PCB三部分构成。
2.进程:进程是进程实体的运行过程,是系统进行资源分配的一个独立单位。
3.原语:在操作系统中,一般把进程控制用的程序段称为原语,原语的特点是执行期间不允许中断,它是一个不可分割的基本单位。
4.一个进程至少包括一个线程。
5.不同的线程可以执行相同的程序。
6.管道:
(1)从管道读数据是一次性操作,数据一旦被读取,它就从管道中被抛弃;
(2)管道只能采用半双工通信,即某一时刻只能单向传输。
二、处理机调度
1.调度的层次
(1)作业调度(高级调度)
(2)中级调度(内存调度)
(3)低级调度(进程调度)
2.三级调度关系
(1)作业调度为进程活动做准备,进程调度使进程正常活动起来,中级调度将暂时不能运行的进程挂起,中级调度处于作业调度和进程调度之间。
(2)作业调度次数少,中级调度次数略多,进程调度频率最高。
(3)进程调度是最基本的,不可或缺。
3.现代操作系统中,不能进行进程的调度与切换的情况:
(1)在处理中断的过程中;
(2)进程在操作系统内核程序临界区中;
(3)其他需要完全屏蔽中断的原子操作过程中。
4.进程优先级设置(一般情况)
(1)系统进程>用户进程。
(2)交互型进程>非交互型进程。
(3)I/O型进程>计算型进程。
三、进程同步
1.临界区:进程中访问临界资源的那段代码,又称临界段。
2.同步机制应遵循以下准则:
(1)空闲让进。
(2)忙则等待。
(3)有限等待。
(5)让权等待(不一定要实现)。
3.通过硬件支持实现临界段问题的方法称为低级方法,或称元方法。
4.管程:
一个代表共享资源的数据结构,以及由对该共享数据结构实施操作的一组过程所组成的资源管理程序,称为管程。
(1)管程由4部分组成:
①管程的名称;
②局部于管程内部的共享数据结构说明;
③对该数据结构进行操作的一组过程(或函数);
④对局部于管程内部的共享数据设置初始值的语句。
(2)特点:
①管程内的共享数据结构只能被管程内的过程所访问;
②每次仅允许一个进程进入管程,从而实现进程互斥。
(3)条件变量和信号量的不同点
条件变量是“没有值”的,仅实现了“排队等待”功能;而信号量是“有值”的,信号量的值反映了剩余资源数,而在管程中,剩余资源数用共享数据结构记录。
四、死锁
1.死锁产生原因:系统资源竞争或进程推进顺序非法。
2.死锁产生的必要条件
(1)互斥条件;
(2)不剥夺条件;
(3)请求并保持条件;
(4)循环等待条件;
3.死锁预防
(1)破坏互斥条件(不可行)
(2)破坏不剥夺条件
常用于状态易于保存和恢复的资源,如CPU的寄存器及内存资源。
(3)破坏请求并保持条件
采用预先静态分配方法,但可能会导致“饥饿”。
(4)破坏循环等待条件
采用顺序资源分配法。