进程同步要解决什么问题?

在OS中引入进程后,如果不进行妥善的管理,必然会因为这些进程对系统资源的无序争夺而给系统造成混乱。致使每次处理的结果存在不确定性,即程序运行结果的不可再现性。为保证多个进程能有条不紊地运行,在多道程序系统中,必须引入进程同步机制。


一、进程同步机制的主要任务

进程同步机制的主要任务,是对多个相关进程在执行次序上的协调,使并发执行的诸进程之间能按照一定的规则(或时序)共享系统资源,并能很好地合作,从而使程序的执行具有可再现性。

二、进程之间两种形式的制约关系

1. 间接相互制约关系(互斥关系)

是指由于共享系统资源,如CPU、I/O设备等,致使这些并发执行的进程形成的相互制约关系。

2. 直接相互制约关系(同步关系)

一个程序为了完成某任务而建立了多个进程,这些进程需要相互合作。直接制约关系就是源于它们的相互合作,比如需要共享缓冲区等。


三、临界资源

(1)定义: 一次仅允许一个进程使用的资源称为临界资源。

(2)包括: 慢速设备(打印机、磁带机等)、共享的变量、数据结构、缓冲区等。

(3)结论: 诸进程间应采用互斥方式,实现对这些资源的共享。

eg 1. 多道系统中,像这种两个或多个进程并发地读写一个共享数据, 共享数据的值取决于最后访问它的进程的执行结果,这种情况称为 竞态条件(Race condition),要保证对临界资源的互斥使用。

【OS笔记 14】进程同步篇——基本概念
eg 2. 生产者——消费者问题,是一个经典的进程同步问题。
所有的生产者和消费者进程都是以异步方式运行的,但它们之间必须保持同步:既不允许消费者进程到一个空缓冲区去取产品,也不允许生产者进程向一个已装满产品的缓冲区投放产品。


四、临界区

(1)定义: 每个进程中访问临界资源的那段代码 称为临界区(critical section)

(2) 可以把访问临界资源的循环进程描述如下:

【OS笔记 14】进程同步篇——基本概念
进入区: 用于对欲访问的临界资源进行检查,看它是否正被访问。是的话,则本进程不能进入临界区,否的话,就可以访问,并要设置访问标志。

退出区: 用于将临界区正被访问的标志恢复为未访问的标志。

剩余区: 进程中除了进入区、临界区、退出区以外的代码都称为剩余区。


五、所有同步机制必须遵循的原则

1 和 2 就是很简单的互斥原则;

1. 空闲让进

当没有进程处于临界区时,应允许一个请求进入临界区的进程立即进入。

2. 忙则等待

当已有进程进入临界区时,其它试图进入的进程必须等待。

3. 有限等待

应保证每一个进程在有限时间内能进入自己的临界区,避免陷入“死等”状态。(可以通过限制其它进程进入临界区的次数来实现)

4. 让权等待

当进程不能进入自己的临界区时,应立即释放处理机。(也就是此时进程没啥工作可做了,只能等到临界区允许进入才能继续下去,所以占着CPU也没啥意义了,让出CPU的使用权,继续等待资源,就这意思)

相关文章:

  • 2019-02-06
  • 2021-08-25
  • 2021-07-04
  • 2018-03-15
  • 2021-12-01
  • 2021-12-04
  • 2021-08-29
猜你喜欢
  • 2021-07-09
  • 2022-12-23
  • 2021-07-07
  • 2021-06-19
  • 2021-08-28
  • 2021-10-19
  • 2022-12-23
相关资源
相似解决方案