操作系统-进程管理习题课
十四题
十四、设有8个程序progl、prog2、…、 prog8。它们在并发系统中执行时有如图 所示的制约关系,试用P、V操作实现这 些程序间的同步。P48
分析
由图表明开始时,progl及prog2先执行。 当progl和prog2都执行完后,prog3、prog4、 prog5才可以开始执行。 prog3完成后,prog6才能开始执行。 prog5完成后,prog7 才能开始执行。 prog6、prog4、prog7都结束后,prog8才可以开 始执行。 为了确保这一执行顺序,设7个同步信号量 f1、…、f7分别表示程序progl、…、prog7是 否执行完,其初值均为0。
第一题
一、用P、V操作描述前趋关系。P1、P2、 P3、P4、P5、P6为一组合作进程,其前 趋图如图所示,试用P、V操作描述这6 个进程的同步。
第二题
二、生产者-消费者问题 它描述了一组生产者向 一组消费者提供产品,它们共享一个有界缓 冲区,生产者向其中投放产品,消费者从中 取得产品。生产者-消费者问题是许多相互合 作进程的一种抽象。 我们把一个长度为n的有界缓冲区(n>0)与一群 生产者进程P1、P2、…、Pm和一群消费者进 程C1、C2、…、Ck联系起来,如图所示。提 取物品。
分析
[分析及相关知识] 在本题中,爸爸、儿子、女 儿共用一个盘子,且盘中一次只能放一个水 果.当盘子为空时,爸爸可将一个水果放入 果盘中。若放入果盘中的是桔子,则允许儿 子吃,女儿必须等待;若放入果盘中的是苹果, 则允许女儿吃,儿子必须等待。 本题实际上是生产者—消费者问题的一种变形。 这里,生产者放入缓冲区的产品有两类,消 费者也有两类,每类消费者只消费其中固定 的一类产品。
分析
在本题中,我们可以设置两个信号量来控制A、 B产品的存放数量,sa表示当前允许A产品比B 产品多入库的数量,即在当前库存量和B产品 不入库的情况下,还可以允 许sa个A产品入 库;sb表示当前允许B产品比A产品多入库的数 量,即在当前库存量和 A产品不入库的情况 下,还可以允许sb个B产品入库。 初始时,sa为M一1,sb为N一1,当往库中存放 入一个A产品时,则允许存入B产品的数量也 增加1;当往库中存放入一个B产品时,则允许 存入A产品的数量也增加1。
第九题
九、下图给出了四个进程合作完成某一任 务的前趋图,试说明这四个进程间的同 步关系,并用P、V操作描述它。
第十题
十、桌上有一空盘,允许存放一只水果。 爸爸可向盘中放苹果,也可向盘中放桔 子,儿子专等吃盘中的桔子,女儿专等 吃盘中的苹果。规定当盘空时一次只能 放一只水果供吃者取用,请用P、V原语 实现爸爸、儿子、女儿三个并发进程的 同步。P37
进程管理习题课
重点:用P、V原语实现同步与互斥
本章小结
进程是系统分配资源的基本单位,是一个具有独 立功能的程序段对某个数据集的一次执行活动。 为什么要引入进程的概念是由操作系统的资源 有限性和处理上的并行性以及系统用户的执行 起始时间的随机性所决定的。 进程具有动态性、并发性等特点。 进程动态特性的是进程状态的变化。进程要经 历创建、等待资源、就绪准备执行,以及执行和 执行后释放资源消亡等几个过程和状态。进程 的状态转换要由不同的原语执行完成。
分析
[分析及相关知识]发送者进程与接收者进程之 间的同步关系是:发送者进程生成的信息送 入消息链中,接收者进程从消息链中接收信 息;由于发送者进程产生一个消息并链入消息 链后用V操作增加消息计数并唤醒接收者进程, 这表示发送者进程和接收者进程是通过信号 量s实现同步的,因此接收者进程应该在取信 息之前先使用一个P操作来查看消息链上是否 有消息,若无消.息则阻塞自己;另外,发送 者和接收者对消息链的访问应使用信号量进 行互斥,即在访问前使用P操作,在访问后使 用V操作。
答案
int s1=0; int s2=0; driver() { while(1) { p(s1); 启动车辆; 正常行车; 到站停车; v(s2); } } busman() { while(1) { 关车门; v(s1); 售票; p(s2); 开车门; 上下乘客; } }
十二题
十二、设有一个发送者进程和一个接收者 进程,其流程图如图所示。s是用于实现 进程同步的信号量,mutex是用于实现 进程互斥的信号量。试问流程图中的A、 B、C、D四框中应填写什么?假定缓冲 区有无限多个,s和mutex的初值应为多 少? p42
答案
A框 P(mutex) B框 V(mutex) C框 P(s) D框 P(mutex) 开始时,消息链上没有可供接收的信息, 所以s的初值为0;互斥信号量mutex的初 值应为1。
十三题
十三、(北京大学1990年试题)p46 ①写出P、V操作的定义。 ②有三个进程PA、PB和PC合作解决文件打印 问题: PA将文件记录从磁盘读入主存 的缓冲区1,每 执行一次读一个记录; PB将缓冲区1的内容复制到缓冲区2,每执行一 次复制一个记录; PC将缓冲区2的内容打印出来,每执行一次打印 一个记录。缓冲区的大小等于一个记录大小。 请用P、V操作来保证文件的正确打印。
第四题(选择)
四、多道程序环境下,操作系统分配资源 以_______为基本单位。 A.程序 B.指令 C进程 D.作业 答:C
第五题(选择)
五、对于两个并发进程,设互斥信号量为 mutex,若mutex=O,则_____。 A.表示没有进程进入临界区 B.表示有一个进程进入临界区 C.表示有一个进程进入临界区,另一个 进程等待进入 D.表示有两个进程进入临界区 答:B
第二题(续)
假定这些生产者和消费者是互相等效的。只要 缓冲区未满,生产者就可以把Байду номын сангаас品送入缓冲 区,类似地,只要缓冲区未空,消费者便可 以从缓冲区中取走物品并消耗它。生产者和 消费者的同步关系将禁止生产者向满的缓冲 区输送产品,也禁止消费者从空的缓冲区中
第三题(选择)
三、在操作系统中,进程是一个具有一定 独立功能的程序在某个数据集上的一次 __________。 A.等待活动 B.运行活动 C.单独操作 D.关联操作 答:B
第八题
八、在测量控制系统中,数据采集任务把 所采集的数据送入一单缓冲区;计算任务 从该单缓冲区中取出数据进行计算。试 写出利用信号量机制实现两者共享单缓 冲区的同步算法。
分析
[分析及相关知识] 在本题中采集任务与计 算任务共用一个单缓冲区.当采集 任 务采集到一个数据后,只有当缓冲区为 空时才能将数据送入缓冲区中存放,否 则应等待缓冲区腾空;当缓冲区中有数据 时,计算任务才能从缓冲区中取出数据 进行计算,否则也应等待。
本章小结(续)
进程上下文:一个进程的静态描述是处理机的一 个执行环境,被称为进程上下文。进程上下文由 以下部分组成:PCB(进程控制块)、正文段和数 据段以及各种寄存器和堆栈中的值。寄存器中主 要存放将要执行指令的逻辑地址,执行模式以及 执行指令时所要用到的各种调用和返回参数等。 而堆栈中则存放CPU现场保护信息、各种资源控 制管理信息等。 进程通信:进程间通信又可分为传送控制信号的 低级通信和大量传送数据的高级通信。 通信方式来看,又可分为主从式、会话式、消息 与邮箱方式、以及共享虚存方式。
本章小结
进程的并发特性反映在进程对资源的竞争以及由资 源竞争所引起的对进程执行速度的制约。这种制约 可分为直接制约和间接制约。 直接制约是被制约进程和制约进程之间,存在着使用 对方资源的需求,只有制约进程执行后,被制约进程才 能继续往前推进。具有固定的执行顺序 间接制约是被制约进程共享某个一次只能供一个进 程使用的系统资源,只有得到该资源的进程才能继续 往前推进,其他进程在获得资源进程执行期间不允许 交叉执行。没有固定的执行顺序。 操作实现:间接制约可利用加锁法和P,V原语操作实 现。直接制约既可用P,V原语实现,也可用其他互相 P78 传递信号的方式实现。
分析
[分析及相关知识] 信号量是一个确定的二元组 (s,q),其中s是一个具有非负初值的整型变量, q是一个与s相关联的初始状态为空的队列.整 型变量s表示系统中某类资源的数目,当其值 大于0时,表示系统中当前可用资源的数目; 当其值小于0时,其绝对值表示系统中因请求 该类资源而被阻塞的进程数目.除信号量的 初值外,信号量的值仅能由P操作和V操作改 变。
答案
int Se=l; int Sf=0; compute() main() { while(计算工作未完成) { cobegin { p(Sf); get(); 从缓冲区中取出数 compute(); 据; coend } v(Se); get() 进行数据计算; { while (采集工作未完成) } { 采集一个数据: } p(Se); 将数据送入缓冲区中; v(Sf); } }
第六题(选择)
六、两个进程合作完成一个任务。在并发 执行中,一个进程要等待其合作伙伴发 来消息,或者建立某个条件后再向前执 行,这种制约性合作关系被称为进程的 ____。 A.同步 B.互斥 C. 调度 D.执行 答:A
第七题(选择)
七、为了进行进程协调,进程之间应当具 有一定的联系,这种联系通常采用进程 间交换数据的方式进行,这种方式称为 ______。 A.进程互斥 B.进程同步 C .进程制约 D.进程通信 答:D
P79
本章小结(续)
常用的死锁排除方法是检测与恢复方法。 造成死锁:无论是互相通信的进程或是共享某些不 同类型资源的进程,都可能因通信顺序不当或资源分 配顺序不当而造成死锁。 死锁是一种因各并发进程等待资源而永久不能向前 推进的系统状态。 排除死锁的方法是预防、回避、检测与恢复三种。 线程是进程内的一段程序的基本调度单位。线程可 分为用户级线程和系统级线程。用户级线程的管理 全部由线程库完成,与操作系统内核无关。 线程组成由寄存器、堆栈以及程序计数器等组成,同 一进程的线程共享该进程的进程空间和其他所有资 源。线程主要用于多机系统以及网络系统的操作系 P79 统中。