计算机操作系统(汤子瀛)版chapter2-2.ppt
上传人:qw****27 上传时间:2024-09-12 格式:PPT 页数:81 大小:5.7MB 金币:15 举报 版权申诉
预览加载中,请您耐心等待几秒...

计算机操作系统(汤子瀛)版chapter2-2.ppt

计算机操作系统(汤子瀛)版chapter2-2.ppt

预览

免费试读已结束,剩余 71 页请下载文档后查看

15 金币

下载此文档

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

第二章进程管理(2)第二章进程管理(2)2.4进程的同步直接作用(相互合作):进程间的相互联系是有意识的安排的,直接作用只发生在相交进程间间接作用(资源共享):进程间要通过某种中介发生联系,是无意识安排的,可发生在相交进程之间,也可发生在无关进程之间2.进程的同步(直接作用)由于各进程要求共享资源,而有些资源需要互斥使用,因此各进程间竞争使用这些资源,进程的这种关系为进程的互斥。临界资源:系统中某些资源一次只允许一个进程使用,称这样的资源为临界资源或互斥资源或共享变量4.基本概念5.使用互斥区的原则使用互斥区的原则:前提:任何进程无权停止其它进程的运行进程之间相对运行速度无硬性规定进程互斥的解决有两种做法:由竞争各方平等协商引入进程管理者,由管理者来协调竞争各方对互斥资源的使用具体方法:硬件(当一个进程进入临界区,就屏蔽所有中断,但成本高)软件(用编程解决,但常常忙等待)进程的同步机制──信号量及P.V操作(解决进程同步)信号量机制信号量:semaphoreP操作P操作V操作V操作P、V操作为原语操作原语:是由若干多机器指令构成的完成某种特定功能的一段程序,具有不可分割性。即原语的执行必须是连续的,在执行过程中不允许被中断实现:开关中断信号量的使用:必须置一次且只能置一次初值初值不能为负数只能执行P、V操作用P、V操作解决进程间互斥问题互斥例子同步例子同步例子(续)用P-V操作描述前趋关系的例子用P-V操作描述前趋关系(续)经典的生产者─消费者问题经典的生产者─消费者问题S1初值为1,S2初值为0生产者-消费者问题生产者-消费者问题(续)P.V操作讨论P.V操作的优缺点8.信号量集——AND型信号量集9.一般“信号量集”进程对信号量Si的测试值为ti(表示信号量的判断条件,要求Si>=ti;即当资源数量低于ti时,便不予分配)占用值为di(表示资源的申请量,即Si=Si-di)对应的P、V原语格式为:Swait(S1,t1,d1;...;Sn,tn,dn);Ssignal(S1,d1;...;Sn,dn);一般“信号量集”可以用于各种情况的资源分配和释放,几种特殊情况:【思考题】用P.V操作解决司机与售票员的问题10.经典问题第一类:读者优先第一类读者写者问题的解法第一类读者写者问题的解法(一般信号量集)2)哲学家就餐问题#defineN5voidphilosopher(inti){while(true){思考;取fork[i];取fork[(i+1)%5];进食;放fork[i];放fork[(i+1)%5];}}为防止死锁发生可采取的措施:最多允许4个哲学家同时坐在桌子周围仅当一个哲学家左右两边的筷子都可用时,才允许他拿筷子()给所有哲学家编号,奇数号的哲学家必须首先拿左边的筷子,偶数号的哲学家则反之为了避免死锁,把哲学家分为三种状态,思考,饥饿,进食,并且一次拿到两只筷子,否则不拿3)第二类读者写者问题:写者优先条件:1)多个读者可以同时进行读2)写者必须互斥(只允许一个写者写,也不能读者写者同时进行)3)写者优先于读者(一旦有写者,则后续读者必须等待,唤醒时优先考虑写者)第二章进程管理2.5管程机制1.管程的提出2.管程概念3.管程的组成管程:一种同步机制系统按资源管理的观点分解成若干模块,用数据表示抽象系统资源,同时分析了共享资源和专用资源在管理上的差别,按不同的管理方式定义模块的类型和结构,使同步操作相对集中,从而增加了模块的相对独立性管程的形式TYPEmonitor_name=MONITOR;共享变量说明define本管程内所定义、本管程外可调用的过程(函数)名字表use本管程外所定义、本管程内将调用的过程(函数)名字表PROCEDURE过程名(形参表);过程局部变量说明;BEGIN语句序列;END;......FUNCTION函数名(形参表):值类型;函数局部变量说明;BEGIN语句序列;END;......BEGIN共享变量初始化语句序列;END;模块化:一个管程是一个基本程序单位,可以单独编译抽象数据类型:管程是一种特殊的数据类型,其中不仅有数据,而且有对数据进行操作的代码信息掩蔽:管程是半透明的,管程中的外部过程(函数)实现了某些功能,管程中的外部过程(函数)实现了某些功能,至于这些功能是怎样实现的,在其外部则是不可见的管程中的共享变量在管程外部是不可见的,外部只能通过调用管程中所说明的外部过程(函数)来间接地访问管程中的共享变量为了保证管程共享变量的数据完整性,规定管程互斥进入管程通常是用来管理资源的,因而在管程中