《考研-操作系统基础知识归纳和总结(共62页).doc》由会员分享,可在线阅读,更多相关《考研-操作系统基础知识归纳和总结(共62页).doc(62页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、精选优质文档-倾情为你奉上考研 基础知识总结什么是操作系统?它有什么基本特征?(哈工大2000年试题)【解答】操作系统:操作系统是计算机系统中的一个系统软件。它是一些程序模块的集合,这些程序模块管理和控制计算机中的硬件和软件资源,合理地组织计算机工作流程,以便有效地利用这些资源为用户提供一个功能强、使用方便的工作环境,从而在用户及计算机之间起到接口的作用。操作系统的基本特征是并行性、共享性、不确定性。判断:操作系统程序都是在核心态下才能运行。(大连理工大学2000年试题)【分析】操作系统是一组控制和管理计算机硬件和软件资源、合理地对各类作业进行调度以及方便用户的程序的集合。操作系统提供的服务,
2、一部分必须在核心态下才能运行,如进程调度、目录服务等。还有一些功能,如DOS下的外部命令,则可以由用户调用,运行在用户态下。【解答】错误。批处理系统的主要缺点是:(清华大学1996年试题)ACPU利用率低。 B不能并发执行。C缺少交互性。 D以上都不是。【解答】选择C。填空:多道运行的特征之一是宏观上并行,它的含义是( )。(华中科技大学2000年试题)【分析】多道运行的特征是多道性、宏观上并行、微观上串行。多道性是指计算机主存中同时存放几道相互独立的程序。宏观上并行是指同时进入系统的几道程序都处于运行过程中,即它们先后开始了各自的运行,但都未运行完毕。微观上串行是指主存中的多道程序轮流或分时
3、地占有处理机交替执行。【解答】并发程序都已经开始执行,但都未结束。判断:在分时系统中,响应时间时间片用户数,因此为改善响应时间,常用的原则是使时间片越小越好。(东南大学1996年试题)【分析】时间片越小,进程切换所用的开销就相对越大。因此时间片不是越小越好,一般使用户键入的常用命令能在一个时间片内处理完毕即可。【解答】错误。实时系统应具备的两个基本特性是( )和( )。(北京理工大学2000年试题)【分析】实时系统是顺应实时控制和实时信息处理的需要而产生的。所谓实时是表示及时、即时,而实时系统是指系统能及时(或即时)响应外部事件的请求,在规定的时间内完成对该事件的处理,并控制所有实时任务协调一
4、致地运行。实时系统的应用领域决定了它的特性是:具有实时时钟管理功能;能进行过载保护;高可靠性。【解答】及时性高可靠性实时信息处理是实时应用的一种,例如( )和( )都是实时信息处理的例子。(华中科技大学2000年试题)【解答】飞机订票系统、图书资料查询系统现代操作系统的基本功能是管理计算机系统的硬件、软件资源,这些管理工作分为A管理、B管理、C管理、D管理、E和通信事务管理。(东南大学2000年试题)【解答】A处理机 B存储器管理 C设备 D文件 E作业【扩展】选择:操作系统的( )管理部分负责对进程调度。A主存储器B控制器C运算器D处理机这里要防止把处理机与系统结构中所说的处理机的组成混淆起
5、来。选择D。为了支持多道程序运行,存储管理必须要实现的主要功能有( )、( )和主存扩充。(华中科技大学1997年试题)【分析】在多道程序运行环境下,程序员无法预知存储管理模块将把他们的程序分配到主存的什么地方,而且程序员也希望摆脱存储地址、存储空间大小等细节问题。因此存储管理模块应该提供地址重定位能力。另外,由于主存中可同时存放多道程序,为了防止程序间相互干扰,存储管理模块必须提供存储保护手段。【解答】存储无关性、存储保护选择:衡量整个计算机性能指标的参数有:(北京理工大学1999年试题)A用户接口。B资源利用率。C作业步的多少。D吞吐量。E周转时间。【分析】操作系统的性能与计算机系统工作的
6、优劣有着密切的联系。评价操作系统的性能指标一般有:系统的可靠性;系统的吞吐率(量),是指系统在单位时间内所处理的信息量,以每小时或每天所处理的各类作业的数量来度量;系统响应时间,是指用户从提交作业到得到计算结果这段时间,又称周转时间;系统资源利用率,指系统中各个部件、各种设备的使用程度。它用在给定时间内,某一设备实际使用时间所占的比例来度量;可移植性。【解答】选择B、D、E。【扩展】判断:资源的利用率高和系统的工作效率高是一回事()。(东南大学试题)解答:系统的工作效率,也就是吞吐率。从上述分析可知,此题应判错误。 3.2逻辑结构判断:数据库管理程序需要调用操作系统程序,操作系统程序的实现也需
7、要数据库系统的支持。()(大连理工大学2000年试题)【分析】从操作系统虚拟机的结构来看,最核心层是裸机,紧挨着的一层是操作系统,这一层把应用程序和裸机隔离开来,使得应用程序看起来似乎运行在一个虚拟机器上。题中说法没有正确反映应用程序与操作系统的关系。【解答】错误。简答:操作系统有哪几种结构设计方法?简述其中之一的特点。(武汉大学2000年试题)【解答】操作系统有无结构、层次结构和客户/服务器模型等3种结构设计方法。现今大多数操作系统采用的是层次结构。层次结构是结构设计方法的一种,使用这种方法进行设计时,可以形成正确、结构清晰的软件系统,从而达到可靠、可适应、可移植的设计目标。在层次式结构下,
8、操作系统的各模块应处于什么位置、各模块之间的关系十分清晰。一个分层结构操作系统由裸机,用户,CPU调度和P、V操作,文件管理,作业管理,内存管理,设备管理,命令管理等部分组成。试按层次结构的原则从内到外将各部分重新排列。(中国科学院计算技术研究所1997年试题)【解答】按层次结构的原则从内到外依次为:裸机,CPU调度和P、V操作,内存管理,作业管理,设备管理,文件管理,命令管理,用户。在计算机系统中,为什么要区分管态与目态?操作系统为什么能为用户程序提供各种服务?(西安电子科技大学1999年试题)【解答】操作系统是计算机系统中最重要的系统软件,为了能正确地进行管理和控制,其本身是不能被破坏的。
9、因此,系统采用了区分处理机状态的办法,为操作系统程序建立一个保护环境。这样,用户程序只能在管态下运行,只能执行非特权指令,只能访问自己的存储区,从而保护了操作系统程序的正常运行。操作系统虚拟机为用户提供了一个协助解决问题的装置。操作系统为用户提供两种类型的用户界面,其一是命令接口,包括键盘命令、作业控制语言、图形化用户界面等;其二是系统调用,又称程序接口。通过这两种界面,操作系统把它的全部操作命令的集合呈现给用户(或用户程序),从而实现了为用户服务。判断:用户程序通常可以直接访问系统缓冲区中的数据。( )(大连理工大学2000年试题)【分析】由前面叙述可知,用户程序工作在目态下,只能直接访问自
10、己的存储区,访问系统缓冲区必须通过操作系统的服务。【解答】错误。选择:你认为下列哪几种指令应该在核心状态下执行。(上海交通大学1999年试题,10分)1屏蔽所有中断;2读时钟周期;3设置时钟日期;4改变存储映像图;5存取某地址单元的内容;6停机。【解答】1、2、4、6必须在核心状态下执行。简答:试说明中断在进程控制中的推动作用。(南开大学2000年试题)(8分)【解答】中断是实现操作系统功能的基础,是构成多道程序运行环境的根本措施,是进程控制中的推动力量。例如,外设完成中断或请求使用外设的访管中断的出现,将导致I/O管理进程投入运行;申请或释放主存而发出的访管中断,将导致在主存中创建一个进程而
11、且开始运行;时钟中断或I/O完成中断,可导致处理机调度工作的执行;操作员从键盘发出终止执行的命令,可以终止当前进程的运行。所以,中断是进程运行的引导,是它们被激活的驱动源。选择:中断发生时,由硬件保护并更新程序指令计数器PC,而不是由软件完成,主要是为了( )(华中科技大学1998年试题)A提高处理速度。 B使中断程序易于编制。 C节省内存。 D能进入中断处理程序并能正确返回。【分析】一次中断过程分为中断进入(由硬件负责)和中断处理过程(由软件负责)。在中断进入过程中,首先保存PC、PS值,然后从中断向量地址中得到PC、PS值放入寄存器。软件的中断处理过程是,先保存现场信息和参数传递,再执行中
12、断处理程序,最后恢复和退出中断。简要地说,一次中断,两次保护现场。分步保护现场的原因是,进入软件的中断处理后,PC、PS寄存器里被填上了新内容,因此,PC、PS的保护只能由硬件完成。【解答】答案是D。【扩展】中断响应的实质是什么?从上述分析可知,中断响应的实质是交换指令执行地址和处理器状态信息。填空:中断优先级是由硬件规定的,若要调整中断的响应次序,可通过_。(北京大学1997年试题)【分析】中断优先级是由硬件规定的,其次序是不能由软件更改的。要调整中断的响应次序,只能通过中断屏蔽。【解答】中断屏蔽3.3用户界面与OS实例在答卷上用连线把下面左右两列词连起来形成最恰当的5对。(东南大学2000
13、年试题)左列: 右列:(1)Linux (1)面向对象(2)UNIX(2)网络操作系统(3)Windows NT(3)微内核(4)Mach 3.0(4)自由软件(5)OS/2(5)C语言【分析】UNIX的核心代码大部分是用C语言写的。Windows NT是当然的网络操作系统。Linux是UNIX的一种,具体讲Linux是一套兼容于System V以及BSD UNIX的操作系统,也是遵循POSIX规范的一个操作系统。Linux于1991年4月由芬兰人Linus Benedict Torvalds在赫尔辛基大学独立开发,并由此开创了自由软件的先河。当UNIX日渐庞大复杂而难以掌握时,人们提出了Mi
14、crokernel的概念,就是把Kernel去芜存菁,仅留下重要的部分,以此减低Kernel的复杂度。Mach就是在Carnegie-Mellon(卡耐基梅隆CMU)大学诞生的一个Microkernel(微核心)操作系统(1980年)。Mach最普遍的版本是Mach 2.5。它是许多商业UNIX如DEC OSF/1、NextStep的基础。Mach 3.0才是真正纯粹的完全Microkernel化版本。OS/2采用32位抢先多任务体系结构,采用客户机服务器策略,在对等层环境既是一个客户机又是一个服务器。OS/2可以同时运行Windows 3.1、DOS和OS/2的应用软件。OS/2的图形用户界
15、面称为WorkPlace Shell。它使用面向对象的标记和拖放界面(在这一点上,Windows NT也是)。用户可以对工具和文件夹进行个人化以简化对重要信息的访问。【解答】连线见下图: 3.4进程的描述与控制什么是进程控制块?试从进程管理、进程通信、中断处理、文件管理、存储管理、设备管理的角度设计进程控制块应包含的项目。(北京大学1999年试题)【分析】北京大学1990年、1992年、1995年、1997年都以名词解释的形式考查了PCB这一知识点。1999年再次考查这一知识点,并提高了考试要求,即要求理解PCB结构中各分量的含义。熟记我们在前面列出的进程控制原语的形式描述有助于加深对这个题的
16、理解。【解答】进程控制块(PCB)是为描述进程的运动变化过程而采用的一个与进程相联系的数据结构,用于记录系统管理进程所需的信息,描述进程的瞬间特征。它是进程的唯一实体,操作系统通过PCB而感知进程的存在。为了完成进程管理、进程通信、中断处理、文件管理、存储管理、设备管理等各项任务,进程PCB结构必须如下项目:进程的标识符name:每个进程都必须有唯一的标识符,可以用字符或编号表示。在创建一个进程时,由创建者给出进程的标识,唯一地标识进程,与其他进程区别。进程当前运行状态status:说明本进程目前处于何种状态(运行、就绪、等待),作为进程调度时分配处理机的主要依据。当前队列指针next:登记了
17、处于同一状态的下一个PCB的地址,以此将处于同一状态的所有进程链接起来。比如在一个就绪队列中,当前活动进程阻塞,则需要根据当前队列指针调度下一个就绪进程进入运行。总链指针all_q_next:将所有的进程链接起来,进程PCB中的该项内容总是指向总链中的下一个PCB地址。这在有的场合是很方便的,比如当创建一个进程时,需要判断创建者给出的标识符名是否唯一,此时沿总链往下查找就比较方便。程序开始地址start_addr:进程开始的地址。当一个进程被调度进入运行时,需要从此处获得进程开始地址。CPU现场保护区cpustatus:通常保护的信息有工作寄存器、指令计数器以及程序状态字等,供进程调度时使用。
18、当一个进程由运行转入其他状态时,需要把这些信息保存起来。当一个进程投入运行时,又需要把这些内容写入相应的寄存器。同时进行中断处理也需要保存CPU现场。通信信息communication information:是指每个进程在运行过程中与别的进程进行通信时所记录的有关信息。家庭联系process family:有的系统允许一个进程创建自己的子进程,这样,会组成一个进程家庭。在pcb中必须指明本进程与家庭的联系,如它的子进程和父进程的标识符。占有资源清单own_resource,用于设备管理。进程优先级priority,在中断处理、进程调度过程中都需要比较进程之间的优先级。上述项目是一般PCB结构
19、应包含最基本内容。不同的操作系统所使用的PCB结构是不同的。在UNIX系统中,为完成存储管理、文件管理,还在PCB结构中设有i结点指针、主存地址、当前中断保护区内r0等内容。判断:进程是基于多道程序技术而提出来的。其最基本的特性是并发性和动态性;进程的执行也即在各种基本状态之间多次转换的过程。但只有处于就绪、阻塞、执行这3种状态的进程位于内存。(中科院软件所2000年试题)【解答】错误。去掉并发性;进程在新、死状态上只经过一次;进程都在内存中。一个单CPU的操作系统共有n个进程,不考虑进程状态过渡的情况:(北京大学1995年试题)给出运行进程的个数。给出就绪进程的个数。给出等待进程的个数。【分
20、析】单处理机在任一时刻只能处理一道程序,在不考虑状态过渡的情况下,任一进程只有3种状态,即运行、就绪和等待。但此时该系统其他条件未知(如资源分配情况),故无法确定就绪进程和等待进程的数目。【解答】1。不一定。不一定。填空:为了实现进程由等待状态转换成就绪状态的状态变化,操作系统应提供_原语。(华中科技大学2001年试题)【解答】唤醒原语。什么是线程?试说明线程与进程的关系。(南京大学2000年试题)【解答】在引入线程的OS中,线程是进程中的一个实体,是被系统调度和分派的基本单位。进程与线程既区别、又联系。进程是任务调度的单位,也是系统资源的分配单位;而线程是进程中的一条执行路径,当系统支持多线
21、程处理时,线程是任务调度的单位,但不是系统资源的分配单位。每个进程至少有一个执行线程。3.5同步、互斥与通信何谓临界区?下面给出的实现两个进程互斥的算法是安全的吗?为什么?(中国科学技术大学1998年试题)#define TRUE;#define FALSE;int flag2;flag0 = flag1 = FALSE;enter-crtsec(i)int i;WHILE(flag1-i);flagi = TRUE;leave-crtsec(i)int i;flagi = FALSE;process i: /* i = 0 OR i = 1 */.enter-crtsec(i); /*进入临
22、界区*/IN CRTICAL SECTIONLeave-crtsec(i); /*离开临界区*/.【解答】一次仅允许一个进程使用的资源称为临界资源,在进程中对于临界资源访问的程序段称为临界区。从概念上讲,系统中各进程在逻辑上是独立的,它们可以按各自独立的速度向前推进。但由于它们共享某些临界资源,而产生了临界区问题。对于具有临界区问题的共行进程,它们之间必须互斥,以保证不会同时进入临界区。这种算法是不安全的。因为,在进入临界区的操作enter-crtsec( )不是一个原子操作,如果两个进程同时执行完其循环(此前两个flag均为False),则这两个进程可以同时进入临界区。举例说明P、V操作为什
23、么要求设计成原语(即对同一信号量上的操作必须互斥)。(北京大学1993年试题)【分析】这是一个概念题,要求考生对P、V操作有较深刻的理解。【解答】P操作的流程如下所示。PROCEDURE P(S)BEGINlock out interrupts;S := S-1;IF S 0 THENBEGINstatus(q) := blockeda;insert(Q,q);unlock interrupts;scheduler;END;ELSE unlock interruptsEND;设信号量S的初值为1,当一个P操作执行完S := S-1后,S的值为0,该P操作不应被阻塞。但若P操作不是一个原语,也就
24、是说在一个P操作执行的过程中可以有另一个P操作同时在执行,假如第2个P操作在第1个P操作执行判断语句IF S0前也执行了S:= S-1操作,则这时的S值为-1。这时第一个P操作将会被阻塞。这样的P操作不符合P操作的语义。同样地,对于V操作,其流程为:PROCEDURE V(S)BEGINlock out interrupts;S := S + 1;IF S 0 THENBEGINtape_units := tape_units-1;i := 0;WHILE (i 0 THENBEGINtape_units := tape_units - 1;i = 0;WHILE(i = 4) DOBEGIN
25、x := i;tapei := 1;exitEND;i := i + 1;END;wait_tape := false;END;END;V(S);END;PROCEDURE release_tape(x:integer);BEGINP(S);tape_units := tape_units + 1;tapex := 0;V(S);End;3.6算法设计题进程A和B利用公共缓冲池交换数据。设缓冲池有N个缓冲块,进程A每次生成一个数据块存入一空缓冲区,进程B每次从缓冲池中取出一个满的缓冲块。试用信号量及P、V操作实现进程A和B的同步。(中山大学1996年试题)【分析】本题是标准的生产者消费者问题。
26、与上题相比,使用了多缓冲区,需要增加一个信号量。另外,环形缓冲池和环形队列管理也是考点之一。【解答】Var mutex,empty,full:semaphore:1,n,0;buffer : ARRAY0.n-1 of item;in, out :integer:= 0,0;BEGINCOBEGIN:A: BEGINL1:produce a date block;P(empty);P(mutex);Bufferin := nextp;in : = (in + 1) mod nV(mutex);V(full);GOTO L1;END;B: BEGINL2:P(full);P(mutex);Nex
27、tpc := Bufferout;out : = (out + 1) mod nV(mutex);V(empty);consume the item in nextcGOTO L2;END;GOTO L2; END;【扩展】此题应注意以下几点:(1)在所有的程序中P(mutex)和V(mutex)应成对出现。(2)对资源信号量empty和full的P、V操作也必须成对出现,但它们是处于不同的程序中,正是这一点保证了互斥共享。(3)在每个程序中的P操作顺序不能颠倒,应先执行对资源信号量的操作,再执行对互斥信号量的操作,否则可能引起进程死锁。设有一个具有N个信息元素的环形缓冲区,A进程顺序地把信息
28、写入缓冲区,B进程依次地从缓冲区读出信息。回答下列问题:(中国科学院软件研究所1996年试题)叙述A、B两进程的相互制约关系;判别下列用P、V操作表示的同步算法是否正确?如不正确,试说明理由,并修改成正确算法。VAR buffer: ARRAY 0.N-1 OF T;in,out: 0.N-1;VAR S1,S2: Semaphore;S1 := 0; S2 := N;in := out := 0;PROCEDURE A:BEGINREPEAT生产数据m;P(S2);Buffer(in) := m;in := (in + 1) MOD N;V(S1);foreverEND;PROCEDURE
29、B:BEGINREPEATV(S2);m := buffer(out);消费m;out := (out + 1) MOD N;P(S1);foreverEND;【分析】本题是一个标准的生产者-消费者问题。题中所给的算法与标准算法不同,但考生不能因此就说这个算法不正确。考生须仔细分析试题中所给出的算法。在本题中,进程B在使用缓冲区前(读缓冲区)无需进行任何P操作,即进程B不会因任何原因被阻塞。这与题目中的控制要求不相符。因此这个算法实现是错误的。此外,对缓冲区的访问也没有用互斥信号量进行控制。【解答】A和B两进程的相互制约关系如下:当缓冲区满时,A进程不可以写,必须等待;当缓冲区空时,B进程不可
30、以读,必须等待。该算法有错,它对读进程进入临界区未加限制。当缓冲区为空时,也可以进入临界区读信息。当存在多个读进程和多个写进程时,还需要引入一个信号量S0以防止同时读或同时写。改进后的算法如下:VAR buffer: ARRAY 0.N-1 OF T;in,out: 0.N-1;VAR S0,S1,S2: Semaphore;S0 := 1; S1 := 0; S2 := N;in := out := 0;PROCEDURE A:BEGINREPEAT生产数据m;P(S2);P(S0);Buffer(in) := m;in := (in + 1) MOD N;V(S0);V(S1);forev
31、erEND;PROCEDURE B:BEGINREPEATP(S1);P(S0);m := buffer(out);out := (out + 1) MOD N;V(S0);V(S2);消费m;foreverEND;【扩展】本题是一类判别错误和改错题。这类题目一般是用来检查考生对一些典型算法的掌握程度的。在本题中,是考查考生对生产者消费者问题的掌握。解答这类问题时,首先需要对标准算法熟练掌握,其次,还需对算法的变化做到心中有数。不要把正确的变化列为出错点。例如本例中,如果题目中的算法给出的V操作顺序与标准算法不同,考生则不能认为其解答是错误的。因为在控制算法中,V操作的顺序不会影响算法的正确性
32、。今有3个并发进程R、M和P,它们共享了一个可循环使用的缓冲区B,缓冲区B共有N个单元。进程R负责从输入设备读信息,每读一个字符后,把它存放在缓冲区B的一个单元中;进程M负责处理读入的字符,若发现读入的字符中有空格符,则把它改成,;进程P负责把处理后的字符取出并打印输出。当缓冲区单元中的字符被进程P取出后,则又可用来存放下一次读入的字符。请用P、V操作为同步机制写出它们能正确并发执行的程序。(南京大学1997年试题)【分析】此题是3个进程之间的同步问题。显然R与M、R与P、P与M之间均应有一缓冲区指针。与之对应有3个信号量。【解答】Var full,changed,empty,mutex:in
33、teger;Var fullP,changedP,emptyP:integer;Var ch:char ;Var charray ARRAY0.n of char;fullP:= 0;emptyP:= 0;changedP:= 0;full := 0;empty := n;changed := 0;mutex := 0; R:BEGINgetchar(ch);P(Empty);P(mutex);charrayfullP :=ch;fullP := (fullP + 1) mod n;V(mutex);V(changed);END;M:BEGINP(changed);P(mutex);ch :=
34、 charraychangedP;if ch = thench = ,;changedP := (changedP + 1) mod n;V(full);V(changed);END;P:BEGINP(full);P(mutex);ch := charrayemptyP;putchar(ch);emptyP := (emptyP + 1) mod n;V(mutex);V(empty);END;【扩展】本题在进程同步之外,还考查了考生基本编程能力及环形队列操作。考生应该注意这个信号。尽管P、V操作本身已有一定难度,但仍然存在结合其他知识点命题,以进一步增加难度的可能。我们可以列举一些知识点综合
35、的方向。比如说,在读者写者问题中,可以结合UNIX文件系统附带考查文件打开、关闭等操作;可以把P、V操作和实际的资源管理问题结合起来,等等。多个进程共享一个文件,其中只读文件的称之为读者,其余只写文件的称为写者。读者可以同时读,但是写者只能独立地写。(中科院软件所1995年试题)说明进程间的相互制约关系,应设哪些信号量?用P、V操作写出其同步算法。修改上述的同步算法,使得它对写者优先,即一旦有写者到达,后续的读者都必须等待,而无论是否有读者在读文件。【分析】本题要求写出的算法与前面的题目略有不同。这里的两类进程(读者和写者进程)的控制是不相同的。对于写者进程,只能独占文件,即当有写者进程时不能
36、有其他进程运行;对于读者进程,可以与其他的读者进程共享文件,即当有读者进程的,只允许其他的读者进程运行,而不允许写者进程运行。此外,当全部正在运行的读者进程运行完毕后,才允许其他的写者进程进入。为了达到这一控制效果,我们引入了一个变量rc,用于记录当前正在运行的读者进程数。每个读者进程进入系统后须对rc值加1。当rc值由0变为1时,说明是第一个读者进程进入,因此需要该读者进程对控制写者进程的信号量进行P操作,以便与写者进程互斥运行;当rc值由非0值增加时,说明不是第一个读者进程,此时控制写者进程的信号量已经过P操作控制禁止写者进程进入,因此不需要再次对该信号量进行P操作。当读者进程退出时,须对
37、rc做减1操作。如发现减1后rc值变为0,说明是最后一个读者进程退出,因此需要该读者进程对控制写者进程的信号量进行V操作,以便使写者进程能够进入。【解答】进程间的相互制约关系有三类。一是读者之间允许同时读;二是读者与写者之间须互斥进行;三是写者之间须互斥写。进程间的控制算法如下所示。BEGINinteger mutex1,mutex2,rc;mutex1 := 1;mutex2 := 1;rc := 0;COBEGINreader: BEGINP(mutex1);rc := rc + 1;IF rc = 1 THEN P(mutex2);V(mutex1);Reading the file;P
38、(mutex1);rc := rc-1;IF rc = 0 THEN V(mutex2);V(mutex1);END;writer: BEGINP(mutex2);Writeing the file;V(mutex2);END;COENDEND;为了提高写者的优先级,我们增加一个信号量w,用以在写进程到达时封锁后续的读者进程。相应的控制算法如下:BEGINinteger mutex1,mutex2,rc,w;mutex1 := 1;mutex2 := 1;rc := 0;w := 1;COBEGINreader: BEGINP(w);P(mutex1);rc := rc + 1;IF rc =
39、 1 THEN P(mutex2);V(mutex1);V(w);Reading the FILE;P(mutex1);rc := rc-1;IF rc = 0 THEN V(mutex2);V(mutex1);END;writer: BEGINP(w);P(mutex2);Writeing the FILE;V(mutex2);V(w);END;COENDEND; 【扩展】对于可由一类进程多次访问,而不同类的进程必须互斥访问的资源的控制,是进程控制中常见的一类问题。本题是这类问题中的一个典型,它给出了对于这类资源的控制方法,即采用一个资源计数变量rc进行控制。把对于该资源的访问控制变成对变量rc的访问。这时,资源计数变量rc是一个临界资源,需要用信号量对其进行访问控制。有桥如图所示。(北京大学