进程间的相互影响:
两种制约关系:
间接相互制约关系:主要源于资源共享,表现为
进程A---打印机资源---进程B(互斥)
直接相互制约关系:主要源于进程合作,表现为
进程A写缓冲---进程B读缓冲(有序)
进程同步
主要任务: 使并发执行的诸进程之间能有效地共享资源和相互合作,从而使程序的执行具有可再现性。
临界资源:
一次仅允许一个进程访问的资源
互斥和有序‘
互斥:在操作系统中,当一个进程进入临界区使用临界资源时,另一个进程必须等待,直到占用临界资源的进程退出临界区,我们称进程之间的这种相互制约关系为“互斥”。
同步:多个相互合作的进程,在一些关键点上可能需要互相等待或互相交换信息,这种相互制约关系称为进程同步关系。可理解为“有序”。
临界区
每个进程中访问临界资源的那段代码叫临界区。为了正确同步,对临界区的代码要增加控制
同步机制应遵循的原则:
空闲让进:资源使用最基本原则
忙则等待:保证互斥
有限等待:合适时被唤醒防止死等
让权等待:能主动释放CPU防止忙等
硬件同步机制
(1)关中断
(2) Test-and-Set指令
(3)利用Swap指令
注:硬件指令机械操作可保证锁开、关操作不被打断;适用于任意数目的进程。但等待要耗费CPU时间,不能实现“让权等待”,从等待进程中随机选择一个进入临界区,有的进程可能一直选不上,难以实现较为复杂的进程同步问题。