操作系统简答及大题(15页).doc
-1、请举例说明单用户单任务的操作系统与多用户多任务的操作系统之间的区别?2、死锁产生的4个必要条件是什么?它们是彼此独立的吗?3、当系统中的地址空间非常大时(例如32位),会给页表的设计带来什么问题?请给出一个方案并分析其优缺点。4、文件在磁盘上存放的形式有几种?它们与存取方法有何关系?5、试比较进程与程序的异同。6、脱机命令接口和联机命令接口有什么不同?1、答案:DOS是单用户单任务的操作系统,通常这种操作系统没有进程调度,内存管理也比较简单,只划分为系统区和用户区,是单道的程序运行环境。Unix是多用户多任务的操作系统,有进程管理,内存管理也比较复杂。它们都具有设备管理系统和文件管理系统,但功能也有差别。2、互斥,请求和保持,不剥夺,环路等待。不是相互独立的,前三个条件是必要条件,而环路等待实际上是在前三者基础上的一种可能的结果,是死锁的一种现象。3、会导致页表过长从而很难找到一块连续的存储空间存放页表,此外如果页表中的行不连续也会加大访问页表的查找时间。可以用多级页表解决这个问题,将页表分页,离散地存储在不同区域,同时建立另一张页表映射原来页表的每一页。优点是不需要大块的连续空间,但并没有减少页表的空间,同时也增加了访存次数。4、三种存储结构的特点略。顺序结构链接结构索引结构顺序顺序顺序随机随机5、答案:进程与程序是紧密相关而又完全不同的两个概念:1)每个进程实体中包含了程序段和数据段这两个部分,因此他们是紧密相关的。但从结构上看,进程实体中除了程序段和数据段外,还必须包含一个数据结构,即进程控制块PCB。2)进程是程序的一次执行过程,因此是动态的;动态性还表现在进程由创建而产生、由调度而进行、由撤销而消亡,即它具有一定的生命周期。而程序只是一组指令的有序集合,并可以永久的驻留在某种介质上,其本身不具有运动的含义,是静态的。3)多个进程实体可同时存放在内存中并发执行,其实这正是引入进程的目的。而程序的并发执行具有不可再现性,因此程序不能正确并发执行。4)进程是一个能够独立运行、独立分配资源和独立接受调度的基本单位,而程序不可能在多道环境下独立运行。5)进程与程序不一一对应,同一个程序多次运行,将形成不同的进程;同一个程序的一次执行也可以产生多个进程;而一个进程也可以执行多个程序。6、答案:脱机命令接口是OS提供给批处理作业用户的作业控制语言。批处理用户不能直接与自己的运行作业进行交互,只能向系统提供用作业控制语言编写的作业说明书,并委托系统按照作业说明书中的作业控制命令来对它们的作业进行控制和管理。联机命令接口则不要求用户填写作业说明书,此时,系统将向用户提供一组键盘命令或其他操作方式的命令,用户可通过这些命令来交互的控制自己程序的运行并获得操作系统的服务。1、简述分页和分段的区别。2、用户级线程与内核级线程的区别是什么?3、死锁产生的4个必要条件是什么?它们是彼此独立的吗?4、文件在磁盘上存放的形式有几种?它们与存取方法有何关系?5、在什么情况下需要进行重定位?为什么要引入动态重定位?6、命令接口和图形用户接口分别有什么优缺点?1、答案:分页和分段有许多相似之处,但是在概念上两者完全不通,主要表现在:页是信息的物理单位,分页是为了系统管理内存的方便而进行的,故对用户而言,分页是不可见的,是透明的;段是信息的逻辑单位,分段是作业逻辑上的要求,对用户而言,分段是可见的。页的大小是固定的,由系统决定;段的大小是不固定的,由用户作业本身决定。从用户角度看,分页的地址空间是一维的,而段的地址空间是二维的。2、答案:比较如下: 程的调度与切换速度;对于内核级线程,OS负责以线程为单位的调度,对于用户级线程,OS的调度单位是进程,同一个进程内部的线程切换是自己完成的。 统调用;内核级线程的系统调用时只会引起该线程的阻塞,用户级线程的系统调用将引起整个进程的阻塞。线程执行时间;内核级线程执行时间以线程为单位,用户级线程执行时间以进程为单位,内部线程共享。3、答案:互斥,请求和保持,不剥夺,环路等待。不是相互独立的,前三个条件是必要条件,而环路等待实际上是在前三者基础上的一种可能的结果,是死锁的一种现象。4、答案:三种存储结构的特点如下表:顺序结构链接结构索引结构顺序顺序顺序随机随机5、答案:源程序经过编译产生的目标模块一般总是从0开始编址的,其中的地址都是相对于起始地址的相对地址。在将目标模块经过链接装入内存时,其分配到的内存空间的起始地址通常不为0,因此指令和数据的实际物理地址与装入模块中的相对地址是不同的。此时,为了使程序能够正确执行,必须将相对地址转换成物理地址,即进行重定位。进程在运行过程中经常要在内存中移动位置,引入动态重定位的目的就是为了满足程序的这种需要,动态重定位的实现需要一定的硬件支持,重定位的过程是由硬件地址变换机构在程序执行每条指令时自动完成的。6、答案:命令接口的优点:功能强,速度快,灵活性好,屏幕开销小;缺点:显示不直观,难学,难记。图形用户接口的优点:显示直观,操作简便,易学;缺点:实现的代码规模大,对内外存容量、CPU速度和显示器的要求较高。1、 何谓死锁?为什么将所有资源按类型赋予不同的序号,并规定所有进程按资源序号递增的顺序申请资源后,系统便不会产生死锁?2、简述分页和分段的区别。3、简述分时系统的特征?4、一个比较完善的文件系统应该具备哪些功能?5、微内核结构具有哪些优点?6、请说明中断驱动I/O方式和DMA 方式有什么不同?1、答案:死锁是指多个进程在运行过程中因竞争资源而造成的一种僵局,若无外力作用,这些进程都将无法再向前推进。原因是死锁的必要条件环路等待条件不可能成立。因为多个进程之间只可能存在占据较低序号资源的进程等待占据较高序号资源的进程释放资源的情况,但不可能存在反向的等待,因此不能形成循环等待链。2、答案:分页和分段有许多相似之处,但是在概念上两者完全不通,主要表现在:页是信息的物理单位,分页是为了系统管理内存的方便而进行的,故对用户而言,分页是不可见的,是透明的;段是信息的逻辑单位,分段是作业逻辑上的要求,对用户而言,分段是可见的。页的大小是固定的,由系统决定;段的大小是不固定的,由用户作业本身决定。从用户角度看,分页的地址空间是一维的,而段的地址空间是二维的。3、答案:多路性;允许一台主机连接多台终端,系统按分时原则为每个用户服务,每个用户以时间片为单位轮流运行。独立性;每个用户各占一个终端,彼此独立操作互不干扰。及时性;用户的请求能在很短的时间内得到响应,用户可以接受。交互性;用户可通过终端与系统进行人机对话。4、答案:文件存储空间的管理;目录管理;文件的读写管理;文件的安全性管理;提供用户接口。5、答案:微内核结构的优点如下:1)提高了系统的灵活性和可扩充性。在微内核结构中,OS的大部分功能都是相对独立的服务器来实现的,用户可以根据需要选配器中的部分或全部服务器,还可以随着计算机硬件和OS技术的发展,相应的更新若干服务器或增加一些新的服务器。2)提高了OS的可靠性。由于所有的服务器都是运行在用户态,它们不能直接访问硬件,因此,当某个服务器出现错误时,通常只会影响到它自己,但不会引起内核和其他服务器的损坏和崩溃。3)适用于分布式系统。对用户进程而言,如果它通过消息传递与服务器通信,那么他只须发送一个请求,然后等待服务器发来的响应,而无须知道这条消息是在本地机就处理还是通过网络送给远地机上的服务器。6、答案:不同之处主要有:1)中断频率。在中断方式中,每当输入数据缓冲寄存器中装满输入数据或将输出数据缓冲寄存器中的数据输出之后,设备控制器便发生一次中断。由于设备控制器中配置的数据缓冲寄存器通常较小,因此中断比较频繁;而DMA方式下,在DMA控制器的控制下,一次能完成一批连续数据的传输,并在整批数据传送完后才发生一次中断,因此可大大减少CPU处理I/O中断的时间。2)数据的传送方式。在中断方式下,由CPU直接将输入数据写入控制器的数据缓冲寄存器供设备输出,或在中断发生后直接从数据缓冲寄存器中取出输入数据供进程处理,即数据传送必须经过CPU;而在DMA方式中,数据的传输在DMA控制器的控制下直接在内存和I/O设备间进行,CPU只需将数据传输的磁盘地址、内存地址和字节数传给DMA控制器即可。1.设备分配与那些因素有关?(4分)2. 某系统中磁盘的每个盘块大小为1KB,外存分配方法采用中的混合索引结构,其中索引节点中直接地址6项,一级索引地址2项,二级索引地址1项,每个盘块号占用4个字节,请问该系统中允许的文件最大长度是多少?(6分)3为了能够查找到文件的位置,在采用连续文件、链接文件和索引文件时,在目录中需要登记那些内容?(6分)4某采用分页存储管理的系统中,物理地址占20位,逻辑地址中页号占6位,页大小为1KB,问:该系统的内存空间大小为多少?每块的大小为多少?逻辑地址共几位,每个作业最大长度为多少?若0页放在3块中,1页放在7块中,2页放在9块中,逻辑地址0420H对应的物理地址是多少?(5分)5. 试述缺页中断与一般中断的主要区别。(4分)6. 进程的基本状态包括哪几种?并画出其状态转换图。7. 在一个批处理单道系统中,采用响应比高者优先的作业调度算法。当一个作业进入系统后就可以开始调度,假定作业都是仅计算,忽略调度花费的时间。现有三个作业,进入系统的时间和需要计算的时间如表所示: 作业进入系统时间需要计算时间开始时间完成时间周转时间19:0060分钟9:0029:1045分钟39:1525分钟求出每个作业的开始时间、完成时间及周转时间并填入表中。1.答案:设备分配策略与下列因素有关:(1)I/O设备的固有属性,对于独占设备,共享设备、虚拟设备等具有不同属性的设备,通常采用相应的分配算法。(2)设备分配算法,常见的有先来先服务算法、优先级高者优先算法(3)设备分配的安全性,即避免死锁的产生。(4)设备独立性,设备独立性指应用程序独立于具体使用的物理设备。评分标准:共4个要点,每个要点1分2、答案:66054KB 解题步骤及其评分标准:直接地址可用的磁盘空间为1KB×66KB(1分);1级索引项可用的磁盘空间为1KB×256×2=512KB(2分);2级索引项可用的磁盘空间为1KB×256×256=64MB(2分);求和:6KB+512KB+64MB=66054KB3、答案:连续文件:第一个磁盘块的块号和文件长度;链接文件:第一个磁盘块的块号;索引文件:索引盘块号。4、答案:内存空间大小为1MB;每块的大小为1KB;每个作业最大长度为64KB; 逻辑地址0420H对应的物理地址是1C20H.解题步骤及其评分标准:逻辑地址0420H对应的页号为1,主存块号为7,页内地址20H,得到物理地址1C20H。5、答案:缺页中断与一般中断的主要区别: 在指令执行期间产生和处理中断信号。一条指令在执行期间,可能产生多次缺页中断。评分标准:共2个要点,每个要点2分6、答案:进程的三种基本状态:就绪状态执行状态阻塞状态发生等待事件运行态阻塞态就绪态进程调度 落选等待事件结束评分标准:基本状态2分,进城转换图4分7、答案:10:0060分钟10:2511:10120分钟10:0010:2570分钟1简述具有通道的系统中独占设备的一般分配过程。(3分)2比较电梯调度算法和最短寻找时间优先调度算法。(6分)3.为了实现虚拟页式存储管理,页表应该包含哪些内容?(4分)4.简述一种LRU页面置换算法的实现方案。(5分)6.列举引起进程创建的事件。简述进程创建的过程。(6分)7. 若系统有某类资源m×n+1个,允许进程执行过程中动态申请该类资源,但在该系统上运行的每一个进程对该资源的占有量任何时刻都不会超过m+1个。当进程申请资源时只要有资源尚未分配完则满足它的申请,但用限制系统中可同时执行的进程数来防止发生死锁,你认为进程调度允许同时执行的最大进程数应该是多少?并证明之。(7分)1、答案:可按下述步骤进行设备分配: 分配设备。分配控制器。分配通道。2、答案:“电梯调度”与“最短寻找时间优先”都是要尽量减少移动臂移动时所花的时间;不同的是“最短寻找时间优先”不考虑臂的移动方向,总是选择离当前读写磁头最近的那个柱面的访问者,这种选择可能导致移动臂来回改变移动方向;“电梯调度”是沿着臂的移动方向去选择离当前读写磁头最近的那个柱面的访问者,仅当沿臂移动方向无等待访问者时才改变臂的移动方向;由于移动臂改变方向是机械动作,速度相对较谩。相比之下,电梯调度算法是一种简单、实用且高效的调度算法。但是,在实现时除了要记住读写磁头的当前位置外,还必须记住移动臂的移动方向。3、答案:在分页虚拟存储管理时使用的页表,最少包括以下内容:物理块号、状态位、修改位、外存地址。4、答案:方案多个,下面仅是其一:为了实现LRU,必须在主存维护一张作业所有页的链表,表中各项按访问时间先后排序,最近访问的页排在表头,最久末用的页排在表尾,这就是所谓的栈式算法。每当要置换一页时,必须对链表中的各项进行修改。若被访问的页在主存,则将其移到表头,调整相应项。若不在主存,则将新调的页放表头,其它项依次后移,将表尾一项挤掉。6、答案:引起进程创建的典型事件有分时系统中的用户登录、批处理系统中的作业调度、系统提供服务、应用进程本身的应用请求等。创建进程:申请空白PCB。为新进程分配资源。初始化进程控制块。将新进程插入就绪队列。7、答案:假设系统中有x个进程的进程,则资源至少要有m×x+1个,由于系统资源有m×n+1个,则可列出不等式:m×x+1m×n+1解不等式,得到xn,所以系统允许同时执行的最大进程数为n。证明:假设在系统允许同时执行的最大进程数为n时,仍然出现了死锁,此时应该存在一组进程进程都在等待资源,而且系统已无资源可用。则此时该组进程最多n个,每个进程没有执行完时最多占用m个资源,所以现在系统分配出去的资源最多m×n,少于系统资源m×n+1,所以不可能有死所出现。因此,系统允许同时执行的最大进程数为n时系统不会有死锁发生1、有一个具有两道作业的批处理系统,有如下表所示的作业序列(表中所列作业优先级即为进程优先级,数值越小优先级越高)。分别列出下面两种情况下所有作业进入内存时刻及结束时刻,并计算其平均周转时间。作业名到达时刻估计运行时间(分)优先级A10:00405B10:20303C10:30504D10:40206假设采用短作业优先的调度算法,进程调度采用优先级为基础的剥夺式算法。(6分)10:00 A到达,无竞争,A开始运行10:20 B到达,进入内存,B的优先级高于A,A停止,B运行(1分)10:30 C到达,不能进入内存(1分)10:40 D到达,不能进入内存10:50 B运行结束,C和D竞争进入内存,D进入,A运行(1分)11:10 A运行结束,C进入内存,C运行(1分)12:00 C运行结束,D运行12:20全部结束T(703090100)/472.5分钟(2分)2、在一分页存储管理系统中,逻辑地址长度为16位,页面大小为4096字节,现有一逻辑地址为2F6AH,且第0、1、2页依次存放在物理块5、10、11中,问相应的物理地址为多少?(6分)由题意可知,本页式系统的逻辑地址结构为:(3分)页号P页内位移W 15 12 11 0逻辑地址2F6AH的二进制表示:0010 111101101010(1分)页号为2,在第11块中,故物理地址为BF6AH。(2分)3、有一个仓库,可以存放A和B两种产品,但要求:1)每次只能存入一种产品(A或B);2)-NA产品数量B产品数量M。其中,N和M是正整数。试用同步算法描述产品A与产品B的入库过程。(13分)答案:-第 15 页-int mutex=1; int sa=M-1; int sb=N-1;main()while(1) 取一个产品; if(取的是A产品)wait(sa); wait(mutex); 将产品入库; signal(mutex); signal(sb); elsewait(sb); wait(mutex); 将产品入库; signal(mutex); signal(sa);4、在一个系统中,不采用死锁避免和预防措施,但当死锁发生后需要能够检测出来,请设计一个可行的死锁检测方案答案:死锁检测的数据结构类似银行家算法(略):1)可利用资源向量available:表示m类资源中每一类资源的可用数目;2)把不占用资源的进程向量allocation=0记入表L中,即LiL;3)从进程集合中找到一个requestiwork的进程,做如下处理:将其资源分配图简化,释放出资源,增加工作向量work=work+allocation;将他记入L表中;4)若不能把所有的进程都记入L表中,则表明系统状态S的资源分配图是不可完全简化的,因此该系统状态将发生死锁。5、设有A B、C三个进程,它们共享十个资源,每个进程最大需求量分别为4,7,8,它们对资源请求的序列如下表:(8分)序号进程申请资源数1A22B43C24B25C26A2请画出执行完序号4时的资源分配矩阵;(2分)为使系统不发生死锁,执行完序号6时,3个进程各处于什么状态,获得多少同类资源?(3分)按照上题时的状态,系统会发生死锁吗?为什么?(3分)解题步骤及其评分标准:(2 4 2) (2分)A运行,B、C阻塞 4、4、2 (3分)不会,A已得到全部资源,运行结束后释放资源可以使B、C正常结束 (2分)6、在实现文件系统时,为了加快文件目录的检索速度,可利用“FCB分解法”。假设目录文件存放在磁盘上,每个盘块512B。FCB占64B,其中文件名占8B,通常将FCB分解为符号目录项和基本目录项两部分,其中符号目录项大小为10B:(8分)基本目录项大小为多少字节?(2分)假设某一目录文件共有254个FCB,试分别给出采用分解法之前和之后,对该目录文件分别的平均访问磁盘次数:(3分)一般地,若目录文件分解前占用N个盘块,分解后符号目录文件占用M个盘块,请给出访问磁盘次数减少的条件:(3分解题步骤及其评分标准:64856B (2分)分解之前:平均访问次数为(64×254/512+1)/2165 分解之后:平均访问次数为(10×254/5121)/23 (2分)条件为:分解前平均读盘次数分解后平均访问符号目录文件的读盘次数>1,即N/2M/2>1,故M<N2。 (3分)7、若在一分页存储管理系统中,某作业的页表如下表所示。已知页面大小为1024字节,试将逻辑地址1011、2148、3000、4000转化为相应的物理地址。(4分)页号块号02132136解题步骤及其评分标准:设页号为P,页内位移为W,逻辑地址为A,页面大小为L,则:P=int(A/L) W=A mod L1011有:P=int(1011/1024)=0 W=1011 mod 1024=1011 第0页在第2块,故物理地址:30592148有:P=int(2148/1024)=2 W=2148 mod 1024=100 第2页在第1块,故物理地址:11243000有:P=int(3000/1024)=2 W=3000 mod 1024=952 第2页在第1块,故物理地址:19764000有:P=int(4000/1024)=3 W=4000 mod 1024=928 第3页在第6块,故物理地址:70728、现有四个进程R1、R2、W1、W2,它们共享可以存放一个数的缓冲器B。进程R1每次把来自键盘的一个数存入缓冲器B中,供进程W1打印输出;进程R2每次从磁盘上读一个数存放到缓冲器B中,供进程W2打印输出。为防止数据的丢失和重复打印,问怎样用信号量操作来协调这四个进程的并发执行。(13分)1、目的:考查学生对同步问题的掌握;满分值:13分;答案:四个进程可如下描述:Semaphore sb=1,sx=0,sy=0;Item B;Void R1( ) while(1) 接收来自键盘的数;x=接收的数;wait(sb);B:=x; Signal(sx); Void w1( ) while(1) wait(sx);k:=B; signal(sb); 打印k中数; Void R2( ) while(1) 从磁盘上读一个数;y:=读入的数; wait(sb);B:=y; Signal(sy); Void W2( ) while(1) wait(sy);j:=B; wait(sb);打印j中数; main() cobegin( R1(); W1(); R2(); W2();9、试设计在虚拟存储环境下实现简单的clock页面置换的可行方案。(12分)使用Clock算法时,只须为每页设置一个访问位。在将内存中的所有页面都通过链接指针链成一个循环队列(4分)。当某页被访问时,其访问位置1。置换算法在选择一页淘汰时,只须检查其访问位,如果是0,就选择该页换出;若为1,则重新将它复0、暂不换出而给该页第二次驻留内存的机会(4分)。再按照FIFO算法检查下一个页面。当检查到队列中的最后个页面时,若其访问值仍为1、则再返回到队首再去检查第一个页面(4分)10、某系统采用空闲区链结构对内存的空闲区进行说明,用UPT表结构说明内存的占用情况。UPT表和空闲链结构分别如下所示:#define true 1#define false 0typedef struct /*已分分区表结构*/ int address; /*分区起始地址*/ int size; /*分区长度*/int flag; /*表目状态,1表示有用登记项,0表示空表目*/.UTABLEm;Typedef struct /*空闲分区链表结构*/ FREGION *forward; /*上一个分区起始地址*/FREGION *back; /*下一个分区起始地址*/ int size; /*分区长度*/ .FREGION; FREGION *free; /*空闲分区链表头指针*/ UTABLE UPT; /*已分分区表*/函数过程:11、司机与售票员问题:(12分)设信号量so,sc,so1表示门关着,sc1表示车停,初始状态sosc0;void Process_司机 void Process_售票员while(1) while(1) wait(so); 关门;开车; signal(so);行车; 卖票;停车; wait(sc); signal(sc); 开门; main()cobeginProcess_司机;Process_售票员;12、假定磁盘转速为6000r/min,磁盘格式化时每个盘面被分为8个扇区···读取一个扇区的时间是(60/6000)/8=1.25ms,读出该文件全部内容所需时间为:1.25×82.5×77.5×780ms(3分)采用交错试存储(图略),读出全部文件的时间为:1.25×82.5×727.5ms(3分)假定某页式虚拟系统中,某进程的页面访问踪迹为:4,3,2,1,4,3,5,4,3,2,1,5,它的实际页面数为3。(6分)按FIFO页面置换算法,计算缺页率并画图示意;(2分)按OPT页面置换算法,计算缺页率并画图示意;(2分)按LRU页面置换算法,计算缺页率并画图示意。(2分)缺页率75%页面14 4 4 1 1 1 5 5 5 5 5 5页面2 3 3 3 4 4 4 4 4 2 2 2 页面3 2 2 2 3 3 3 3 3 1 1 作业页面4 3 2 1 4 3 5 4 3 2 1 5缺页否y y y y y y y y y 缺页率58%页面14 4 4 4 4 4 4 4 4 2 2 2页面2 3 3 3 3 3 3 3 3 3 1 1 页面3 2 1 1 1 5 5 5 5 5 5 作业页面4 3 2 1 4 3 5 4 3 2 1 5是否缺页y y y y y y y 缺页率83%页面14 4 4 1 1 1 5 5 5 2 2 2页面2 3 3 3 4 4 4 4 4 4 1 1 页面3 2 2 2 3 3 3 3 3 3 5 作业页面4 3 2 1 4 3 5 4 3 2 1 5是否缺页y y y y y y y y y y 13、在一个批处理单道系统中,采用响应比高者优先的作业调度算法···答案:10:0060分钟10:2511:10120分钟10:0010:2570分钟写算法:(35分)1、 有一个可以存放n整数的循环缓冲,今有m个输入进程,每个··次semaphore mutexP=1,mutexC=1,empty=n,full=0;item buffern;int in=out=0;void producer() while (1) 输入一个数据放入x中; wait(empty); wait(mutexP); bufferin=x; in=(in+1) mod n; signal(mutexP); signal(full); void consumer()while (1) wait(full); wait(mutexC); y=bufferout; out=(out+1) mod n; signal(mutexC); signal(empty); 输出y中的数据; main()cobegin producer();consumer();2、写出一种可以避免死锁的资源分配算法testsafety( )/* 检测系统是否安全,若安全返回true,不安全返回false*/ int workn; int finishm; int i,k; work = available;/*finishi表示进程i能否执行完,能执行完为true,否则false*/ for(i=0;i<m;i+)finishi=false; k=0;i=0; while(k<m)/*循环检测进程是否可以执行完,若检测中发现连续检测m个进程都不能找到新的能停止运行的进程,应停止检测*/ if(work>=needi&&finishi=false) work=work+allocationi; finishi=true; k=0 i=(i+1)%m;k+; flag=true; /*检测是否有进程没有执行完,若有flag为false*/ for(i=0;i<m&&flag;i+) if(finishi=false)flag=false;return(flag);banker_allocation(int requestn,int i)/*银行家分配算法,分配成功返回true,不成功返回false*/if(!(request<=needi)return(false);if(!(request<=available)return(false);availble=available-request;allocaitioni=allocaioni+request;needi=needi-request;if(testsatefy( )return(true);else availble=available+request; allocaitioni=allocaioni-request; needi=needi+request; return(false);