- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
操作系统笔记11
管程:
管城是管理进程间同步的机制,它保证进程互斥地访问共享变量,并方便地阻塞和唤醒进程。管程以函数库形式表现出来。
信号量同步的缺点:
同步操作分散
易读性差
不利于修改和维护
正确性难以保证
管程的定义
关于共享资源的数据结构及一族针对该资源操作的过程构成的软件模块
3、管程的主要特征:
模块化:一个管程式一个基本程序单位,可以直接编译
抽象数据类型:是一种特殊的数据类型,不仅有数据还有对数据进行操作的代码
信息封装:管程氏半透明的,管程中的外部函数实现了某些功能。但是具体实现外部是不可见的
管程实现要素
管程必须互斥进入
管程中共享变量在管程外部不可见,可以用函数调用
管程由相应的等待和唤醒操作
管程的格式:
TYPE monitor_name=MONITOR
共享变量说明
define 本管程内定义,管程外可调用的函数名
Use 本管程外所定义、本管程内将调用的过程
……
6管程的组成
名称:为每个共享资源设立一个管程
数据结构说明:一组局部于管程的共享变量
操作原语:对共享变量和临界资源进行操作的一组原语过程,是访问该管程的唯一途径。这些原语本身互斥,任何一个时刻只允许一个进程调用,其余需要访问进程的等待
初始化代码:对控制变量进行初始化代码
2.5进程之间通信
2.5.1进程之间通信的类型
低级通信和高级通信
低级通信:只能传递状态和整数值(控制信息),包括进程互斥和同步所采用的信号量和管程机制。优点是速度快
缺点:传送信息量小,效率低,编程复杂
高级通信:能够传递任意数量的数据包括三类:共享存储区、管道和消息
直接通信和间接通信
直接通信:信息直接传递给接收方,如管道。
在发送时,指定接收方地址或者标识,也可以指定多个接收方或者广播式地址
在接收时,允许接收来自任意发送方的消息,并在读出信息的同时获取发送方地址
间接通信:借助于收发双方之外的共享数据结构作为中转,如消息队列
高级通信特征:
通信链路:点对点、多点、广播
单向、双向
有容量和无容量
数据格式:
字节流:没有格式
报文:有格式(类型,定长……)
收发操作的同步方式:
发送阻塞(直到被链路或者被接收方接收)和不阻塞
接收阻塞(直到有数据可读)和不阻塞
由事件驱动收发:在允许发送或有数据可读,才做发送和接收操作
2.5.2信号
UNIX信号
信号类型:
一个进程向另一个进程或者进程组发送
某些键盘按键如:中断字符和暂停字符
硬件条件:如除数为0,访问非法地址等
软件条件:Socket中有加急数据到达
2.5.3共享存储区
基于共享数据结构通讯(低级,只适于传递少量数据)
基于共享存储区的通讯方式,传递大量数据
实现过程:
申请共享存储区中的分区
指定分区关键字
如果该分区已经分配给别的进程,返回分区描述返回给申请者
申请者将申请到的共享区挂到本进程
UNIX实现过程:
创建或者打开共享存储区:依据用户给出的整数值key,创建或者打开
连接共享存储区(返回共享存储区首地址)
拆除共享存储区:将本进程和共享存储区连接
2.5.4管道
管道是一条在进程间以字节流方式传送的通信信道。
管道要解决的问题
互斥:一个进程对管道操作时,其他进程必须等待
同步:写进程把数据写入pipe时,睡眠等待,直到读进程读完数据在唤醒
对方是否存在:只有确定对方存在时,才能进行管道通信
2.5.5消息传递机制
直接通信方式(消息缓存):发送进程将消息直接发送给接收方,并将消息寄存在接收方的缓存中
间接通信方式(邮箱):发送进程将消息发送到中间实体(邮箱),接收进程从中取得消息。
消息缓冲机制PV操作
发送原语Send(),接收原语receive()
设置公用信号量mutex=1
设置SM为接收进程的私用信号量初值为0
Send: receive:
Begin begin
向系统申请一个消息缓冲区 P(SM)//等待接收消息个数
P(mutex) P(mutex)//使用公共缓存区
将发送区消息m送到新的申请的消息缓冲区 取得消息队列的消息
把消息缓冲区挂到接收进程的消息队列 将消息复制到接收区
V(mutex) V(mutex)//释放公共缓冲区
V(SM)
END
邮箱机制的PV操作
Formnum记录空格,初值为n
Mesnum 记录邮箱的个数,初值为0
Deposit(m) Remove(m)
Begin local x being local x
P(fromnum) 空格数减1 P(Mesnum)消息个数+1
选择空格x 选择满格x
置格x的标志
您可能关注的文档
最近下载
- (正版) GB 50367-2013 混凝土结构加固设计规范.docx VIP
- (2025春)人教版二年级数学上册全册教案.doc
- 小学课程表word模板可编辑a4纸打印.docx VIP
- 栽培小能手.ppt VIP
- 2025年CCAA国家注册审核员考试(认证通用基础)历年参考题库含答案详解(5卷).docx VIP
- 14.2+血管与心脏+第2课时(教学课件)生物苏科版2024八年级上册.pptx VIP
- MSDSFORsilicondioxide白碳黑英文安全技术说明书.pdf VIP
- 15J401 钢梯-标准图集.docx VIP
- 药剂学(第9版)ER 9-1 第九章液体制剂的单元操作(课件).pptx VIP
- 土地复垦方案编制规程通则.doc VIP
文档评论(0)