计算机操作系统作业二参考答案.doc

上传人:s****u 文档编号:12788938 上传时间:2020-05-24 格式:DOC 页数:9 大小:80KB
返回 下载 相关 举报
计算机操作系统作业二参考答案.doc_第1页
第1页 / 共9页
计算机操作系统作业二参考答案.doc_第2页
第2页 / 共9页
计算机操作系统作业二参考答案.doc_第3页
第3页 / 共9页
点击查看更多>>
资源描述
一、选择题BDABD BCCBD ADBDD AABAD DCCAA CCDDD BCCDB C二、简答题1.线程可定义为进程内的一个执行单位,或者定义为进程内的一个可调度实体。 在具有多线程机制的操作系统中,处理机调度的基本单位不是进程而是线程。一个进程可以有多个线程,而且至少有一个可执行线程。 进程和线程的关系是: (1)线程是进程的一个组成部分。 (2)进程的多个线程都在进程的地址空间活动。 (3)资源是分给进程的,而不是分给线程的,线程在执行中需要资源时,系统从进程的资源分配额中扣除并分配给它。 (4)处理机调度的基本单位是线程,线程之间竞争处理机,真正在处理机上运行的是线程。 (5)线程在执行过程中,需要同步。2.唤醒进程和撤消进程都是要通过CPU上运行程序来实现的。一个进程入睡了,它就不可能被调度到CPU上运行;一个进程在撤消前必须先进入终止状态,而处于终止状态的进程不可能被调度到CPU上运行。因此,进程被唤醒、被撤消都不能由自己来完成,只能由别的进程实现。3.一个进程创建子进程之后,进程与产生的进程之间的关系是父子关系,分别成为进程和子进程。子进程一经产生就与你进程并发执行,子进程共享父进程和子进程。子进程一经产生就与你进程并发执行,子进程共享父进程的正文段和已经打开的文件。4.(1)以线程作为系统调度的基本单位,减少了系统的时空开销。以进程为系统调度的基本单位的系统中,进程的切换是很频繁的。在切换中由于要保留当时的运行环境,还要设置新选中的进程的运行环境,这既花费了处理机的时间,又增加了主存的空间,从而也限制了系统进程的数量和进程的切换速度。 (2)引进线程提高了系统的并行能力。线程作为进程内的一个可执行实体,减少了并行粒度。线程作为调度的基本单位而不是资源分配的基本单位,调度更为容易,而且采用线程提高系统的并行能力比采用进程更为有效。 (3)同一进程的线程共享进程的用户地址空间,所以同一进程的线程间的通信更容易实现。5.在实际系统中,两种处理办法都是可行的,且各有优缺点。若撤消,则该进程的任务可能还没有完成,这显然是不利的,特别是当该进程的运行结果对其他进程的运行很重要(如该进程是其他进程的前趋进程,没有它的运行结果其他进程无法运行)时;若不撤消,则该进程又可能成为不可控的孤儿,从而产生不可预测的结果。比较好的做法是,当一个进程的父进程被撤消时,可以将该进程过继给系统内一个级别较高的进程(如Unix中的1#进程),让它有一个新的父亲,这样既可以继续完成其任务又不会成为不可控的。6.进程同步问题若处理不当,有可能会产生种种与时间有关性错误,特别是当两个或多个进程共享了公共变量而又没有互斥地使用这些变量时,极有可能导致用户程序运行结果的不正确,这量种灾难性的后果。这种OS显然是不成功的,是用户不敢使用的。有以下四条准则:空闲让进、忙则等待、有限等待、让权等待。7.进程间存在着两种相互制约的关系:直接制约关系(即同步问题)和间接制约关系(即互斥问题)。同步问题是存在逻辑关系的进程之间相互等待产生的制约关系,互斥问题是相互无逻辑关系的进程间竞争使用相同的资源所发生的制约关系。 (1)属于互斥关系,因为书的个数是有限的,一本书只能借给一个同学。 (2)属于互斥关系,篮球只有一个,两队都要争夺。 (3)属于同步关系,各道工序的开始都依赖前道工序的完成。 (4)属于同步关系,商品没生产出来,消费无法进行,商品未消费完,生产也无需进行。8.(1)高级调度又称为作业调度。它是批处理系统中使用的一种调度。其主要任务是按照某种算法从外存的后备队列上选择一个或多个作业调入内存,并为其创建进程、分配必要的资源,然后再将所创建的进程控制块插入就绪队列中。(2)低级调度又称进程调度。它是距离硬件最近的一级调度。其主要任务是按照某种算法从就绪队列上选择一个(或多个)进程,使其获得CPU。(3)引入中级调度的目的是为了提高内存利用率和系统吞吐量。其功能是,让那些暂时不能运行的进程不再占用宝贵的内存资源,而是调其到外存上等候。此时的进程状态为挂起状态。当这些进程重新具备运行条件且内存空闲时,由中级调度选择一部分挂起状态的进程调入内存并将其状态变为就绪状态。9.(1)时间片原则。在轮转算法中,CPU轮流为诸多进程服务,每个进程运行完自己的时间片后,系统就将CPU剥夺过来,交给下一个进程使用。(2)优先级原则。为紧迫的作业赋予较高的优先级,这种作业到达系统或由阻塞状态被唤醒后,若其优先级高于当前运行的进程的优先级,可以剥夺当前运行进程的CPU。(3)短作业(进程)优先原则。若一个作业(进程)到达系统,其运行长度比当前运行的进程长度明显的短,则剥夺当前运行的进程CPU。10.1)一个进程运行完毕。(2)一个正在运行的进程被阻塞。(3)在抢占式调度中,一个高优先级的进程被创建。(4)在抢占式调度中,一个高优先级进程由阻塞唤醒。(5)在轮转式调度中,正垢进程运行完一个时间片。11.(1)死锁是指多个进程因竞争资源而造成的一种僵持状态。若无外力作用,这些进程都将永远处于阻塞状态,不能再运行下去。(2)产生死锁的原因有:资源不足、进程推进次序不当。(3)产生死锁的必要条件有:互斥条件、请求和保持条件、非剥夺条件、环路等待条件。比较三种解决死锁的方法:(1)预防死锁方法,主要是破坏产生死锁的必要条件。该方法是最容易实现的,但系统资源利用率较低。(2)避免死锁方法,比较实用的有银行家算法(Banker Algorithm)。该算法需要较多的数据结构,实现起来比较困难,但资源利用率最高。(3)检测死锁方法是基于死锁定理设计的。定期运行该算法对系统的状态进行检测,发现死锁便予以解除。其中,需要比较一下各咱死锁解除方案的代价,找到代价最小的方案。该方法最难实现,资源利用率较高。12.(1)每个进程实体中包含了程序段和数据段这两个部分,因此说进程是与程序是紧密相关的。但从结构上看,进程实体中除了程序段和数据段外,还必须包含一个数据结构,即进程控制块PCB。(2)进程是程序的一次执行过程,因此是动态的;动态性还表现在进程由创建而产生、由调度而执行、由撤消而消亡,即它具有一定的生命周期。而程序则只是一组指令的有序集合,并和永久地存放在某种介质上,其本身不具有运动的含义,因此是静态的。(3)多个进程实体可同时存放在内存中并发地执行,也正是引入进程的目的。而程序(在没有为它创建进程时)的并发执行具有不可再现性,因此程序不能正确地并发执行。(4)进程是一个能够独立运行、独立分配资源和独立接受调度的基本单位。而因程序不具有PCB,所以它是不可能在多道程序环境下独立运行的。(5)程与程序不一一对应。同一个程序的多次运行,将形成多个不同的进程;同一个程序的一次执行也可以产生多个进程;而一个进程也可以执行多个程序。三、应用题1.#define CHAIRS /* 为等候的顾客准备的椅子数 */semaphore customers=0;semaphore barbers=0;semaphore mutex=1; /* 用于互斥 */int waiting=0;void barber()while (1)wait(customers);wait (mutex);waiting=waiting-1;signal (mutex);理发;signal(barbers);void customers()wait (mutex);if(waitingCHAIRS)waiting=waiting+1;signal (mutex):signal (customers);坐下等待;wait (barbers);elsesignal (mutex);2.为了实现计算进程和打印进程之间的同步,并使单缓冲中的每个计算结果都被两个打印进程分别打印一次。可设置四个信号量:full1表示缓冲中是否有可供P01打印的计算结果,full2表示缓冲中是否有可给P02打印的计算结果;emptypl、empty2则表示计算结果是否已被P01l、P02取走,只有当一个结果被两个打印进程都取走后,缓冲区才变空,计算进程才可将下一个计算结果放入单缓冲。相应的同步算法可描述如下: Var empty1,enpty2,full1,full2: semaphore:=1,1,0,0; begin Parbegin PC:begin Repeat computrt next number; P(empty1): P(empty2); add the number to bufer; V(full1); V(full2); Until false; end P01: begin repeat P(full1); take from bufer; V(emptyl): print last number; until flase; end P02:begin Repeat P(full2); take from buffer; V(empty2); print last number; until false end parend end3.信号量:nonf1、none1:输入进程与计算进程同步,buf1是否为空;nonf2 、none1:计算进程与输出进程同步,buf2是否为空; s1、s2:分别互斥使用buf1和buf2procedure inputbeginwait(nonf1)wait(s1) put(data); signal(s1); signal(none1); until falseend;procedure computebeginwait(none1);wait(s1); data=get(); data=calculate(data);signal(s1);signal(nonf1);wait(nonf2);wait(s2);put(data);signal(s2);signal(none2);until falseend;procedure outputbeginwait(none2);wait(s2); data=get();print(data);signal(s2); signal(nonf2);until falseend;4.(1)利用安全性算法对T0时刻的资源分配情况进行分析,结果如下: WorkNeedAllocationWork + AllocationFinishP31 6 31 0 01 3 52 9 8trueP12 9 81 2 70 0 32 9 11trueP22 9 110 7 51 0 03 9 11trueP43 9 110 6 40 0 23 9 13trueP53 9 130 6 20 0 13 9 14true系统处于安全状态,安全序列为:P3,P1,P2,P4,P5。(2)P1发出请求向量Request1(1,0,1),系统按银行家算法进行检查:1) Request1(1,0,1) = Need1(1,2,6)2) Request1(1,0,1)= Available(1,6,3)3) 系统先假定可为P1分配资源,并修改Available、 Allocation1、 Need1向量,资源变化情况如下: max Allocation Available Need A B CA B CA B C A B CP1 1 2 10 0 0 4 0 6 2 0 1 6P2 1 7 5 1 0 0 0 7 5P3 2 3 5 1 3 5 1 0 0P4 0 6 4 0 0 2 0 6 2P5 0 6 5 0 0 1 0 6 4剩余资源可满足P4,分给P4给还后(0,6,4)可满足P5,分配P5归还后(0,6,5)不满足其它进程要求,即不能实施分配,因为分配后找不到安全序列,系统将处于不安全状态。5.2. (1 )采用先来先服务(FCFS)算法。作业名提交时间/h需执行时间/h开始运行时间/h完成时间/hJ110.10.310.110.4J210.30.510.410.9J310.50.410.911.3J410.60.311.311.6J510.70.211.611.8J1,J2,J3,J4,J5T=(10.4-10.1)+(10.9-10.3)+(11.3-10.5)+(11.6-10.6)+(1l.8-10.7)/5=3.8/5=0.76hT=(10.4-10.1)/0.3+(10.9-10.3)/0.5+(11.3-10.5)/0.4+(11.6-10.6)/0.3+(1l.8-10.7)/0.2/5=13.033/5=2.61 (2) 短作业优先调度(SJF)算法。作业名提交时间/h需执行时间/h开始运行时间/h完成时间/hJ110.10.310.110.4J210.30.510.410.9J310.50.411.411.8J410.60.311.111.4J510.70.210.911.1J1,J2,J5,J4,J3T=(10.4-10.1)+(10.9-10.3)+(11.8-10.5)+(11.4-10.6)+(11.1-10.7)/5=3.4/5=0.68hT=(10.4-10.1)/0.3+(10.9-10.3)/0.5+(11.8-10.5)/0.4+(11.4-10.6) /0.3+ (11.1-10.7)/0.2/5=10.117/5=2.02(3) 高响应比优先调度算法。作业名提交时间/h需执行时间/h开始运行时间/h完成时间/hJ110.10.310.110.4J210.30.510.4/10.711.0J310.50.410.6/11.511.8J410.60.311.211.5J510.70.211.011.2J1,J2,J3,J2,J5,J4,J3T=(10.4-10.1)+(11.0-10.3)+(11.8-10.5)+(11.5-10.6)+(11.2-10.7)/5=3.7/5=0.72hT=(10.4-10.1)/0.3+(11.0-10.3)/0.5+(11.8-10.5)/0.4+(11.5-10.6) /0.3+ (11.2-10.7)/0.2/5=11.15/5=2.236.(1) 执行完序号为6的申请时,各进程的状态和已占的资源数如表所示;P等待已占用资源4个Q就绪或运行已占用资源4个R等待已占用资源2个根据单项银行家算法,过程为:1) R申请2个资源时,剩余资源可使各进程运行结束,所以这个分配是安全的,故将2个资源分给R;2) 同理,P、Q分别申请4,2个资源时,剩余资源可使各进程运行结束,所以这个分配也是安全的,故将4、2个资源分给P、Q;3) P申请2个资源时,系统此刻剩余资源数为2,如果将这两个资源分给P,系统就没有资源了。这时的P、Q、R都还需要资源才可运行完,这样,P、Q、R将都进入阻塞状态,所以P申请的这两个资源不能分配。4) 同理,接下来R欲申请1个资源也是不安全的分配,故不能分给。5) Q申请2个资源时,假定操作系统分给它,Q进程将运行结束,Q释放的资源又可使P运行结束;P运行结束,释放的资源又可使R运行结束。所以这个分配是安全的,故将2个资源分给Q。(2)不会死锁,因为银行家算法在任何时候均保证至少有一个进程能得到所需的全部资源,这样,得到资源的进程能及时归还资源供其他进程使用。7.从概念上讲,系统中各进程在逻辑上是独立的,它们可以按各自的速度向前推进。但由于它们共享某些临界资源,因而产生了临界区问题。对于具有临界区问题的并发进程,它们之间必须互斥,以保证不会同时进入临界区。这种算法不是安全的。因为,在进入临界区的enter-crtsec()不是一个原语操作,如果两个进程同时执行完其循环(此前两个flag均为false),则这两个进程可同时进入临界区。8. 分配策略为:当进程Pi申请ri类资源时,检查ri中有无可分配的资源:有则分配给Pi;否则将Pi占有的资源全部释放而进入等待状态。(Pi等待原占有的所有资源和新申请的资源) 资源分配过程:剩余资源进程A:(3,2,1)(1,0,1)进程B:(1,0,1)(0,0,0)进程A:(0,1,0)(不满足)(3,2,1)A的所有资源被剥夺,A处于等待进程C:(2,0,0)(1,2,1)C,B完成之后,A可完成。9.生产者-消费者问题的一个变形,一组生产者A1,A2.,An和一组消费者B1,B2,.,Bm共用k个缓冲区,每个缓冲区只要写一次,但需要读m次。因此,我们可以把这一组缓冲区看成m组缓冲区,每个发送者需要同时写m组缓冲区中相应的m个缓冲区,而每一个接收者只需读它自己对应的那组缓冲区中的对应单元。设置一个信号量mutex实现诸进程对缓冲区的互斥访问;两个信号量数组emptym和fullm描述m组缓冲区的使用情况。mutex的初值为l,数组empty中元素初值为k,数组full中的元素初值为0。其同步关系描述如下:int mutex,emptym,fullm;int i;mutex=1;for(i=0;i=m-1;i+)emptyi=k;fulli=0;main( )cobeginA1();A2();An();B1();B2();Bm();coendsend() /*发送消息 */in i;for(i=0;i=m-1;i+)P(emptyi);P(mutex);将消息放入缓冲区;V(mutex);for(i=0;i=m-1;i+)V(fulli);receive(i) /*接收消息 */p(fulli);P(mutex);将消息从缓冲区取出;V(mutex);V(emptyi);Ai() /*因发送进程A1,A2,.,An的程序类似。这里只给出进程Ai的描述。*/while(1)send();Bi() /* 因接收进程B1,B2,Bm的程序类似这里只给出进程Bi的描述 */while(1)recive(i);
展开阅读全文
相关资源
相关搜索

当前位置:首页 > 图纸专区 > 考试试卷


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!