管程

管程

一、是什么?

管程,是由一组数据以及定义在这组数据上的操作组成的模块或软件包。

管程的组成:

  • 局部于管程内部的数据说明,对外而言是共享数据
  • 对该数据结构进行操作的一组数据
  • 对局部于管程的共享数据设置初始值的语句

管程的特性:

 信号量

信号量

一、是什么?

信号量本质上是一个计数器,用于控制多进程/线程对共享资源的访问。

  • 在进入一个关键代码段之前,必须先获取一个信号量
  • 一旦该关键代码段完成了,必须释放之前获取的信号量

信号量即可以用于同步(如生产者-消费者),也可以用于互斥(二元信号量)。

二、为什么?

 临界区互斥

临界区互斥

一、基本概念

1.1 临界概念

定义:

  • 临界资源:一次仅允许1个进程/线程使用的资源。比如,进程间的共享内存
  • 临界区:对临界资源进行访问的代码片段。比如,进程中对共享内存进行访问的程序片段

1.2 同步