【第22期】观点:IT 行业加班,到底有没有价值?

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

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

2.2.7 管程

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

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

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

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

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

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

相关文章推荐

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

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

操作系统设计与实现 第一章 引言(一)

操作系统,一般是指在内核态(kernel mode)或称管态(supervisor mode)下运行的软件,它受到硬件的保护,用户不能随便去篡改它的内容。1.1 什么是操作系统给出精确的定义很难,可能...

程序员升职加薪指南!还缺一个“证”!

CSDN出品,立即查看!

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

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

C/C++ > UNIX系统程序设计

C/C++ > UNIX系统程序设计 2011年06月08日   原创]UNIX系统程序设计-1   写在前面的话。   这是去年夏天刚来SOHU的时候写的。在本版最初好像发过一遍。   现在整理个人文集,重发一遍。大家见谅。   说明:本文所有程序,应在UNIX类操作系统下编译...

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

2.2 进程间通信进程间通信有三方面内容:第一方面内容:一个进程如何向另一个进程传送信息; 第二方面内容:必须保证两个或多个进程在设计临界活动时不会彼此影响; 第三方面内容:当存在依赖关系时确定适当的...
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

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