操作系统复习课..pptx

  1. 1、本文档共41页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第二章 进程的描述和控制例1:某车站售票厅,任何时刻最多可容纳20名购票者进入,当售票厅中少于20名购票者时,厅外的购票者可立即进入,否则需要在外面等待。每个购票者可看成一个进程。semaphore mutex=20while(1){wait(mutex);进入售票厅;购票;退出售票厅;signal(mutex);}例2:在公共汽车上,司机和售票员各司其职。司机:正常行车、到站停车、启动开车;售票员:售票、开车门、关车门。司机和售票员之间应该密切配合,协调一致,以确保行车安全。请用PV操作实现司机和售票员之间的同步。 用2个私有信号量open、run分别表示可以开门和可以开车.由于初始状态是汽车行车和售票员售票,所以初值应该都为0,到站后才会有司机发消息让开门.售票员:While(1){ 售票; wait(open); 开车门; 关车门; signal(run);}司机:while(1){ 正常行车; 到站停车; signal(open); wait(run); 启动开车;}例3:桌子上有一只盘子,每次只能放一只水果。爸爸专向盘子中放苹果,妈妈专向盘子中放橘子,一个儿子专等吃盘子中的橘子,一个女儿专等吃盘子中的苹果。用PV操作实现他们之间的同步机制。fathersondaughtermothersemaphore empty=1, orange = 0, apple=0;empty是father、mother的私有信号量,表示盘子是否为空。orange是son的私有信号量,表示盘子中是否放入橘子。apple是daughter的私有信号量,表示盘子中是否放入苹果。father( ){ while(1){ P (empty); 向盘子中放苹果; V (apple);} Daughter( ){ while(1){ P (apple); 从盘子中取苹果; V (empty);} Mother( ){ while(1){ P (empty); 向盘子中放橘子; V (orange);} son( ){ while(1){ P (orange); 从盘子中取橘子; V (empty); 例4:三个进程P1、P2、P3互斥使用一个包含N(N0)个单元的缓冲区。P1每次用produce( )生成一个正整数并用put( )送入缓冲区某一空单元中;P2每次用getodd ( ) 从该缓冲区中取出一个奇数并用countodd ( ) 统计奇数个数;P3每次用geteven ( )从该缓冲区中取出一个偶数并用counteven ( )统计偶数个数。请用信号量机制实现这三个进程的同步与互斥活动,并说明所定义的信号量的含义。要求用伪代码描述。(2009年考研题)semahpore empty=N,even=0,odd=0,mutex=1;P1( ):while(1){ x=produce(); wait(empty); wait(mutex); put(x); if x%2==0 signal(even);else signal(odd); signal(mutex); }P2( ):while(1){ wait(odd); wait(mutex); getodd(); countodd(); signal(mutex); signal(empty);}P3( ):while(1){ wait(even); wait(mutex); geteven(); counteven(); signal(mutex); signal(empty);}例5:一个供应商用汽车给某超市送货,并把汽车上的货物用超市的三轮车运到仓库中。超市的工作人员也用三轮车从仓库中取货去出售。假设共有3辆三轮车,仓库中只能容纳10辆三轮车的货物,且每次从汽车上取货只能供给一辆三轮车,仓库也只能容纳一辆三轮车进入。考虑相关信号量的定义及初值,并写出用P、V操作实现向仓库中送货及从仓库中取货的同步算法。 信号量定义及初始值:S=3(控制三轮车数量)mutex1=1(控制互斥访问汽车) mutex2=1(控制互斥访问仓库) empty=10(仓库容量) full=0(仓库现有库存量,供给超市)从汽车到仓库进程:P(empty);P(S);P(mutex1);从汽车上取货;V(mutex1);去仓库;P(mutex2);入仓库装货;V(mutex2);V(S);V(full);从仓库到超市进程:P(full);P(S);P(mutex2);从仓库取货;V(mutex2);V(empty);去超市;V(S);例6:a,b两点之间是一段东西向的单行车道,现要设计一个自动管理系统,管理规则如下:当ab之间有车辆在行驶时同方向的车可以同时驶入ab段,但另一方向的车必须在ab

文档评论(0)

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

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

1亿VIP精品文档

相关文档