如果您无法下载资料,请参考说明:
1、部分资料下载需要金币,请确保您的账户上有足够的金币
2、已购买过的文档,再次下载不重复扣费
3、资料包下载后请先用软件解压,在使用对应软件打开
第二章进程管理(2)第二章进程管理(2)2.4进程的同步直接作用(相互合作):进程间的相互联系是有意识的安排的,直接作用只发生在相交进程间间接作用(资源共享):进程间要通过某种中介发生联系,是无意识安排的,可发生在相交进程之间,也可发生在无关进程之间相互感知程度2.进程的同步(直接作用)由于各进程要求共享资源,而有些资源需要互斥使用,因此各进程间竞争使用这些资源,进程的这种关系为进程的互斥。临界资源:系统中某些资源一次只允许一个进程使用,称这样的资源为临界资源或互斥资源或共享变量4.基本概念5.使用互斥区的原则使用互斥区的原则:前提:任何进程无权停止其它进程的运行进程之间相对运行速度无硬性规定进程互斥的解决有两种做法:由竞争各方平等协商引入进程管理者,由管理者来协调竞争各方对互斥资源的使用具体方法:硬件(当一个进程进入临界区,就屏蔽所有中断,但成本高)软件(用编程解决,但常常忙等待)软件解法(1)软件解法(2)软件解法(3)引入进程管理者,由管理者来协调竞争各方对互斥资源的使用进程P进入就绪队列;mutex,消息链互斥信号量;Swait(S,d,d)表示每次申请d个资源,当少于d个时,便不分配Ssignal(S1,S2,…,Sn)voidphilosopher(inti){接收原语:receive(MB,Message)抽象数据类型:管程是一种特殊的数据类型,其中不仅有数据,而且有对数据进行操作的代码远程过程调用等(适用于分布式系统中)rcount,R,0);Ssignal(S1,S2,…,Sn)取fork[i];取fork[(i+1)%5];1)无读者、写者,新读者可以读指向下一个消息缓冲区的指针Receiver(sender,message)V操作解决下图之同步问题:在多道程序系统中,由于资源共享或进程合作,使进程间形成间接相互制约和直接相互制约关系,这需要用进程互斥与同步机制来协调两种制约关系。硬件解法(2)“交换”指令硬件解法(3)“开关中断”指令7进程的同步机制──信号量及P.V操作(解决进程同步)描述能力可以实现效率高使用方便2)解决互斥的锁机制3)信号量机制信号量:semaphoreP操作P操作V操作V操作P、V操作为原语操作原语:是由若干多机器指令构成的完成某种特定功能的一段程序,具有不可分割性。即原语的执行必须是连续的,在执行过程中不允许被中断实现:开关中断信号量的使用:必须置一次且只能置一次初值初值不能为负数只能执行P、V操作用P、V操作解决进程间互斥问题互斥例子同步例子同步例子(续)用P-V操作描述前趋关系的例子用P-V操作描述前趋关系(续)经典的生产者─消费者问题经典的生产者─消费者问题S1初值为1,S2初值为0生产者-消费者问题生产者-消费者问题(续)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);一般“信号量集”可以用于各种情况的资源分配和释放,几种特殊情况:【思考题】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.管程的提出管程:一种同步机制系统按资源管理的观点分解成若干模块,用数据表示抽象系统资源,同时分析了共享资源和专用资源在管理上的差别,按不同的管理方式定义模块的类型和结构,使同步操作相对集中,从而增加了模块的相对独立性管程的形式TYPEmonitor_name=MONITOR;共享变量说明de