习题一
1. 什么是操作系统?它的主要功能是什么?
答:操作系统是用来管理计算机系统的软、硬件资源,合理地组织计算机的
工作流程,以方便用户使用的程序集合;
其主要功能有进程管理、存储器管理、设备管理和文件管理功能。
2. 什么是多道程序设计技术?多道程序设计技术的主要特点是什么?
答:多道程序设计技术是把多个程序同时放入内存,使它们共享系统中的资
源;
特点:(1)多道,即计算机内存中同时存放多道相互独立的程序;
(2)宏观上并行,是指同时进入系统的多道程序都处于运行过程中;
(3)微观上串行,是指在单处理机环境下,内存中的多道程序轮流占
有 CPU,交替执行。
3. 批处理系统是怎样的一种操作系统?它的特点是什么?
答:批处理操作系统是一种基本的操作系统类型。在该系统中,用户的作业
(包括程序、数据及程序的处理步骤)被成批的输入到计算机中,然后在操
作系统的控制下,用户的作业自动地执行;
特点是:资源利用率高、系统吞吐量大、平均周转时间长、无交互能力。
4. 什么是分时系统?什么是实时系统?试从交互性、及时性、独立性、多路性
和可靠性几个方面比较分时系统和实时系统。
答:分时系统:一个计算机和许多终端设备连接,每个用户可以通过终端向
计算机发出指令,请求完成某项工作,在这样的系统中,用户感觉不到其他
用户的存在,好像独占计算机一样。
实时系统:对外部输入的信息,实时系统能够在规定的时间内处理完毕并作
出反应。
比较:(1)交互性:实时系统具有交互性,但人与系统的交互,仅限于访
问系统中某些特定的专用服务程序。它不像分时系统那样向终端用户提供数
据处理、资源共享等服务。实时系统的交互性要求系统具有连续人机对话的
能力,也就是说,在交互的过程中要对用户得输入有一定的记忆和进一步的
推断的能力。
(2)及时性:实时系统对及时性的要求与分时系统类似,都以人们能够接
受的等待时间来确定。而及时系统则对及时性要求更高。
(3)独立性:实时系统与分时系统一样具有独立性。每个终端用户提出请
求时,是彼此独立的工作、互不干扰。
(4)多路性:实时系统与分时一样具有多路性。操作系统按分时原则为多
个终端用户提供服务,而对于实时系统,其多路性主要表现在经常对多路的
现场信息进行采集以及对多个对象或多个执行机构进行控制。
(5)可靠性:分时系统虽然也要求可靠性,但相比之下,实时系统则要求
系统高度可靠。
5. 实时系统分为哪两种类型?
答:实时控制系统、实时信息处理系统。
6.操作系统的主要特征是什么?
答:并发性、共享性、虚拟性、不确定性。
7.操作系统与用户的接口有几种?他们各自用在什么场合?
答:有两种:命令接口、程序接口;
命令接口:分为联机命令接口、脱机命令接口和图形用户界面接口,它是为
方便用户控制自己的作业。
程序接口:又称系统调用,是为用户在程序一级访问操作系统功能而设置的,
是用户程序取得操作系统服务的唯一途径,它由一组系统调用构成,每个系
统调用完成一个特定的功能。
8.“操作系统是控制硬件的软件”这一说法确切吗?为什么?
答:不正确,操作系统不仅仅在控制硬件,同时它还控制着计算机的软件。所
以说操作系统是控制硬件的软件是不正确的。
9.设内存中有三道程序,A,B,C,他们按 A→B→C 的先后次序执行,它们进行
“计算”和“I/O 操作”的时间如表 1-2 所示,假设三道程序使用相同的 I/O
设备。
表 1-2 三道程序的操作时间
程序
A
B
C
操作
计算
I/O操作
计算
20
30
10
30
50
20
10
20
10
(1) 试画出单道运行时三道程序的时间关系图,并计算完成三道程序要花多
少时间。
计算
I/O操作
A
B
B
C
C
A
B
C
20
60
50
90
170
160
200
190
140
总时间=20+30+10+30+50+20+10+20+10=200
(2) 试画出多道运行时三道程序的时间关系图,并计算完成三道程序要花多
长时间。
程序A
程序B
程序C
A
A
B
A
C
I/O操作
B
I/O操作
C
B
C
I/O操作
20
50
60
70
80 90
100
120
130
140
总时间=130
10.将下列左右两列词连接起来形成意义最恰当的 5 对。
DOS
OS/2
UNIX
LINUX
Windows NT
网络操作系统
自由软件
多任务
单任务
为开发操作系统而设计c语言
11.选择一个现代操作系统,查找和阅读相关的技术资料,写一篇该操作系统如
何运行内存管理、存储管理、设备管理和文件管理的文章。
习题二
1. 操作系统中为什么要引入进程的概念?为了实现并发进程之间的合作和协
调,以及保证系统的安全,操作系统在进程管理方面要做哪些工作?
答:(1)为了从变化的角度动态地分析研究可以并发执行的程序,真实地
反应系统的独立性、并发性、动态性和相互制约,操作系统中就不得不引入
“进程”的概念;
(2)为了防止操作系统及其关键的数据结构,受到用户程序有意或无意的
破坏,通常将处理机的执行状态分成核心态和用户态;对系统中的全部进程
实行有效地管理,其主要表现是对一个进程进行创建、撤销以及在某些进程
状态之间的转换控制,
2. 试描述当前正在运行的进程状态改变时,操作系统进行进程切换的步骤。
答:(1)就绪状态→运行状态。处于就绪状态的进程,具备了运行的条件,
但由于未能获得处理机,故没有运行。
(2)运行状态→就绪状态。正在运行的进程,由于规定的时间片用完而被
暂停执行,该进程就会从运行状态转变为就绪状态。
(3)运行状态→阻塞状态。处于运行状态的进程,除了因为时间片用完而
暂停执行外还有可能由于系统中的其他因素的影响而不能继续执行下去。
3. 现代操作系统一般都提供多任务的环境,试回答以下问题。
(1) 为支持多进程的并发执行,系统必须建立哪些关于进程的数据结构?
答:为支持进程的并发执行,系统必须建立“进程控制块(PCB)”,
PCB 的组织方式常用的是链接方式。
(2) 为支持进程的状态变迁,系统至少应该供哪些进程控制原语?
答:进程的阻塞与唤醒原语和进程的挂起与激活原语。
(3) 当进程的状态变迁时,相应的数据结构发生变化吗?
答:创建原语:建立进程的 PCB,并将进程投入就绪队列。;
撤销原语:删除进程的 PCB,并将进程在其队列中摘除;
阻塞原语:将进程 PCB 中进程的状态从运行状态改为阻塞状态,并将
进程投入阻塞队列;
唤醒原语:将进程 PCB 中进程的状态从阻塞状态改为就绪状态,并将
进程从则色队列摘下,投入到就绪队列中。
4. 什么是进程控制块?从进程管理、中断处理、进程通信、文件管理、设备
管理 及存储管理的角度设计进程控制块应该包含的内容。
答:(1)进程控制块是用来描述进程本身的特性、进程的状态、进程
的调度信息及对资源的占有情况等的一个数据结构;
(2)为了进程管理,进程控制块包括以下几方面。
a)
b)
c)
d)
进程的描述信息,包括进程标识符、进程名等。
进程的当前状况。
当前队列链接指针。
进程的家族关系。
为了中断处理,进程控制块的内容应该包括处理机状态信息和各种寄存
器的内容。
为了内存管理的需要,进程控制块的内容应该包括进程使用的信号量、
消息队列指针等。
为了设备管理,进程控制块的内容应该包括进程占有资源的情况。
5. 假设系统就绪队列中有 10 个进程,这 10 个进程轮换执行,每隔 300ms 轮
换一次,CPU 在进程切换时所花费的时间是 10ms,试问系统化在进程切换
上的开销占系统整个时间的比例是多少?
答:因为每隔 300ms 换一次进程,且每个进程切换时所花费的时间是
10ms,则系统化在进程切换上的开销占系统整个时间的比例是
10/(300+10)=3.2%
6. 试述线程的特点及其与进程之间的关系。
答:(1)特点:线程之间的通信要比进程之间的通信方便的多;同一进程
内的线程切换也因为线程的轻装而方便的多。同时线程也是被独立调度的分
配的;
(2)线程与进程的关系:线程和进程是两个密切相关的概念,一个进程至
少拥有一个线程,进程根据需要可以创建若干个线程。线程自己基本上不拥
有资源,只拥有少量必不可少的资源(线程控制块和堆栈)
7. 根据图 2-18,回答以下问题。
(1) 进程发生状态变迁 1、3、4、6、7 的原因。
答:1 表示操作系统把处于创建状态的进程移入就绪队列;3 表示进
程请求 I/O 或等待某事件;4 表示进程用行的时间片用完;6 表示 I/O
完成或事件完成;7 表示进程完成。
(2) 系统中常常由于某一进程的状态变迁引起另一进程也产生状态变迁,
这种变迁称为因果变迁。下述变迁是否为因果变迁:
3~2,4~5,7~2,3~6,是说明原因。
答:3→2 是因果变迁,当一个进程从运行态变为阻塞态时,此时 CPU 空闲,
系统首先到高优先级队列中选择一个进程。
4→5 是因果变迁,当一个进程运行完毕时,此时 CPU 空闲,系统首先到高
优先级队列中选择进程,但如果高优先级队列为空,则从低优先队列中选择一
个进程。
7→2 是因果变迁,当一个进程运行完毕时,CPU 空闲,系统首先到高优先
级队列中选择一个进程。
3→6 不是因果变迁。一个进程阻塞时由于自身的原因而发生的,和另一个
进程等待的时间到达没有因果关系。
(3) 根据此进程状态转换图,说明该系统 CPU 调度的策略和效果。
答:当进程调度时,首先从高优先级就绪队列选择一个进程,赋予它的时间
片为 100ms。如果高优先级就绪队列为空,则从低优先级就绪队列选择进程,
并且赋予该进程的时间片为 500ms。
这种策略一方面照顾了短进程,一个进程如果在 100ms 运行完毕它将退出
系统,更主要的是照顾了 I/O 量大的进程,进程因 I/O 进入阻塞队列,当 I/O
完成后它就进入了高优先级就绪队列,在高优先级就绪队列等待的进程总是优
于低优先级就绪队列的进程。而对于计算量较大的进程,它的计算如果在
100ms 的时间内不能完成,它将进入低优先级就绪队列,在这个队列的进程被
选中的机会要少,只有当高优先级就绪队列为空,才从低优先级就绪队列选择
进程,但对于计算量大的进程,系统给予的适当照顾时间片增大为 500ms。
8. 回答以下问题。
(1) 若系统中没有运行进程,是否一定没有就绪进程?为什么?
答:是,因为当 CPU 空闲时,系统就会在就绪队列里调度进程,只
有当就绪队列为空时,系统中才没有运行程序。
(2) 若系统中既没有运行进程,也没有就绪进程,系统中是否就没有阻塞
进程?解释。
答:不一定,当运行的程序都因为请求 I/O 或等待事件时而进入阻塞,
系统中就没有就绪进程。
(3) 如果系统采用优先级调度策略,运行的进程是否一定是系统中优先级
最高的进程?为什么?
答:不一定,若优先级高的进程进入阻塞状态时,而且优先级高的就
绪队列里没有等待的进程,这时就会调度优先级低的就绪队列的进程。
9. 假如有以下程序段,回答下面的问题。
S1: a=3-x;
S2: b=2*a;
S3: c=5+a;
(1) 并发程序执行的 Bernstein 条件是什么?
答:若 P1 与 P2R 并发执行,当且仅当 R(P1)∩W(P2)∪R(P2)∩W(P1)
∪W(P1)∩W(P2)={}时才满足。
(2) 试画图表示它们执行时的先后次序。
S1
S2
S3
(3) 利用 Bernstein 条件证明,S1、S2 和 S3 哪两个可以并发执行,哪两个不能。
答:R(s1)={x},W(s1)={a};R(s2)={a},W(s2)={b};R(s3)={a},W(s3)={c};
(1).R(s1)∩W(s2)∪R(s2)∩W(s1)∪W(s1)∩W(s2)={a},则 s1 与 s2 不能并发执行;
(2). R(s1)∩W(s3)∪R(s3)∩W(s1)∪W(s1)∩W(s3)={a},则 s1 与 s3 不能并发执行;
(3). R(s2)∩W(s3)∪R(s3)∩W(s2)∪W(s2)∩W(s3)={},则 s2 与 s3 可以并发执行。
习题三
1. 一下进程之间存在相互制约关系吗?若存在,是什么制约关系?为什么?
(1) 几个同学去图书馆借同一本书。
答:互斥关系;因为他们要借同一本书,不可能同时借到,所以互斥。
(2) 篮球比赛中两队同学争抢篮板球。
答:互斥关系;因为争抢同一个篮板,存在互斥关系。
(3) 果汁流水线生产中捣碎、消毒、灌装、装箱等各道工序。
答:同步关系;他们必须相互协作才能使进程圆满完成。
(4) 商品的入库出库。
答:同步关系;因为商品出库可以为入库提供空间。
(5) 工人做工与农民种粮。
答:没有制约关系。
2. 在操作系统中引入管程的目的是什么?条件变量的作用是什么?
答:用信号量可以实现进程的同步于互斥,但要设置许多信号量,使用大量
的 P、V 操作,而且还要仔细安排 P 操作的排列次序,否则将会出现错误的
结果或是死锁现象。为了解决这些问题引进了管程;
条件变量的作用是使进程不仅能被挂起,而且当条件满足且管程再次可用时,
可以恢复该进程并允许它在挂起点重新进入管程。
3. 说明 P、V 操作为什么要设计成原语。
答: 用信号量 S 表示共享资源,其初值为 1 表示有一个资源。设有两个进程
申请该资源,若其中一个进程先执行 P 操作。P 操作中的减 1 操作有 3 跳及
其指令组成:去 S 送寄存器 R;R-1 送 S。若 P 操作不用原语实现,在执行了
前述三条指令中的 2 条,即还未执行 R 送 S 时(此时 S 值仍为 1),进程被
剥夺 CPU,另一个进程执行也要执行 P 操作,执行后 S 的值为 0,导致信号
量的值错误。正确的结果是两个进程执行完 P 操作后,信号量 S 的值为-1,
进程阻塞。
4. 设有一个售票大厅,可容纳 200 人购票。如果厅内不足 200 人则允许进入,
超过则在厅外等候;售票员某时只能给一个购票者服务,购票者买完票后就
离开。试问:
(1) 购票者之间是同步关系还是互斥关系?
答:互斥关系。
(2) 用 P、V 操作描述购票者的工作过程。
semaphore empty=200;
semaphore mutex=1;
semaphore waiting=0;
void buy()
{ p(waiting);
p(mutex);
买票;
v(mutex);
v(empty);
}
void waiting()
{
p(empty);
等待;
waiting++;
}
5. 进程之间的关系如图 3-16 所示,试用 P、V 操作描述它们之间的同步。
A
S1
B
D
E
S3
S2
S4
C
F
S6
G
S5
semaphore A,B,C,D,E,F,G=0;
{S1,V(A),V(B)};
{P(A),S2,V(C)};
{P(B),S3,V(D),V(E)};
{P(D),S4,V(F)};
{P(E),S5,V(G)};
{P(C),P(F),P(G),S6};
6. 有 4 个进程 P1、P2、P3、P4 共享一个缓冲区,进程 P1 向缓冲区存入消息,
进程 P2、P3、P4 从缓冲区中取消息,要求发送者必须等三个进程都取过本
消息后才能发送下调消息。缓冲区内每次只能容纳一个消息,用 P、V 操作
描述四个进程存取消息的情况。
答:semaphore p1=0;semaphore p2,p3,p4=1;
semaphore cout=0;semaphore mutex=1;
void main()
{P(p2);P(p3);P(4);
V(cout);}
write p1()
{P(p1);P(metux);P(cout);
存入消息;
V(p1);V(metux);}
Read p2()
{ P(mutex);P(p1);
读消息;
V(p1);V(p2);V(metux);}
Read p3()
{ P(mutex);P(p1);
读消息;
V(p1);V(p3);V(metux);}
Read p4()
{ P(mutex);P(p1);
读消息;
V(p1);V(p4); V(metux);}
7. 分析生产者——消费者问题中多个 P 操作颠倒引起的后果。