第2章进程管理详解.ppt

  1. 1、本文档共86页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第2章进程管理详解

进程间的互斥 临界区 临界资源: 虽然在多道程序系统中的诸进程可以共享各类资源,然而临界资源却是一次只能供一个进程使用,使用完后归还系统,才能给其他进程使用。(如上例变量COUNT是临界资源)。 进程对临界资源必须互斥使用,为实现对临界资源的互斥访问,应保证诸进程互斥地进入自己的临界区。把每个进程中访问临界资源的那段代码称为临界区。为此,每个进程在进入其临界区前,必须先申请,经允许后方能进入。 同步机制应遵循的准则 对于等待进入临界区的进程而言,它必须立即释放处理机,以免进程“忙等” 让权等待 对要求进入临界区的进程,应在有限时间内使之进入,以免陷入“死等”。 有限等待 当已有进程处于临界区内时,其它试图进入临界区的进程必须等待,以保证它们互斥地进入临界区。 忙则等待 当无进程处于临界区内时,必须让一个要求进入临界区的进程立即进入,以有效地利用临界资源。 空闲让进 解决互斥的锁机制 实现互斥的一种软件方法是采用锁机制,即提供一对上锁(Lock)和开锁(UnLock)原语,以及一个锁变量W。 进程进入临界区前,通过锁变量来判断临界资源是否被占用。 下面给出实现临界区互斥的锁操作法: 这种方法使用了一个物理实体,称为锁,用W来表示。锁有两种状态:W=0 表示锁已打开;W=1 表示锁被关闭。 加锁原语用LOCK (W)表示,其操作为: 测试W,若W=1,表示资源正在使用,继续反复测试; 若W=0,置W=1(加锁)。可描述为 L: if W=1 then go to L else W∶= 1; 开锁原语用UNLOCK (W)表示, 可描述为 W∶=0; 于是,两个进程P1,P2使用如下程序实施进程的互斥: 进程P1 进程P2 LOCK (W) LOCK (W) S1 S2 UNLOCK (W) UNLOCK (W)  其中S1和S2分别为进程P1 和P2 的临界区。 信号量机制 信号量机制是一种卓有成效的进程同步工具,被广泛应用于单处理机和多处理机系统,以及计算机网络中。 锁机制仅能表示“开”与“关”两种状态;开、关原语必须作为原子操作来进行;关锁原语中反复测试W状态,浪费了处理机的时间;锁机制只能解决互斥,不能用于同步。信号量同步机制能完满地解决上述问题,以下介绍经典信号量机制。 P操作:意味着请求分配一个单位资源 V操作:意味着释放一个单位资源 P、V操作是定义在信号量S上的两个操作,其定义如下: P(S): ① S∶=S-1; ② 若S≥0,则调用P(S)的进程继续运行; ③ 若S0,则调用P(S)的进程被阻塞,并把它插入到等待信号量S的阻塞队列中。  V(S):① S∶=S+1; ② 若S0,则调用V(S)的进程继续运行; ③ 若S≤0,从等待信号量S的阻塞队列中唤醒头一个进程, 然后调用V(S)的进程继续运行。 P、V操作可表示为如下两个过程: Procedure P(Var S:Semaphore); begin S∶=S-1; if S0 then W(S) end; {P}  Procedure V(Var S:Semaphore); begin S∶=S+1; if S≤0 then R(S) end; {V} 互斥、同步例子 互斥例子 三个进程共用两个I/O缓冲区 解:设用信号量S表示共享资源,S初始值为2 同步例子 设有A、B两进程,A进程从卡片机读信息入缓冲区,B进程负责加工读进缓冲区的卡片信息。 解:设信号量S1:缓冲区中有否可供加工的信息,初始值为0; 信号量S2:缓冲区是否为空,初始值为1; 在输入进程A中,可以把P(S2)调到V(S1)后面,而把信号量S2的初始值设为0。大家可以自行分析这两个进程如何实现同步。 用P

文档评论(0)

ee88870 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档