操作系统第2章剖析.ppt

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
练习 有4个进程共享同一程序段,且每次最多允许3个进程进入该程序段,则信号量的变化范围是( )。 A.3,2,1,0 B.3,2,1,0,-1 C.4,3,2,1,0 D.2,1,0,-1,-2 理发店里有一位理发师、一把理发椅子和五把供等候理发的顾客坐的椅子。如果没有顾客,理发师便在理发椅上睡觉。当一个顾客到来时,他必须先叫醒理发师,如果理发师正在理发时又有顾客来到,而如果有空椅子可坐,他们就坐下来等,如果没有空椅子,他就离开。请为理发师和顾客各编写一段程序来描述他们行为,并用wait和signal原语或p、v操作实现其同步。 #define CHAIRS 5 /*为等候的顾客准备椅子数*/ typedef int semaphore; /* 信号量类型*/ semphore customers=0; /*等候服务的顾客数*/ semaphore barbers=1 /*等候服务的理发师数*/ semaphore mutex=1; /*用于互斥*/ int waiting=0; /*还没理发的等候顾客*/ void barber (void) { while(TRUE) { wait(customers); /*如果顾客数是0,则睡觉*/ wait(mutex); /*要求进程等候*/ waiting=waiting-1; /*等候顾客数减1*/ signal(mutex); /*释放等候*/ cut_hair(); /*理发(非临界区操作)*/ signal(barbers); /*一个理发师现在开始理发*/ } 二、信号量集解决读者——写者问题(略) writer: begin repeat swait(mx,1,1; L,RN,0); perform write operation; ssignal(mx, 1); until flase; end parend end 2.5管程机制 引入原因: 为了避免凡要使用临界资源的进程都自备同步操作wait(s)和signal(s).将同步操作的机制和临界资源结合到一起,形成管程。 2.5.1管程的基本概念 一、定义:一个数据结构和能为并发进程所执行的一组操作。 局部于管程的共享变量。 对该数据结构进程操作的一组过程。 对局部管程数据设置初值。 二、条件变量: x.y: x.wait; x.signal; x.queue void customers (void) { wait(mutex); if (waitingCHAIRS) { waiting=waiting+1; signal(customers); signal(mutex); wait(barbers); } else { signal(mutex); } } 2.6进程通信 概念:进程间的信息交换。 实例: 信号量机制(一种低级通信) 缺点:(1)效率低 (2)通信对用户不透明 高级通信特点: 效率高,通信实现细节对用户透明 2.6.1进程通信的类型 一、共享存贮器系统 1.基于共享数据结构的通信方式: produce-consume中的缓冲区,低效,不透明。 系统只提供了一共享存贮器,适于少量通信。 2.基于共享存储区的通信方式: 系统提供:共享存储区。 通信过程: (1)向系统申请一个或多个分区 (2)获得分区获后即可读/写. 特点:高效,速度快。 2.6.1进程通信的类型 二、消息传递系统(可用于异种机) 信息单位:消息(报文) 是目前的主要通信方式,分为直接通信方式、间接通信方式 实现:一组通信命令(原语),具有透明性--- 同步的实现。 三、管道通信 管道:连接一个读进程和一个写进程之间通信的共享文件。 功能:大量的数据发收。 注意: (1)互斥 (2)同步 (3)对方是否存在 四、客户机-服务器系统 套接字 远程过程(方法)调用 2.6.

文档评论(0)

558411 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档