操作系统复习

发布 2022-01-12 07:46:28 阅读 4629

1.设一计算机系统有输入机一台、打印机两台,现有二道程序同时投入运行,且甲程序先开始运行,乙程序后运行。甲程序的运行轨迹为:

计算50ms,打印信息100ms,再计算50ms ,打印信息100ms ,结束。乙程序运行的轨迹为:计算50ms,输入数据80ms,再计算100ms,结束。

要求:1) 用图画出这二道程序并发执行时的工作情况。

2) 说明在二道程序运行时,cpu有无空闲等待?若有,在哪段时间内等待?为什么会空闲等待?

3) 甲、乙程序运行时有无等待现象?在什么时候会发生等待现象?

答:(1)工作情况如图。

2)cpu有空闲等待,它发生在100 ms150 ms时间段内,此时间段内程序a与程序b都在进行i/o操作。

3)程序a无等待现象,程序b在0 ms50 ms时间段与180 ms200 ms时间段内有等待。

1)工作情况,可参照如下。

2.假设有4道作业,他们的提交时间及执行时间如下表所示。若这4道作业在一台处理机上按单道方式运行,采用响应比高者优先调度算法,试问平均周转时间和平均带权周转时间为多少?

3.现代操作系统中为什么要引入“进程”概念? 它与程序有什么区别?

答:之所以要引入进程的概念,是因为在一些可以并发的程序段之间,存在着某种相互制约的关系,每个程序段的执行不仅要受到其它程序执行的制约,而且还要动态地依赖系统资源的分配情况,因此每个可以并发执行的程序段就会因外界条件的限制而不能运行,被迫处于阻塞状态。仅用程序的概念无法表示程序的走走停停以及程序运行过程中对资源的竞争现象,因此需要采用一种动态的概念描述并发程序这种走走停停的现象,这就产生了进程的概念。

4. 进程和程序的区别:

1)进程是程序的执行过程,是动态的过程,属于一种动态概念。程序是一组有序静态指令和数据的集合,用来指示处理机的操作,是一种静态概念。

2)从结构上看,每个进程实体是由程序段和相应的数据段两部分构成,并且进程结构中还要包含pcb,即进程控制块。

3)一个进程可以涉及到一个或几个程序的执行;反之,同一程序可以对应多个进程,即同一个程序段可以在不同数据集合上运行,可以构成不同的进程。

4)进程能真实地描述并发执行的过程,而程序仅仅是静态指令堆积的序列。

5)进程有可创建其他进程的功能,而一般的程序不具有创建其它程序的功能。

6)每一个程序都是在一个进程现场中运行的。

5.有三个并发进程,r负责从输入设备读入信息并传送给m,m将信息加工并传送给p,p将打印输出,写出下列条件下的并发程序。

1) 双缓冲区,每个区大小为k。

2) 单缓冲区,其大小为k。

答:(1)双缓冲区,每个区大小为k,信号量初值如下:

mutexr=mutexp=1;

emptyr=emptyp=k;

fullr= fullp=0;

变量的初值如下:

inr=outr=inp=outp=0;

用类pascal编写程序如下:

var mutexr,mutexp,emptyr,fullr,emptyp,fullp: semaphere;

inr,outr,inp,outp: integer;

buffer: array 0..k-1 of item;

bufferp: array 0..k-1 of item;

procedure r

beginwhile true do

begin输入数据data1;

p (emptyr);

p (mutexr);

bufferr(inr):=data1;

inr:=(inr+1) mod (k);

v(mutexr);

v(fullr);

endend;

procedure m

beginwhile true do

beginp(fullr);

p(mutexr);

data2:=bufferr(outr);

outr:=(outr+1)mod (k);

v(mutexr);

v(emptyr);

对data2进行加工;

p(emptyp);

p(mutexp);

bufferp(inp):=data2;

inp:=(inp+1)mod (k);

v(mutexp);

v(fullp);

endend;

procedure p:

beginwhile true do

beginp(fullp);

p(mutexp)

data3:=bufferp(outp);

outp:=(outp+1)mod(k);

v(mutexp);

v(emptyp);

打印 data3;

end end;

beginseminitinal(

inr:=0;outr:=0;

inp:=0;outp:=0;

cobeginr;m;

p;coend

end.2)单缓冲区,大小为k

varempty,full,ok,mutex : semaphere;

inr,outr,inp,outpinteger;

bufferarray 0..k-1 of item;

procedure r:

beginwhile true do

begin输入数据 data1;

p(empty);

p(mutex);

buffer(inr):=data1;

inr:=(inr+1) mod (k);

v(mutex);

v(full)

endend;

procedure m:

beginwhile ture do

beginp(full);

p(mutex);

data2:==buffer(outr);

outr:=(outr+1) mod (k);

v(mutex);

对data2 加工;

p(mutex);

buffer(inp):=data2;

inp:=(inp+1)mod (k);

v(mutex);

v(ok);

endend;

proedure p:

begin

while ture do

beginp(ok);

p(mutex);

data3:=buffer(outp);

outp:=(outp+1) mod(k);

v(mutex);

v(empty);

打印data3;

end;end

beginseminitial(

inr:=0;outr:=0;

inp:=0;outp:=0;

cobeginr;m;

p;coend

end.6.设有三个进程a、b、c,其中a与b构成一对生产者与消费者(a为生产者,b为消费者),共享一个由n个缓冲块组成的缓冲池;b与c也构成一对生产者与消费者(此时b为生产者,c为消费者),共享另一个由m个缓冲块组成的缓冲池。

用p、v操作描述它们之间的同步关系。

答:var

mutexa,emptya,fulla,mutexc,emptyc,fullc : semaphere;

i,j,a,b : integer;

buffera : array 0..n-1 of item

bufferc : array 0..m-1 of item;

procedure producea:生产者进程a

beginwhile ture do

begin

produce next product;

p(emptya);

p(mutexa);

buffera(i) :products;

i:=(i+1) mod(n) ;

v(mutexa);

v(fulla)

endend

procedure consumer_procedurerb: 消费者和生产者进程b

beginwhile ture do

beginp(fulla);

p(mutexa);

goods:=buffer(j);

j:=(j+1)mod(n);

v(mutexa);

v(emptya);

consume goods and produce next product c;

p(emptyc);

p(mutexc);

bufferc(a):=product c;

a:=(a+1) mod(m);

v(mutexc);

v(fullc)

endend;

procedure consumerc ; 消费者c进程。

begin

while ture do

begin

p(fullc);

p(mutexc);

goods:=bufferc(b);

b:=(b+1) mod(m);

v(mutexc);

v(emptyc);

consume product;

endend;

beginseminitsal(

i:=0;j:=0;a:=0;b:=0;

cobegin

produce a

consumer_procedurerb;

consumerc

coend

end.7.有一阅览室,共有100个座位。

读者进入时必须先在一张登记表上登记,该表为每一座位列一表目,包括座号和读者姓名。读者离开时要消掉登记内容。试用p、v操作描述读者进程的同步结构。

答:varmutex : semaphere信号量,用于互斥。

full : semaphere信号量,用于同步。

table : array 0..n-1 of item; 登记表。

procedure reader读者进程。

beginp(full);

p(mutex);

register_name(table);

v(mutex);

reading;

p(mutex);

delet_name(table);

v(mutex);

v(full)

end;begin

seminitsal( 初始化。

cobegin

reader;

reader;

coendend.

8.死锁产生的原因和必要条件是什么?

操作系统复习

第二章。1 在下列性质中,不是分时系统特征的是 b a 交互性 b 独立性 c 多路性 d 成批性。2 引入多道程序设计的主要目的在于 c a 有利于 共享,减少主 辅存信息交换量。b 提高实时响应速度。c 充分利用cpu,减少cpu等待时间。d 充分利用存储器 3 在下面的进程状态转换过程中,可能...

操作系统复习

saw 锯 sawed sawed sawn fly 飞 flew flown stand 站立 stood stood spell 拼写 spelt spelled spelt spelled hear 听到 heard heard build 建造 built built spit 吐出 spa...

操作系统复习

一 单项选择题。在每小题列出的四个备选项中只有一个是符合题目要求的,请将其 填写在题后的括号内。1 在配置多道批处理操作系统的计算机系统中 d a 用户可联机 调试自己的程序 b 允许用户直接干预作业的执行。c 能对外部事件实时响应 d 允许多个作业同时使用不同的外围设备。2 unix操作系统是一个...