操作系统习题3—进程的互斥与同步

1.例举两个现实生活中需要同步与互斥的例子。

我们去吃自助餐时,店里的厨师会在后台厨房制作食物,然后将食物运送到公共饮食区域,让顾客自行挑选。如果公共饮食区域的食物都被顾客吃光了,那么顾客只有先进行等待,等厨师做出更多食物再送到公共饮食区;如果公共饮食区域食物数量多到一定程度,厨师会暂停制作食物。

驾驶员开车行驶到一个十字路口时,如果本路口的绿灯亮起,驾驶员可以顺利通过;如果本路口的红灯亮起,驾驶员必须停车进行等待,让其他路口的车辆通过。

2.何谓原语?它与系统调用有何区别?如何实现原语执行的不可分割性?

原语是由若干条机器指令构成的可完成特定功能的程序段。具有以下三个特点:

  • 处于操作系统最底层,是最接近硬件的部分
  • 程序的运行具有原子性,作为一个整体而不可分割,即要么全都完成,要么全都不做
  • 程序的运行时间都较短,而且调用频繁

原语与系统调用的区别:原语只要强调操作的不可分割性,可以认为是一个不可中断的子程序调用;系统调用是由用户态进入核心态,一般也不会被中断,但如果有更紧迫的系统调用的话,原来的系统调用还是会被打断。

原语可通过硬件实现不可中断性,或通过实现临界段的元方法(屏蔽中断、加硬锁)达到不被逻辑上中断。

3.如果 P、V 操作不作为原语,即可分割执行,那么是否还可以用于
解决互斥问题?若不能,举例说明。

如果 P、V 操作不作为原语,就不能用于解决互斥问题。

举例:在生产者-消费者问题中,由于 P、V 操作可以分割执行,很大可能会出现当前缓冲池中满缓冲区个数仅为 1,而多个消费者同时成功使用到这个缓冲区的情况,造成不可避免的系统错误。

4.请用并行语句和 P、V 操作描述图 1 所示的任务执行过程

int synch=0;    //两进程 P1、P2 共享信号量ParbeginP1():{S1;V(synch);S2;S4;V(synch);S5;V(synch);}P2():{P(synch);S3;P(synch);S6;P(synch);S7;}
Parend;

5.“理发师睡觉”问题:假设理发店由等待间(n 个座位)和理发间(只有一个座位)构成。无顾客时,理发师睡觉。顾客先进等待间再进理发间,当顾客进入理发间发现理发师在睡觉时,则唤醒理发师,请求理发;如果理发师正在理发,又有顾客到来时,只要有空椅子,他就坐下来等待,如果没有空椅子,他就离开。请为理发师和顾客各编写一段程序来描述他们的同步问题。

int customer=0,barber=0;       //顾客和理发师的信号量
int customerNumber=0,mutex=1; //当前顾客数目和互斥控制量//理发师
Barber(){while(1){P(customer);      //唤醒等待的一位顾客P(mutex);            //顾客被唤醒,准备理发。没有顾客就睡觉customerNumber--;    //店里顾客数减一V(barber);             //有顾客来了,醒来理发V(mutex);            //释放信号量}
}//顾客
Customer(){while(1){P(mutex);               //顾客想要理发if(customerNumber<N){    //理发店人数未满,进店customerNumber++;  //店里顾客数加一V(customer);       //唤醒理发师理发V(mutex);          //释放信号量P(barber);           //理发师进行理发}else                  //理发店人数已满,离店V(mutex);}
}

操作系统习题3—进程的互斥与同步相关推荐

  1. 操作系统习题4—进程死锁

    操作系统习题4-进程死锁 1.试解释在十字路口产生的交通死锁现象中包括了死锁产生的 4 个必要条件,并给出避免产生交通死锁的简要规则. 四个必要条件: ① 互斥:同一时刻只能有一辆车占据道路上的同一个 ...

  2. 2.3.5 操作系统之信号量机制实现进程的互斥、同步与前驱关系

    文章目录 0.思维导图 1.信号量机制实现进程互斥 2.信号量机制实现进程同步 3.信号量机制实现前驱关系 0.思维导图 在看此小结内容之前,需熟悉这一篇博客里面的知识,关于P.V操作内部实现原理等h ...

  3. 【操作系统原理】进程的互斥以及上锁与解锁原语

    什么是进程互斥? 所谓进程互斥,就是对于系统的某种资源,若一个进程正在访问它,其他进程必须等待,不能同时使用.这是一种源于资源共享的制约关系,也称为间接制约关系. 接下来,我们来简要的了解一下几个概念 ...

  4. [OS复习]进程互斥与同步2

    互斥与同步的解决策略 当前,利用软件方法.硬件方法.信号量方法.管程方法.消息传递方法都可以有效地解决进程间的互斥与同步,其中信号量的方法更具有优势(目前已经通用). 1. 软件方法: 软件方法是指由 ...

  5. 操作系统_进程管理_进程的控制与同步

    目录 1.进程控制的概念 2.进程的创建 3.进程间互斥与同步的概念 4.临界资源和临界区 5.同步机制应遵循的原则 6.信号量与P/V操作 7.生产者与消费者问题 1.进程控制的概念 进程由创建产生 ...

  6. 操作系统第二章 进程管理

    写在前面:本文参考王道论坛的 操作系统考研复习指导单科书 文章目录 第二章 进程管理 进程同步 读者写者问题 哲学家就餐问题 练习题 哲学家就餐:加碗(2019真题) 既是生产者又是消费者 和尚取水( ...

  7. 笔记篇:操作系统第二章 进程管理

    笔记篇:操作系统第二章 进程管理 目录 笔记篇:操作系统第二章 进程管理 2.1 进程的基本概念 2.1.1 程序的顺序执行及其特征 2.1.2 前驱图 2.1.3 程序的并发执行及其特征 2.1.4 ...

  8. 王道考研——操作系统(第二章 进程管理)(进程的同步,进程的互斥,管程)

    一.进程同步与进程互斥 什么是进程同步 "进程同步"讨论的就是怎么解决"进程异步"的问题 什么是进程互斥 知识回顾与重要考点 二.进程互斥的软件实现方法 学习提 ...

  9. 操作系统(二十二)用信号量机制实现进程互斥、同步、前驱关系

    2.3.5 用信号量机制实现进程互斥.同步.前驱关系 目录 2.3.5 用信号量机制实现进程互斥.同步.前驱关系 2.3.5.1 用信号量机制实现进程互斥 2.3.5.2 用信号量机制实现进程同步 2 ...

最新文章

  1. 如何通俗解释欧拉公式?
  2. php根据宽度显示html,我怎样才能动态地改变PHP的HTML div的宽度?
  3. 计算机应用基础(本)实训任务1,计算机应用基础(本)实训任务1-2.pdf
  4. 编程题A+B Format的总结(第二次作业一)
  5. WARNING: cell0 mapping not found - not syncing cell0
  6. 计算机数据链路层教案,第三章 数据链路层(2) 新.ppt
  7. linux的一些命令总结
  8. cas登录成功返回用户更多信息
  9. 苹果mac os x系统的两种快捷截图技巧
  10. 残酷的生命,严峻的人生,短暂的美好
  11. 泛在电力物联网建设大纲ppt
  12. python queue put阻塞_python queue length_queue length_python queue put
  13. Tycho build 3: 创建一个全局构建项目
  14. 用户注册密码加密和后端校验的权衡
  15. postman批量生产body信息(实现批量修改数据)
  16. 什么是OKR?OKR对于目标管理有什么意义?
  17. [内附完整源码和文档] 基于Java的宾馆住宿管理系统
  18. 讯飞-糖尿病遗传风险检测挑战赛
  19. acm竞赛中tle的原因 2021-3-9
  20. css 滚动公告,用DIV+CSS布局,怎么做滚动的公告栏?

热门文章

  1. IO:select、poll、epoll
  2. java速算24,Java扑克牌速算24的方法
  3. java 静态内部类 线程安全问题_单例模式的七种写法, 面试题:线程安全的单例模式...
  4. 压缩机电流保护原因是什么?压缩机烧毁常见原因有哪些?
  5. 浓烟滚滚!某市联通集体断网,谁的锅?
  6. calibre中的hcell_关于calibre的Hcell你知道多少?
  7. roobo机器人怎么唱歌_智能机器人都长什么样?提前探秘中国智能机器人大赛
  8. Python之spyder-kernels:spyder-kernels的简介、安装、使用方法之详细攻略
  9. Interview:算法岗位面试—11.06早上上海某智能驾驶科技公司(创业)笔试+面试之手撕代码、项目考察、比赛考察、图像算法的考察等
  10. 成功解决UnicodeDecodeError: 'utf-8' codec can't decode byte 0x9a in position 0: invalid start byte