北京大学操作系统总结

北京大学操作系统总结

ID:37590316

大小:1.67 MB

页数:27页

时间:2019-05-25

北京大学操作系统总结_第1页
北京大学操作系统总结_第2页
北京大学操作系统总结_第3页
北京大学操作系统总结_第4页
北京大学操作系统总结_第5页
资源描述:

《北京大学操作系统总结》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、操统期末总结操作系统期末复习ByOlittle信号量及P、V操作:信号量:semaphore•一个特殊变量•用于进程间传递信号的一个整数值•定义如下:strucsemaphore{intcount;queueTypequeue;}•信号量说明:semaphores;P操作(semWait)V操作(semSignal)P(s)V(s){{s.count--;s.count++;if(s.count<0)if(s.count<=0){{该进程状态置为等待状态;唤醒相应等待队列s.queue中等待的一将该

2、进程的PCB插入相应的等待队列个进程;末尾s.queue;重新调度改变其状态为就绪态,并将其插入就绪}队列;}}}1操统期末总结有关说明:1.P、V操作为原语操作原语(primitiveoratomicaction)完成某种特定功能的一段程序,具有不可分割性或不可中断性即原语的执行必须是连续的,在执行过程中不允许被中断,可以通过软件解法、compare&swap、exchange、屏蔽中断来实现2.在信号量上定义了三个操作初始化(非负数)、P操作、V操作3.互斥量一种锁机制进行加锁(P操作)和解锁

3、(V操作)的进程是同一个进程二元信号量:可能一个进程执行P操作,另一个进程执行V操作4.强信号量与弱信号量取决于按照什么顺序从等待队列中移走进程强信号量不会产生“饥饿”进程的同步:synchronism指系统中多个进程中发生的事件存在某种时序关系,需要相互合作,共同完成一项任务信号量及P、V操作讨论1)信号量值的物理解释s.count>0:s.count是可以执行P(s)而不被阻塞的进程数s.count<0:s.count的大小是阻塞在s.queue队列中的进程数P(s):表示申请一个资源;V(s

4、):表示释放一个资源2)P、V操作应成对出现2操统期末总结–当为互斥操作时,它们同处于同一进程–当为同步操作时,则不在同一进程中出现–如果P(s1)和P(s2)两个操作在一起,那么P操作的顺序至关重要,一个同步P操作与一个互斥P操作在一起时同步P操作在互斥P操作前–两个V操作无关紧要3)P、V操作的优缺点优点:简单,而且表达能力强(用P.V操作可解决任何同步互斥问题)缺点:不够安全;P、V操作使用不当会出现死锁;遇到复杂同步互斥问题时实现复杂管程一种同步机制是关于共享资源的数据及在其上操作的一组过程

5、(或共享数据结构及其规定的所有操作)管程的四个组成部分:•名称•数据结构说明•对该数据结构进行操作的一组过程/函数•初始化语句管程的三个主要的特性(1)模块化,一个管程是一个基本程序单位,可以单独编译(2)抽象数据类型,管程是一种特殊的数据类型,其中不仅有数据,而且有对数据进行操作的代码(3)信息掩蔽,管程是半透明的,管程中的外部过程(函数)实现了某些功能,至于这些功能是怎样实现的,在其外部则是不可见的管程有如下几个要素:(1)管程中的共享变量在管程外部是不可见的,外部只能通过调用管程中所说明的外部

6、过程(函数)来间接地访问管程中的共享变量(2)为了保证管程共享变量的数据完整性,规定管程互斥进入(3)管程通常是用来管理资源的,因而在管程中应当设置进程等待队列以及相应的等待/唤醒操作因为管程是互斥进入的,所以当一个进程试图进入一个已被占用的管程时,应当在管程的入口处等待,所以在管程的入口处应当有一个进程等待队列,称作入口等待队列如果进程P唤醒进程Q,则P等待Q继续,如果进程Q在执行又唤醒进程R,则Q等待R继续,……,如此,在管程内部,由于执行唤醒操作,可能会出现多个等待进程,因而还需要有一个进程等

7、待队列,这个等待队列被称为紧急等待队列。它的优先级应当高于入口等待队列的优先级此在管程内部可以说明和使用一种特殊类型的变量,称作条件变量:varc:condition;对于条件型变量,可以执行cwait和csignal操作cwait(c):如果紧急等待队列非空,则唤醒第一个等待者;否则释放管程的互斥权,执行此操作的进程进入c链尾部csignal(c):3操统期末总结如果c链为空,则相当于空操作,执行此操作的进程继续;否则唤醒第一个等待者,执行此操作的进程进入紧急等待队列的末尾StructONE_IN

8、STANCE{elsesemaphoremutex;//入口互斥队列,初V(instance.mutex);值1};semaphoreurgent;//紧急等待队列,初Voidcwait(ONE_INSTANCEinstance,值0semephores,intcount)inturgent_count;//紧急等待队列计数,{初值0count++;};if(instance.urgent_count>0){ClassCMonitorElements{instance

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。