ImageVerifierCode 换一换
格式:DOCX , 页数:13 ,大小:28.75KB ,
资源ID:7128687      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/7128687.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(计算机操作系统作业二.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

计算机操作系统作业二.docx

1、计算机操作系统作业二1、 选择题1在进程的组成部分之中,进程在运行中不可修改的部分是_B_。A私用程序段 B共享程序段C数据段 D进程控制块2在消息缓冲通信中,消息队列属于_A_资源。A 临界 B 共享 C 永久 D 可剥夺3进程间的同步是指进程间在逻辑上的相互_B_关系。A 联接 B 制约 C 继续 D 调用4进程A和进程B通过共享缓冲区协作完成数据处理,进程A负责生产数据并放入缓冲区,进程B从缓冲区中读数据并输出。进程A和进程B之间的关系是_B_。A互斥关系 B同步关系 C互斥和同步 D无制约关系5进程从运行状态到阻塞状态可能是由于_C_。A进程调度程序的调度 B现运行进程的时间片耗尽C现

2、运行进程执行了wait操作 D现运行进程执行了signal操作6下面关于线程的叙述中正确的是_A_。A线程包含CPU现场,可以独立执行程序 B每个线程有自己独立的地址空间C线程之间的通信必须使用系统调用函数 D进程只能包含一个线程7并发进程之间_D_。A彼此无关 B必须同步 C必须互斥 D可能需要同步或互斥8信号量S不能用于_D_操作。Asignal Bwait C赋初值 D运算表达式9_D_是一种只能进行wait操作和signal操作的特殊变量 A 调度 B 进程 C 同步 D 信号量10分配给进程占用处理机的时间到而强迫进程P让出处理器,或有更高优先级的进程要运行,迫使正在运行的进程P让出

3、处理器,则进程P状态变化的情况为_A_ A 运行态就绪态 B 运行态等待态C 就绪态运行态 D 等待态就绪态11下面关于进程的叙述中正确的是_A_。A进程获得CPU运行是通过调度得到的B优先级是进程调度的重要依据,一旦确定就不能改变C在单CPU的系统中,任何时刻都有一个进程处于运行状态D进程申请CPU得不到满足时,其状态变为阻塞12操作系统通过_B_对进程进行管理。A 进程 B 进程控制块 C 进程启动程序 D 进程控制区13. 若一个进程拥有100个线程,这些线程属于用户级线程,它们在系统调度执行时间上占用的时间片个数是_A_。A1 B100 C1/100 D014. 到其他3种状态的进程状

4、态是_D_。A就绪 B阻塞 C完成 D执行15信号量的初值为2,当前值为-3,则表示等待进程有_C_。A1个 B2个 C3个 D5个16wait操作可能导致_C_。A进程就绪 B进程结束 C进程阻塞(等待) D新进程创建17下列的进程状态变化中不可能发生的变化是_A_。A等待运行 B运行等待 C运行就绪 D等待就绪18如果有三个进程共享同一互斥段,而且每次最多允许两个进程进入该互斥段,则信号量的初值应设置为_C_。A 3 B 1 C 2 D 019一个进程释放一种资源将有可能导致一个或几个进程_D_。 A由就绪变运行 B由运行变就绪 C由阻塞变运行 D由阻塞变就绪20进程控制块PCB不包括的内

5、容是_D_。ACPU现场 B进程优先级 C进程运行状态 D文件缓冲区21PCB是描述进程状态和特性的数据结构,一个进程_D_。A可以有多个PCB B可以和其他进程共用一个PCBC可以没有PCB D只能有唯一的PCB22进程和程序的本质区别是_B_。A内存和外存 B动态和静态特征 C共享和独占使用计算机资源 D顺序和非顺序执行指令23用于解决进程间互斥的方法是_B_。 信号量及wait、signal操作 加锁与解锁 信箱方式 消息缓冲方式 特权指令方式A、和 B和 C和 D和24在操作系统中,每个进程具有独立性,进程之间又具有相互制约性。对于任何两个并发进程,它们_C_。A必定无关 B必定相关

6、C可能相关 D可能相同25进程所请求的一次打印输出结束后,将使进程状态从_D_A运行态变为就绪态 B运行态变为等待态 C就绪态变为运行态 D等待态变为就绪态解析:运行中的进程有3种状态:运行状态、就绪状态和等待状态。运行状态:是指进程已获得CPU,并且在CPU中执行的状态。就绪状态:是指进程已具备运行条件,但由于没有获得CPU而不能运行所处的状态,一旦CPU分配给它,就可以运行。等待状态:是指进程因等待某种事件发生而暂时不能运行的状态。例如,当两个进程竞争使用同一资源时,没有占用该资源的进程便处于等待状态。它必须等到该资源被释放后才可以去使用它。引起等待的原因一旦消失,进程就变为就绪状态,以便

7、在适当的时候投入运行。26在下面的叙述中,不正确的是_C_。A一个进程可创建一个或多个线程 B一个线程可创建一个或多个线程C一个线程可创建一个或多个进程 D一个进程可创建一个或多个进程27在下面的叙述中正确的是_B_。A线程是比进程更小的能独立运行的基本单位B引入线程可提高程序并发执行的程度,可进一步提高系统效率C线程的引入增加了程序执行时时空开销D一个进程一定包含多个线程解析:线程是进程内一个相对独立的执行单元,但并不能单独运行,只能在程序中运行。线程的引入减少了程序执行时的时空开销。一个进程可包含一个或多个线程。28下面关于线程的叙述中,正确的是_C_)。A不论是系统支持线程还是用户级线程

8、,其切换都需要内核的支持B线程是资源的分配单位,进程是调度和分配的单位C不管系统中是否有线程,进程都是拥有资源的独立单位D在引入线程的系统中,进程仍是资源分配和调度分派的基本单位解析:引入线程后,进程仍然是资源分配的单位。线程是处理器调度和分派的单位,线程本身不具有资源,它可以共享所属进程的全部资源29. 在下面的叙述中,正确的是_D_。A引入线程后,处理机只在线程间切换B引入线程后,处理机仍在进程间切换C线程的切换,不会引起进程的切换D线程的切换,可能引起进程的切换30. 进程依靠_D_从阻塞状态过渡到就绪状态。A程序员的命令 B系统服务C等待下一个时间片到来 D合作进程的唤醒二、简答题1什

9、么是线程?进程和线程的关系是什么? 线程可定义为进程内的一个执行单位,或者定义为进程内的一个可调度实体。 在具有多线程机制的操作系统中,处理机调度的基本单位不是进程而是线程。一个进程可以有多个线程,而且至少有一个可执行线程。 进程和线程的关系是: (1)线程是进程的一个组成部分。 (2)进程的多个线程都在进程的地址空间活动。 (3)资源是分给进程的,而不是分给线程的,线程在执行中需要资源时,系统从进程的资源分配额中扣除并分配给它。 (4)处理机调度的基本单位是线程,线程之间竞争处理机,真正在处理机上运行的是线程。 (5)线程在执行过程中,需要同步。2进程能自己将自己唤醒吗?进程能自己将自己撤销

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

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

12、特别是当该进程的运行结果对其他进程的运行很重要(如该进程是其他进程的前趋进程,没有它的运行结果其他进程无法运行)时;若不撤消,则该进程又可能成为不可控的孤儿,从而产生不可预测的结果。比较好的做法是,当一个进程的父进程被撤消时,可以将该进程过继给系统内一个级别较高的进程(如Unix中的1#进程),让它有一个新的父亲,这样既可以继续完成其任务又不会成为不可控的。6为什么说进程同步问题关系到OS的成败?同步机制应遵循的准则是什么? 进程同步问题若处理不当,有可能会产生种种与时间有关性错误,特别是当两个或多个进程共享了公共变量而又没有互斥地使用这些变量时,极有可能导致用户程序运行结果的不正确,这量种灾

13、难性的后果。这种OS显然是不成功的,是用户不敢使用的。有以下四条准则:空闲让进、忙则等待、有限等待、让权等待。7进程之间存在哪几种相互制约关系?各是什么原因引起的?下列活动分别属于哪种制约关系?(1)若干同学去图书馆借书。(2)两队举行篮球比赛。(3)流水线生产的各道工序。(4)商品生产和消费。进程间存在着两种相互制约的关系:直接制约关系(即同步问题)和间接制约关系(即互斥问题)。同步问题是存在逻辑关系的进程之间相互等待产生的制约关系,互斥问题是相互无逻辑关系的进程间竞争使用相同的资源所发生的制约关系。 (1)属于互斥关系,因为书的个数是有限的,一本书只能借给一个同学。 (2)属于互斥关系,篮

14、球只有一个,两队都要争夺。 (3)属于同步关系,各道工序的开始都依赖前道工序的完成。 (4)属于同步关系,商品没生产出来,消费无法进行,商品未消费完,生产也无需进行。8试比较说明进程和程序的区别有哪些? (1)每个进程实体中包含了程序段和数据段这两个部分,因此说进程是与程序是紧密相关的。但从结构上看,进程实体中除了程序段和数据段外,还必须包含一个数据结构,即进程控制块PCB。(2)进程是程序的一次执行过程,因此是动态的;动态性还表现在进程由创建而产生、由调度而执行、由撤消而消亡,即它具有一定的生命周期。而程序则只是一组指令的有序集合,并和永久地存放在某种介质上,其本身不具有运动的含义,因此是静

15、态的。(3)多个进程实体可同时存放在内存中并发地执行,也正是引入进程的目的。而程序(在没有为它创建进程时)的并发执行具有不可再现性,因此程序不能正确地并发执行。(4)进程是一个能够独立运行、独立分配资源和独立接受调度的基本单位。而因程序不具有PCB,所以它是不可能在多道程序环境下独立运行的。(5)程与程序不一一对应。同一个程序的多次运行,将形成多个不同的进程;同一个程序的一次执行也可以产生多个进程;而一个进程也可以执行多个程序三、应用题1. 有一个理发师,一把理发椅和n把供等候理发的顾客坐的椅子。如果没有顾客,则理发师便在理发椅子上睡觉;当一个顾客到来时,必须唤醒理发师,进行理发;如果理发师正

16、在理发时,又有顾客来到,则如果有空椅子可坐,他就坐下来等,如果没有空椅子,他就离开。为理发师和顾客各编一段程序描述他们的行为,要求不能带有竞争条件。#define CHAIRS /* 为等候的顾客准备的椅子数 */semaphore customers=0;semaphore barbers=0;semaphore mutex=1; /* 用于互斥 */int waiting=0;void customers()wait (mutex);if(waitingCHAIRS)waiting=waiting+1;signal (mutex):signal (customers);坐下等待;wait

17、(barbers);elsesignal (mutex);void barber()while (1)wait(customers);wait (mutex);waiting=waiting-1;signal (mutex);理发;signal(barbers);2. 计算进程PC和打印进程P01、P02共享一个单缓冲区,计算进程负责计算,并把计算结果放入单缓冲中;打印进程P01、P02则负责从单缓冲中取出计算结果进行打印,而且对每个计算结果,P01和P02都需分别打印一次。请用记录型信号量描述上述进程间的同步关系。为了实现计算进程和打印进程之间的同步,并使单缓冲中的每个计算结果都被两个打印进

18、程分别打印一次。可设置四个信号量:full1表示缓冲中是否有可供P01打印的计算结果,full2表示缓冲中是否有可给P02打印的计算结果;emptypl、empty2则表示计算结果是否已被P01l、P02取走,只有当一个结果被两个打印进程都取走后,缓冲区才变空,计算进程才可将下一个计算结果放入单缓冲。相应的同步算法可描述如下: semaphore empty1=1,enpty2=1,full1=0,full2=0;PC: While(1) computrt next number; wait(empty1): wait(empty2); add the number to bufer; sig

19、nal(full1); signal(full2);P01: While(1) wait(full1); take from bufer; signal(emptyl): print last number;P02: wait(full2); take from buffer; signal(empty2); print last number;3. 设有三个进程,输入进程(input)、计算进程(compute)和输出进程(output),它们通过共享两个缓冲区buf1和buf2协作完成任务。如下图所示三个进程之间的合作关系如下:(1)输入进程使用put()函数把数据送到buf1,供计算进程

20、调用calculate()函数计算;(2)计算进程每次调用get()函数从buf1取出已输入的可计算的数据进行计算,并把计算结果使用put()函数把数据送到buf2送入buf供输出进程打印;(3)输出进程调用get()函数把buf2中的数据使用print()函数输出。定义合适的信号量,并用伪代码完成实现过程。信号量:nonf1、none1:输入进程与计算进程同步,buf1是否为空;nonf2 、none1:计算进程与输出进程同步,buf2是否为空; s1、s2:分别互斥使用buf1和buf2procedure inputwhile(1)wait(nonf1)wait(s1) put(data)

21、; signal(s1); signal(none1); procedure computewhile(1)wait(none1);wait(s1); data=get(); data=calculate(data);signal(s1);signal(nonf1);wait(nonf2);wait(s2);put(data);signal(s2);signal(none2);procedure outputwhile(1)wait(none2);wait(s2); data=get();print(data);signal(s2); signal(nonf2);4.下面给出的两个进程互斥的算

22、法是安全的吗?为什么? define true; # define false; Int flag2; flag1=flag2=false; enter-crtsec(i) int i; While(flag1-i) flagi=true; leave-crtsec(i) Int i; flagi=false; process I; Enter-crtsec(i); In critical section;Leave-crtsec(i);从概念上讲,系统中各进程在逻辑上是独立的,它们可以按各自的速度向前推进。但由于它们共享某些临界资源,因而产生了临界区问题。对于具有临界区问题的并发进程,它们之

23、间必须互斥,以保证不会同时进入临界区。这种算法不是安全的。因为,在进入临界区的enter-crtsec()不是一个原语操作,如果两个进程同时执行完其循环(此前两个flag均为false),则这两个进程可同时进入临界区。5. 进程 A1,A2,An 通过 K 个缓冲区向进程 B1,B2,Bm 不断地发送消息。发送和接收工作遵循如下规则:(1) 每个发送进程一次发送一个消息,写入缓冲区,缓冲区大小与消息长度一致;(2) 对每个消息,B1,B2,Bm 都需接收一次,读入各自的数据区内;(3) K 个缓冲区都满时,发送进程等待,没有可读的消息时,接收进程等待。试用 wait 和 signal 原语操作

24、组织正确的发送和接收操作。生产者-消费者问题的一个变形,一组生产者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;mu

25、tex=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+)wait(emptyi);wait(mutex);将消息放入缓冲区;signal(mutex);for(i=0;i=m-1;i+)signal(fulli);receive(i) /*接收消息 */wait(fulli);wait(mutex);将消息从缓冲区取出;signal(mutex);signal(emptyi);Ai() /*因发送进程A1,A2,.,An的程序类似。这里只给出进程Ai的描述。*/while(1)send();Bi() /* 因接收进程B1,B2,Bm的程序类似这里只给出进程Bi的描述 */while(1)recive(i);

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1