操作系统中的进程的同步与互斥

进程是操作系统中可以独立运行的单位,在同一个系统之中,进程之间不可避免地会产 生某种联系,例如,进程竞争资源,而有些进程本来就是为了完成同一个作业而运行的。因 此,进程之间必须互相协调,彼此之间交换信息,这就是进程之间一种简单的通信。

一、进程的同步

在计算机系统中,为了完成某一个工作,不同的进程之间有可能需要协作。例如,有一 批数据记录需要进行加工处理,为此创建了两个进程,还设置了一个容量为一个记录的缓冲器。进程A从硬盘上读记录,每读出一个记录就存人缓冲器。进程B从缓冲器中取出记录加工,直至所有的记录都处理结束。

在这个例子中,进程A和进程B是两个并发进程,它们共享缓冲器。如果两个进程不相制约就会造成错误。若当进程A的执行速度超过进程B的执行速度时,进程A可能在进程B还没有取走一个记录前,又把新读出的一个记录送入缓冲器,于是后一个记录把上一 个尚未取走的记录覆盖了,造成记录的丢失。当进程B的执行速度超过进程A的执行速度时,可能出现进程A还没有把下一个新记录存入缓冲器之前,进程B又从缓冲器取记录, 造成重复地取同一个记录加工。显然,这两个进程必须协调工作的节奏,即彼此同步,才能 避免上述的错误。

进程的同步是指进程之间一种直接的协同工作关系,一些进程相互合作,共同完成一项 任务。进程之间的同步也是进程间的一种直接制约关系,一个进程的执行依赖另一个进程的 消息,当一个进程执行到某一点时,必须得到另一个进程发来的消息,在没有得到另一个进 程的消息时该进程应该等待,直到消息到达才被唤醒,继续进程的执行。

要实现进程的同步就必须提供一种机制,该机制不仅能把其他进程需要的消息发送出 去,也能测试进程自己需要的消息是否到达,这种能实现进程同步的机制称为“同步机 制

不同的同步机制中实现同步的方法是不同的。

二、进程的互斥

在系统中,许多进程常常需要共享资源,而这些资源往往要求排他性的使用,即一次只 能为一个进程服务,因此,各进程间只能互斥使用这些资源,进程间的这种关系就是进程的互斥。例如,多个进程在竞争使用打印机、一些变量、表格等资源时,在前面讨论过的两个 并发程序A和B共享一个公共变量a的例子,以及民航售票系统的例子,都表现为互斥关 系。进程的互斥是进程间的一种间接制约关系

三、临界区

若在系统中的某些资源一次只允许一个进程使用,则这类资源称为临界资源或共享变量,而在进程中访问临界资源的程序称为临界区

如果有若干进程共享某一临界区,则该临界区称为相关临界区。当二个进程在相关临界 区执行时,如果不让另一个进程进入相关的临界区执行,就不会形成多个进程对相同的共享变量交叉访问,于是就可避免出现与时间有关的错误。只要涉及相同变量的若干进程的相关临界区互斥执行,就不会造成与时间有关的错误。

要求进入相关临界区进程之间构成了互斥关系。为了保证系统中各并发进程顺利运行, 对两个以上欲进入相关临界区的进程,必须实行互斥,为此,系统必须采取一些调度措施。

系统对相关临界区的调度使用原则归纳如下:

(1)当临界区为空时,若有一个进程要求进人临界区,应允许它立即进入临界区——有空让进。

(2)若有一个进程已在临界区时,其他要求进入临界区的进程必须等待一一无空等待。

(3)当没有进程在临界区,而同时有多个进程要求进入临界区,只能让其中之一进入临界区,其他进程必须等待——多中择一。

(4)任一进程进入临界区的要求应在有限时间满足——有限等待。

(5)处于等待状态的进程应放弃占有处理器——让权等待。

注解:

调度原则(1)表示要有效利用临界资源;

调度原则(2)反映了互斥的基本含义,即临界 区资源的使用具有排他性;

原则(3)是原则(1)和(2)的一个特殊情况;

原则(4)和(5)是为 了避免进程间发生忙等待或死锁

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值