操作系统设计与实现 第二章 进程(五)

原创 2016年05月31日 16:50:47

2.2.7 管程

管程是由过程、变量及数据结构等组成的集合,它们组成一个特殊的模块或软件包。

进程可在任何需要时调用管程中的过程,但它们不能在管程外的过程中直接访问管程中的数据结构。

管程有一个很重要的特性,这使得它们能有效地完成互斥:任意时刻管程中只能有一个活跃进程。典型地,当一个进程调用管程中的过程时,前几条指令将检查在管程中是否有其他的活跃进程。如果有,调用进程将其挂起,直到另一个进程离开管程。如果没有,则调用进程以便进入管程。

对进入管程实现互斥由编译器负责,但通常的做法是用一个互斥或二进制信号量。因为是由编译器而非程序员来安排互斥,出错的可能性要小得多。

这里还需要一种办法使得进程在无法继续运行时被阻塞。解决办法在于引入条件变量以及相关的两个操作:wait和signal。当一个管程过程发现它无法继续时,它在某些条件变量上执行wait,如full。这个动作引起调用进程阻塞。它允许另一个先前被挡在管程外边的进程现在进入管程。

版权声明:本文为博主原创文章,未经博主允许不得转载。

操作系统设计与实现 第二章 进程(三)

2.2.4 睡眠和唤醒Peterson解法和TSL解法都是正确的,但它们都有忙等待的缺点。本质一样:当一个进程想进入临界区时,先检查是否允许进入,若不允许,则进程考虑将忙等待,直到许可为止。缺点:浪费...

操作系统设计与实现 第二章 进程(一)

2.1 进程介绍严格来说,在一个瞬间,CPU只能运行一道程序。一秒内运行了多道程序,这样就给用户一种并行的错觉。即伪并行,区分多处理机系统的真正的硬件并行。2.1.1 进程模型一个进程就是一个正在执行...

操作系统设计与实现 第二章 进程(四)

2.2.5 信号量信号量原使用一个整型变量来累计唤醒次数。在发明者的建议下,引入了一个新的变量类型,称为信号量。一个信号量的值可以为0,表示没有积累下来的唤醒操作;或者为正值,表示有一个或多个被积累下...

操作系统设计与实现 第二章 进程(六)

2.3 经典IPC问题2.3.1 哲学家进餐问题在此不再赘述问题的内容。最浅显的解法,think思考完毕取左叉,取右叉,吃面,放左叉,放右叉,一共五个步骤。遗憾的是,这种解法是步错误的。如果所有哲学家...

《linux内核设计与实现》--从内核出发 第二章 进程线程

通常进程还要包括其他资源,像打开的文件,挂起的信号,内核内部数据,处理器状态,一个或多个具有内存映射的内存地址空间以及一个或多个执行线程,当然还包括用来存放全局变量的数据段等。程序本身并不是进程,进程...

操作系统第二章进程

  • 2015年12月26日 13:56
  • 5.19MB
  • 下载

汤子瀛 操作系统整理[2]——第二章 进程管理

第二章  进程管理 进程的基本概念 进程的三种基本状态:就绪(Ready)状态、执行状态、阻塞状态;                 具有挂起状态的进程状态图 引入挂起...

操作系统 第二章 进程 课件

  • 2011年05月03日 16:18
  • 1.34MB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:操作系统设计与实现 第二章 进程(五)
举报原因:
原因补充:

(最多只允许输入30个字)