操作系统习题及参考答案

发布时间 : 星期六 文章操作系统习题及参考答案更新完毕开始阅读

repeat

produce an item in nextp:

A; □

buffer: =nextp: until false: end

consumer: begin repeat

nextc: =buffer:

consume the item in nextc: until false end parend end

选择答案:

(1)wait(full) (2)wait(empty) (3)signal(full) (4)signal(empty) 22.利用消息缓冲通信机制进答行通信,a为发送进程的发送区首地A B C D 2 3 1 4 址,b为接收进程的接收区首案 地址,mq、mutex、sm分别为接收进

程消息队列的队首地址、互斥信号量和同步信号量,对以下发送原语和接收原语实现正确的同步操作:

procedure send (receiver,a) // receiver为接收者,a为发送区首址 begin

getbuf(a.size ,i) i.sender:= a.sender; i.size: = a.size; i.text: = a.text; i.next: =0;

getid (PCBset, receiver, j);

A; □

insert (j.mq, i)

B; □

signal (j.sm); end

procedure receive() begin

j: = internal name; C; □

Wait(j.mutex); D; □

b.sender: =i.sender; b.size: =i.size; b.text: =i.text; end

选择答案:

(1)wait(j.mutex) (2)wait(j.sm) (3)signal(j.mutex) (4)signal(j.sm) 23.进程get、copy、put答分别对缓冲区buffer1、buffer2进A B C D 1 3 2 i:=delete(j.sm) 送buffer1;copy把buffer1的数行操作。get把产生的数据案 据复制到buffer2中;put把buffer2中的数据取出来打印。请选择相关的wait、signal语句完善给出的流程:

流程中s1是get的私用信号量;s2、s3是copy的私用信号量;s4是put的私用信号量。

var s1, s2, s3, s4:semaphore := A ; get copy put buffer1 buffer2 buffer1, buffer2 : item; begin parbegin get : begin 卡片 打印机 repeat produce an item in x; wait(s1) ;

buffer1:= x ; B ; until false ; end copy : begin repeat wait(s2) ; C ; copy buffer1 to buffer2; D ; E ; until false ; end put : begin repeat F ; y := buffer2; signal(s3) ; print data in y ; until false ; end parend end

选择答案:

A : ① 1,1,1,1 ② 0,1,0,1 ③ 1,0,1,0 ④ 1,1,0,0 B、C、D、E、F:

① wait(s1) ② wait(s2) ③ wait(s3) ④ wait(s4) ⑤ signal(s1) ⑥ signal(s2) ⑦ signal(s3) ⑧ signal(s4) 24.用户级线程与内核答线程之间的关系存在多对一、A B C D E F 3 6 3 8 5 4 一对一、多对多三种模案 型。其中:多对一模型是指多

个用户级线程映射到一个内核线程。在这种模型中用户级线程在内核之上支持,并在用户空间通过 A 实现;对线程的创建、管理、和调度 B 内核支持;任何一个用户级线程执行了引起阻塞的系统调用,则该 C 阻塞;开发人员可创建任意多的线程,系统的并发度(并发性能) D 。一对一模型是指每个用户级线程映射到一个内核线程,在这种模型中线程的并发能力 E ,能 F 运行在多处理器系统上。多对多模型是指多路复用了许多用户级线程到同样数量或更小数量的内核线程上,开发人员可创建 G 的用户级线程,内核线程可在多处理器系统上并行运行。

选择答案:

A:① 内核 ② 线程库 ③ 原语 ④ 系统调用 B:① 需要 ② 不需要 C、D、E、F、G:

① 线程 ② 程序 ③ 进程 ④ 任意数量 ⑤ 提高 ⑥ 并发 ⑦ 不变 ⑧ 并行 ⑨ 有限数量 A B C D E F G 答1 1 2 7 5 8 4 案 2.2 填空题

1.Sa、Sb、Sc是已定义信号量,初值分别为1、0、0;x、y、z是公共变量。下面三个并发程序段执行

结束后,x= 19 _,y= 10 ,z= 28 。 prA() { P(Sc); z=x+y; V(Sb); } prB() { y=18;

P(Sb); V(Sc);

P(Sb); y=z-y; V(Sa); } prC() { P(Sa); x=10; V(Sb); P(Sa); x=z-9; }

2.从物理意义上讲,信号量的值大于0时,其值表示 有效资源的数量 。

3.管程的三个组成部分为 局部于管程的共享变量说明 、 对该数据结构进行操作的一组过程、 对局部于管程的数据设置初始值的语句 。

4.系统感知进程存在的唯一标识为 进程控制块(PCB) 。

5.从结构上看每个进程由 用户程序、 用户数据、 系统栈、 进程控制块 组成。 6.一段时间内仅允许一个进程访问的资源称为 临界资源 。

7.在操作系统控制下的多个程序的执行顺序和每个程序的执行时间是不确定的,?这种现象称为操作系统的 异步性 。

8.进程的动态特征是指 进程是动态创建、动态执行和动态消亡的 。

9.设有n个进程共享一个临界区,若最多允许m个进程(m

10.在Unix V系统中,PCB大致可分为 进程表项 和 U区 两部分。 11.并发进程之间存在着 同步 和 互斥 两种关系。 12.把执行不能分割的过程称为 原语 。

13.进程调度的两种基本方式为 非剥夺调度 和 可剥夺调度 。

14.有2个同类临界资源,被5个并发进程访问,使用信号量机制实现互斥,则初值为 2 ,信号量值的变化范围为 [-3, 2] 。

15.进程三种基本状态之间有四种基本变迁关系:1、2、3、4,如图所示。对下列给出的每个事件,在括号“()”中分别填上对应的变迁关系。例如:若事件只引起了变迁关系“2”,则只在括号“()”中填入2:若事件引起了变迁关系“2”,随后一定会再产生变迁关系“1”,则在“()”中填入2、1。

运行 2 3 1 4 阻塞

1设备驱动进程启动了通道程序( 3 )。 ○

2进程发出了读键盘指令( 3 )。 ○

3接受进程取消息时,发现消息队列中无消息( 3 )。 ○

4运行进程时间片用完( 2 )。 ○

5高优先级进程剥夺运行进程的CPU( 2,1)。 ○

6输入设备输入完成中断,且中断时没有其他进程运行( 4,1)。 ○

7某资源的信号量S的值为负时,运行进程执行了Signal(S)操作( 4 )。 ○

8批处理系统中,后备队列有新作业到来( 1 )。 ○

9在就绪队列不空时,运行进程完成( 1 )。 ○

10磁盘驱动进程把读入的数据传送给用户( 4,1 )。 ○

就绪 2.3 判断题

1.原语仅可在管态下执行。对

2.原语可在目态下执行。错

3.进程就是作业。错

4.所谓并行是指两个或两个以上的事件在同一时刻发生。对 5.处理机从目态转变为管态是通过置程序状态字来实现的。错 6.所谓并发是指两个或两个以上的事件在同一时刻发生。错

7.操作系统的不确定性是指同一程序使用相同的输入、在相同的环境下,?经过多次运行却可能获得完全不同的结果。错

8.处理机从管态转变为目态是通过置程序状态字来实现的。对 9.广义指令必须在管态下执行。对

10.在采用顾客/服务员模型的系统中,服务员必须在管态下运行。错

11.在消息缓冲通信中,消息队列属于临界资源。对 12.访管中断是由于程序执行特权指令引起的。对

13.信号量的值不一定表示某类可用资源的数量。对

14.在UNIX系统中所有进程都可在核心态和用户态两种状态下运行。错 15.并发指的是在操作系统本身存在着许多同时的或并行的活动。错 16.在UNIX系统中,所有进程都是利用系统调用fork创建的。错 17.我们可以通过设置状态字,将CPU设置为内核态或用户态。对

18.所谓的用户态、内核态实际上是处理器的一种状态,而不是程序的状态。对

2.4 简答题

1.对比“进程”和“线程”的异同。 答:相同点:

(a)二者都具有ID,一组寄存器,状态,优先级以及所要遵循的调度策略。 (b)每个进程都有一个进程控制块,线程也拥有一个线程控制块。

(c)线程和子进程共享父进程中的资源;线程和子进程独立于它们的父进程,竞争使用处理器资源;线程和子进程的创建者可以在线程和子进程上实行某些控制,比如,创建者可以取消、挂起、继续和修改线程和子进程的优先级;线程和子进程可以改变其属性并创建新的资源。 不同点:

(a)线程是进程的一部分,一个没有线程的进程是可以被看作单线程的,如果一个进程内拥有多个进程,进程的执行过程不是一条线(线程)的,而是多条线(线程)共同完成的。

(b)启动一个线程所花费的空间远远小于启动一个进程所花费的空间,而且,线程间彼此切换所需的时间也远远小于进程间切换所需要的时间。

(c)系统在运行的时候会为每个进程分配不同的内存区域,但是不会为线程分配内存(线程所使用的资源是它所属的进程的资源),线程组只能共享资源。对不同进程来说,它们具有独立的数据空间,要进行数据的传递只能通过通信的方式进行,这种方式不仅费时,而且很不方便。而一个线程的数据可以直接为其他线程所用,这不仅快捷,而且方便。

(d)与进程的控制表PCB相似,线程也有自己的控制表TCB,但是TCB中所保存的线程状态比PCB表中少多了。

(e)进程是系统所有资源分配时候的一个基本单位,拥有一个完整的虚拟空间地址,并不依赖线程而独立存在。

2.为什么要引入信号量集机制。信号量机制可以被用于何种场合?

答:1965年,Dijkstra在讨论并发进程时指出信号量机制是一种卓有成效的进程同步机制。由于操作系统可以被看成一个并发进程集,如果提供一种能支持他们之间合作的可靠机制,用户就能很容易地使用它们。因此它现已被广泛地应用于各种类型的操作系统中。 信号量的主要含义和用途如下:

1信号量的含义。信号量是一个用来实现同步的整型或记录型变量,除了初始化外,对它只能执行wait○

和signal这两种原子操作。

联系合同范文客服:xxxxx#qq.com(#替换为@)