- 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
OUC 操作系统 第二章 进程管理
解答 var empty:semaphore:= 20; 定义同步信号量empty,代表可以进入的购票者人数 PROCESS Person begin wait(empty); ?进入售票厅; 购票; 退出; signal(empty); end * 4、单行车道问题 a,b 两点间是一段东西向的单行车道 请设计一个自动管理系统,管理规则如下: ab段间有车辆行驶时,同方向的车可以同时进入,但另一方向的车必须在段外等待; ab之间无车时,到达a(或b)的车辆可以进入,但不能从a、b点同时进入; 某方向在ab段行驶的车辆驶出了ab段且无车辆进入时,应让另一方向等待的车辆进入。 请用信号量机制对ab段实现正确管理 * a b 分析 定义两个进程P_ab、P_ba,分别实现对汽车从a端或b端进入时的道路控制 每当有汽车要进入道路时,便相应调用P_ab或P_ba 定义两个变量countab、countba,分别记录从a端或b端进入的汽车数量 每当有汽车进入时,都要检查或改变它们,因此它们属于临界资源,对它们的访问需要用信号量控制 因此,再设两个互斥信号量mutexab、mutexba 定义互斥信号量s,用于实现汽车 “不能从a、b点同时进入” * 解答: var s, mutexab, mutexba of semaphore := 1, 1, 1; countab,countba :=0,0; P_ab: wait(mutexab); countab++; if countab=1 then wait(s); signal(mutexab); 进入; wait(mutexab); countab--; if countab=0 then signal(s); signal(mutexab); * P_ba: wait(mutexba); countba++; if countba=1 then wait(s); signal(mutexba); 进入; wait(mutexba); countba--; if countba=0 then signal(s); signal(mutexba); 5、阅览室问题 有一个阅览室,读者进入时必须在一张登记表上登记 该表中每一座位列为一表目,包括座号和读者姓名。 读者离开时要消掉登记信息,阅览室中共有100个座位 请问: 为描述读者动作,应设几个进程 用信号量机制实现进程间的同步 * 分析:登记表是临界资源 —— 设信号量 mutex = 1 用两个信号量分别表示座位的数量和在读读者的数量 —— seat = 100, reader = 0 解答: P1: repeat wait(seat); wait(mutex); 登记信息; signal(mutex); signal(reader); 就座,阅读; Until false; P2: repeat wait(reader); wait(mutex); 消掉信息; signal(mutex); signal(seat); 离开阅览室; Until false preend End * (1)2个进程 (2)Begin var seat,reader,mutex of semaphore := 100,0,1; prebegin 6、缓冲队列问题 两个进程PA、PB通过FIFO缓冲队列连接,每个缓冲区长度等于传送消息的长度,PA、PB之间通信满足: 当空缓冲区存在时,相应的发送进程才能发送消息 当缓冲队列中至少存在一个非空缓冲区时,相应的进程才能接收一个消息 试描述发送函数send(I, m)和接收函数receive (I, m);并用它俩实现两个进程的通信 * 定义数组buf[0], buf[1];bufempty[0],buffull[1]是PA的私有信息量; bufempty[1],buffull[0]是PB的私有信息量。 * 初始时: bufempty[0]= bufempty[1]=n, (n为缓冲队列中的缓冲区个数) buffull[0]=buffull[1]=0 send (I, m) Begin wait (bufempty [ I ] ); 按FIFO方式选择一个 空缓冲区buf[ I ] (x); buf[ I
有哪些信誉好的足球投注网站
文档评论(0)