操作系统第五次功课参考答案

合集下载
相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

作业共有3次:

操作系统作业(2011-04-18)、操作系统作业(2011-04-21)、课本(P159-26)

操作系统作业(2011-04-18):

1、下表给出了五个进程的执行时间和优先数,规定优先数越小优先权越大,在某时刻这

五个进程按照P0、P1、P2、P3、P4的顺序同时到达,求在采用如下算法时进程的平均周转时间和平均带权周转时间。(1)先来先服务调度算法(2)短进程优先调度算法(3)时间片轮转调度算法(时间片为5ms)(4)优先权调度算法

进程执行时间(ms)优先数

P0203

P1152

P2354

P3251

P4405

[参考答案]:(1)作业执行顺序:P0、P1、P2、P3、P4;71ms;2.50

(2)作业执行顺序:P1、P0、P3、P2、P4;68ms; 2.25

(3)作业执行顺序:略;105ms; 3.83

(4)作业执行顺序:P3、P1、P0、P2、P4;71ms; 2.55

2、在分页存储管理系统中,存取一次内存的时间是8us,查询一次快表的时间是1us,缺

页中断的时间是20us,假设页表的查询与快表的查询同时进行。当查询页表时,如果该页在内存但快表中没有页表项,系统将自动把该页页表项送入快表。

(1)求对某一数据进行一次存取可能需要的时间?

(2)现连续对同一页面上的数据进行4次连续读取,求每次读取数据可能需要的时间?

[参考答案]:

(1) 当系统对数据进行存取时,有3种可能性:

①所存取的数据的页面在内存,其页表项已经存储到快表,此时存取数据的时间是:

查询快表的时间+存取内存数据的时间=1us+8us= 9us

②所存取的数据的页面在内存,但是其页表项没有存储到快表,没有命中快表,此时

存取数据的时间是:查询页表的时间+存取内存数据的时间=8us+8us= 16us

③所存取的数据的页面不在内存,发生缺页中断,此时存取数据的时间是:

查询页表的时间+缺页中断的时间+查询页表的时间+存取内存数据的时间

=8us+20us+8us+8us = 44us

(2) 当对某一数据进行4次连续读取时:

①第1次可能的时间为:1us+8us= 9us;8us+8us= 16us;8us+20us+8us+8us=44us。

②第2次时,对应页面的页表项已经交换到快表中。因为存取是连续的,不存在页面

被淘汰的可能性,所以第2次、第3次、第4次的存取时间是一样的,消耗的时间为1us+8us= 9us。

3、在一个分页存储管理系统中,逻辑地址长度为16位,页面大小为4096字节,现有一

逻辑地址2F6AH,且第0、1、2页依次存放在物理块5、10、11中,问相应的物理地址为多少(请用十六进制表示)?并画出地址转换图。

[参考答案]:(BF6AH)注意:还要画出地址转换图

操作系统作业(2011-04-21):

1、假定某采用页式存储管理系统中,主存容量为1MB,被分成256块,块号为

0,1,2,……255。现有一个共4页(页号为0,1,2,3)的作业被依次装入到主存的第2,4,1,5块中。请回答:

(1)主存地址应该用多少位来表示?

(2)作业每一页的长度为多少字节?逻辑地址中的页内地址部分应占用多少位?

(3)画出页表并给出作业中每一页占用的主存块起始地址。

(4)若作业执行中要从第0页的第75单元和第3页的第548单元读信息,那么,实际应从主存的哪两个单元读信息?请把应访问的主存绝对地址用十六进制数表示。

[参考答案]

(1)主存地址应该用20位来表示。

(2)作业每一页的长度应为2 12 =4096个字节,逻辑地址中的页内地址部分应占用12位。

(3)作业中每一页占用主存块的起始地址为:

页号块号起始地址

0 2 8K

1 4 16K

2 1 4K

3 5 20K

(4)若作业执行中要从第0页的第75单元读信息,则实际应从主存的第2块第75单元读,应访问的主存绝对地址用十六进制数表示为0204BH。若要从第3页的第548单元读信息,则实际应从主存的第5块第548单元读,应访问的主存绝对地址用十六进制数表示为:05224H。

2、兄弟俩共用一个账号,他们都可以用该账号到任何一家联网的银行自动存款或取款。

假定银行的服务系统由“存款”和“取款”两个并发进程组成,且规定每次的存款额和取款额总是为100元。若进程结构如下:

begin

amount:integer;

amount:=0;

cobegin

Process SAVE

m1:integer;

begin

m1:=amount;

m1:=m1+100;

amount:=m1

end;

Process TAKE

m2:integer;

begin

m2:=amount;

m2:=m2-100;

amount:=m2

end;

coend;

end;

请回答下列问题:

(1)请估计该系统工作时会出现怎样的错误?为什么?

(2)若哥哥先存了两次钱,但在第三次存钱时弟弟却正在取钱,则该账号上可能出现的余额为多少?正确的余额应该为多少?

(3)为保证系统的安全,若用PV操作来管理,应怎样定义信号量及其初值?解释信号量的作用。

(4)在程序的适当位置加上P操作和V操作,使其能正确工作。

[参考答案]

(1)系统工作时会出现与时间有关的错误,这是因为并发进程中没有对共享变量amount的使用加以限制,进程交叉访问amount时就会出错。

(2)账号上可能出现的余额为100元或200元或300元,正确的余额应该为200元(3)用PV操作管理时可定义一个信号量S,S的初值为1,信号量S用于限制进程互斥地进入相关临界区执行。

(4)使用PV操作管理后能保证正确并发执行的进程结构如下:

begin

amount:integer;

s:semaphore;

amount:=0; s:=1;

cobegin|

Process SAVE

m1:integer;

begin

P(S);

m1:=amount;

m1:=m1+100;

amount:=m1;

V(S)

end;

Process TAKE

m2:integer;

begin

P(S);

m2:=amount;

m2:=m2-100;

amount:=m2;

V(S)

end;

相关文档
最新文档