操作系统-期末复习二

二、进程

2.1进程的描述 

进程实体:由程序段、相关的数据段和PCB组成,所谓创建和撤销进程实际是对其中的PCB的创建和撤销。(PCB:进程控制块Process Control Block)

操作系统是根据PCB对并发执行的进程进行控制和管理。进程控制块是进程存在的唯一标志。

进程的特征:动态性、并发性、独立性、异步性

进程的三种基本状态:就绪状态、执行状态、阻塞状态(阻塞典型事件:请求I/O,申请缓冲空间等)。

 挂起操作

进程处于静止状态,暂停执行(执行状态下挂起),暂不接受调度(就绪状态下挂起)

2.2进程控制

进程控制是进程管理最基本的功能,包括创建进程、终止进程、阻塞进程、挂起进程,使进程在不同状态间自如转换,通过原语操作实现。

操作系统内核的功能:中断处理,时钟管理,原语操作(不可分割,执行过程不允许中断,所以一般都是执行最关键的操作用原语)。

进程的控制原语包括:

进程的创建

调用原语create()创建进程

①申请空白PCB,为新进程分配资源。

②初始化进程控制块。

③将新进程插入就绪队列(如果进程就绪队列能够接纳新进程)。

进程的终止

进程正常结束、进程运行中出现异常事件、外界干扰会引起进程终止。

调用撤销原语destory()

①根据被终止进程的标识符,从 PCB 集合中检索出该进程的 PCB,从中读出该进程的状态。

②若被终止进程正处于执行状态,应立即终止该进程的执行,并置调度标志为真,用于指示该进程被终止后应重新进行调度。

③若该进程还有子孙进程,还应将其所有子孙进程予以终止,以防它们成为不可控的进程。

④将被终止进程所拥有的全部资源,或者归还给其父进程,或者归还给系统。

⑤将被终止进程(PCB)从所在队列(或链表)中移出,等待其他程序来搜集信息。

进程的阻塞与唤醒

正在执行的进程,无论遇上哪种阻塞事件,都会调用阻塞原语block()将自己阻塞,立刻停止进程的执行,把PCB的状态为改为阻塞态,并将PCB根据优先级插入阻塞队列,系统重新调度。当被阻塞的进程需要的实践发生后,调用wakeup()原语,将等待进程唤醒。改写其PCB中的状态位,把PCB插入就绪队列中。

进程的阻塞与唤醒引起进程阻塞或唤醒的事件:向系统请求共享资源失败,等待某种操作的完成,新数据尚未到达,等待新任务的到达。

进程的挂起与激活

通过挂起原语suspend()将进程挂起,若处于活动就绪态,将其改为静止就绪态;若为阻塞态,则改为静止阻塞态。进程的激活通过激活原语active()实现。

2.3进程同步 

进程同步的相关概念

若干合作进程为了完成一个共同的任务,需要相互协作运行进度,一个进程开始之前需要要求另外一个进程已经完成某个操作,否则前面的进程只能等待。

两种相互制约关系:直接制约关系和间接制约关系。

临界资源:一次仅允许一个进程使用的资源。

同步机制:空闲让进,忙则等待,有限等待,让权等待。

进程同步机制

信号量机制

信号量是一种特殊的变量,用来表示系统中资源的使用情况。整型信号量就是一个整型变量。当其值大于0时,表示系统中对应 可用资源的数目。当其值小于0时,其绝对值表示因该资源而处在等待状态的进程的数目。当其值等于0,表示系统中对应资源已用完,并且没有因该资源处在等待状态的进程。

P(S){  
  S=S-1;
  if(S<0) W(S)//  W(S)将进程插入到信号量的等待队列中
}  
 
 
V(S){  
    S=S+1;  
    if(S<=0) R(S)//  R(S)从该信号量的等待队列中移出一个进程
} 

 PV操作的意义:我们用信号量及PV操作来实现进程的同步和互斥。PV操作属于进程的低级通信。

三、处理机调度与死锁

3.1作业调度与进程调度

操作系统—进程调度算法

3.2死锁

死锁原因:

竞争资源,进程推进顺序非法。根本原因是资源有限且操作不当。

产生死锁的四个条件

互斥条件:进程请求的资源是互斥资源。

请求和保持条件:进程必须至少保持一个资源,但如果又提出了新的资源申请,而该资源已经被其他进程占有,此时请求进程被阻塞,但对自己获得的资源不释放。

不可抢占条件:资源自己占有,使用完后再释放

环路等待条件:进程集合形成环路。

预防死锁

破坏请求和保持条件:当一个进程在请求资源时,他不能持有不可抢占资源

破坏不可抢占条件:当一个保持了某些不可抢占性资源的进程,提出新的资源请求而不能得到满足时,他必须释放已经保持的所有资源,待以后需要时再重新申请。

破坏“循环等待”条件:一个能保证“循环等待”条件不成立的方法是,对系统所有资源类型进行线性排序,并赋予不同的序号。

避免死锁

在资源分配过程中,防止系统进入不安全状态,避免发生死锁。目前常用此方法。
系统状态:安全状态和不安全状态
当系统处于安全状态时,可避免发生死锁。当系统处于不安全状态时时,可能进入死锁。

银行家算法是避免死锁的典型算法:

操作系统-银行家算法

死锁检测与解除

死锁检测首先保存有关进程对资源的请求和分配信息,利用资源分配图检测死锁。

解除死锁方法:

剥夺资源:从其他进程中剥夺足够的资源,分配给死锁的进程,以解除死锁状态。

撤销进程:或者使全部死锁进程直接结束,或者按照某种顺序逐个撤销进程,直至有足够资源可用,是死锁状态消除。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值