操作系统第五次功课参考答案
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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;