4.进程同步<br>(进程同步的主要任务:使并发执行的诸进程之间能有效地<br>共享资源和相互合作,从而使程序的执行具有可再现性。)
2、硬件同步机制(了解)<br>(读写由一条指令完成<br>保证读写不被打断)
1. 关中断<br>(互斥)
实现过程
先测试锁的状态,<br>测试和关锁操作必须连续,不允许分开<br>测试锁之前关闭中断,因为有中断就又调度,有调度就又进程
2、Test-and-Set<br>(测试并建立)
4、信号量的应用
1. 利用信号量实现进程互斥
设S(mutex)为实现进程Pl、P2互斥的信号量,<br>由于每次只允许一个进程进入临界区,<br>所以S的初值应为1(即可用资源数为1)。<br>只需把临界区置于P(S)和V(S)之间,<br>即可实现两进程对临界资源的互斥访问。<br>其算法如下:
互斥的实现是不同进程对同一信号量进行P、V操作,<br>一个进程在成功地对信号量执行了 P操作后进入临界区,<br>并在退出临界区后,由该进程本身对该信号量执行V操作,<br>表示当前没有进程进入临界区,可以让其他进程进入。
2、利用信号量实现同步
设S为实现进程P1、P2同步的公共信号量,初值为0。<br>进程P2中的语句y要使用进程P1中语句x的运行结果,<br>所以只有当语句x执行完成之后语句y才可以执行。<br>其实现进程同步的算法如下:
3. 利用信号量实现前趋关系
其中S1, S2, S3, …, S6是最简单的程序段(只有一条语句)。为使各程序段能正确执行,应设置若干个初始值为“0”的信号量。例如,为保证S1 -> S2、 S1 -> S3的前驱关系,应分别设置信号量a1、a2。同样,为了保证 S2 -> S4、S2 ->S5、S3 -> S6、S4 -> S6、S5 -> S6,应设置信号量bl、b2、c、d、e。
4、分析进程同步和互斥问题的方法步骤
https://www.cnblogs.com/duan-decode/p/9641071.html
例题
定义一信号量S,初始值为20。S>0 S的值表示可继续进入售票厅的人数 S=0 表示售票厅中已有20名顾客 S<0 |S|的值为等待进入售票厅中的人数
x=5,y=12,z=9 x=5,y=3,z=4 x=5,y=7,z=9
<br>http://www.cnblogs.com/littlecurl/p/PVoperation.html
5、管程机制(了解)<br>(新的进程同步工具)<br>
1、基本信息
3、基本思想
将共享变量及对共享变量能够进行的所有操作集中在一个模块中。<br>(把信号量及其操作原语“封装”在一个对象内部)
2. 条件变量