深入理解l操作系统的管程,进程,线程(一)
来源:互联网 发布:office2016 64位mac 编辑:程序博客网 时间:2024/04/30 14:23
1.管程(monitors)和定义
P,V操作分散在用户程序中,系统无法有效的控制盒管理,而且P,V操作使用不当还会引起系统的死锁,所以产生了新的进程同步工具-------管程。
代表共享资源的数据结构,以及对该共享数据结构实施操作的一组过程所组成的资源管理程序,共同构成了一个OS的资源管理模块,我们称之为管程。
管程由以下几个部分组成。
一:管程的名称
二:局部于管程内部的共享数据结构说明
三:对该数据结构进行操作的过程
四:对局部于管程内部的共享数据结构设置初始值的语句(一段代码)
五:条件变量
其中有三点需要注意:
一:进程互斥的使用管程,管程被进程调用
二:局部于管程内的数据结构,只能被管程的过程所访问,同时,管程内的过程,也只能访问局部于管程内的数据结构
三:在管程机制中,有时候引起进程等待。其中wait()表示某种资源占用而被等待,从而堵塞自己的进程,放弃对管程的互斥权,signal()表示重新启动一个被堵塞的进程。
管程的一般描述如下:
<span style="font-size:14px;">type<管程名>=monitor<管程变量说明>;procedure <过程名>(<形式参数表>);begin<过程体>;end;.........procedure <过程名>(<形式参数表>);begin<过程体>;end;begin<局部于管程内部的共享数据初始化语句>end;</span>
===============
2.利用管程解决生产者-消费者(PC)问题
先建立一个管程,名字为procedure-consumer,其中包括2个过程
一:put(item)过程。procedure生产的产品数记为count,当count>=n时,表示缓冲池满,procedure需要等待
二:get (item)过程.。consumer从缓冲池取得产品,当count<=n时,consumer等待。
PC管程描述如下:
<span style="font-size:14px;">type PC=monitorVarin,out,count:integer;buffer:array[0...n-1]of item;notfull,notempty:condition;//如果count满了,那么不为满的进程被堵塞,不为空的进程被唤醒procedure entry put(item)beginif count>=n then notfull.wait;buffer(in):=nextp;in:=(in+1)mod n;count:=count+1;if notempty.queue then notempty.signalend;//如果count为0了,那么不为空的进程被堵塞,不为满的进程被唤醒procedure entry get(item)beginif count<=0 then notempty.wait;nextc:=buffer(out)out:=(out+1)mod n;count:=count-1;if notfull.queue the notfull.signal;end;//局部于管程内部的数据初始化beginin:=out:=count:=0;end;</span>
producer和consumer的进程如下:
<span style="font-size:14px;">producer: beginrepeatproduce an item in nextp;PC.put(item);until false;endconsumer: beginrepeatPC.get(item)consume the item in nextc;until false;end</span>
0 0
- 深入理解l操作系统的管程,进程,线程(一)
- 深入理解操作系统的管程,进程,线程(二)
- 操作系统中的作业、进程、线程、管程各自的定义
- 操作系统中的作业、进程、线程、管程各自的定义
- 操作系统-管程、进程和线程之间的差别
- 简述操作系统中的作业、进程、线程、管程
- 深入理解操作系统原理之进程管理(一)
- 操作系统中作业、程序、进程、线程及管程的定义与联系
- 操作系统中作业、程序、进程、线程及管程的定义与联系
- 操作系统中作业、程序、进程、线程及管程的定义与联系
- 操作系统中作业、进程、线程、管程各自的定义及联系
- 操作系统中作业、程序、进程、线程及管程的定义与联系
- 管程,进程及线程之间的区别
- 操作系统---->作业、进程、线程、管程、管道概念梳理
- 进程 线程 管程
- 试解释操作系统原理中的作业,进程,线程,管程各自的定义。进程间的通信如何实现?
- 试解释操作系统原理中的作业,进程,线程,管程各自的定义。进程间的通信如何实现?
- 进程 线程 协程 管程 纤程 概念对比理解
- SEO必看一些SEO的HTML布局规范知识
- 数据库设计 - 数据库和信息系统
- Jump Game II
- 一致性hash算法 - consistent hashing
- <<Python基础教程>>学习笔记 | 第03章 | 字符串
- 深入理解l操作系统的管程,进程,线程(一)
- Longest Palindrome Substring
- Html(8)继承、特殊性、设置的权值
- Longest Consecutive Sequence
- discount oakley sunglasses outlet online sale-926
- Python利用CookieJar自动处理Cookies
- 引用类型的转换
- cxf 说明
- Java初阶——字符串String