计算机操作系统作业(二)参考答案剖析.doc

上传人:scccc 文档编号:12510510 上传时间:2021-12-04 格式:DOC 页数:10 大小:138.50KB
返回 下载 相关 举报
计算机操作系统作业(二)参考答案剖析.doc_第1页
第1页 / 共10页
计算机操作系统作业(二)参考答案剖析.doc_第2页
第2页 / 共10页
计算机操作系统作业(二)参考答案剖析.doc_第3页
第3页 / 共10页
计算机操作系统作业(二)参考答案剖析.doc_第4页
第4页 / 共10页
计算机操作系统作业(二)参考答案剖析.doc_第5页
第5页 / 共10页
点击查看更多>>
资源描述

《计算机操作系统作业(二)参考答案剖析.doc》由会员分享,可在线阅读,更多相关《计算机操作系统作业(二)参考答案剖析.doc(10页珍藏版)》请在三一文库上搜索。

1、一、选择题BDABD BCCBD ADBDD AABAD DCCAA CCDDD BCCDB C二、简答题1.线程可定义为进程内的一个执行单位, 或者定义为进程内的一个可调度实体。 在具有 多线程机制的操作系统中, 处理机调度的基本单位不是进程而是线程。 一个进程可以有多个 线程,而且至少有一个可执行线程。进程和线程的关系是:(1) 线程是进程的一个组成部分。(2) 进程的多个线程都在进程的地址空间活动。(3) 资源是分给进程的,而不是分给线程的,线程在执行中需要资源时,系统从进程的资 源分配额中扣除并分配给它。(4) 处理机调度的基本单位是线程,线程之间竞争处理机,真正在处理机上运行的是线程

2、。(5) 线程在执行过程中,需要同步。2.唤醒进程和撤消进程都是要通过 CPU 上运行程序来实现的。一个进程入睡了,它就不可 能被调度到 CPU 上运行;一个进程在撤消前必须先进入终止状态,而处于终止状态的进程 不可能被调度到 CPU 上运行。因此,进程被唤醒、被撤消都不能由自己来完成,只能由别 的进程实现。3.一个进程创建子进程之后, 进程与产生的进程之间的关系是父子关系, 分别成为进程和子 进程。 子进程一经产生就与你进程并发执行, 子进程共享父进程和子进程。 子进程一经产生 就与你进程并发执行,子进程共享父进程的正文段和已经打开的文件。4.(1) 以线程作为系统调度的基本单位,减少了系统

3、的时空开销。以进程为系统调度的基本 单位的系统中, 进程的切换是很频繁的。 在切换中由于要保留当时的运行环境, 还要设置新 选中的进程的运行环境, 这既花费了处理机的时间, 又增加了主存的空间, 从而也限制了系 统进程的数量和进程的切换速度。(2) 引进线程提高了系统的并行能力。线程作为进程内的一个可执行实体,减少了并行 粒度。 线程作为调度的基本单位而不是资源分配的基本单位, 调度更为容易, 而且采用线程 提高系统的并行能力比采用进程更为有效。(3) 同一进程的线程共享进程的用户地址空间,所以同一进程的线程间的通信更容易实 现。5.在实际系统中, 两种处理办法都是可行的,且各有优缺点。若撤消

4、,则该进程的任务可能 还没有完成,这显然是不利的,特别是当该进程的运行结果对其他进程的运行很重要(如该进程是其他进程的前趋进程,没有它的运行结果其他进程无法运行)时;若不撤消,则该进程又可能成为不可控的 "孤儿 ",从而产生不可预测的结果。比较好的做法是,当一个进程的 父进程被撤消时,可以将该进程”过继"给系统内一个级别较高的进程(如Unix中的1#进程), 让它有一个 " 新的父亲 " ,这样既可以继续完成其任务又不会成为不可控的。6.进程同步问题若处理不当, 有可能会产生种种 " 与时间有关性错误 ",特别是当两个或多

5、个进程共享了公共变量而又没有互斥地使用这些变量时, 极有可能导致用户程序运行结果的 不正确,这量种灾难性的后果。这种OS 显然是不成功的,是用户不敢使用的。有以下四条准则:空闲让进、忙则等待、有限等待、让权等待。7.进程间存在着两种相互制约的关系: 直接制约关系 (即同步问题) 和间接制约关系 (即互 斥问题)。同步问题是存在逻辑关系的进程之间相互等待产生的制约关系,互斥问题是相互 无逻辑关系的进程间竞争使用相同的资源所发生的制约关系。(1)属于互斥关系,因为书的个数是有限的,一本书只能借给一个同学。(2)属于互斥关系,篮球只有一个,两队都要争夺。(3)属于同步关系,各道工序的开始都依赖前道工

6、序的完成。(4)属于同步关系,商品没生产出来,消费无法进行,商品未消费完,生产也无需进 行。8.( 1)高级调度又称为作业调度。它是批处理系统中使用的一种调度。其主要任务是按照 某种算法从外存的后备队列上选择一个或多个作业调入内存, 并为其创建进程、 分配必要的 资源,然后再将所创建的进程控制块插入就绪队列中。( 2)低级调度又称进程调度。它是距离硬件最近的一级调度。其主要任务是按照某种算 法从就绪队列上选择一个(或多个)进程,使其获得CPU 。( 3)引入中级调度的目的是为了提高内存利用率和系统吞吐量。其功能是,让那些暂时 不能运行的进程不再占用宝贵的内存资源, 而是调其到外存上等候。 此时

7、的进程状态为挂起 状态。当这些进程重新具备运行条件且内存空闲时, 由中级调度选择一部分挂起状态的进程 调入内存并将其状态变为就绪状态。9.( 1)时间片原则。在轮转算法中, CPU 轮流为诸多进程服务,每个进程运行完自己的时 间片后,系统就将 CPU 剥夺过来,交给下一个进程使用。( 2)优先级原则。为紧迫的作业赋予较高的优先级,这种作业到达系统或由阻塞状态被 唤醒后,若其优先级高于当前运行的进程的优先级,可以剥夺当前运行进程的CPU 。( 3)短作业(进程)优先原则。若一个作业(进程)到达系统,其运行长度比当前运行 的进程长度明显的短,则剥夺当前运行的进程CPU。10.1)一个进程运行完毕。

8、( 2)一个正在运行的进程被阻塞。( 3)在抢占式调度中,一个高优先级的进程被创建。( 4)在抢占式调度中,一个高优先级进程由阻塞唤醒。( 5)在轮转式调度中,正垢进程运行完一个时间片。( 1)死锁是指多个进程因竞争资源而造成的一种僵持状态。若无外力作用,这些进程都 将永远处于阻塞状态,不能再运行下去。( 2)产生死锁的原因有:资源不足、进程推进次序不当。( 3)产生死锁的必要条件有:互斥条件、请求和保持条件、非剥夺条件、环路等待条件。 比较三种解决死锁的方法:( 1)预防死锁方法,主要是破坏产生死锁的必要条件。该方法是最容易实现的,但系统 资源利用率较低。( 2)避免死锁方法,比较实用的有银

9、行家算法(Banker Algorithm )。该算法需要较多的数据结构,实现起来比较困难,但资源利用率最高。( 3)检测死锁方法是基于死锁定理设计的。定期运行该算法对系统的状态进行检测,发 现死锁便予以解除。其中,需要比较一下各咱死锁解除方案的代价,找到代价最小的方案。 该方法最难实现,资源利用率较高。12.( 1)每个进程实体中包含了程序段和数据段这两个部分,因此说进程是与程序是紧密相关的。 但从结构上看,进程实体中除了程序段和数据段外,还必须包含一个数据结构, 即进 程控制块 PCB 。( 2)进程是程序的一次执行过程,因此是动态的;动态性还表现在进程由创建而产生、 由调度而执行、 由撤

10、消而消亡, 即它具有一定的生命周期。 而程序则只是一组指令的有序集 合,并和永久地存放在某种介质上,其本身不具有运动的含义,因此是静态的。( 3)多个进程实体可同时存放在内存中并发地执行,也正是引入进程的目的。 而程序(在没有为它创建进程时)的并发执行具有不可再现性,因此程序不能正确地并发执行。( 4)进程是一个能够独立运行、独立分配资源和独立接受调度的基本单位。而因程序不 具有 PCB ,所以它是不可能在多道程序环境下独立运行的。( 5)程与程序不一一对应。同一个程序的多次运行,将形成多个不同的进程;同一个程 序的一次执行也可以产生多个进程;而一个进程也可以执行多个程序。三、应用题1.#de

11、fine 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(waiting<CHAIRS) waiting=waiting+1 ; sign

12、al (mutex) : signal (customers) ; 坐下等待; wait (barbers) ;elsesignal (mutex) ;2.为了实现计算进程和打印进程之间的同步, 并使单缓冲中的每个计算结果都被两个打印 进程分别打印一次。可设置四个信号量: full1 表示缓冲中是否有可供 P01 打印的计算结果, full2 表示缓冲中是否有可给 P02 打印的计算结果; emptypl 、empty2 则表示计算结果是否已 被 P01l、P02 取走,只有当一个结果被两个打印进程都取走后,缓冲区才变空,计算进程才 可将下一个计算结果放入单缓冲。相应的同步算法可描述如下:Va

13、r empty1,enpty2,full1,full2: semaphore:=1,1,0,0;beginParbeginPC:beginRepeatcomputrt next number;P(empty1) :P(empty2) ;add the number to bufer;V(full1);V(full2);Until false;endP01: beginrepeatP(full1) ;take from bufer;V(emptyl) : print last number;until flase; end P02:beginRepeatP(full2) ; take from

14、buffer; V(empty2); print last number;until falseend parend end3.buf1 是否为空;buf2 是否为空;信号量:nonfl、nonel:输入进程与计算进程同步,nonf2 、 none1 :计算进程与输出进程同步,si、s2:分别互斥使用 bufl和buf2 procedure inputbegin wait(nonf1) wait(s1) put(data); signal(s1); signal(none1);until falseend;procedure computebegin wait(none1); wait(s1)

15、; data=get(); data=calculate(data); signal(s1);signal(nonf1);wait(nonf2); wait(s2); put(data); signal(s2);signal(none2);until falseend;procedure outputbegin wait(none2); wait(s2); data=get(); print(data); signal(s2);sig nal( non f2); un til false en d;4.(1)利用安全性算法对 TO时刻的资源分配情况进行分析,结果如下:WorkNeedAlloc

16、ati onWork + Allocatio nFi nishP31631 0 0135298trueP12981270 032911trueP229110751 0 03 911trueP43 9110640 0 23 913trueP53 9130 6 20 0 13914true系统处于安全状态,安全序列为: P3, P1, P2, P4, P5。(2)P1发出请求向量Request1( 1,0,1),系统按银行家算法进行检查:1)Request!( 1,0,1)<= Need1(1,2,6)2)Request1( 1,0,1)<= Available。,6,3)3)系统先假

17、定可为 P1分配资源,并修改 Available、 Allocation1、 Need1向量,资源 变化情况如下:maxAllocati onAvailableNeedABCABCAB CABCP1121000406 2016P2175100075P3235135100P4064002062P5065001064剩余资源可满足P4,分给P4给还后(0,6,4)可满足P5,分配P5归还后(0,6,5 )不满足其它进程要求,即不能实施分配,因为分配后找不到安全序列,系统将处于不安全状态。5.2. (1 )采用先来先服务(FCFS)算法。作业名提交时间/h需执行时间/h开始运行时间/h完成时间/hJ

18、110.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)算法。作业名提交时间/

19、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(

20、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

21、) /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都还需要资源才可运行完,这

22、样,P、Q、R将都进入阻塞状态,所以P申请的这两个资源不能分配。4) 同理,接下来 R欲申请1个资源也是不安全的分配,故不能分给。5) Q申请2个资源时,假定操作系统分给它,Q进程将运行结束,Q释放的资源又可使P运行结束;P运行结束,释放的资源又可使R运行结束。所以这个分配是安全的,故将2个资源分给Q。(2)不会死锁,因为银行家算法在任何时候均保证至少有一个进程能得到所需的全部资 源,这样,得到资源的进程能及时归还资源供其他进程使用。它们可以按各自的速度向前推进。 但由对于具有临界区问题的并发进程, 它们enter-crtsec ()不是一个原语操作,如果从概念上讲, 系统中各进程在逻辑上是独

23、立的, 于它们共享某些临界资源, 因而产生了临界区问题。 之间必须互斥,以保证不会同时进入临界区。这种算法不是安全的。因为,在进入临界区的两个进程同时执行完其循环(此前两个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 的所有

24、资源被剥夺, 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的初值为I,数组empty中

25、元素初值为 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) ;

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 社会民生


经营许可证编号:宁ICP备18001539号-1