操作系统期末大题复习

目录

处理器调度算法计算题

PV操作

PV互斥信号量

互斥信号量

银行家算法

死锁检查算法

缺页置换算法

分页管理

段式存储管理

页式管理


处理器调度算法计算题

1.设有按P1、P2、P3、P4次序到达的4个进程,CPU阵法时间如表所示,采用先到先得服务算法和最短作业优先算法,画出甘特图,并计算各自的平均等待时间。

进程CPU阵发时间/ms
P120
P28
P35
P418

(1)采用先到先得服务算法,甘特图如下:

  平均等待时间=(0 +20+28 +33 )/4 ms = 20.25 ms。

(2)采用最短作业优先算法,甘特图如下:

 

平均等待时间=(0+5+ 13 +31)/4 ms = 12.25 ms。

2.设有周期性实时任务集如下表所示,用EDF算法和RMS算法是否可以调度?画出相应的Gantt图。

任务

发生周期Ti

处理时间Ci

A

30

10

B

40

15

C

50

5

答:由于

因而采用EDF算法一定可以调度,其Gantt图为:

由于

 

因而采用RMS算法不可调度。

3.设有4个作业J1、J2、J3、J4,其提交时刻与运行时间如下。试采用先到先服务、最短作业优先、最高响应比优先算法,分别求出各个作业的周转时间,带权周转时间,以及所有作业的平均周转时间,平均带权周转时间。

1. 执行时间顺序为J1-J2-J3-J4

作业的平均周转时间=(120+160+160+188)/4=157 min  约为2.62h

平均带权周转时间=(120/120+160//60+160/30+188/48)/4=3.23

2. SJB执行时间顺序为J1-J3-J4-J2,如图所示。

作业的平均周转时间=(120+238+100+128)/4=146.5min约为2.44h

平均带权周转时间=(120/120+238/60+100/30+128/48)/4=2.74

3. HRN执行时间顺序为J1-J3-J2-J4,如图所示。

作业的平均周转时间=(120+190+100+188)/4=149.5min约为2.49h

平均带权周转时间=(120/12/+190/60+100/30+188/48)/4=2.85

PV操作

4.关于读者/写者问题,有人给出如下改进解法: 由于s以及读者和写者对s的操作,读者和写者都不会无限等待,因而算法不会出现饿死现象,是一个公平的解法

semaphore r_w_w, mutex, s; (初值均为1)

int count; (初值为0)

读者活动:

P(s);

P(mutex);

count++;

if (count= =1)

P(r_w_w);

V(mutex);

V(s);

{读操作}

P(mutex);

count--;

If (count= =0)

V(r_w_w);

V(mutex);

写者活动:

P(s);

P(r_w_w);

{写操作}

V(r_w_w);

V(s);

PV互斥信号量

5.用P、v操作解决读者和写者之间的同步问题,且写者优先。

    这里仍需设置 readcount 记录读者数,rmutex是读者互斥访问 readcount 的信号量,rwmutex是读者与写者互斥访问文件的信号量。另外再设 writecount 记录写者数,wmutex是写者互斥访问 writecount 的信号量。为了使写者优先,需要再设置两个信号量z和x,z控制所有读者按照FCFS策略排队。x使一个读者和一个写者竞争访问文件。只要在x上等待的写者能继续执行,其他写者便可以直接竞争写者之间文件的互斥访问权,从而实现写者优先。

int readcount, writecount;

semaphore rmutex =1, wmutex = 1, rwmutex = 1, z = 1 ,x = 1 ;

void reader( ){

while(1){

        p(z);              //所有读进程在z上排队

  p(x);              //—个读进程与一个写进程在x上竞争

        p(mutex);      //读进程互斥访问readcount

  ++readcount;

  if(readcount= = 1) p(rwmutex ) ;

  v(mutex);

        v(z);     

  v(x);

read data;        //临界区

p(rmutex);

}

}

void writer( ){

while(1){

    p(wmutex);                   //写进程互斥访问writecount

     ++ writecount;

if(writecount==1) p(x);    //一个写进程在x上排队

v(wmutex);

p(rwmutex);                     //其他写进程在rwmutex上排队

write data;

v(rwmutex);

p(wmutex);

--writecount;

if(writecount==0) v(x);     //写进程都写完时,通过v(x)允许读进程读

v(wmutex);

}

}

互斥信号量

6.某单位为节省开支,决定建造男女共用的单性洗浴间。为满足社会风化要求,洗浴间在任何时刻均不允许不同性别的人同时进入。编写一个管程,实现对洗浴间的管理。假定洗浴e中同性别人数没有限制。该管程中包括如下外部函数:

woman_wants_to_enter;

man_wants_to_enter;

woman_leave;

man_leave。

银行家算法

7.在银行家算法中,若出现如下资源分配情况:

         Allocation        Need          Available 

        A  B  C  D      A  B  C  D       A  B  C  D

P0:   0  0  3  2      0  0  1  2         1  6  2  3

P1:   1  0  0  0      1  7  5  0

P2:   1  3  5  4      2  3  5  6

P3:   0  3  3  2      0  6  5  2

P4:   0  0  1  4      0  6  5  6

试问:

(1)当前状态是否安全?

(2)如果进程P2提出安全请求Request[2]=(1,2,2,2),系统能否将资源分配给它?说明原因.

解:

(1)当前状态是安全状态。可以找到一个安全进程序列<p0,p3,p4,p1,p2>,它使Finish[i]=true,因而可以断言系统当前处于安全状态.

(2)系统不能将资源分配给它。运行银行家算法,由于Request[2]=(1, 2, 2, 2)<Need[2]=(2, 3, 5, 6),因而请求合法。进一步,Request[2]=(1, 2, 2, 2)<Available=(1, 6, 2, 3),故该请求是可以满足的。假设将资源分配给p2,则系统状态变为:

         Allocation        Need          Available 

        A  B  C  D      A  B  C  D       A  B  C  D

P0:   0  0  3  2      0  0  1  2          0  4  0  1

P1:   1  0  0  0      1  7  5  0

P2:   2  5  7  6      1  1  3  4

P3:   0  3  3  2      0  6  5  2

P4:   0  0  1  4      0  6  5  6

运行安全性检测算法,Work=Available=(0, 4, 0, 1),Finish[i]=false,此时所有Need[i]£Work[i]均不成立,结果Finish[i]均为false,不存在安全进程序列,系统处于不安全状态。系统将取消资源分配并恢复原来状态,进程p2等待。

死锁检查算法

8.某系统采用死锁检测手段发现死锁,设系统中资源类集合为{A,B,C},资源类A中共有8个实例,资源类B中共有6个实例,资源类C中共有5个实例.又设系统中进程集合为{p1,p2,p3,p4,p5,p6},某时刻系统状态如下:

        Allocation        Need          Available 

         A  B  C        A  B  C         A  B  C

p1:     1  0  0        0  0  0         2  2  1

p2:     3  2  1        0  0  0

p3:     0  1  2        2  0  2

p4:     0  0  0        0  0  0

p5:     2  1  0        0  3  1

p6:     0  0  1        0  0  0

  1. 在上述状态下系统依次接受如下请求:Request[1]=(1,0,0);Request[2]=(2,1,0);Request[4]=(0,0,2)。给出系统状态变化情况,并说明没有死锁。
  2. 在由(1)所确定的状态下系统接收如下请求:Request[1]=(0,3,1),说明此时已发生死锁,并找出参与死锁的进程。

解:

(1)①系统接受请求:Request[1]=(1,0,0),Request[1]< Available,可以执行分配,那么系统状态变为:

        Allocation        Need          Available 

         A  B  C        A  B  C         A  B  C

p1:    2  0  0        0  0  0         1  2  1

p2:     3  2  1       0  0  0

p3:     0  1  2       2  0  2

p4:     0  0  0       0  0  0

p5:     2  1  0        0  3  1

p6:     0  0  1        0  0  0

在该状态下运行死锁检测算法,可以找到一个进程序列<p4,p1,p2,p3,p5,p6>,它使Finish[i]=true,对于所有1≤i≤6,因而可以断言系统当前没有进入死锁状态。

②系统接受请求:Request[2]=(2,1,0),Request[2]>Available,系统只接受请求,无法实现资源分配,那么系统状态变为:

        Allocation        Need          Available 

         A  B  C        A  B  C         A  B  C

p1:    2  0  0        0  0  0            1  2  1

p2:    3  2  1        2  1  0

p3:     0  1  2        2  0  2

p4:     0  0  0        0  0  0

p5:     2  1  0        0  3  1

p6:     0  0  1        0  0  0

在该状态下运行死锁检测算法,可以找到一个进程序列<p4,p1,p2,p3,p5,p6>,它使Finish[i]=true,对于所有1≤i≤6,因而可以断言系统当前没有进入死锁状态。

③系统接受请求:Request[4]=(0,0,2),Request[4]>Available,系统只接受请求,无法实现资源分配,那么系统状态变为:

        Allocation        Need          Available 

         A  B  C        A  B  C         A  B  C

p1:    2  0  0        0  0  0         1  2  1

p2:    3  2  1        2  1  0

p3:     0  1  2        2  0  2

p4:     0  0  0        0  0  2

p5:     2  1  0        0  3  1

p6:     0  0  1        0  0  0

在该状态下运行死锁检测算法,可以找到一个进程序列< p1,p2,p3, p4,p5,p6>,它使Finish[i]=true,对于所有1≤i≤6,因而可以断言系统当前没有进入死锁状态。

(2)在(1)状态下系统接收如下请求:Request[1]=(0,3,1),Request[1]>Available,系统只接受请求,无法实现资源分配,则系统状态变为:

        Allocation        Need          Available 

         A  B  C        A  B  C         A  B  C

p1:    2  0  0        0  3  1         1  2  1

p2:    3  2  1        2  1  0

p3:     0  1  2        2  0  2

p4:     0  0  0        0  0  2

p5:     2  1  0        0  3  1

p6:     0  0  1        0  0  0

在该状态下运行死锁检测算法,找不到一个进程序列使Finish[i]=true,对于所有1≤i≤6,因为存在i∈{1,2,3,5},使Finish[i]=false,因而可以断言系统已经进入死锁状态,进程p1,p2,p3,p5卷入死锁.

缺页置换算法

9.设某进程页面的访问序列为4,3,2,1,4,3,5,4,3,2,1,5,当分配给该进程的内存页框数分别为3和4时,对于先进先出,最近最少使用,最佳页面置换算法,分别发生多少次缺页中断?

答:

分配的页框数为3时:

FIFO:

4

3

2

1

4

3

5

4

3

2

1

5

4

4

4

1

1

1

5

5

5

5

5

5

3

3

3

4

4

4

4

4

2

2

2

2

2

2

3

3

3

3

3

1

1

×

×

×

×

×

×

×

×

×

共缺页9次

LRU:

4

3

2

1

4

3

5

4

3

2

1

5

4

4

4

1

1

1

5

5

5

2

2

2

3

3

3

4

4

4

4

4

4

1

1

2

2

2

3

3

3

3

3

3

5

×

×

×

×

×

×

×

×

×

×

共缺页10次

OPT:

4

3

2

1

4

3

5

4

3

2

1

5

4

4

4

4

4

4

4

4

4

2

2

2

3

3

3

3

3

3

3

3

3

1

1

2

1

1

1

5

5

5

5

5

5

×

×

×

×

×

×

×

共缺页7次

分配的页框数为4时:

FIFO:

4

3

2

1

4

3

5

4

3

2

1

5

4

4

4

4

4

4

5

5

5

5

1

1

3

3

3

3

3

3

4

4

4

4

5

2

2

2

2

2

2

3

3

3

3

1

1

1

1

1

1

2

2

2

×

×

×

×

×

×

×

×

×

×

共缺页10次

LRU:

4

3

2

1

4

3

5

4

3

2

1

5

4

4

4

4

4

4

4

4

4

4

4

5

3

3

3

3

3

3

3

3

3

3

3

2

2

2

2

5

5

5

5

1

1

1

1

1

1

1

1

2

2

2

×

×

×

×

×

×

×

×

共缺页8次

OPT:

4

3

2

1

4

3

5

4

3

2

1

5

4

4

4

4

4

4

4

4

4

4

1

1

3

3

3

3

3

3

3

3

3

3

3

2

2

2

2

2

2

2

2

2

2

1

1

1

5

5

5

5

5

5

×

×

×

×

×

×

共缺页6次

分页管理

10.请求分页管理系统中,假设某进程的页表内容如下表所示。 

   页面大小为4KB,一次内存的访问时间是100ns,一次快表(TLB)的访问时间是10ns,处理一次缺页的平均时间为108ns(已含更新TLB和页表的时间),进程的驻留集大小固定为2,采用最近最少使用置换算法(LRU)和局部淘汰策略。假设:

①TLB初始为空;

②地址转换时先访问TLB,若TLB未命中,再访问页表(忽略访问页表之后的TLB更新时间);

③有效位为0表示页面不在内存,产生缺页中断,缺页中断处理后,返回到产生缺页中断的指令处重新执行。设有虚地址访问序列137H 、565H、15A5H,请问: 

页号

页框号

有效位(存在位)

0

101H

1

1

--

0

2

254H

1

(1) 依次访问上述三个虚地址,各需多少时间?给出计算过程。  

(2) 基于上述访问序列,虚地址258H的物理地址是多少?请说明理由。   

(1)根据页式管理的工作原理,应先考虑页面大小,以便将页号和页内位移分解出来。页面大小为4KB,即212,则得到页内位移占虚地址的低12位,页号占剩余高位。可得三个虚地址的页号P如下(十六进制的一位数字转换成4位二进制,因此,十六进制的低三位正好为页内位移,最高位为页号): 

 137H:P=0,访问快表10ns,因初始为空,访问页表100ns得到页框号,合成物理地址后访问主存100ns,共计10ns+100ns+100ns=210ns。 

 565H:P=0,访问快表,因第一次访问已将该页号放入快表,因此花费10ns便可合成物理地址,访问主存100ns,共计10ns+100ns=110ns。 

 15A5H:P=1,访问快表10ns,落空,访问页表100ns落空,进行缺页中断处理108ns,合成物理地址后访问主存100ns,共计10ns+100ns+108ns+100ns≈108ns。 

 (2)访问1565H时,1号页面在内存中,页框号与15A5H相同。前面当访问虚地址15A5H时,访问页表发现1号页不在内存中,产生缺页中断,合法驻留集为2,必须从页表中淘汰一个页面,根据题目的置换算法,最近访问的都是0号页的内容,0号页不应被淘汰。应淘汰2号页面,因此1号页面装入时对应的页框号为254H。由此可得1565H的物理地址为254565H。 

段式存储管理

11.在某个段式存储管理系统中,进程P的段表如下表,求表中各逻辑地址对应的物理地址

序号首地址段长
0250500
1235020
212080
31350590
4190090

段号

段内位移

0

430

1

15

2

500

3

400

4

112

解:

段号

段内位移

物理地址

0

430

680

1

15

2365

2

500

越界

3

400

1750

4

112

越界

页式管理

12.在某页式管理系统,某进程页表如下,已知页面大小为1024B,试将逻辑地址1012、2248、3010、4020、5018转化为相应的物理地址。

页号

页框号

0

5

2

8

2

8

3

1

4

6

解:

逻辑地址

页号

页内地址

页框号

物理地址

1012

0

1012

5

5*1024+1012=6132

2248

2

200

8

8*1024+200=8392

3010

2

962

8

8*1024+962=9154

4020

3

948

1

1*1024+948=1972

5018

4

922

6

6*1024+922=7066

  • 44
    点赞
  • 544
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 15
    评论
 操作系统原理 课程试卷(一)答案共4页 学院   专业        成绩      年级   学号      姓名     日期     考试形式: 闭卷 时间: 120分钟 一、 填空(20分,每空1分) 1、进程通信的常用方式有 直接通信 和 间接通信 等。 2、如果P(S1)和P(S2)两个操作在一起,那么P操作的顺序至关重要,一个同步P操作与一个互斥P操作在一起时同步 P操作在互斥 P操作前。而两个V操作的次序无关紧要 。 3、P(S):表示申请一个资源 ; V(S)表示释放一个资源 。信号量的初值应该大于等于0 。 4、在请求式分页系统中,页框的分配中有一种方式称为固定分配。固定分配有两种不同的方式,分别是平均分配 和按比率分配 。 5、在请求式分页存储管理系统中,不能在计算机中实现的页面淘汰算法是最佳算法 ,选择淘汰不再使用或最远的将来才使用的页的算法是先进先出算法 ,选择淘汰在主存驻留时间最长的页的算法是最近最少使用 。 6、将作业地址空间中的逻辑地址转换为主存中的物理地址的过程称为 地址转换。 7、访问磁盘时间由三部分组成 寻道时间 、 旋转延迟时间 和 传输时间 。 8、I/O设备的控制方式有 轮询 、 中断 和 DMA 等。 二、 判断(20分,每4分,请说明正确与否的理由) 1、分布式系统就是紧偶合系统。 错。 分布式系统是松散偶合系统。 2、在一个只有单个CPU的计算机中,进程不能并行操作。 错。 一个进程在利用CPU运行,另一个进程可以同时进行I/O操作,它们是并行的。 3、线程可以分为内核级(Kernel Thread)和用户级(User Thread)两种,操作系统不可以直接调度用户级的线程。 对。 4、有m个进程的操作系统出现死锁时, 死锁进程的个数为1α>0时此算法是什么算法? 2) 请问当α<β<0时此算法是什么算法? 答: 1) 先来先服务 2) 先来后服务 六、 一个程序P的用户空间为16K,存储管理采用请求式分页系统,每个页面大小为2K,存在以下的页表: 页框号 有效位 12 1 3 1 0 1 0 0 2 1 15 1 0 0 8 1 其中,有效位=1表示页面在内存;0表示页面不在内存。 请将虚地址0x060C,0x1502,0x1d71,0x2c27,0x4000转换为物理地址。 答: 0x060C:1548+12*2048=0x660C 0x1502:0x502 0x1d71:缺页 0x2c27:0x1427 0x4000:越界 七、 1目录文件采用链接式,每个磁盘块存放10个下级文件的描述,最多存放40个下级文件,若下级文件为目录文件,上级目录指向该目录文件的第一块,否则指向普通文件的文件控制块。普通文件采用二级索引形式,文件控制块中给出12个磁盘块地址,前10个磁盘块地址指出前10页的物理地址,第11个磁盘块地址指向一级索引表,一级索引表给出256个磁盘块地址,即指出该文件第10页至第265页的地址,第12个磁盘块地址指向二级索引表,二级索引表中指出256个一级索引表的地址。 (1) 该文件系统中的普通文件最大可有多少页? (2) 若要读文件/A/D/K/Q中的某一页, 最少要启动磁盘几次? 最多要启动磁盘几次? 答: (1)该文件系统中的普通文件最大可有:10+256+256*256=65802页 (2)若要读文件/A/D/K/Q中的某一页, 最少要启动磁盘1+1+1+1+1=5次,最多要启动磁盘4+4+4+4+2+1=19次
评论 15
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

DreamWendy

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值