当前位置:首页 > 计算机操作系统典型例题解析之三-
而暂停执行时,又需要将断点的现场信息保存在其PCB中。系统在建立进程的同时就建立了该进程的PCB,在撤销一个进程时也就撤销其PCB。由此可知,操作系统根据PCB来对并发执行的进程进行控制和管理,PCB是进程存在的惟一标志。 【例11】什么是原语?
答:原语是由若干条机器指令构成的一段程序,用以完成特定的功能。这段程序在执行期间不可分割。也就是说,原语的执行不能被中断,所以原语操作具有原子性。 【例12】进程和线程的主要区别是什么?
答:从调度、并发性、系统开销、拥有资源等方面来比较线程和进程:⑴调度。在传统的操作系统中,独立调度、分派的基本单位是进程。而在引入线程的操作系统中,则把线程作为调度和分派的基本单位。⑵并发性。在引入线程的操作系统中,不仅进程之间可以并发执行,而且在一个进程中的多个线程之间亦可并发执行,因而使操作系统具有更好的并发性,从而能更有效地使用系统资源和提高系统吞吐量。⑶拥有资源。不论是传统的操作系统,还是设有线程的操作系统,进程都是拥有资源的一个独立单位,它可以拥有自己的资源。一般地说,线程自己不拥有系统资源(也有一点必不可少的资源),但它可以访问其隶属进程的资源。⑷系统开销。由于在创建、撤销或切换进程时,系统都要为之分配或回收资源,保存CPU现场。因此,操作系统所付出的开销将显著地大于在创建、撤销或切换线程时的开销。 【例13】有4个进程P1,P2,P3,P4,它们进入就绪队列的先后
5
次序为P1、P2、P3、P4,它们的优先数和需要的处理器时间如下表所示。假定这四个进程执行过程中不会发生等待事件,忽略进行调度等所花费的时间,从某个时刻开始进程调度,请回答下列问题: ①写出分别采用“先来先服务”调度算法选中进程执行的次序、计算出各进程在就绪队列中的等待时间以及的平均等待时间; ②写出分别采用“非抢占式的优先数”(固定优先数)调度算法选中进程执行的次序、计算出各进程在就绪队列中的等待时间以及平均等待时间;
③写出分别采用“时间片轮转”(时间片大小为5)调度算法选中进程执行的次序、计算出各进程在就绪队列中的等待时间以及平均等待时间。
进 程 P1 P2 P3 P4 处理器时间 8 6 22 4 优先数 3 1 5 4 分析:先来先服务算法是把处理机分配给最先进入就绪队列的进程,并且一个进程一旦分得了处理机,便一直执行下去,直到该进程完成或因发生某事件而阻塞时,才释放处理机;非抢占式优先数(优先级)调度算法将CPU分配给就绪队列中优先级最高的进程,就算进程在运行过程中,有更高优先数的进程进入,也要等待运行完毕或阻塞再释放处理机;时间片轮转算法中每个进程轮流运行一个时间片的时间,
6
如果在一个时间片的时间内没有运行完毕,则进入就绪队列,等待下一个时间片继续运行。
答:先来先服务算法选择进程的顺序依次为P1、P2、P3、P4。 进程P1等待时间为0;进程P2等待时间为8;进程P3等待时间为8+6=14;进程P4等待时间为8+6+22=36。平均等待时间为(0+8+14+36)/4=14.5非抢占式的优先数算法选择进程的顺序依次为P3、P4、P1、P2。进程P1等待时间为4+22=26;进程P2等待时间为22+4+8=34; 进程P3等待时间为0;进程P4等待时间为22。平均等待时间为(26+34+0+22)/4=20.5时间片轮转进程调度顺序为P1、P2、P3、P4、P1、P2、P3、P3、P3、P3。进程P1等待两次,时间为0+(5+5+4)=14;进程P2等待两次,时间为5+(5+4+3)=17;进程P3等待两次,时间为(5+5)+(4+3+1)=18;进程P4等待1次,时间为5+5+5=15。 平均等待时间为(14+17+18+15)/4=16
【例14】图3-3给出了四个进程合作完成某一任务的前驱图,试说明这四个进程的同步关系,并用信号量描述它。
S2 S3 S1
图3-3 四个合作进程的前驱图
分析:图3-3说明任务启动后S1先执行,当S1结束后,S2、S3可以开始执行,S2、S3执行完成后,S4才可以开始执行。为了确保这
7
S4 一执行顺序,设4个同步信号量a、b、c、d分别表示S1->S2、S1->S3、S2->S3、S2->S4的前驱关系,初始值均为0。利用信号量的Wait()和Signal()操作来实现同步。 答:。Main(){Semaphore a=b=c=d=0;Cobegin{ {S1;signal(a);signal(b);} {wait(a);S2;signal(c);} {wait(b);S3;signal(d);} {wait(c);wait(d);S4;}
【例15】a,b两点之间是一段东西向的单行车道,现要设计一个自动管理系统,管理规则如下:当ab之间有车辆在行驶时同方向的车可以同时驶入ab段,但另一方向的车必须在ab段外等待;当ab之间无车辆在行驶时,到达a点(或b点)的车辆可以进入ab段,但不能从a点和b点同时驶入,当某方向在ab段行驶的车辆驶出了ab段且暂无车辆进入ab段时,应让另一方向等待的车辆进入ab段行驶。请用信号量为工具,对ab段实现正确管理以保证行驶安全。
分析:此题是读者-写着问题的变形。我们设置3个信号量S1、S2和Sab,分别用于从a点进入的车互斥访问共享变量ab(用于记录当前ab段上由a点进入的车辆的数量),从b点进入的车互斥访问共享变量ba(用于记录当前ab段上由b点进入的车辆的数量)和a、b点的车辆互斥进入ab段。3个信号量的初值分别为1、1和1,两个共享变量ab和ba的初值分别为0、0。
答: Semaphore S1=1,S2=1,Sab=1;int ab=ba=0;void Pab ()
8
共分享92篇相关文档