- 1、本文档共34页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
操作系统
2.3 进程同步
2.3.1 进程同步的基本概念
2.3.2 信号量(semaphore)
2.3.3 经典进程同步问题
2.3.4 进程间通信
操作系统
正常行车
到站停车
开车
售票
开车门
关车门
司机
售票员
操作系统
打印进程1
打印进程2
打印
打印
获得打印数据
获得打印数据
操作系统
计算进程
打印进程
计算结果送到Buffer
从Buffer中取数
Buffer
竞争
竞争
完成数据计算
打印
通知打印进程打印
通知计算进程
送下一个数
合作与竞争
合作
合作
操作系统
司机与售票员
多个打印者
计算者与打印者
进程间存在两种关系
协调好这些关系的过程——进程的同步
操作系统
竞争资源关系——直接相互制约:
进程同步的主要任务:保证诸进程能互斥地访问临界资源
相互合作关系——间接相互制约:
进程同步的主要任务:保证相互合作的诸进程在执行次序上的协调——同步。
2.3.1 进程同步的基本概念 P48
操作系统
计算进程
打印进程
计算结果送到Buffer
从Buffer中取数
Buffer
互斥
互斥
完成数据计算
打印
计算进程与打印进程的同步
操作系统
1.临界资源
对于计算机中的有些软硬件资源,当多个进程对其进行访问时(关键是进行写入或修改),必须互斥地进行,这些一次只允许一个进程使用的资源称为临界资源(critical resource)。
打印机、内存变量、指针、数组等都是临界资源。
生活中的例子如:电话机等。
临界资源需要采用互斥方式,实现对资源的共享。
操作系统
2、临界区
每个进程中访问临界资源的那段程序段称为临界区(critical section)。
操作系统
访问临界资源的循环进程
Until false;
Entry section
Critical section;
Exit section
Remainder section;
Repeat
进入区:进入临界区之前,检查可否进入临界区的一段代码。如果可以进入临界区,通常设置相应“正在访问临界区”标志;
临界区:进程中访问临界资源的一段代码;
退出区:用于将正在访问临界区标志清除。
剩余区:代码中的其余部分。
操作系统
进入区
临界区
退出区
进入区
临界区
退出区
...
...
...
...
...
...
...
...
进程1
进程2
进入区、退出区各部分的作用
互斥是针对不同进程访问同一临界资源。
进程互斥
进程互斥
进程互斥是指若干共享临界资源的进程彼此交换信息以保证
排他性的进入各自的临界区,即当若干个进程都要使用某一
共享资源时,任何时刻最多只允许一个进程使用该资源,其
他要使用该资源的进程必须等待,直到占有资源者释放该资
源
所谓同步是指若干相互合作的进程彼此交换信息以保证在
执行次序上的协调。
进程同步:
进程同步是指若干相互合作的进程在一些关键点上可能需要
互相等待或互相交换信息。
进程同步
进程互斥可在具有一定逻辑关系的伙伴进程之间,也可在非
伙伴进程之间;
同步发生在相互有逻辑关系的伙伴进程之间。
进程同步是一般情况,互斥是同步的一种特殊情况。
进程同步和互斥的关系
操作系统
3、同步机制应遵循的准则
空闲则入:其他进程均不处于临界区;
忙则等待:已有进程处于其临界区;
有限等待:等待进入临界区的进程不能死等;
让权等待:不能进入临界区的进程,应释放CPU(如转换到阻塞状态)
解决互斥问题既可采用软件方法,也可采用硬件方法。
4、进程互斥的基本方法
软件实现方法就是在进入区设置和检查一些标志来标明是否有进程在临界区中,如果已有进程在临界区中,则在进入区通过循环检查进行等待,进程离开临界区后则在退出区修改标志。
有两个进程Pi和Pj,它们互斥的共享某个临界资源。
Pi和Pj是循环进程,它们执行一个无限循环程序,每次使用该资源一个有限的时间间隔。
(1) 进程互斥的软件方法(补充)例如:
操作系统
算法1:强制轮换法(单标志)
设立一个公用整型变量 turn:描述允许进入临界区的进程标识
在进入区检查是否允许本进程进入:turn为i时,进程Pi可进入;
在退出区修改turn的值:进程Pi退出时,改turn为j;
缺点:
强制轮流进入临界区,没有考虑进程的实际需要。容易造成资源利用不充分:
在Pi出让临界区之后,Pj使用临界区之前,Pi不可能再次使用临界区;
对两个进程Pi, Pj,其中的Pi描述如下图
以进程P0、P1为例,类C语法的伪码描述P0进程如下:
int turn=0; //公共变量
进程P0:
do
{ while (turn!=0); //进
文档评论(0)