




已阅读5页,还剩59页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第一章 操作系统引论解析题1、叙述操作系统在计算机系统中的位置.解:操作系统是运行在计算机硬件系统上的最基本系统软件. 它管理和控制着所有的硬件系统(CPU,主存,各种硬件部件和外部设备等), 也控制和管理着所有的系统软件(系统程序和用户程序等)操作系统对计算机使用者提供了一种良好的操作环境, 也为其他各种应用系统提供了最基本的支撑环境.现代操作系统是一个复杂的软件系统,它与计算机硬件系统有千丝万缕的联系, 也与用户有着密不可分的关系, 它在计算机系统中位于计算机裸机与计算机用户之间. 如图1.1所示, 紧挨着硬件的就是操作系统, 它通过系统核心程序对计算机系统中的几类资源进行管理, 如处理机, 存储器, 输入/输出设备, 数据与文档资源, 用户作业等, 并向用户提供若干服务, 通过这些服务将所有对硬件的复杂操作隐藏起来, 为用户提供一个透明的操作环境.在操作系统的外层是其他系统软件. 操作系统是最基本的系统软件. 用户可以直接通过系统软件与计算机打交道, 也可以建立各类应用软件和应用系统, 通过它们来解决用户的问题.由此可见,操作系统是介于计算机硬件和用户之间的一个接口.图 1.1 操作系统的位置2、怎样理解“由于计算机上装有操作系统, 从而扩展了原计算机的功能”。解:计算机系统的硬件结构和机器一级的操作包含了诸如指令集,存储器组织,总线结构和输入/输出部件等的操作与控制,这些最基本的操作恰恰又是最复杂和最难以由用户直接进行的操作。例如:用户要进行文件读写,而文件是以二进制代码的方式存放在磁盘,磁带等存储装置中,需要有一种途径把用户的要求转换成对具体的硬件部件,电路信号,选择开关等的细微操作,用户自己不可能完成这些操作,但操作系统把拥护的高级操作转换成一系列的低级操作,最终完成文件的读写。所有的低级对用户来讲都是透明的,即无须拥护关心的,看不见的,操作系统把硬件全部隐藏起来,给用户提供了一个友好的,易于操作的界面。此外,操作系统还要进行大量的系统事物处理。如响应中断的发生,处理定时操作,管理存储器及其他低级操作。所以,可以说操作系统是硬件系统的扩展,从而扩展了计算机的功能,他比直接对计算机硬件系统进行操作要容易地多。3对操作系统的描述有哪两种主要观点。解:对操作系统的描述主要有虚拟机和资源管理两种观点。虚拟机的观点也称为扩展机器的观点,是对操作系统功能位置的一种有顶向下的俯视。装有操作系统的计算机极大的扩展了原计算机的功能,把用户棉队的一个包含有各种硬件部件的计算机系统的操作和使用由复杂变得简单,从低级操作上升为高级操作,把基本功能扩展为多种功能。因此,在裸机上配置了操作系统之后,对用户来说好象是一台扩展了的机器,即一台虚拟的机器,虚拟机扩展包括了系统功能和数量上的扩展。资源管理的观点是目前对操作系统描述的主要观点,是一种对操作系统功能位置的由底到上的观察的观点。资源管理也是操作系统的主要功能,这里的资源分为软件,硬件资源。硬件资源包括处理机,CPU,主存储器,输入/输出设备,相应地,操作系统中就有处理机管理,内存管理,设备管理等功能,软件资源包括文件或信息,相应地,操作系统中就有文件管理功能。4试对分时操作系统和实时操作系统进行比较。解:我们可以丛以下一个方面对这两种操作系统进行比较:实时信息处理系统与分时操作系统一样都能为多个用户服务。系统按分时原则为多个终端用户服务:而对实时控制系统,则表现为经常对多路现场信息进行采集以及对多个对象或多个机构进行控制。实时信息处理系统与分时操作系统一样,每个用户各占一个终端,彼此独立操作,互不干扰。因此用户感觉就象他一人独占计算机;而在实时控制系统中信息的采集和对对象的控制也都是彼此互不干扰的。实时信息系统对响应时间的要求与分时操作系统类似,都是以人所能接受的等待时间来确定的:而实时控制系统的响应时间则是以控制对象所能接受的延时来确定的。分时操作系统是一种通用系统,主要用于运行终端用户程序,因此它具有较强的交互能力。而实时操作系统虽然也有交互能力,但其交互能力不及前者。分时操作系统要求系统可靠,相比之下,实时操作系统则要求系统高度可靠。5简述DOS,Windows及UNIX操作系统的特点。解:DOS是一个单用户任务的操作系统,曾广泛应用于IBM PC及其兼容机上。它具有以下特点:良好的兼容性。DOS版本从1.0到6.2,已经经过了十几次的版本更替。每次版本更新都增加或改进了一些重要功能,同时又与原来的旧版本兼容。这样,原来开发的程序不加修改或者稍加修改就能在新版本上运行。较好的开放性。DOS中的各个模块,除少数外,大部分均可以改变。这为广大用户在DOS环境下开发软件,扩充和改进操作系统功能提供了极大的方便。尤其是为汉字输入/输出技术的开发提供了一个开放性环境。使用方便。DOS提供了一组键盘命令和一些实用工具,各种命令及使用工具的使用非常方便。功能丰富。DOS命令功能十分丰富,可满足各类用户使用计算机软硬件资源的需要。它虽然是一个微机操作系统,但其功能比某些小型机还要丰富。Windows是一个单用户多任务的操作系统,是20世纪90年代初计算机操作系统技术进步的重要标志,也是DOS的换代产品。它具有以下特点:图形化的工作环境和用户界面。Windows采用当代计算机先进的软硬件支持,用一种直观的技术手段,创造出一个多任务的图形工作环境。它通过窗口,图标,菜单及对话等与用户交互,为用户创造更直观,形象的使用方式。多任务操作环境。Windows是一个多任务的操作系统,他允许同一时间运行多个程序,并且可以方便快速地在各程序之间切换。有效地利用内存。Windows突破了DOS的640KB常规内存限制,他可以使用计算机的所有内存,并且引入了虚拟内存技术,从逻辑上扩充了内存。支持多媒体及多种字体。Windows支持声卡,光驱等硬件设备,并提供媒体播放,声音记录等实用程序,是计算机进入了具有声音,图象,文本等多媒体功能的时代。Windows还提供了丰富的字体及字体变化功能,提供多种汉字输入方法。UNIX是一个多用户多任务的分时操作系统。它已成为目前应用最广泛的操作系统。它具有以下几个特点:内核和核外程序的有机结合。UNIX系统在结构上分为两层:内核和核外程序。内核体积小,精于简洁,能够常驻内存,从而保证了系统能以较高的效率运行。从内核分离出来的部分则以核外程序形式出现并在用户环境下运行。核外部分包含有非常丰富的实用程序和丰富的支持软件,正是这些程序大大增强了UNIX的功能。移植性强。UNIX的内核及核外程序基本上都用C语言编写,这使得系统易于理解,修改和扩充,并使得它具有良好的可移植性。这不仅意味着UNIX系统易于移植到别的硬件系统上,而且在UNIX系统下开发的程序也易于移植到其他配置了UNIX的系统上。UNIX是一个多用户多任务系统。可以支持多用户终端,大大提高了主机的利用率。它允许同一时间运行多个程序,有进程调度程序负责完成进程间的转换。良好的用户界面。UNIX系统是一个交互式系统,用户在终端上使用Shell命令与系统对话。Shell命令具有简洁紧凑的格式,使用起来十分方便。第二章 进程控制与同步解析题1、 叙述进程和程序的主要区别。解:进程和程序是既有联系又有区别的两个概念,它们的主要区别如下: 程序是指令的有序集合,其本身没有任何运行的含义,它是一个静态的概念。而进程是程序在处理机上的一次执行过程,它是一个动态概念。 程序的存在是永久的。而进程则是有生命期的,它因创建而产生,因调度而执行,因得不到资源而暂停,因撤销而消亡。 程序仅是指令的有序集合。而进程则由程序、数据和进程控制块组成。 进程与程序之间不是一一对应的,即同一程序同时运行于若干不同的数据集合上,它将属于若干个不同的进程;而一个进程可以执行多个程序。2、在测量控制系统中,数据采集任务把所采集的数据送入一单缓冲区;计算任务从该单缓冲区中取出数据进行计算。试写出利用信号量机制实现两者共享单缓冲区的同步算法。 解:在本题中,应设置两个信号量Sf、Se,信号量Sf表示缓冲区中是否由可供打印的计算结果,其初值为0;信号量Se用于表示缓冲区有无空位置存放新的信息,其初值为1。本题的同步描述如下:int Se=1;int Sf=0;main( ) cobegin get( ) ; compute( ); coendget( ) while(采集工作未完成) 采集一个数据; p(Se); 将数据送入缓冲区中; v(Sf); compute( ) while(计算工作未完成) p(Sf); 从缓冲区中取出数据; v(Se); 进行数据计算; 3、知一个求值公式(A+3B) / (B+5A),若A、B已赋值,试画出该公式求值过程的前趋图。解:在该公式的求值过程中,有些运算分量的执行是可以并行进行的。为了描述方便起见,我们设置了一些中间变量保存中间结果,并给每个语句命名,其求值过程及前趋图如图所示:开 始S1:X1=A*AS2:X2=3*BS3:X3=5*AS4:X4=X1+X2S5:X5=B*X3S6:X6=X4/X5结 束S1S2S3S4S5S6 4、 2.7给出了四个进程合作完成某一任务的前趋图,试说明这四个进程间的同步关系,并用P、V操作描述它。 S1S2S3S4 图2.7四个合作进程的前趋图 解:图2.7说明任务启动后SI先执行。当SI 结束后,S2、S3可以开始执行。S2、S3完成后,S4才能开始执行。为、了确保这一执行顺序,设三个同步信号量b2,b3,b4分别表示进程S2、S3、S4是否可以开始执行,其初值均为0。这四个进程的同步描述如下: int b2=0; /*表示进程S2是否可以开始执行*/ int b3=0; /*表示进程S3是否可以开始执行*/ int b4=0; /*表示进程S4是否可以开始执行*/ main() cobegin S1(); S2(); S3(); S4(); coend S1() . . . v(b2); v(b3); S2() P(b2) v(b4); S3() p(b3); v(b4); S4() p(b4); p(b4); /*因在S2及S3完成时均对b4做了v操作,因此这里要用两个p操作*/ 5. 系统的进程状态转换图如图2.8所示,请说明:执行就绪阻塞 图2.8 某系统的进程状态转换图 (1)引起各种状态转换的典型事件有哪些? (2)当我们观察系统中某些进程时,能够看到某一进程产生的一次状态转换能引起另一个进程作一次状态转换。在什么情况下,当一个进程发生转换3时能立即引起另一个进程发生转换1? (3)试说明是否会发生下述因果转换: 2 - 1 3 - 2 4 - 1 解: (1)在本题所给的进程状态转换图中,存在四种状态转换。当进程调度程序从就绪队列中选取一个进程投入运行时引起转换1;正在执行的进程如因时间片用完而被暂停执行就会引起转换2;正在执行的进程因等待的事件尚未发生而无法执行(如进程请求完成I/O)则会引起转换3;当进程等待的事件发生时(如I/O完成)则会引起转换4。 (2)如果就绪队列非空,则一个进程的转换3会立即引起另一个进程的转换1。这是因为一个进程发生转换3意味着正在执行的进程由执行状态变为阻塞状态,这时处理机空闲,进程调度程序必然会从就绪队列中选取一个进程并将它投入运行,因此只要就绪队列非空,一个进程的转换3能立即引起另一个进程的转换1。 (3)所谓因果转换指的是有两个转换,一个转换的发生会引起另一个转换的发生,前一个转换称为因,后一个转换称为果,这两个转换称为因果转换。当然这种因果关系并不是什么时候都能发生,而是在一定条件下才会发生。 2 - 1: 当某进程发生转换2时,就必然引起另一个进程的转换1。因为当发生转换2时,正在执行的进程从执行状态变为就绪状态,进程调度程序必然会从就绪队列中选取一个进程投入运行,即发生转换1。 3 - 2:某个进程的转换3决不可能引起另一进程发生转换2。这是因为当前执行进程从执行状态变为阻塞状态,不可能又从执行状态变成就绪状态。 4 - 1:当进程机空闲且就绪队列为空时,某一进程的转换4就会引起该进程的转换1。因为此时处理机空闲,一旦某个进程发生转换4,就意味着有一个进程从阻塞状态变为就绪状态,因而调度程序就会将就绪队列中的此进程投入运行。 6. 单处理机的分时系统中,分配给进程P的时间片用完后,系统进行切换,结果调度到的仍然是进程P。可能出现上述情形吗?如果可能请说明理由。 解:有可能出现上述情况,例如,若在进程P时间片用完后,被迫回到就绪队列时,就绪队列为空,这样进程P就是就绪队列中唯一的一个进程,于是队列按进程优先级排列,在进程P时间片用完之后回到就绪队列时,若其优先级高于当前就绪队列中的其他进程,则它将排在就绪队列之首,从而再次被调度程序选中并投入运行。 7. 桌上有一空盘,允许存放一个水果。爸爸可向盘中放苹果,也可向盘中放橘子,儿子专等吃盘中的橘子,女儿专等吃盘中的苹果。规定当盘空时一次只能放一只水果供吃者取用,请用P、V原语实现爸爸、儿子、女儿三个并发进程的同步。 分析及相关知识 在本题中,爸爸、儿子、女儿共用一个盘子,且盘中一次只能放一个水果。当盘子为空时,爸爸可将一个水果放入果盘中。若放入果盘中的是橘子,则允许儿子吃,女儿必须等待;若放入果盘中的是苹果,则允许女儿吃,儿子必须等待。本题实际上是生产者-消费者问题的一种变形。这里,生产者放入缓冲区的产品有两类,消费者也有两类,每类消费者只消费其中固定的一类产品。 解:在本题中,应设置三个信号量S、So、Sa,信号量S表示盘子是否为空,其初值为1;信号量So表示盘中是否有橘子,其初值为0;信号量Sa表示盘中是否有苹果,其初值为0。同步描述如下: int S=1; int Sa=0; int So=0; main () cobegin father(); son(); daughter(); coend father() while(1) p(s); 将水果放入盘中; if(放入的是橘子) v(So); else v (Sa); son() while(1) p(So); 从盘中取出橘子; v(S); 吃橘子; daugther() while(1) p(Sa); 从盘中取出苹果; v(S); 吃苹果; 8.(上海交通大学1996年试题)哲学家甲请哲学家乙、丙、丁到某处讨论问题,约定全体到齐后开始讨论;在讨论的间隙四位哲学家进餐,每人进餐时都需使用刀、叉各一把,餐桌上的布置如图2.9所示。请用信号量及P、V操作说明这四位哲学家的同步、互斥过程。 丁 b 食品b 叉2 刀1 丙 甲 刀2 叉1 乙 图2.9 哲学家进餐问题(b表示刀、表示叉)解:在本题中,应设置四个信号量fork1、fork2、knife1、knife2,其初值均为1,分别表示资源叉1、叉2、刀1、刀2是否可用。同步描述如下:int fork1=1;int fork2=1;int knife1=1;int knife2=1;main ( ) cobegin Pa ( ); /*分别用进Pa、Pb、Pc、Pd代表哲学家甲、乙、丙、丁的活动*/ Pb ( ); Pc ( ); Pd ( ); coendPa ( ) while ( 1 ) p (knife1); p (fork1); 进餐; v (knife1) v (fork1); 讨论问题: Pb ( ) while ( 1 ) p (knife2) p (fork1); 进餐; v (knife2); v (fork1); 讨论问题; Pc( ) while ( 1 ) p (knife2) p (fork2); 进餐; v (knife2); v (fork2); 讨论问题; Pd ( ) while ( 1 ) p (knife1) p (fork2); 进餐; v (knife1); v (fork2); 讨论问题; 9. 数据库有一个写进程,多个读进程,它们之间读、写操作的互斥要求是:写进程正在写该数据库时不能有其他进程读该数据库,也不能有其他进程写该数据库;读进程之间不互斥,可以同时读该数据库。请用信号量P、V操作描述这一组进程的工作过程。解:在本题中,允许读进程同时读数据库,但写进程正在写数据库时不允许其他进程读数据库,也不允许其他进程写该数据库。为了解决读、写进程之间的同步,应设置两个信号量和一个共享变量:读互斥信号量rmutex,用于使读进程互斥地访问共享变量count ,其初值为1 ;写互斥信号量wmutex,用于实现写进程与读进程的互斥及写进程与写进程的互斥,其初值为1;共享变量count,用于记录当前正在读数据库的读进程数目,初值为0。其工作过程如下:int rmutex=1;int wmutex=1;int count=0;main ( ) cobegin reader ( ); writer ( ); coendreader ( ) while ( 1 ) p (rmutex); if (count=0) p (wmutex); /*当第一个读进程读数据库时,阻止写进程写*/ count +; v (rmutex); 读数据库; p (rmutex); count-; if(count=0) v (wmutex); /*当最后一个读进程读完数据库时,允许写进程写*/ v (rmutex); wirter ( ) while ( 1 ) p (wmutex); 写数据库; v (wmutex); 在本题中,要注意对信号量rmutex意义的理解。rmutex是一个互斥信号量,用于使读进程互斥地访问共享变量count。该信号量并不表示读进程的数目, 表示读进程数目的是共享变量count。当一个读进程要读数据库时,应将读进程计数count增加1;如果此前(count加1以前)数据库中无读进程,还应对写互斥信号量wmutex做p操作,这样,若数据库中无写进程,则通过p操作阻止写进程写,若数据库中有写进程,则通过p操作让读进程等待。同理,当一个读进程完成读数据库操作时,应将读进程计数count减少1;如果此时(count减1以后)数据库中已无读进程,还应对写互斥信号量wmutex做v操作,以允许写进程写。10.(华中理工大学1999年试题)设公共汽车上,司机和售票员的活动分别是:司机的活动: 启动车辆; 正常行车; 到站停车;售票员的活动:关车门;售票;开车门;在汽车不断地到站、停车、行驶过程中,这两个活动有什么同步关系?用信号量和P、V操作实现它们的同步。解:在汽车行使过程中,司机活动与售票员活动之间的同步关系为:售票员关车门后,向司机发开车信号,司机接到开车信号后启动车辆,在汽车正常行使过程中售票员售票,到站时司机停车,售票员在车停后开车门让乘客上下车.因此司机启动车辆的动作必须与售票员关车门的动作取得同步;售票员开车门的动作也必须与司机停车取得同步,在本题中,应设置两个信号量:S1,S2,S1表示是否允许司机启动汽车,其初始值为0;S2表示是否允许售票员开门,其初始值为0.用P,V原语描述如下:int s1=0;int s2=0;main ( ) cobegin driver ( ); busman ( ); coenddirver ( ) while( 1 ) p (s1); 启动车辆; 正常行车; 到站停车; v(s2); busman () while ( 1 ) 关车门; v (s1); 售票; p (s2); 开车门; 上下乘客; 用P,V操作来控制现实生活中的操作流程是一类常见的试题.这类试题要求来求解题者能将生活中的控制流程用形式化的方式表示出来10. 什么是缓冲池?设计一个数据结构来管理缓冲池。 解:如果将系统内所有的缓冲区统一管理起来就形成了既能用于输入,又能用于输出的缓冲池,也称为缓冲区链表。缓冲池通常是由若干个大小相同的缓冲区组成,任何进程都可以申请使用缓冲池。此时,操作系统的功能就是管理缓冲池。 缓冲池应该有三个队列和四个工作缓冲区。如图6.3所示,一个队列是空缓冲区队列!连接着空缓冲区。另外一个队列是装满输入数据的缓冲区队列,输入设备已将这些缓冲区中装满了输入数据等待cpu处理。第三个队列是装满输出数据的缓冲区队列,这些数据等待输出设备的输出。此外,还有四个现行的工作缓冲区:(1)、收容输入工作缓冲区; (2)、收容输出工作缓冲区; (3)、提取输入工作缓冲区; (4)、提取输出工作缓冲区。 当输入设备欲输入数据时,从空缓冲区队列上取下来一个空缓冲区,作为收容输入工作缓冲区,待装满输入数据后,就将其挂在装满输入数据的缓冲区队列上。当cpu需要数据处理的时候,就从装满输入数据的缓冲区队列上取下一个缓冲区,作为提取输入工作缓冲区当将其中数据消耗完后变成空缓冲区,将其挂在空缓冲区队列上。当cpu欲输出结果时,从空缓冲区队列上取下来一个空缓冲区,作为收容输入工作缓冲区,当将输出数据装满后,将其挂在装满输出数据缓冲区队列。当输出设备欲输出结果时,从装满输出数据的缓冲区队列上去下来一个缓冲区,作为提取输出工作缓冲区当数据输出后变成了空缓冲区,将其挂到空缓冲区队列上。如此周而复始不停地工作,任何进程都可使用缓冲池中的缓冲区。11. 在某计算机系统中,其屏幕显示分辨率为600*480,若要存储一屏256彩色的图象,需要多少字节存储空间?解: 屏幕信息的显示是以像素为单位进行的。由于屏幕显示分辨率为640*480,故屏幕上有像素:640*480=300*(210)当用256彩色显示时,每个像素需要8位二进制数(2 8 =256)表示,因此一屏信息需要存储空间: 8*300*(2 10)=300k字节所以需要300k的字节空间。12. 在某计算机系统中,时钟中断处理程序每次执行的时间为2ms。若时钟中断频率为60hz,试问cpu用于时钟中断处理的时间比率为多少? 解:在计算机系统中,时钟以固定的频率中断cpu,以增加日历记数或控制系统中的一些定时操作。 由题意:中断频率60赫兹,所以时间周期为:1/60s=50/3ms在每个时钟周期中,cpu要用2ms的时间执行中断程序,所以cpu用于时钟中断处理的时间比率: 2/(50/3)=6/50=12%.13 设有一个发送者进程和一个接受者进程,其流程图如图2.10所示。是用于实现进程同步的信号量,是用于实现进程互斥的信号量。试问流程图中的A,B,C,D 四框中应填写什么?假定缓冲区有无限多个,S 和 mutex 的初始值应为多少?解:由上述分析可知,A、B、C、D四框应分别填入:发送者进程:申请缓冲区把信息写入缓冲区A 将缓冲区放到信息链尾 BV(s)接收者进程: CV(mutex)从信息链首取一个缓冲区 D从缓冲区中取出数据释放缓冲区A框 P(mutex)B 框 V (mutex)C 框 P(s)D 框 P(mutex)开始时,消息链上没有可供接收的信息,所以的初值为0;互斥信号量的初值应为1。14下述程序是解决两个进程互斥访问临界区问题的一种方法,试从“互斥”、“有空让进”、“有限等待”等三个方面讨论它是否正确。int c1=1;int c2=1;main ( )cobegin p1 ( ); p2 ( ); /*进程p1、p2并发执行*/coendp1 ( ) /*第一个进程p1*/ while ( 1 ) other section 1; /*其他部分*/ do c1=1-c2; while (c2=0); critical section; /*临界区*/ c1=1; p2 ( ) /*第二个进程p2*/ while ( 1 ) other section 2; /*其他部分*/ do c2=1-c1; while (c1=0); critical section; /*临界区*/ c2=1; Prog4();Prog5();Prog6();Prog7();Prog8();coendprog1() V(f1);V(f1);V(f1);Prog2() V(f2);V(f2);V(f2);Prog3() p(f1);p(f2); v(f3);Prog4() p(f1);p(f2); V(f4);Prog5() p(f1);p(f2); V(f5);Prog6() p(f3); V(f6);Prog7() p(f5); V(f7);Prog8() p(f4);p(f6);p(f7); 15. 一个仓库,可以存放A和B两种产品,但要求:(1)每次只能存入一种产品(A或B)(2)NA产品数量B产品数量M其中,N和M是正整数。试用P,V操作描述产品A与产品B的入库过程。解:可以设置两个信号量来控制A,B产品的存放数量,SA表示当前允许A产品比B产品多入库的数量,即在当前库存量和B产品不入库的情况下,还可以允许sa个A 产品入库,sb表示当前 B产品比A产品多入库的数量,即在当前库存量和当往库中存放一个A产品时,则允许存入B产品的数量也增加1;当往库中存放入一个B产品时,则允许存入A产品的数量也增加1。 产品A,B的入库过程描述如下:Int mutex=1; /*互斥信号量|Int sa=M-1;Int sb=N-1;Main() While(1);取一个产品;if(取的是A产品) p(sa); p(mutex); 将产品入库; v(mutex); v(sb);else /*取的产品是B*/ p(sb); p(mutex); 将产品入库; v(mutex); v(pa); 从本题的解法可以看出,当有比较复杂条件出现时,可以把复杂条件分解成一组简单条件,这样就能很容易地写出对应的程序流程了。 16.(北京大学1994年试题)进程A1,A2,An1通过m个缓冲区向进程B1,B2,Bn2不断地发送消息。发送和接收工作遵循如下规则: 每个发送进程一次发送一个消息,写入一个缓冲区,缓冲区大小等于消息长度; 对每一个消息,B1,B2,Bn2都须各接收一次,读入各自的数据区内; m个缓冲区都满时,发送进程等待;没有可读的消息时,接收进程等待。试用P、V操作组织正确的发送和接收工作。解:在本题中,应设置一个信号量mutex实现诸进程对缓冲区的互斥访问;两个信号量数组emptyn2和fulln2描述n2组缓冲区的使用情况。Mutex的初值为1,数组empty中的元素初值为m;数组full中的元素初值为0。其同步关系描述如下:int mutex,emptyn2,fulln2;int i;mutex=1;for(i=0; i=n2-1; i+) emptyi=m; f ulli=0;main ( ) cobegin A1( ); A2( ); An1( ); B1( ); B2( ); Bn2( ); coend Send( ) /*发送消息*/ int i; for( i = 0 ; i=n2-1; i+) p(emptyi); p(mutex); 将消息从缓冲区取出; v(mutex); for(i=0; i=n2-1; i+) v(fulli;receive( i ) /*进程Bi接收消息*/ p( fulli); p(mutex); 将消息从缓冲区取出; v(mutex); v(emptyi;Ai( ) /*因发送进程A1,A2,An1的程序类似,这里只给出进程A1的描述。*/ while (1) Send( ); Bi( ) /*因接收进程B1,B2,Bn2的程序类似,这里只给出进程Bi的描述。*/ while (1) receive( i ); 17. (南开大学1997年试题)在南开大学和天津大学之间有一条弯曲的小路,其中从S到T一段路每次只允许一辆自行车通过,但其中有一个小的安全岛M(同时允许两辆自行车停留),可供两辆自行车已从两端进入小路情况下错车使用,如图2.14所示。试设计一个算法使来往的自行车均可顺利通过。 图2.14 小路示意图解:在本题中,应设置5个信号量ST、TS、K、L、M,信号量ST表示允许自行车从南开大学去天津大学,其初值为1;信号量TS表示是允许自行车从天津大学去南开大学,其初值为1;信号量K表示允许自行车通过路段S到K,其初值为1;信号量L表示是否允许自行车通过路段T到L,其初值为1;信号量M表示安全岛上还可以停放自行车的数目,其初值为2。其控制过程描述如下:int ST=1;int TS=1;int K=1;int L=1;int M=2;totian ( ) /*从南开大学去天津大学*/ p (ST); p (K); 从S走到K; p (M); 进入安全岛; v (K); p (L); 从L走到T; v (M); v (L); v (ST);tonan ( ) /*从天津大学去南开大学*/ p (TS); p (L); 从T走到L; p (M); 进入安全岛; v (L); p(k); 从K走到S; v (M); v (K); v (TS); 18. (中国科学院软件研究所1995年试题)多个进程共享一个文件,其中只读文件的称为读者,只写文件的称为写者。读者可以同时读,但写者只能独立写。请: 说明进程间的相互制约关系,应设置哪些信号量? 用P、V操作写出其同步算法。 修改上述的同步算法,使得它对写者优先,即一旦有写者到达,后续的读者必须等待。而无论是否有读者在读文件。解: 本题前两问是经典读者写者问题,第三问对读者写者问题加了一些限制,即使算法对写者优先。 进程间的相互制约关系有三类:一是读者之间允许同时读;二是读者与写者间须互斥;三是写者之间须互斥。为了解决读者与写者之间的同步,应设置两个信号量和一个共享变量:读互斥信号量rmutex,用于使读者互斥地访问共享变量count,其初值为1;写互斥信号量wmutex,用于实现写者与读者互斥及写者与写者互斥,其初值为1;共享变量count,用于记录当前正在读文件的读者数目,初值为0。 进程间的控制算法如下所示: int rmutex=1; int wmutex=1; int count=0; main ( ) cobegin reader ( ); writer ( ); coend reader ( ) while (1) p (rmutex
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024学年南京市九年级语文上学期期中考试卷附答案解析
- 斜拉桥上部结构主梁施工方案
- 宪法九版习题及答案 第8章 人民法院与人民检察院在线练习
- 高一功的说课课件
- 砂石场砂石资源采购合同执行监督与考核
- 停薪留职期间员工培训及技能提升服务合同
- 乡村振兴私募股权投资基金委托管理协议
- 人力资源外包合同修订及绩效管理与激励协议
- 成人开放大学咨询服务合同
- 职业教育实训教学安全管理规定
- GB/T 45859-2025耐磨铸铁分类
- 医院中层干部素质与能力
- 心内科工作汇报
- 2025年湖南食品药品职业学院单招考试文化素质数学试题预测试卷带答案详解(考试直接用)
- 监狱警察心理健康讲座
- 设计后续服务管理办法
- 政府单位消防培训课件
- 培训部门介绍
- 2025至2030中国预测性维护行业项目调研及市场前景预测评估报告
- 2025至2030中国腊味行业市场发展现状及发展趋势与投资风险报告
- 全国省市电子表格
评论
0/150
提交评论