【操作系统】第二章 进程管理1

1.进程的基本概念
(1)程序顺序执行时的特征:顺序性
封闭性:程序一旦开始执行,其计算结果不受外界因素影响
可再现性:程序执行只要初始条件一样,不论如何停顿,重复多少次结果都一样
(2)程序并发执行时的特征:间断性
失去封闭性:运行程序受其他程序影响
结果不可再现性
并非所有程序都能并发执行,只有不存在前趋关系的程序之间才有可能并发执行
2.进程的描述
(1)程序:程序段+数据段
进程实体(进程映像):程序段+数据段+PCB(Process Control Block,进程控制块)
PCB(Process Control Block,进程控制块):存放进程的管理和控制信息的数据结构
分析OS调度某进程的过程
1)查该进程的PCB,获取其状态、优先级;
2)根据PCB保存的处理机状态信息,恢复现场;
3)根据PCB中程序和数据的内存始址,找到其程序和数据;
4)执行中的同步信号等也要查阅PCB,暂停时进程执行的处理机环境保存回PCB
(2)进程的定义:进程是进程实体的运行过程,是系统进行资源分配和调度的一个独立单位。
进程的根本——PCB,PCB 是进程存在的唯一标志
(3)进程的特征:动态性(进程最基本的特征)
并发性(有PCB的程序才能并发)
独立性
异步性
(4)进程的基本状态
(1)就绪状态(Ready)
进程获得除CPU之外的所有必需资源,一旦得到CPU控制权,可立即运行。
就绪态的进程可有多个,排列成一个队列,称为就绪队列。
(2)运行状态(Running)
进程已获得所有运行必需的资源,正在处理机上执行。单处理机系统,执行态的进程只有一个。
(3)阻塞状态(Blocked)
正在执行的进程由于发生某事件(请求I/O、申请缓冲、时间片到)而暂时无法执行时,便放弃CPU后暂停
阻塞态的进程可有多个,排列成一个队列,称为阻塞队列。根据阻塞原因不同,会设置多个阻塞队列。
在这里插入图片描述
(5)挂起操作
不少系统除上述三种状态,还有其他一些细节状态:挂起、新建、终止状态等。
挂起状态:就绪的、但不会被调度执行

(6)进程控制块中的信息
1)进程标识符:用于唯一的标识一个进程
2)处理机状态
3)进程调度信息
4)进程控制信息
(7)PCB信息的存放
采用的数据结构:PCB结构体,PCB链表或队列
(8)PCB的组织方式
1)线性方式
2)链接方式
同一状态的PCB,依靠链接指针链接成队列。就绪队列;若干个阻塞队列;空白队列(PCB区的空PCB块)
3)索引方式
同状态的PCB同样集中记录,但以索引表的方式记录PCB的地址。用专门的单元记录各索引表的首地址。
管理系统所有PCB时,系统的几个关键指针有:执行指针、就绪指针、阻塞指针、空闲指针
3.进程控制与同步
(1)进程控制的基本过程
进程的创建:
(1) 申请空白PCB
(2) 为新进程分配资源:主要是内存资源的处理
(3) 初始化进程控制块:标识符(包括父进程的)、程序计数器指向程序入口地址,就绪态、优先级等信息的填写。
(4) 将新进程插入就绪队列
原语是由若干指令构成的原子操作过程,作为整体实现功能,不可被打断。
进程的终止:
引起进程中终止的事件:正常结束、异常结束、外界干预
终止过程:
1) 根据进程标示符,检索出该进程PCB,读其状态。
2) 归还全部资源至其父进程或系统。
3) 将该进程PCB从所在队列或链表中移出。
进程的阻塞与唤醒:
由进程调用阻塞原语阻塞自己,是主动行为:
(1)将PCB中的状态改为阻塞
(2)该PCB加入到阻塞队列中
(3)转进程调度,将处理机分配给另一进程
(4)进行进程切换,即根据两切换进程的PCB,保护与重新设置处理机状态。
进程的挂起与激活:
挂起原语将指定进程或阻塞进程挂起。
(1)检查被挂起进程的状态,活动就绪则改为静止就绪,活动阻塞则改为静止阻塞
(2)将该PCB复制到内存(方便检查)/外存(对换)指定区域
(3)若挂起的进程是执行态,则需重新进行进程调度。
进程只能挂起自己或其子孙进程。
(2)进程同步
控制同步的关键:不被打断的进行标志值的判断和修改
1)进程同步的主要任务:
使并发执行的诸进程之间能有效地共享资源和相互合作,从而使程序的执行具有可再现性。
2)临界资源:一次仅允许一个进程使用的资源。
3)互斥:在操作系统中,当一个进程进入临界区使用临界资源时,另一个进程必须等待,直到占用临界资源的进程退
出临界区,我们称进程之间的这种相互制约关系为“互斥”。
同步:多个相互合作的进程,在一些关键点上可能需要互相等待或互相交换信息,这种相互制约关系称为进程同步
关系。可理解为“有序”。
4)临界区:每个进程中访问临界资源的那段代码叫临界区。
5)同步机制应遵循的规则
空闲让进:资源使用最基本原则
忙则等待:保证互斥
有限等待:合适时被唤醒防止死等
让权等待:能主动释放CPU防止忙等
4.信号量机制
(1)整形信号量 (符合有限等待原则,但不符合让权等待原则)
P操作 wait(S):
While S<=0 do no-op;
S:=S-1;
V操作 signal(S):
S:=S+1;
(2)记录型信号量
定义信号量semaphore代表可用资源实体的数量。
P操作wait():
S.value = S.value - 1;
if S.value < 0 then block(S,L) //当≥0,代表可供并发进程使用的资源实体数
V操作signal():
S.value = S.value + 1;
if S.value <= 0 then wakeup(S,L) //将进程唤醒,由阻塞态改为就绪态 .当<0,表示正在等待使用该资源的进程数。
(3)信号量的基本应用
实现互斥:
1)互斥信号量mutex初值为1;
2)每个进程中将临界区代码置于P(mutex)和V(mutex)原语之间
3)必须成对使用P和V原语(在同一进程中),不能次序错误、重复或遗漏
实现有序:
并发执行的进程P1和P2中,分别有代码C1和C2,要求C1要在C2开始前完成。
P1 : C1 ;signal(S);
P2 : wait(S);C2 ;
同步信号量成对出现在不同进程中
(4)and型信号量
Swait(S1, S2, …, Sn)
if (S1 >=1 and … and Sn>=1 )then
for i:=1 to n do
Si:= Si -1 ;
endfor
else
将进程阻塞在第一个不能满足资源信号量的队列中。
endif

Ssignal(S1, S2, …, Sn)
for i:=1 to n do
Si:= Si +1 ;
唤醒所以与si相关的阻塞进程
endfor
(5)信号量集
Swait(S1, t1, d1, …, Sn, tn, dn)
S 为信号量(现有值);t 为下限值(现有不能少于该条件);d 为需求值;
Ssignal(S1, d1, …, Sn, dn)
只有一个信号量S的几种特殊情况:
Swait(S, d, d),,允许每次申请d个资源,若现有资源数少于d,不予分配。
Swait(S, 1, 1),蜕化为一般的记录型信号量,一次申请一个,至多分配一个(S>1时可计数,或S=1时可控制互斥)。
Swait(S, 1, 0),当S>=1时,允许多个进程进入某特定区,当S变为0后,阻止任何进程进入特定区,相当于可控开关。并不
对S资源的数量产生影响。

猜你喜欢

转载自blog.csdn.net/sun_sxq/article/details/82872772