操作系统复习重点内容复习资料.docx

上传人:b****6 文档编号:4130523 上传时间:2022-11-28 格式:DOCX 页数:17 大小:49.09KB
下载 相关 举报
操作系统复习重点内容复习资料.docx_第1页
第1页 / 共17页
操作系统复习重点内容复习资料.docx_第2页
第2页 / 共17页
操作系统复习重点内容复习资料.docx_第3页
第3页 / 共17页
操作系统复习重点内容复习资料.docx_第4页
第4页 / 共17页
操作系统复习重点内容复习资料.docx_第5页
第5页 / 共17页
点击查看更多>>
下载资源
资源描述

操作系统复习重点内容复习资料.docx

《操作系统复习重点内容复习资料.docx》由会员分享,可在线阅读,更多相关《操作系统复习重点内容复习资料.docx(17页珍藏版)》请在冰豆网上搜索。

操作系统复习重点内容复习资料.docx

操作系统复习重点内容复习资料

二、进程同步问题

1、一个快餐厅有4类职员:

(1)领班:

接受顾客点菜;

(2)厨师:

准备顾客的饭菜;(3)打包工:

将饭菜打包;(4)出纳员:

收款并提交食物。

每位职员可被看做一个进程,试用一种同步机制写出能让4类职员正确并发工作的程序。

解:

可设4个信号量S1,S2,S3,S4来协调进程工作。

SemaphoreS2,S3,S4,W1,W2,W3,W4;

S2=S3=S4=0;W1=W2=W3=W4=1;//S为同步信号量,表示4类职员的工作顺序,W为互斥信号量,表示每一类员工一次只能为一个客户服务

cobegin

processP1(){

while(true){

有顾客到来;

P(W1);//W1=W1-1,ifW1<0block;

接受顾客点菜;

V(W1);//W1=W1+1

V(S2);//S2=S2+1;

}

}

processP2(){

while(true){

P(S2);//S2=S2-1,ifS2<0block;

P(W2);//W2=W2-1,ifW2<0block;

准备顾客的饭菜;

V(W2);//W2=W2+1

V(S3);//S3=S3+1

}

}

processP3(){

while(true){

P(S3);

P(W3);//W3=W3-1,ifW3<0block;

将饭菜打包;

V(W3);//W3=W3+1

V(S4);//S4=S4+1

}

}

processP4(){

while(true){

P(S4);

P(W4);//W4=W4-1,ifW4<0block;

收款并提交食品;

V(W4);//W4=W4+1

}

}

coend

2、假定一个阅览室最多可容纳100人,读者进入和离开阅览室时都必须在阅览室门口的一个登记表上进行登记,而且每次只允许一人进行登记操作,请用记录型信号量机制实现上述问题的同步。

定义信号量sum,mutex,初值分别为100,1。

则第i个读者的活动描述为:

Pi

Semaphoresum,mutex;

Sum=100;mutex=0;

cobegein

procedurePi()(i=1,2,3……){

wait(sum);//sum=sum-1,ifsum<0block

wait(mutex);//mutex=mutex-1,ifmutex<0block

登记;

signal(mutex);//mutex=mutex+1

进入阅览室;

阅读;

wait(mutex);//mutex=mutex-1,ifmutex<0block

登记;

signal(mutex);//mutex=mutex+1

离开阅览室;

signal(sum);//sum=sum+1

}

coend

3、图给出了四个进程合作完成某一任务的前趋图,试说明这四个进程间的同步关系,并用P、V操作描述它。

 

Semaphorep1,p2,p3,p4;

p1=p2=p3=p4=0;

cobegein

processs1(){

Signal(p1);

Signal(p2)

}

processs2(){

wait(p1)

Signal(p3);

}

processs3(){

wait(p2)

Signal(p4);

}

processs4(){

wait(p3);

wait(P4);

}

coend

4、请用信号量解决以下的“过独木桥”问题:

同一方向的行人可连续过桥,当某一方向有人过桥时,另一方向的行人必须等待;当某一方向无人过桥时,另一方向的行人可以过桥。

将独木桥的两个方向分别标记为A和B;并用整形变量countA和countB分别表示A、B方向上已在独木桥上的行人数,初值为0;再设置三个初值都1的互斥信号量:

SA用来实现对countA的互斥访问,SB用来实现对countB的互斥访问,mutex用来实现两个方向的行人对独木桥的互斥使用。

则具体描述如下:

SemaphoreSA,SB,mutex,countA,countB;

SA=SB=mutex=1,1,1;countA=countB=0,0;

cobegin

processA(){

wait(SA);//互斥操作countS变量

if(countA==0)thenwait(mutex);//A方向第一个上桥的人执行mutex=mutex-1,ifmutex<0block,否则可以上桥

countA:

=countA+1;

signal(SA);//释放SA变量

过独木桥;

wait(SA);//互斥操作countS变量

countA:

=countA-1;

if(countA==0)thensignal(mutex);//A方向第最后一个下桥的人执行mutex=mutex+1ifmutex<=0wakeup,唤醒B进程

signa(SA);

}

processB(){//过程同A

wait(SB);

if(countB==0)thenwait(mutex);

countB:

=countB+1;

signal(SB);

过独木桥;

wait(SB);

countB:

=countB-1;

if(countB==0)thensignal(mutex);

signa(SB);

}

coend

5、设公共汽车上,司机和售票员的活动分别是:

司机的活动:

启动车辆;正常行车;到站停车;

售票员的活动:

关车门;售票;开车门;

请用记录型信号量机制实现上述问题的同步。

Semaphores1,s2;

s1=s2=0,0;/*s1表示是否允许司机启动汽车,s2表示是否允许售票员开门*/

cobegin

processdriver(){

repeat

wait(s1);//s1=s1-1,ifs1<0block,售票员关门后司机才能开车

启动车辆;

正常行车;

到站停车;

signal(s2);//s2=s2+1,ifs2<=0wakeupbusman司机停车后,售票员才可以开门

untilfalse;

}

processbusman{

repeat

关车门;

signal(s1);//s1=s1+1,ifs1<=0wakeupdriver售票员关门后,司机才可以开车

售票;

wait(s2);//s2=s2-1,ifs2<0block,司机停车后售票员才可以开车门

开车门;

上下乘客;

untilfalse;

}

coend

6、有三个进程PA、PB和PC合作解决文件打印问题:

PA将文件记录从磁盘读入主存的缓冲区1,每执行一次读一个记录;PB将缓冲区1的内容复制到缓冲区2,每执行一次复制一个记录;PC将缓冲区2的内容打印出来,每执行一次打印一个记录。

缓冲区的大小等于一个记录大小。

解释P、V操作的含义,并用P、V操作来保证文件的正确打印。

(1)P、V操作是两条原语,定义如下:

P操作:

P操作记为P(S),其中S为一信号量,它执行时主要完成下述动作:

S=S-1

若S>=0,则进程继续运行。

若S<0,则该进程被阻塞,并将它插入该信号量的等待队列中。

V操作:

V操作记为V(S),其中S为一信号量,它执行时主要完成下述动作:

S=S+1

若S>0,则进程继续运行。

若S<=0,则从信号量的等待队列中移出队首进程。

使其变为就绪状态。

(2)描述如下:

semaphoreempty1,empty2,full1,full2,mutex1,mutex2;

empty1=empty2=1;full1=full2=0,0;mutex1;mutex2=1;//empty1,empty2,full1,full2分别表示缓冲区1、2空和满的同步信号量,mutex1,mutex2分别表示互斥使用缓冲区1、2的互斥信号量

cobegin

processPA(){

repeat

从磁盘读一个记录;

P(empty1);//empty1=empty1-1,ifempty1<0block,缓冲区1不为空则阻塞

P(mutex1);//mutex1=mutex1-1,ifmutex<0block,缓冲区1正在被操作则阻塞

将记录存入缓冲区1;

V(mutex1);//mutex1=mutex1+1,ifmutex1<=0wakeup,如果有等待操作缓冲区1的进程将被唤醒

V(full1);//full1=full1+1,iffull1<=0wakeup,缓冲区1放入一个数据,如果PB进程等待取数据则被唤醒

untilfalse;

}

processPB{

repeat

P(full1);

P(mutex1);

从缓冲区1取出纪录;

V(mutex1)

V(empty1);

P(empty2);

P(mutex2);

将记录存入缓冲区2;

V(mutex2);

V(full2);

untilfalse;

}

processPC{

repeat

P(full2);

P(mutex2);

从缓冲区2取出纪录;

V(mutex2);

V(empty2);

打印记录;

untilfalse;

}

coend

 

三、银行家算法

1、系统有A,B,C,D共4种资源,在某时刻进程P0,P1,P2,P3,P4对资源的占有和需求情况如下表所示。

进程

Allocation

Max

Available

ABCD

ABCD

ABCD

P0

0032

0044

1622

P1

1000

2750

P2

1354

361010

P3

0332

0984

P4

0014

06610

(1)系统此时处于安全状态吗?

(2)若此时进程P1发出request1(1,2,2,2),系统能分配资源给它吗?

为什么?

解:

(1)利用安全性算法分析可知,此时存在一个安全序列{P0,P3,P4,P1,P2},故系统是安全的。

进程

Work

Need

Allocation

Max

Finish

Need<=work即可分配

ABCD

ABCD

ABCD

P0

1622

0012

0032

0044

true

P3

1654(还回P0已分得资源后的剩余资源)

0652

0332

2750

true

P4

1986

0656

0014

361010

true

P1

19910

1750

1000

0984

true

P2

29910

2356

1354

06610

true

(2)若此时进程P1发出request1(1,2,2,2),系统按银行家算法进行检查:

request1(1,2,2,2)>need1(1,7,5,0),其请求的资源数已超过其还需资源数,所以不能分配。

2、系统中有五个进程P1、P2、P3、P4、P5,有三种类型的资源:

R1、R2、和R3。

在T0时刻系统状态如表所示。

若采用银行家算法实施死锁避免策略,回答下列问题:

1.T0时刻是否为安全状态?

为什么?

2.若这时P4请求资源(1,2,0),是否能实施资源分配?

为什么?

3.在上面的基础上,若进程P3请求资源(0,1,0),是否能实施资源分配?

为什么?

 

T0时刻系统状态

已分配资源数量

最大资源需求量

R1

R2

R3

R1

R2

R3

P1

0

0

1

0

0

1

P2

2

0

0

2

7

5

P3

0

0

3

6

6

5

P4

1

1

5

4

3

5

P5

0

3

3

0

6

5

 

R1

R2

R3

剩余资源数

3

3

0

(1)

进程

Work

Need

Allocation

Max

Finish

R1R2R3

Need<=work即可分配

R1R2R3

R1R2R3

R1R2R3

P1

330

000

001

001

true

P4

331

(还回P1已分得资源后的剩余资源)

320

115

435

true

P5

446

032

033

065

true

P2

479

075

200

275

true

P3

679

662

003

665

true

T0时刻是安全的,安全序列为:

P1,P4,P5,P2,P3

(2)P4请求资源(1,2,0),先判断P4的需求数Need(320)>=申请数(120)的,然后进行预分配后进行安全性判断。

根据银行家算法,预分配后系统是安全的,安全序列为:

P1,P4,P5,P2,P3

(3)P3请求资源(1,1,0)<=申请数,然后根据银行家算法,预分配后系统不安全,所以不能实施资源分配。

 

 

四、地址变换

1、在一分页存储管理系统中,逻辑地址长度为16位,页面大小为4096B,现有逻辑地址2F6AH,且第0,1,2页依次存放在第10,12,14号物理块中,试问相应的物理地址是多少?

解:

因为逻辑地址长度为16位,而页面大小为4096字节(2^10=1024,4096=2^12),所以,后面12为表示页内偏移地址,前面的4位表示页号。

把2F6AH转换成二进制为:

0010|111101101010,可知页号为2。

故放在14号物理块中,1110|111101101010,写成十六进制为EF6AH。

2、假如一个程序的段表如下,其中存在位为1表示段在内存,对于下面指令,在执行时会产生什么样的结果。

(1)STORER1,[0,70]

(2)STORER1,[1,20]

(3)LOADR1,[3,50]

(4)LOADR1,[3,100]

(5)JMP[2,150]

解:

(1)由于第0段的存在位为0,表示该段未装入内存,因此产生缺段中断。

(2)从段表第1项可看到,指令中逻辑地址合法(段长>20),段也已经在内存(存在位为1),但存取控制字段不符(待段为只读R,无法将寄存器R1的内容存入地址[1,20]中),故产生保护性中断信号。

(3)逻辑地址合法,存取方式合法,形成物理地址8050后(始址+段内偏移=8000+50),执行指定操作。

(4)逻辑地址中段内地址超长(100>80),产生越界中断信号。

(5)逻辑地址及访问方式合法,形成物理地址3150(3000+150),指令执行后,将条转到内存单元3150处继续执行。

3、一个进程的大小占5个页面,每页的大小为1K,系统为它分配了3个物理块。

当前进程的页表如图所示:

块号存在位P访问位R修改位M

0x1C

1

1

0

0x3F

1

1

1

-

0

0

0

0x5D

1

0

0

-

0

0

0

(1)有那些页面不在内存?

(2)请分别计算进程中虚地址为0x3B7、0x12A5、0x1432单元的物理地址(用十六进制表示),并说明理由。

解:

(1)不在内存的是第2和4页(按页号,即从0排序),或第3和5页(按序号,即从1排序)。

(2)每页1K,故页内偏移地址10位,5个页面,故页号3位,块号中最大的为0x5D=1001111故最少7位

0x3B7的逻辑地址000|1011110111,在第0页

物理地址为=0001111|1011110111=0x3ef7

0x12A5的虚地址=100|0111110101,在第4页

物理地址为=1001111|0111110101=0x13df5

0x1432的虚地址为=101|0000110010,该页不在内存中,产生缺页中断。

注意:

若页号>页表长度(从0开始计)会发出越界中断

4、设有一页式存储管理系统,向用户提供的逻辑地址空间最大为16页,每页2048B,内存总共有8个存储块,试问逻辑地址至少应为多少位?

内存空间有多大?

解:

逻辑地址最多16页,故页号4位

每页2048B,故页内偏移地址11位

逻辑地址空间为2^(4+11)位,故大小为32K

内存8个块,故块号占3位,块内偏移和页内偏移一样占11位

内存地址空间为2^(3+11)位,故大小为16K

5、在一个段式存储管理系统中,其段表为:

段号内存起始地址段长

0210500

1235020

210090

31350590

4193895

试求下述逻辑地址对应的物理地址是什么?

段号段内位移

1430

210

3500

4400

5112

632

解:

试求下述逻辑地址对应的物理地址是什么?

段号段内位移

1430210+430=

2102350+10=

3500500>90越界中断

44001350+400

5112112>95越界中断

632无该段越界中断或段置换(虚拟分段存储机制中)

五、页面置换

1、在一个请求分页虚拟存储管理系统中,一个程序运行的页面走向是:

1,2,3,1,4,5,1,2,1,4,5,3,4,5,对于分配给程序4个页框的情况,分别用FIFO,OPT和LRU算法,求出缺页中断次数,并给出缺页时加进主存的页号。

解:

(1)FIFO缺页10次,缺页时加进主存的页号见表中带星的页号。

(先进先出置换)

页框

1

2

3

1

4

5

1

2

1

4

5

3

4

5

0

1*

1

1

1

1

5*

5

5

5

5

5

5

4*

4

1

2*

2

2

2

2

1*

1

1

1

1

1

1

5*

2

3*

3

3

3

3

2*

2

2

2

2

2

2

3

4*

4

4

4

4

4

4

3*

3

3

(2)OPT缺页6次,缺页时加进主存的页号见表中带星的页号。

(最佳置换:

置换以后永久不使用的或在最长时间内不再被访问的页)

页框

1

2

3

1

4

5

1

2

1

4

5

3

4

5

0

1*

1

1

1

1

1

1

1

1

1

1

3*

3

3

1

2*

2

2

2

2

2

2

2

2

2

2

2

2

2

3*

3

3

5*

5

5

5

5

5

5

5

5

3

4*

4

4

4

4

4

4

4

4

4

(3)LRU缺页7次,缺页时加进主存的页号见表中带星的页号。

(最近最久未使用置换:

选择最近最久未使用的页面进行置换)

页框

1

2

3

1

4

5

1

2

1

4

5

3

4

5

0

1*

1

1

1

1

1

1

1

1

1

1

1

1

1

1

2*

2

2

2

5*

5

5

5

5

5

5

5

5

2

3*

3

3

3

3

2*

2

2

2

3*

3

3

3

4*

4

4

4

4

4

4

4

4

4

 

2、现有一请求分页的虚拟存储器,内存最多容纳4个页面,对于下面的引用串:

1,2,3,4,5,3,4,1,6,7,8,7,8,9,7,8,9,5,4,5,4,2

分别采用FIFO,LRU,OPT页面替换算法,各将产生多少次缺页中断?

FIFO:

1

2

3

4

5

3

4

1

6

7

8

7

8

9

7

8

9

5

4

5

4

2

1

1

1

1

5

5

5

5

5

5

8

8

8

8

8

8

8

8

8

8

8

2

2

2

2

2

2

2

1

1

1

1

1

1

9

9

9

9

9

9

9

9

9

3

3

3

3

3

3

6

6

6

6

6

6

6

6

6

5

5

5

5

5

4

4

4

4

4

4

7

7

7

7

7

7

7

7

7

4

4

4

4

 

LRU

1

2

3

4

5

3

4

1

6

7

8

7

8

9

7

8

9

5

4

5

4

2

1

1

1

1

2

2

2

5

3

4

1

1

1

6

6

6

6

7

8

8

8

9

2

2

2

3

4

5

3

4

1

6

6

6

7

8

9

7

8

9

9

9

5

3

3

4

5

3

4

1

6

7

8

7

8

9

7

8

9

5

4

5

4

4

5

3

4

1

6

7

8

7

8

9

7

8

9

5

4

5

4

2

OPT

1

2

3

4

5

3

4

1

6

7

8

7

8

9

7

8

9

5

4

5

4

2

1

1

1

1

1

1

1

1

6

6

8

8

8

8

8

8

8

8

8

8

8

2

2

2

2

5

5

5

5

5

5

5

5

5

5

5

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 初中教育 > 其它课程

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

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