您好,欢迎访问三七文档
当前位置:首页 > 临时分类 > 操作系统模拟及部分答案1
《操作系统》模拟习题一、判断()文件可以看做是一种逻辑空间()并发程序的执行具有顺序性,封闭性和不可再现性()快表是高速缓存与硬件相关()内存只能顺序存取()在采用树型目录结构的文件系统中,各用户的文件名必须互不相同()在银行家算法中,对某时刻的资源分配情况进行安全分析,如果该时刻状态是安全的,则存在一个安全序列,且这个安全序列是唯一的。()在文件目录的目录项中主要存放的是文件的名字、文件的类型和文件的物理地址等()DMA传输主要用于连接低速设备二、选择题1.在下列操作系统的各个功能组成部分中,哪一个与中断有关()A进程上下文切换BPCB大小C快表寻址D内存管理2.一个分段存储管理系统中,地址长度为16位,其中段号占8位,则段长最大()A.2的8次方字节B.2的16次方字节C.2的24次方字节D.2的32次方字节3.下列选项中,导致创进新进程的操作是()I用户成功登陆II设备分配III启动程序执行A:仅I和IIB:仅II和IIIC:仅I和IIID:I,II,III4.下列哪种通信方式不属于:一个进程向中间实体发送消息,等待另一进程异步地接收。()A.共享存储区B.消息缓冲C.信箱方式D.共享文件5.SPOOLing技术可以实现设备的()分配。A.独占B.共享C.虚拟D.物理6.在进行作业调度时.要想兼顾作业等待时间和计算时间,应选取()。A均衡调度算法B.高优先级优先调度算法C.先来先服务算法D.高响应比优先算法三、填空题1.操作系统是计算机系统最重要的____,它____了计算机硬件系统的功能;____了不同计算机系统硬件的差别,提供了应用程序使用计算机硬件强大处理功能的接口;2.在UNIX系统中,文件的类型主要包括___________,____________,____________。四.简答题1.试说明改进型Clock置换算法的基本原理2.某操作系统的磁盘文件空间共有500块,若用字长为32位的位示图管理磁盘空间,试问:⑴位示图需要多少字?⑵第i字第j位对应的块号是多少?五、应用题银行家算法如下:1.安全状态:是指系统能按某种进程顺序(P1,P2,…Pn)(称P1,P2,…Pn序列为安全序列),来为每个进程Pi分配某所需资源,直至满足每个进程对资源的最大需求,使每个进程都可顺利地完成.如果系统无法找到这样一个安全序列,则称系统处于不安全状态.所谓安全序列{P1,P2,…Pn}是指对于P2,都有它所需要剩余资源数量不大于系统掌握的剩余的空间资源与所有Pi(ji)所占的资源之和.2.不安全状态可能产生死锁.目前状态最大需求尚需P1396P25105P3242在每一次进程中申请的资源,判定一下,若实际分配的话,之后系统是否安全.3.银行家算法的思路:1)、进程一开始向系统提出最大需求量.2)、进程每次提出新的需求(分期贷款)都统计是否超出它事先提出的最大需求量.3)、若正常,则判断该进程所需剩余剩余量(包括本次申请)是否超出系统所掌握的剩余资源量,若不超出,则分配,否则等待.4.银行家算法的数据结构.1)、系统剩余资源量A[n],其中A[n]表示第I类资源剩余量.2)、各进程最大需求量,B[m][n],其中B[j][i]表示进程j对i类资源最大需求.3)、已分配资源量C[m][n],其中C[j][i]表示系统j程已得到的第i资源的数量.4)、剩余需求量.D[m][n],其中D[j][i]对第i资源尚需的数目.5.银行家算法流程:当某时刻,某进程时,提出新的资源申请,系统作以下操作:1)、判定E[n]是否大于D[j][n],若大于,表示出错.2)、判定E[n]是否大于系统剩余量A[n],若大于,则该进程等待.3)、若以上两步没有问题,尝试分配,即各变量作调整.4)、按照安全性推测算法,判断,分配过后,系统是否安全,若安全,则实际分配,否则,撤消分配,让进程等待.6.安全性检测算法1)、先定义两个变量,用来表示推算过程的数据.F[n]=A[n],表示推算过程中,系统中剩余资源量的变化.J[n]=False表示推算过程中各进程是否假设已完成2)、流程:在剩余的进程中(在推算)过程中,一些进程假设已完成,查找D[j][n]=F[n]的进程,找到后令J[j]=True(假设该进程完成),F[n]+D[j][n](该进程所占资源释放),如此循环执行.若最后,所有的F[n]=True(在推算过程中,所有进程均可以完成),则表示(分配过后)系统是安全的,否则系统是不安全的.2.设有A、B、C三组进程,它们互斥地使用某一独占型资源R,使用前申请,使用后释放。资源分配原则如下:(1)当只有一组申请进程时,该组申请进程依次获得R;(2)当有两组申请进程时,各组申请进程交替获得R,组内申请进程依次获得R;(3)当有三组申请进程时,各组申请进程轮流获得R,组内申请进程依次获得R。试用信号灯和PV操作分别给出各组进程的申请活动程序段和释放活动程序段。解:intfree=1;//设备状态标志semaphoremutex=1;semaphoreqa=qb=qc=0;//各组等待队列intcounta=countb=countc=0;//等待队列长度A组申请:P(mutex);if(free==1){free=0;V(mutex);}else{counta++;V(mutex);P(qa);}A组释放:P(mutex);if(countb0){countb--;V(qb);}else{if(countc0){countc--;V(qc);}else{if(counta0){counta--V(qa);}else{free=1;}}}}3.设系统中有5台类型相同的打印机,依次编号为1~5。又设系统中有n个使用打印机的进程,使用前申请,使用后释放。每个进程有一个进程标识,用于区别不同的进程。每个进程还有一个优先数,不同进程的优先数各异。当有多个进程同时申请时,按照进程优先数由高到低的次序实施分配。试用信号灯和PV操作实现对于打印机资源的管理,即要求编写如下函数和过程:(1)函数require(pid,pri):申请一台打印机。参数pid为进程标识,其值为1到n的整数;pri为进程优先数,其值为正整数;函数返回值为所申请到打印机的编号,其值为1到5的整数;(2)过程return(prnt):释放一台打印机。参数prnt为所释放打印机的编号,其值为1到5的整数。解:#defineN5boolflag[N+1];//flag[0]表示可用打印机数,//flag[i]表示第i号打印机的状态(1=i=N),0表示占用,1表示空闲PCB*queue=NULL;//进程阻塞队列semaphoremutex_flag=1;//用于对flag数组的互斥操作semaphoremutex_queue=1;//用于对阻塞队列的互斥操作process(inti,intpriority){intprint;print=require(i,priority);useprint;return(print);}intrequire(intpid,intpriority){P(mutex_flag);if(flag[0]0){flag[0]--;for(inti=1;iN+1;i++)if(flag[i]==1){flag[i]=0;break;}V(mutex_flag);returni;}else{V(mutex_flag);p(mutex_queue);将进程pid按其优先数插入到等待队列queue中;V(mutex_queue);}}return(intprint){P(mutex_flag);if(queue==NULL){flag[0]++;flag[print]=1;V(mutex_flag);}else{V(mutex_flag);p(mutex_queue);将print分配给queue队首进程;queue下移;V(mutex_queue);}}4.在银行家算法中,若出现如下资源分配情况:AllocationNeedAvailableABCDABCDABCDP0:003200121623P1:10001750P2:13542356P3:03320652P4:00140656试问:(1)当前状态是否安全?(2)如果进程P2提出安全请求Request[2]=(1,2,2,2),系统能否将资源分配给它?说明原因.解:(1)当前状态是安全状态。运行安全性检查算法如下:1)Work=Available;Finish=false;2)寻找满足如下条件的i:Finish[i]==false并且Need[i]≤Work[i];如果不存在,则转步骤4);3)Work=Work+Allocation[i];Finish[i]=true;转步骤2)4)如果对于所有i,Finish[i]=true,则系统处于安全状态,否则处于不安全状态。令Work=Available=(1,6,2,3)运行安全性检测算法,Finish[0]=false并且Need[0]=(0012)Work,则Work=Work+Allocation[0]=(1,6,2,3)+(0,0,3,2)=(1,6,5,5);Finish[0]=true;Finish[3]=false并且Need[3]=(0,6,5,2)Work,则Work=Work+Allocation[3]=(1,6,5,5)+(0,3,3,2)=(1,9,8,7);Finish[3]=true;Finish[4]=false并且Need[4=(0,6,5,6)Work,则Work=Work+Allocation[4]=(1,9,8,7)+(0,0,1,4)=(1,9,9,11);Finish[4]=true;Finish[1]=false并且Need[1]=(1,7,5,0)Work,则Work=Work+Allocation[4]=(1,9,9,1)+(1,0,0,0)=(2,9,9,11);Finish[1]=true;Finish[2]=false并且Need[2]=(2,3,5,6)Work,则Work=Work+Allocation[4]=(2,9,9,11)+(1,3,5,4)=(3,12,14,15);Finish[2]=true;可以找到一个安全进程序列p0,p3,p4,p1,p2,它使Finish[i]=true,对于所有0≤i≤4,因而可以断言系统当前处于安全状态.(2)运行银行家算法,由于Request[2]=(1,2,2,2)£Need[2]=(2,3,5,6),因而请求合法。进一步,Request[2]=(1,2,2,2)£Available=(1,6,2,3),故该请求是可以满足的。假设将资源分配给p2,则系统状态变为:AllocationNeedAvailableABCDABCDABCDP0:003200120401P1:10001750P2:25761134P3:03320652P4:00140656运行安全性检测算法,Work=Available=(0,4,0,1),Finish[i]=false,此时所有Need[i]£Work[i]均不成立,结果Finish[i]均为false,不存在安全进程序列,系统处于不安全状态。系统将取消资源分配并恢复原来状态,进程p2等待。
本文标题:操作系统模拟及部分答案1
链接地址:https://www.777doc.com/doc-2381339 .html