操作系统复习题

1. 请画出进程状态转换图。并说明是什么时间引起的每种状态变迁。
在这里插入图片描述
(1)创建到就绪:处于创建状态的进程,当其获得所需的资源以及对其PCB的初始化工作完成后,便由创建状态转入就绪状态。
(2)就绪到执行:处于就绪状态的进程,在调度程序为之分配了处理器之后,该进程就进入执行状态。
(3)执行到就绪:正在执行的进程,如果分配给它的时间片用完,则暂停执行,该进程就由执行状态转变为就绪状态。
(4)执行到阻塞:如果正在执行的进程因为发生某事件(例如:请求I/O,申请缓冲空间等)而使进程的执行受阻,则该进程将停止执行,由执行状态转变为阻塞状态。                                  
(5)阻塞到就绪:处于阻塞状态的进程,如果引起其阻塞的事件发生了,则该进程将解除阻塞状态而进入就绪状态。
(6)执行到终止:一个进程到达自然结束点,或是出现无法克服的错误,或是被操作系统所终结,或是被其他有终止权的进程所终结,就将进入终止状态。

2. 操作系统一般分为几个组成部分,各部分都具有什么功能?
(1)处理机管理:创建和撤销进程,对诸进程的运行进行协调,实现进程之间的信息交换,以及按照一定的算法把处理机分配给进程。
(2)存储器管理:具有内存分配和回收、内存保护、地址映射和内存扩充等功能。
(3)设备管理:具有缓冲管理、设备分配和设备处理以及虚拟设备等功能。
(4)文件管理:具有对文件存储空间的管理、目录管理、文件的读/写管理以及文件的共享与保护等功能。
(5)操作系统与用户之间的接口:方便用户对操作系统的使用。
另一种分类:
①系统引导程序:每次启动DOS时,它自动装入内存,并检查是否有基本输入/输出程序和磁盘操作系统程序。
②命令处理程序:它由初始化程序、接口子程序和各种中断子程序组成,它主要负责操作系统与外部设备进行联系,保证外部设备在机器运行时能正常工作。
③基本输入/输出程序:管理全部磁盘文件,允许建立、读出、写入、删除及修改某个文件;进行磁盘存储器与其他系统资源的管理;启动并控制显示终端、打印机等输入/输出设备的通信;负责与键盘命令处理程序及各种应用程序的通信。
④磁盘操作管理程序:它主要由命令处理程序和命令解释程序组成,负责接收、识别并执行拥护通过终端输入的命令,即用户从键盘上输入的命令

3. 什么是进程?什么是线程?进程与线程有何区别?
(1)进程:是进程实体运行的过程,它是系统进行资源分配和调度的一个独立单位。
(2)线程:是操作系统能够进行运算调度的最小单位,是被包含在进程之中的,是进程中的实际运作单位。
(3)根本区别:进程是操作系统资源分配的基本单位,而线程是任务调度和执行的基本单位。
在开销方面:每个进程都有独立的代码和数据空间(程序上下文),程序之间的切换会有较大的开销;线程可以看做轻量级的进程,同一类线程共享代码和数据空间,每个线程都有自己独立的运行栈和程序计数器(PC),线程之间切换的开销小。
所处环境:在操作系统中能同时运行多个进程(程序);而在同一个进程(程序)中有多个线程同时执行(通过CPU调度,在每个时间片中只有一个线程执行)
内存分配方面:系统在运行的时候会为每个进程分配不同的内存空间;而对线程而言,除了CPU外,系统不会为线程分配内存(线程所使用的资源来自其所属进程的资源),线程组之间只能共享资源。
包含关系:没有线程的进程可以看做是单线程的,如果一个进程内有多个线程,则执行过程不是一条线的,而是多条线(线程)共同完成的;线程是进程的一部分,所以线程也被称为轻权进程或者轻量级进程。

4. 什么是死锁?产生死锁的原因和必要条件是什么?
死锁:两个或两个以上的线程在执行过程中,由于竞争资源或者由于彼此通信而造成的一种阻塞的现象,若无外力作用,它们都将无法推进下去
原因:系统不可抢占性资源、竞争可消耗资源、进程推进顺序不当。
必要条件:
(1)互斥条件:进程要求对所分配的资源进行排它性控制,即在一段时间内,某资源仅为一进程所占用。
(2)请求和保持条件:当进程因请求资源而阻塞时,对已获得的资源保持不放。
(3)不可抢占条件:进程已获得的资源在未使用完之前,不能被抢占,只能在使用完时由自己释放。
(4)循环等待条件:在发生死锁时,必然存在一个进程–资源的循环链。

5. 某个虚拟存储器的用户空间共有32个页面,每页为1KB,内存为16KB。假定某时刻一用户的页表已调入内存的页面号和物理块号对照表如下:
在这里插入图片描述
则逻辑地址0x0A5D所对应的物理地址是什么?

页式存储管理的逻辑地址分为两部分:页号和页内地址。由已知条件“用户编程空间共32个页面”,可知页号部分占5位;由“每页为 1KB”,1K=210,可知页内地址占10位。
物理地址是由物理块号和页内地址拼接而成。主存为16KB,物理块大小又等于页面大小为1KB,所以物理块共有16块,用4位二进制表示。
根据页表,页号为2的页面对应的物理块号为4,用二进制表示为0100。
答: 0x0A5D = 0000 1010 0101 1011
0000 10 10 0101 1011
0001 00 10 0101 1011
6. 假定某进程共有8个页面,分配了4个物理内存块,其页面的使用情况如下列表,按照下面三种方法,分别画出进程运行时页面的置换图,并在图上标明进程是否换页。
1, 2, 3, 4, 2, 1, 5, 6, 2, 1, 2, 3, 7, 6, 3, 2, 0
(1)FIFO置换算法(先进先出算法)
(2)LRU置换算法(最近最久未使用算法)
(3)最佳置换算法

在这里插入图片描述在这里插入图片描述
7. 现有一个作业,在段式存储管理的系统中已为其主存分配,建立的段表内容如下:
在这里插入图片描述
计算逻辑地址(2,15),(0,60),(3,18)的绝对地址是多少?
注:括号中第一个元素为段号,第二个元素为段内地址。

(2,15) 480 + 15 = 495,
(0,60), 段内地址越界
(3,18) 370 + 18 = 388
在这里插入图片描述
8. 有4个并发执行的进程A,B,C,D。在执行时它们都要读共享文件F,但限制进程A和进程B不能同时读文件F,进程C和进程D也不能同时读文件F。请问用PV操作管理时:
(1)应怎样定义信号量?写出信号量的初值和含义。
(2)写出能使它们正确执行的程序。

信号量 m1, 初值为1,表示A或B读取文件F的权限。
信号量m2, 初值为1, 表示C或D读取文件F的权限

A: P(m1);
读取F;
V(m1);
B: P(m1);
读取F;
V(m1);
C: P(m2);
读取F;
V(m2);
D: P(m2);
读取F;
V(m2);

9. 假定一个阅览室可供50个人同时阅读。读者进入和离开阅览室时都必须在阅览室入口处的一个登记表上登记,阅览室有50个座位,规定每次只允许一个人登记或注销登记。
要求:(1)用PV操作描述读者进程的实现算法(登记、注销可用自然语言描述);
(2)指出算法中所用信号量的名称、作用及初值。

(1)
进入阅览室登记
P(m1);
P(m2);
登记进入阅览室;
V(m2);
进入阅览室

离开阅览室注销
走出阅览室
P(m2);
登记离开阅览室;
V(m2);
V(m1);

(2)
m1 表示进入阅览室的权限,初值 50
m2 表示获得写登记表的权限,初值1

10. 两个并发执行的进程A和B的程序如下:

进程A
While (true) {
temp = N
temp = temp + 5
N = temp;
}
进程B
While (true) {
temp = N
打印temp的值;
N=0;
}

其中N为整数,初值为4。若进程A先执行了三个循环后,进程A和进程B又并发执行了一个循环,写出可能出现的打印值。正确的打印值应该是多少?请用P、V操作进行管理,使进程A和B并发执行时不会出现与时间有关的错误。
N初值为4,若进程A先执行了三个循环,此时N的值为19。当进程A和进程B并发执行时可能会有如下两种执行次序,即进程A先执行一次循环,然后再进程B执行一次循环,此时打印的是正确值24,执行后N中的值为0。但若进程B先执行一次循环,然后再进程A执行一次循环,则打印的值是19,执行后N中的值是5。这是错误的,即发生了与时间有关的错误。用P、V操作进行管理,使进程A和B并发时不会出现与时间有关的错误的程序如下:
进程A
While (true) {
P(SemN);
temp = N
temp = temp + 5
N = temp;
V(SemN);
}
进程B
While (true) {
P(SemN);
temp = N
打印temp的值;
N=0;
V(SemN);
}
SemN 表示使用N变量的权限,初值为1.
百度到另一种解法:
进程A
Repeat
P(S);
N=N+5;
V(S);
Until false;
进程B
Repeat
P(S);
打印N的值;
N=0;
V(S);
Until false

S为互斥信号量,初值为1

11. 在请求分页系统中,某用户的编程空间为16个页面,每页1K,分配的内存空间为8K。假定某时刻该用户的页表如下图所示,试问:
(1)逻辑地址084B(H)对应的物理地址是多少?(用十六进制表示)
(2)逻辑地址5000(十进制)对应的物理地址是多少?(用十进制表示)
(3)当该用户进程欲访问24A0H单元时,会出现什么现象?

在这里插入图片描述
084BH = 0000 1000 0100 1011
0000 10 00 0100 1011
0001 00 00 0100 1011 0x104B

5000 = 0001 0011 1000 1000
0001 00 11 1000 1000
0011 00 11 1000 1000 13192

24A0 = 0010 0100 1010 0000
0010 01 00 1010 0000
页号为9,页表中不存在,发生缺页中断
在这里插入图片描述
(3)答: 24A0(H)的页号为9,而其页面当前不在内存,所以会发一个缺页中断,请求系统调页。
12. 设有一缓冲池P,P中含有20个可用缓冲区,一个输入进程将外部数据读入P,另有一个输出进程将P中数据取出并输出。若进程每次操作均以一个缓冲区为单位,试用信号量写出两个进程的同步算法,要求写出信号量的初值。
//生产者要天天干活
P(empty); //缓冲池有空位置且没人在用缓冲池时,就将生产出来的产品放入缓冲池中
P(buffer); //且没人在用缓冲池时,就将生产出来的产品放入缓冲池中
将数据写入到缓冲区中;
V(buffer);
V(full);

//消费者的嘴巴不会停止
P(full); //判断缓冲池中是否有产品可以拿来用
P(buffer); //判断有没有人在用缓冲池
从缓冲区中读取数据;//缓冲池中有产品且没人在用缓冲池时,就从缓冲池中拿走一个产品
V(buffer); //释放信号量mutex,表明现在没有人在用缓冲池了
V(empty); //释放信号量empty,表明已经将一个产品从放入缓冲池拿走了

Empty表示缓冲池中可用的缓冲区的数量,初值 20
Full 表示缓冲池中不可用的缓冲区的数量,初值 0
Buffer表示获得对缓冲池操作的权限,初值 1

13. 有一只最多能装2只兔子的铁笼子,猎人仅能向笼子中放入兔子(每次只能放入1只),若笼子是满的,则猎人必须等待;饭店老板仅能从笼子中取兔子(每次只能取出1只),若笼子是空的则他也必须等待。假设初始时笼子是空的。定义信号量并初始化,使用P、V操作模拟猎人和饭店老板进程之间的同步与互斥。
猎人: 生产者
P(empty);
P(S)
向笼子中放入兔子;
V(S);
V(full);

老板: 消费者
P(full);
P(S);
从笼子中取出兔子;
V(S)
V(empty);

各信号量的含义和初值
S, 操作笼子的权力 初值 1
Empty 笼子空余位置数目, 初值 2
Full 笼子中兔子的数目, 初值 0

14. 有两个程序,A程序按顺序使用CPU 10S,使用设备甲5S,使用CPU 5S,使用设备乙10S,最后使用CPU 10S。B程序按顺序使用设备甲10S,使用CPU 10S,使用设备乙5S,使用CPU 5S,使用设备乙10S。
(1)在顺序环境下先执行A程序再执行B程序,CPU的利用率是多少?提示:CPU利用率=CPU运行时间/程序运行时间。
(2)若A和B并发执行,CPU利用率是多少?

在这里插入图片描述
顺序执行时,总时间80S,CPU使用时间40S,CPU利用率= 40/80 = 50%
在这里插入图片描述
并发执行时,总时间45S,CPU使用时间40S, CPU利用率 = 40/45 = 88.9%
15. 设系统中只有一台打印机,有三个用户的程序在执行过程中都要使用打印机输出计算结果。设每个用户程序对应一个进程。问:这三个进程间有什么样的制约关系?使用P、V操作写出这些进程使用打印机的算法。
三个进程是互斥关系。

所有用户都按照下列步骤使用打印机
P(S)
使用打印机
V(S)

说明: S 表示使用打印机的权力, 初值为1

16. 某车站售票厅,任何时刻最多可容纳20名购票者进入,当售票厅中少于20名购票者时,则厅外的购票者可立即进入,否则需在外面等待。若把一个购票者看作一个进程,用PV操作管理这些并发进程时,应怎样定义和使用信号量,若售票厅开始为空,写出信号量的初值以及信号量各种取值的含义。
进入售票厅:
P(empty);
进入售票厅;

离开售票厅
V(empty);
Empty表示售票厅还有多少空余位置,初值为20.
17. 桌上有一只盘子,每次只能放一只水果,爸爸专向盘子中放苹果,妈妈专向盘子中放橘子,一个儿子专等吃盘子中的橘子,一个女儿专等吃盘子中的苹果。用P—V操作实现他们这间的同步机制(初始时,盘子为空)。
爸爸: 生产者,生产苹果
P(Empty);
向盘子中放苹果;
V(Apple);
妈妈: 生产者,生产橘子
P(Empty);
向盘子中放入橘子;
V(Orange);
儿子: 消费者,消费橘子
P(Orange);
去走盘子中的橘子;
V(Empty);
女儿: 消费者,消费苹果
P(Apple);
取走盘子中的苹果;
V(Empty);

Empty 表示盘子空余的数量,初值为1
Apple 表示盘子苹果的数量,初值为0
Orange 表示盘子橘子的数量,初值为0

18. 请用信号量实现下图所示的前趋关系。
在这里插入图片描述
S1
执行S1;
V(Sem1);

S2
P(Sem1);
V(Sem1);
执行S2;
V(Sem2);

S3
P(Sem1); V(Sem1);
执行S3;
V(Sem3);

S4
P(Sem2);
V(Sem2);
执行S4;
V(Sem4);

S5
P(Sem1); V(Sem1);
P(Sem3); V(Sem3);
P(Sem4); V(Sem4);
执行S5;
Sem1 表示S1被执行,初值为0;
Sem2 表示S2被执行,初值为0;
Sem3 表示S3被执行,初值为0;
Sem4 表示S4被执行,初值为0;

19. 下图描述了A,B,C,D共4个进程在某一时刻使用信号量sem的运行情况,其中粗线是进程进入临界区(即得到信号量),虚线是进程在等待信号量,细线是进程运行,没有使用信号量。 请回答下列问题:
1. 信号量sem的初值是多少,请说出理由。
2. 说出各个进程被阻塞的原因(虚线部分)。
3. 假设系统中只有这四个进程,在这10秒内,每个进程除了等待信号量,没有等待其他事件,如果系统共有3颗CPU,请计算下这10秒内系统的CPU使用率。

在这里插入图片描述
1.信号量Sem的初值为2,因为1-2秒时,A和B同时获得信号量,而C和D没有获得信号量。
A第5秒被阻塞的原因时信号量被B和C占用;
B在第7秒被阻塞的原因是信号量被A和C占用
C在第1秒被阻塞的原因是信号量被A和B占用
D在第1秒被阻塞的原因是信号量被A和B占用
D在第2秒被阻塞的原因是信号量被A和C占用
D在第5秒被阻塞的原因是信号量被B和C占用
在这里插入图片描述
总CPU时间 30,正常使用28,空闲2
CPU利用率 28/30 = 93.3%
20. 面包师有很多面包,由n个销售人员推销。每个顾客进店后取一个号,并且等待叫号,当一个销售人员空闲下来时,就叫下一个号。试设计一个销售人员和顾客同步算法。
顾客:
V(Full); //取号
P(Empty);
找销售人员服务;

销售人员:
P(Full);
服务顾客;
V(Empty);

Full 表示等待顾客数,初值为0
Empty 表示空闲销售人员的数目,初值为n

21. 某工厂有两个生产车间和一个装配车间,两个生产车间分别生产A、B两种零件,装配车间的任务是把A,B两种零件组装成产品。两个生产车间每生产一个零件后都要分别把它们送到装配车间的货架F1和F2上,F1放零件A,F2放零件B,F1和F2的容量均可以存放10个零件,装配工人每次从货架上取一个零件A和一个零件B后组装成产品。请用P、V操作进行正确的零件管理。
装配车间:
P(FullA);
取零件A;
V(EmptyA);
P(FullB);
取零件B;
V(EmptyB);

车间A:
P(EmptyA);
放零件A;
V(FullA);

车间B:
P(EmptyB);
放零件B;
V(FullB);

FullA 表示A零件的数据,初值0;
EmptyA 表示F1货架,空闲数据,初值10;
FullB 表示B零件的数据,初值0;
EmptyB 表示F2货架,空闲数据,初值10;

22. 有A、B两人通过信箱进行辩论,每个人都从自己的信箱中取得对方的问题。将答案和向对方提出的新问题组成一个邮件放入对方的邮箱中。 假设A的信箱最多放M个邮件,B的信箱最多放N个邮件。 初始时A的信箱中有X个邮件(0<x<M),B的信箱中有y个(0<y<N)。辩论者每取出一个邮件,邮件数减1. A和B两人的操作过程描述如下:
A{
while (TRUE) {
从A信箱取出一个邮件
回答问题并提出一个新问题
将新的邮件放入B的信箱
}
}
B{
while (TRUE) {
从B信箱取出一个邮件
回答问题并提出一个新问题
将新的邮件放入A的信箱
}
}
当信箱不为空时,辩论者才能从信箱中取出邮件,否则等待。 当信箱不满时,辩论者才能将新的邮件放入信箱,否则等待。 请添加必要的信号量和P、V(或者wait,signal)操作,以实现上述进程的同步。 要求写出完整的过程(类似上面的伪代码),并说明信号量的含义和初值。

A{
P(FullA);
从A信箱取出一个邮件;
V(EmptyA);
回答问题并提出一个新问题
P(EmptyB);
将新的邮件放入B的信箱
V(FullB);
}
B {
P(FullB);
从B信箱取出一个邮件;
V(EmptyB);
回答问题并提出一个新问题;
P(EmptyB);
将新的邮件放入A的信箱;
V(FullA);
}
FullA 表示A信箱的邮件数目 初值为x
EmptyA 表示A信箱的剩余空间数目 初值为 M-x
FullB 表示B信息的邮件数目 初值为y
EmptyB 表示B信息的剩余空间数目 初值为N-y
23. 将一组进程分为4类,如图所示。 各类进程之间采用优先级调度算法,而各类进程的内部采用时间片轮转调度算法。请简述P1,P2,P3,P4,P5,P6,P7,P8进程的调度过程。
在这里插入图片描述
答:由题意可知,各类进程之间采用优先级调度算法,而同类进程内部采用时间片轮转调度算法,因此系统首先对优先级为4的进程P1、P2、P3采用时间片轮转调度算法运行;
当P1、P2、P3均运行结束或没有可运行的进程(即P1、P2、P3都处于等待状态;或其中部分进程已运行结束,其余进程处于等待状态)时,则对优先级为3的进程P4、P5采用时间片轮转调度算法运行。在此期间,如果未结束的P1、P2、P3有一个转为就绪状态,则当前时间片用完后又回到优先级4进行调度。
类似的,当P1P5均运行结束或没有可运行进程(即P1P5都处于等待状态;或其中部分进程已经运行结束,其余进程处于等待状态)时,则对优先级为2的进程P6、P7、P8采用时间片轮转调度算法运行,一旦P1~P5中有一个转为就绪状态,则当前时间片用完后立即回到相应的优先级进行时间片轮转调度。
24. 某系统的空闲分区如表所示,采用可变式分区管理策略(动态分区管理策略 ),现有如下作业序列:96KB、20KB、200KB。若用首次适应算法和最佳适应算法来处理这些作业,则哪一种算法可满足该作业序列请求,为什么?
在这里插入图片描述
答:首次适应算法:将空闲分区表(空闲区链)中的空闲分区要按地址由低到高进行排序,然后从空闲分区表的第一个表目起查找该表,把最先能够满足要求的空闲区分配给作业,这种方法目的在于减少查找时间。该算法优先使用低址部分空闲区,在低址空间造成许多小的空闲区,在高地址空间保留大的空闲区。
最佳适应算法:将空闲分区表(空闲区链)中的空闲分区要按从小到大进行排序,自表头开始查找到第一个满足要求的自由分区分配。该算法保留大的空闲区,但造成许多小的空闲区。
采用首次适应算法时,96KB大小的作业进入4号空闲分区,20KB大小的作业进入1号空闲分区,这时空闲分区如下表所示。
在这里插入图片描述
此时,再无空闲分区可以满足200KB大小的作业,所以该作业序列请求无法满足。
采用最佳适应算法时,作业序列分别进入5、1、4号空闲分区,可以满足其请求。分配处理之后的空闲分区表见下表:
在这里插入图片描述
25. 页式存储管理,允许用户编程空间为32个页面(每个页面1KB),主存为16KB,如有一用户程序有10页长,且某一时刻该用户程序页表如下所示。如果分别遇到以下三个逻辑地址:0AC5H、1AC5H、3AC5H处的操作,试计算并说明存储管理系统如何处理。
在这里插入图片描述
答:页面大小为1KB,所以低10位为页内偏移地址;用户编程空间为32个页面,即逻辑地址高5位是虚页号;主存为16个页面,即物理地址高4位为物理块号。
逻辑地址0AC5H转换为二进制位000 1010 1100 0101,虚页号位2(00010),映射至物理块号位4,故系统访问物理地址12C5H(01 0010 1100 0101)。
逻辑地址1AC5H转换位二进制为(001 1010 1100 0101),虚页号为6(00110),不在页面映射表中,会产生缺页中断,系统进行缺页中断处理。
逻辑地址3AC5H转换位二进制为(011 1010 1100 0101),虚页号为14,但是该用户程序只有10页,故系统产生越界中断。

  • 18
    点赞
  • 150
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值