第1章操作系统概述思考与练习题参考答案
1. 选择题
(1) C (2) D (3) C (4) C (5) B (6) C (7) B (8) C (9) B (10) B
(11) A
2. 填空题
(1) 硬件软件
(2) 存储管理设备管理
(3)软硬件资源
(4) 批处理操作系统分时操作系统实时操作系统
(5) 20ms 时间片轮转调度算法
3. 判断题
(1) ×(2) ×(3) √(4)×(5) ×(6). √(7) √(8)√
4. 问答题
(1) 简述操作系统的概念
答:操作系统是一组能控制和管理计算机系统的硬件和软件资源,合理地组织计算机工作流程并为用户使用计算机提供方便的程序和数据的集合。
(2) 什么是批处理系统为什么要引入批处理系统
答:批处理系统指用户的作业成批的处理,作业建立、过渡、完成都自动由系统成批完成。因为1958~1964年,晶体管时代,计算机速度、容量、外设品种和数量等方面和第一代计算机相比都有了很大发展,计算机速度有几十倍、上百倍的提高,故使手工操作的慢速度和计算机运算的高速度之间形成一对矛盾。只有设法去掉人工干预,实现作业自动过渡,这样就出现了成批处理。
(3) 什么叫多道程序试述多道程序涉及技术的基本思想及特征,为什么对作业进行多道批处理可以提高系统效率
答:多道程序设计技术是在计算机内存中同时存放几道相互独立的程序,使它们在管理程序控制下,相互穿插交替运行。当某道程序因某种原因不能继续运行下去时,管理程序就将另一道程序投入运行,这样使几道程序在系统内并行工作,可使中央处理机及外设尽量处于忙碌状态,从而大大提高计算机使用效率。在批处理系统中采用多道程序设计技术形成多道批处理系统,多个作业成批送入计算机,由作业调度程序自动选择作业运行,这样提高了系统效率。
(4) 何为分时系统简述其特点。
答:分时系统采用时间片轮转法,使一台计算机同时为多个终端服务。特点:
多路性。若干个终端连接到计算机上,系统按分时原则为每个用户服务。宏观上多用户同时工作,共享系统资源。微观上,每个用户作业轮流在CPU上运行。
独立性。各用户独立地使用一台终端工作,彼此互不干扰。用户感觉自己在独占使用计算机。
及时性。用户的请求能在较短时间内得到响应。分时系统的响应时间指用户发出终端命令到系统响应,做出应答所需要的时间。此时间需要在用户能接受的范围之内,通常为2至3秒。
交互性。在分时系统中,用户能与计算机进行对话,以交互的方式进行工作。用户可联机对文件进行编辑,对源程序进行编译、链接,对程序进行调试,运行程序等活动。
(5) 分时系统和实时系统有何不同
答:分时系统控制的主动权在计算机,计算机按一定时间间隔,以固定时间片或不固定时间片去轮流完成多个提交的任务,只是在用户反应相对较慢时,不感到机器“走开”。而实时系统控制的主动权在用户,用户规定什么时间要计算机干什么,计算机不能“走开”。
分时系统通用性强,交互性强,及时响应性要求一般(通常数量级为秒);实时系统往往是专用的,系统与应用很难分离,常常紧密结合在一起,实时系统并不强调资源利用率,而更关心及时响应性(通常数量级为毫秒或微秒)、可靠性等。
(6) 实现多道程序解决哪些问题
答:首先包括分时使用硬件的硬件设计技术: CPU 和通道分时使用内存、只读存储器和数据通道等;通道与通道分时使用CPU 、内存、通道的公用控制部分等;同一通道中的I/O 又分时使用内存、通道等。其次包括共享硬件和软件资源的软件设计技术:包括引入“进程”“线程”等技术。
(7) 设在内存中有三道程序A 、B 和C ,并按A 、B 、C 的优先次序运行,其在CPU 上运行时间以及I/O 时间分别为:
A :计算30ms ,I/O 40ms ,计算10ms
B :计算30ms ,I/O 50ms ,计算10ms
C :计算20ms ,I/O 40ms ,计算20ms
试画出按多道程序运行的时间关系图(调度程序的执行时间忽略不计),完成这三道程序共花多少时间比单道运行节省多少时间(假定运行环境为单CPU ,每个程序所用的I/O 设备相同,比如打印机)
答:三道程序共花180ms ,比单道(80+90+80)ms=250ms 节省了110ms 。 (8) 简述Winodws 操作系统的发展历史。(略) (9) 简述Linux 操作系统的发展历史。(略)
(10) 简述UNIX 系统操作系统的发展历史。(略)
第2章 处理器管理 思考与练习题参考答案
1. 选择题
(1) A (2) D (3)B (4) C (5)D (6) D (7) C (8) B (9) D (10) C
(11) D
(12)A (13)C (14) D (15) B
(16) D
2. 填空题
(1) 数据段 PCB
(2) 运行时间短 等待时间长
CPU
I/O
0 10 20 30 40 50 60 70 80 90 100 110 120 130 140 150 160 170 180 t/ms
图1-1 三道作业并发运行情况
(3) 并行并发。
(4) 资源分配调度
(5) 阻塞
(6) 共享存储区消息机制
(7) 阻塞
(8) 向前推进。
(9) 后备
(10) 可剥夺非剥夺
3. 判断题
(1) √(2) ×(3) √(4) ×(5) ×(6) ×(7) ×(8) ×
(9)√(10)√(11) ×(12) ×(13) ×(14) ×(15) ×
4. 问答题
(1) 简述进程和程序之间的区别和联系。
答:进程和程序是既有区别又有联系的两个概念。
1) 进程是动态的,程序是静态的。程序是一组有序的指令集合,是一个静态的概念;进程则是程序及其数据在计算机上的一次执行,是一个动态的集合。离开了程序,进程就失去了存在的意义,但同一程序在计算机上的每次运行将构成不同的进程。程序可看作是电影的胶片,进程可以看作电影院放电影的过程。
2) 一个进程可以执行多个程序,如同一个电影院的一场电影可放映多部影片。
3) 一个程序可被多个进程执行,如同多个影院同时利用一个电影的胶片放映同一部电影。
4) 程序可以长期保存,进程只能存在于一段时间。程序是永久存在的,而进程有从被创建到消亡的生命周期。
(2) 为什么将进程划分成运行、就绪和阻塞三个基本状态
答: 根据多道程序执行的特点,进程的运行是走走停停的。因此进程的初级状态应该是执行和等待状态。处于执行状态的进程占用处理机执行程序,处于等待状态的进程正在等待处理机或者等待其它某种事件的发生。但是,当处理机空闲时,并不是所有处于等待状态的进程都能放到处理机上执行,有的进程即使分配给它处理机,它也不能执行,因为它的执行的条件没有得到满足。因此,将等待状态的进程分成两部分,一部分是放在处理机上就能立即执行,这就是就绪的进程;另一部分是仍需等某种事件发生的进程,即使放在处理机上也不能执行的进程,这就是阻塞进程。
(3) 进程控制块PCB的作用是什么它主要包含哪些内容
答: 操作系统管理的进程是多种多样的,要对这些进程实施有效的管理,必须对进程进行抽象。为了便于系统控制和描述进程的活动,在操作系统核心为进程定义了一个进程控制块PCB。PCB用于描述进程的基本情况以及进程运行和变化的过程,它与进程一一对应。当系统创建进程时,为进程分配一个PCB;在进程运行过程中,系统通过PCB对进程实施管理和控制;进程结束时,系统将收回PCB。
PCB中的内容主要包括调度信息和现场信息两大部分。调度信息包括进程名、进程号、优先级、当前状态、资源信息、程序和数据的位置信息、隶属关系和各种队列指针信息等。现场信息主要包括程序状态字、时钟寄存器和界限寄存器等描述进程运行情况的信息。
(4) 简述创建进程的大致过程
解创建一个进程大体分以下几步:
1) 申请一个空白的PCB和唯一的进程标识号pid
2) 为新进程分配除CPU以外的资源,包括内存空间;
3) 初始化PCB中的数据项,包括标志信息、状态信息、控制信息等;
4) 将新进程的PCB插入系统的就绪队列。
(5) 为何引入线程线程与进程的关系是什么
答:在操作系统中引入进程的目的,是为了使多个程序并发执行,以改善资源利用率及提高系统的吞吐量;那么,在操作系统中再引入线程则是为了减少程序并发执行时所付出的时空开销,使操作系统具有更好的并发性。
线程具有许多传统进程所具有的特征,故又称为轻型进程(Light-Weight Process)或进程元;而把传统的进程称为重型进程(Heavy-Weight Process),它相当于只有一个线程的任务。在引入了线程的操作系统中,通常一个进程都有若干个线程,至少需要有一个线程。
(6) 何谓进程通信试列举几种进程通信方式。
答:进程之间的信息交换,就是进程通信。进程同步与互斥,就实现了进程之间交换信息,但由于交换的信息量少,可以看作是低级通信。并发执行的进程,有交换信息的各种需要,除同步与互斥外,还可采用其它的通信方式。介绍几种常用的通信方式:共享存储、消息传递、共享文件。
(7)进程的三个基本的转换如下图所示,图中1、2、3、4分别代表某种类型状态变迁,请分别回答:
1)什么事件引起各状态之间的变迁
2)系统中常常由于某一进程的状态变迁引起另一进程也产生状态变迁,试判断变迁3——1、2——1、3——2、4——1、3——4是否存在因果关系
答:
1) 引起各变迁的事件如下:
变迁1:正在执行的进程从处理机上退下,导致进程调度程序从就绪状态的进程中选取一个进程。
变迁2:正在执行的进程所分配的时间片用完,导致进程从处理机上退到就绪状态;或者在可抢占优先级的进程调度中,有更高有先级的进程进入就绪状态,导致正在执行的进程从执行状态退到就绪状态。
变迁3:进程需要等待事件的发生;
变迁4:进程所等待的某事件发生了(如I/O完成);
2) 可能发生的因果变迁
3——1:由于处于运行状态的进程转入阻塞状态,进程调度程序根据调度算法,又从就绪队列中选择一个进程投入运行;
2——1:由于处于运行状态的进程时间片用完,重新转入就绪状态,从而使进程调度程序又从就绪队列中选择一个进程投入运行;
3——2:此种变化不存在;
4——1:4的发生与1的发生没有必然关系;
3——4:3的发生和4的发生没有必然关系。
(8) 下表给出了4个作业J1、J2、J3、J4的提交时间、运行时间,试分别采用FCFS、SJF和
HRRF调度算法,求出在各种作业调度算法下作业的平均周转时间和平均带权周转时间。
表1 4个作业的提交时间和运行时间表
解:采用FCFS作业调度算法时,根据这4个作业提交作业的先后顺序依次运行,每个作业的周转时间和带权周转时间如表2所示。
表 2 FCFS调度算法性能表
作业的平均带权周转时间= (1+++)/4=
采用SJF作业调度算法时,每个作业的周转时间和带权周转时间如表3所示。
表3 SJF调度算法性能表
作业的平均周转时间= (2+4++)h/4=
作业的平均带权周转时间= (1+4++)/4=
采用HRRF作业调度算法时,每个作业的周转时间和带权周转时间如表4所示。当时间为10:00时,仅有作业J1,J1先运行。当作业J1结束后,此时系统中存在3个作业,计算这3个作业J2、J3、J4的响应比,分别为、、。作业J3的响应比高,作业J3运行。当作业J3结束后,系统中剩下2个作业,计算这2个作业J2、J4的响应比,分别为、。作业J2的响应比高,运行作业J2。作业J2运行结束后,运行作业J4。
表 4 HRRF调度算法性能表
作业的平均带权周转时间= (1+++)/4=
(9) 引起进程调度的主要因素主要有哪些
答:
1) 一个进程运行完毕;
2) 一个正在运行的进程被阻塞;
3) 在抢占式调度中,一个高优先级的进程被创建;
4) 在抢占式调度中,一个高优先级进程由阻塞被唤醒;
5) 在轮转式调度中,正在运行的进程运行完一个时间片。
第3章进程同步与死锁思考与练习题参考答案
1. 选择题
(1) C (2) A (3) C (4) B, A (5) B,D (6) A (7) A (8) B
(9) B (10) C (11) D (12) B (13) A (14) D (15) D (16) A
(17) B (18) A
2. 填空题
(1)环路等待条件。
(2)临界资源。
(3) P、V 等待
(4) 可用资源数目等待该资源的进程数。
(5) 等待
(6) P V
(7) 进程
(8) 安全不安全
(9) 信箱头信箱体
(10) 低级高级
3. 判断题
(1) √(2)×(3)√(4) √(5) √(6) ×(7) ×(8) √
(9) ×(10) ×(11) √(12) ×
4. 问答题与计算分析题
(1) 在多道程序系统中程序的执行失去了封闭性和再现性,因此多道程序的执行不需要这些特性,这种说法是否正确
答:这种说法不正确。可以想象,如果一个程序在多道程序系统中,在相同的输入的情况下,多次执行所得结果是不同的,有谁还敢使用这个程序因此,多道程序的执行也需要封闭性和再现性,只不过单道程序系统的封闭性和再现性是先天固有的,多道程序系统的程序执行要想获得封闭性和再现性,需通过程序员的精心设计才能得到。所使用的方法就是同步和互斥的方法。
(2)多个进程对信号量S进行了5次P操作,2次V操作后,现在信号量的值是-3,与信号量S相关的处于阻塞状态的进程有几个信号量的初值是多少
解:
因为S的当前值是-3,因此因为S处于阻塞状态的进程有3个;
因为每进行一次P(S)操作,S的值都减1,每执行1次V操作S的值加1,故信号量的初值为-3+5-2=0;
(3) 设公共汽车上,司机和售票员的活动分别为:司机的活动为启动车辆,正常行车,
到站停车;售票员的活动为关车门,售票,开车门。试问:在汽车不断地到站、停车、行驶过程中,司机和售票员的活动是同步关系还是互斥关系并用信号量和P、V操作实现他们间的协调操作。
解: 在这个问题中,司机与售票员间是并行操作的,司机和售票员各自的操作是顺序进行的。因此司机是一个进程,售票员是一个进程,它们之间是合作关系,即同步关系。
根据一般常识,司机和售票员在车上的操作规则如下:
售票员操作的规则是只有司机停车后,售票员才能开门让乘客上下车;
司机操作的规则是只有售票员关门后,司机才能启动开始行驶汽车。
根据同步规则以及操作流程确定信号量的个数是2个,S1和S2。
S1的含义是否关门,其初值为0,表示开门,其值若为1表示关门;
S2的含义是否停车,其初值为1,表示停车,其值若为0表示开车。
司机在的操作:在开车前看是否关门若没关则等待,这是一个P(S1)操作;若门关,则开车。到达一个站点,则停车,这是一个V (S2) 操作;
售票员的操作:看是否停车若没停则等待,这是一个P (S2) 操作;若停则开门,这是一个V(S1) 操作。
司机与售票员的协调操作描述如下:
int S1=0;
int S2=1;
main()
{
cobegin
driver();
busman();
coend
}
driver()
{
while (1)
{
P(S1);
启动车辆;
正常行车;
到站停车;
V(S2);
}
}
busserver ()
{
while (1)
{
关车门;
V(S1);
售票;
P(S2);
开车门;
上下乘客;
}
}
(4) 在OS中引入管程的目的是什么
答:在OS中引入管程的目的是为了更简便、更可靠地解决进程之间的同步、互斥问题。
在未引入管程之间,进程间的同步、互斥问题是由程序员处理的。例如,在临界区的前后插入P、V操作。但是,由程序员处理同步、互斥问题有可能引入种种人为的错误。管程主要是管理对共享数据的操作和使用,即把对共享数据互斥使用的控制这一任务从程序员身上,交由编译程序去处理,这样既方便了编程,又不会产生人为的同步、互斥上的错误。
(5) 一售票厅只能容纳300人,当少于300人时,可以进入;否则,需在外等候。若将每一个购票者作为一个进程,请用P、V操作编程,并写出信号量的初值。
解:
信号量S的初值为300;
int S=300
main()
{
P1( );
P2( );
……
Pn( );
}
P1()
{
P(S);
进入售票厅;
购票;
退出售票厅;
V(S);
}
……
Pn( )
{
P(S);
进入售票厅;
购票;
退出售票厅;
V(S);
}
(6) 设A 、B 为两个并发进程,它们共享一个临界资源,其执行临界区的算法框图如下图所示。试判断该算法是否有错请说明理由。如果有错,请改正。设S1、S2的初值为0,CSA 、CSB 为临界区。
解:该算法有错。
若A 进程永不要求访问临界资源,则不会执行V(S1),意味着B 进程的申请永远得不到操作临界资源的机会;同理,若B 进程不要求访问临界资源,则不会执行V(S2),意味着A 进程下次也得不到操作临界资源的机会。所以问题在于本应进行互斥控制而使用的却是同步控制。实现改正如下:
设置信号mutex ,初值为1;
(7) 消息缓冲通信机制有什么好处试述消息缓冲通信的过程。
解 消息缓冲通信机制不仅能较好地解决进程间的同步互斥问题,还能交换大量信息,是理想的进程通信工具,而且操作系统隐藏了进程通信的实现细节,即通信过程对用户是透明的,这样就大大地简化了通信程序编制上的复杂性。
消息缓冲通信的过程如下:
当某个进程需要向另一个进程发送消息时,便向系统申请一个消息缓冲区,并把要发送的数据送到消息缓冲区,然后把该消息缓冲区插入到接受进程的消息队列中。接受进程在接受消息时,只要从本进程的消息队列中摘下该消息缓冲区,即可从中取下所需的信息,然后把该消息缓冲区交还给系统。
(8) 桌上有一空盘,只允许存放一个水果。爸爸可向盘中放苹果,也可向盘中放桔子。儿子专等吃盘中的桔子,女儿专等吃盘中的苹果。规定当盘中空时一次只能放一只水果供吃者取用,请用P 、V 原语实现爸爸、儿子、女儿三个并发进程的同步。
解 在本题中,应设置三个信号量S 、So 、Sa ,信号量S 表示盘子是否为空,其初值为1;
A 进程
P(muyex) CSA V(mutex) B 进程
P(mutex)
CSB
V(mutex)
第(6)题改正图
A 进程
CSA V(S1) P(S2) B 进程
P(S1)
CSB
V(S2)
图3-11 第(6)题图
信号量So表示盘中是否有桔子,其初值为0;信号量Sa表示盘中是否有苹果,其初值为0。同步描述如下:
int S=1;
int Sa=0;
int So=0;
main( )
{
cobegin
father();
son();
daughter();
coend
}
father()
{
while(1)
{
P(S );
将水果放入盘中;
if (放入的是桔子)V(So);
else V(Sa);
}
}
son( )
{
while(1)
{
P(So);
从盘中取出桔子;
V(S);
吃桔子;
}
}
daughter( )
{
while(1)
{
P(Sa);
从盘中取出苹果;
V(S);
吃苹果;
}
}
(9) 按序分配是防止死锁的一种策略。什么是按序分配为什么按序分配可以防止死锁
解
按序分配是适应于动态分配的一种分配方法。为了避免产生死锁,系统将所有资源进行编号,并规定进程请求资源时,严格按照设备编号的大小,比如由小到大的顺序进程申请。如果某进程第n号资源没有获得,则进程不能请求第j(j>n)号资源。(系统也可以规定由大到小的请求次序。)
因为按序分配可以破坏环路等待条件,因此可以防止死锁。
(10) 有四个进程(P1,P2,P3和P4)和三类资源(R1,R2和R3)在T0时刻的资源分配情况如表3-9所示,(1)检查此刻的系统状态是否安全。(2)若在T0时刻之后,进程P3发出资源请求(1,0,1),即P3申请一个单位的R1和一个单位的R3,系统能否将资源分配给P3呢
表3-9 T0时刻的资源分配表
解:(1)从表1分析可知,可用资源数能满足进程P2,当P2运行结束后,释放它所占有的资源,使可用资源数目变为(6,2,3)。此刻,可用资源可满足其他任一进程,若将可用资源分配给进程P1,P1结束后,可用资源数变为(7,2,3)。再将可用资源分配给进程P3,P3结束后,可用资源数变为(9,3,4)。最后将可用资源分配给进程P4,P4结束后,可用资源数变为(9,3,6)。因此,系统在T0时刻是安全的。
(2)由于P3请求资源数(1,0,1)小于可用资源数(1,1,2),因此现有资源能满足P3的要求。系统先假定为P3分配资源,则可用资源数变为(0,1,1)。修改相关数据,如表2 所示。
表P3申请资源后的资源分配表
因此,系统不能为P3分配资源。
(11) 利用管程解决生产者与消费者问题。
解:
下面以Hansen方法解决生产者和消费者问题。
monitor boundbuffer /* 定义管程,其名称为boundbuffer */
{ c har buffer[N];/* 缓冲区有N个空间*/
int nextin,nextout;/* 缓冲区指针,将缓冲区的N个空间看作环形*/
int count;/* 产品的数目*/
condition notfull,notempty;/* 同步条件变量*/
void append(char *x) /* 管程中的过程*/
{ if (count==N) cwait(notfull);/* 缓冲区满,等待缓冲区空的信号*/
buffer[nextin]=*x;/* 将产品放入缓冲区中*/
nextin=(nextin+1) % N;/* 调整入队指针*/
count++;/* 产品个数加1 */
csignal(notempty);/* 向消费者进程发信号,有产品可供消费*/ }
void take(char * x)
{ if (count==0) then cwait(notempty);/* 没有产品,需要等待*/
*x=buffer[nextout];/* 取产品*/
nextout=(nextout+1) % N;/* 修改队尾指针*/
count--;/* 产品个数减1 */
csignal(notfull);/* 向生产者进程发信号,有空闲区了*/ }
monitor_main( ) /* 管程初始化程序*/
{ nextin=0;nextout=0;count=0;
}
} /* 管程定义结束*/
void producer(int i) /* 生产者进程*/
{ c har x;
while(1) {
produce(x);/* 生产产品*/
append(&x);/* 放入缓冲区*/
}
}
void consumer(int i)
{ c har x;
while (1) {
take(&x);/* 取产品*/
consume(x);/* 消费产品*/
}
}
main( ) /* 主程序*/
{ cobegin
Producer(1);…;producer(M);/* M个生产者*/
Consumer(1);…;consumer(K);/* K个消费者*/
coend
}
第4章存储管理思考与练习题参考答案
1. 选择题
(1) A
(2) A
(3) D
(4) B
(5) C
(6) A
(7) A
(8) A
(9) C
(10) C
2. 填空题
(1) 地址重定位(或:地址映射)
(2) 静态重定位、动态重定位
(3) 解决在主存容量较小的存储空间中运行较大程序的矛盾(或:为了扩充内存)
(4) 存储容量扩充的存储系统
(5) 页面置换
(6) 缺页次数
(7) 程序执行之前,程序执行过程中
(8) 内部碎片,外部碎片
(9) 时间局部性、空间局部性
(10) 段表,页表
3. 问答题
(11)算法:FIFO, LRU, OPT
块数3:9, 10, 7
块数4: 10, 8, 6
第5章设备管理思考与练习题参考答案
1. 选择题
(1) A
(2) C
(3) A
(4) C
(5) B
(6) D
(7) A
(8) C
(9) D
(10) A
2. 填空题
(1) 字符设备、块设备
(2) 硬件缓冲、软件缓冲
(3) 管理输入输出操作
(4) 静态分配
(5) 虚拟设备
(6) SPOOLing
(7) 块
(8) 设备控制表、控制器控制表
(9) 通道命令字
(10) 字符设备、块设备、网络设备
3. 问答题
(15) FCFS:565
SSTF:162
SCAN:125
C-SCAN:169
第6章文件管理思考与练习题参考答案
1. 选择题
(1) A
(2) B
(3) D
(4) D
(5) B
(6) A
(7) D
(8) A
(9) A
(10) D
2. 填空题
(1) 创建
(2) 流式文件、记录式文件
(3) 主键
(4) 链接结构(串联结构)
(5) 可变分区存储管理方法
(6) 流式文件(无结构文件)
(7) 成组链接法
(8) 相对路径
(9) 主控文件表MFT
(10) 虚拟文件系统VFS
2. 问答题
(13) 答:1569=512×3+33
要访问字节的逻辑记录号为3,对应的物理磁盘块号为80
故应访问第80号磁盘块
(15) 解:扇区总数:10*100*16=16000
位示图的位数:16000/8=2000字节
则位示图需要占2000字节的空间