计算机操作系统第三版汤小丹第1章.docx
《计算机操作系统第三版汤小丹第1章.docx》由会员分享,可在线阅读,更多相关《计算机操作系统第三版汤小丹第1章.docx(39页珍藏版)》请在冰豆网上搜索。
计算机操作系统第三版汤小丹第1章
注意:
1)“本章要点”部分,用红字标注的不是期末考试出题范围。
2)“习题部分”用蓝字标注的是重点习题,期末考试50%的题目是这些习题的原题。
红字标注的习题期末考试不考,仅供考研的同学参考。
3)大部分习题答案只给出要点,同学们可以自行适当补充,但一定要简明扼要。
4)如“本章要点”部分用红字标注的非考试内容,在“习题”部分有相关的重点习题,则对该部分内容只需做该习题即可。
----------------------------------------------------------------
第一章
本章概略叙述了操作系统的历史、功能、体系结构,属于常识性的知识。
本章不指定要点,只需完成以下习题即可。
教材习题(P33)
1.设计现代OS的主要目标是什么?
答:
(P1-2)方便性,有效性,可扩充性和开放性.
2.OS的作用可表现为哪几个方面?
答:
P2-3
a.OS作为用户与计算机硬件系统之间的接口(用户观点);
b.OS作为计算机系统资源的管理者(设计者观点);
c.OS作为扩充机器.(虚拟机观点)
3.为什么说OS实现了对计算机资源的抽象?
答:
P3。
抽象,可以理解为“简单明了的通用性”。
OS隐藏了多变的、琐碎硬件的细节,为用户提供了简单的、基本不随硬件变化而变化的操作方式。
4.试说明推动多道批处理系统形成和发展的主要动力是什么?
答:
P7-8。
提高计算机CPU、内存资源利用率和系统吞吐量的需要。
5.何谓脱机I/O和联机I/O?
答:
P6。
a.脱机(Off-Line)I/O是将用户程序和数据在一台外围机的控制下进行I/O,I/O时可以不连接主机。
b.若这种I/O在主机控制下进行则称之为联机I/O。
c.教材第5章还介绍了一种假脱机技术----SPOOLING,是模拟脱机的虚拟设备技术,主要用于虚拟打印机。
6.试说明推动分时系统形成和发展的主要动力是什么?
答:
P9-P11。
计算机最早主要用于科学计算,用于事务处理后(最早用于火车售票),用户需要人机交互和即时响应性,于是出现了分时系统。
可以看到需求是技术的推动力。
7.实现分时系统的关键问题是什么?
应如何解决?
答:
P11-12。
a.关键问题:
及时接收,及时处理;
b.对于及时接收,只需在系统中设置一多路卡,多路卡作用是使主机能同时接收用户从各个终端上输入的数据;对于及时处理,应使所有的用户进程都进入内存,在一个的时间段内,能使每个就程都轮换运行一次.
8为什么要引入实时操作系统?
答:
P11-12。
因为工业控制、国防、航空航天等很多领域存在实时信息处理领域的需要.
9什么是硬实时和软实时任务?
请举例说明。
答:
P12。
硬实时对任务的截止时间有严格要求,超过截止时间任务即算失败,比如雷达、导弹控制系统。
软实时对任务的截止时间要求较宽松,比如在线视频播放。
一般来说,通用操作系统(Windows,linux,UNIT等)不支持硬实时,只支持软实时,有些嵌入式操作系统可以支持硬实时。
10.在8位和16位(PC)微机中,占据统治地位的是什么操作系统?
答:
CP/M,MSDOS等。
这两种操作系统是单用户、单任务的,主要用来管理文件和磁盘,现已成历史。
11.试列出Windows的5个主要版本,并分别说明较其前一版本有何改进。
答:
有兴趣的同学可以上网查。
Windows有几个历程碑:
Windows3.X,非抢占式多任务,GUI,单用户。
Windows95/98,抢占式多任务,GUI,单用户。
WindowsNT,是微软第一个服务器版OS,后来发展成WindowsServer系列。
WindowsXP,全面支持互联网、娱乐、单用户
。
。
。
。
。
。
12.试从交互性、及时性、可靠性方面,将分时系统及实时系统进行比较。
答:
从对时间的要求看,分时系统实际上也是个软实时系统(定时切换),所以在及时性、可靠性方面与软实时差不多,但及时性肯定不如硬实时,对可靠性的要求也不如硬实时高(但硬实时对可靠性要求太高,不易满足)。
另外,一般来说,分时系统的交互性要好于实时系统,因为分时系统就是为了交互的需求而出现的。
13OS具有哪几大特征?
它的最基本特征是什么?
答:
P14-18。
a.并发(Concurrence),共享(Sharing),虚拟(Virtual),异步性(Asynchronism).
b.其中最基本特征是并发和共享.
14处理机管理具有哪些功能?
它们的主要任务是什么?
15内存管理有哪些主要功能?
它们的主要任务是什么?
16设备管理有哪些主要功能?
其主要任务是什么?
17文件管理有哪些主要功能?
其主要任务是什么?
这4道题虽然不是重点,但同学们还应该做一下,对操作系统“四大子系统”的功能有个整体的了解。
18是什么原因使(多道)操作系统具有异步性特征?
答:
P17-18,及P36-37都解答了这个问题。
这个问题较重要,说明了单道程序和多道程序运行的差别。
a.多道程序执行结果可能是不确定的(比如说对共享变量的访问),即程序是不可再现的。
解决这个问题主要靠进程的互斥。
b.多道程序环境下,虽然任一个程序都有确定的运行顺序(有明确的前驱---后继),但多个程序间的执行顺序以及完成每道程序所需的时间都是不确定的,这取决于CPU的调度策略、进程间的同步关系(比如生产者消费者问题)等因素,这些因素在单道程序环境下都不存在。
解决这个问题主要靠进程同步。
19-24题:
这几道题的答案都在1.5小节“OS结构设计”。
这一小节讲了操作系统宏观的体系结构,这些知识也适合于一般的复杂软件。
但教材的叙述有明显的问题:
没有把操作系统的“内核”结构,与操作系统的“整体(内核+外围)”分开讲。
操作系统的“内核”结构只有两种:
微内核与结构化分层结构。
面向对象、客户服务器模式等不适合于OS内核。
补充习题
1从程序员的角度,了解高级语言库(函数库、类库)、系统调用库(systemcall)、系统服务(systemservice)、OS核心之间的关系。
答:
这个问题是比较重要的,我在课堂上反复讲过。
1)现代的通用操作系统,一般是不允许程序员接近其核心的。
程序员怎样使用OS的功能呢?
2)核心提供一组系统服务(systemservice),系统服务工作在系统态,一些指令时受保护的(特权指令),不允许程序员直接使用。
3)OS提供一组系统调用库(systemcall),一般是C语言函数的形式,比如WIN32API。
程序员可以通过调用这些库函数,这些库函数再调用系统服务(systemservice),把结果返回给程序员。
需要注意的是:
系统调用库工作在用户态,系统服务工作在内核态,两者调用—返回时,OS要进行状态切换。
4)系统调用库(systemcall)是程序员所能直接访问的OS最底层了,大多数程序员是通过高级语言库(函数库、类库)去间接使用系统调用库的,这样更简单一些,但很显然效率不够好。
5)系统调用库的使用相当繁杂,因此程序员可以使用C/C++、JAVA等高级语言里函数库、类库中的一部分函数或类(主要是与I/O有关的函数或类)调用操作系统的功能,当程序员调用这些函数或类后,系统(高级语言运行环境或操作系统)将其转换为系统调用—>系统服务,一层层的调用OS内核功能,然后再一层层返回。
2从用户角度,了解用户命令、系统服务(systemservice)、OS核心之间的关系。
答:
用户命令可分为字符命令和GUI命令2种,无论发出何种命令,都被OS外围的一个“命令解释程序(比如Windows的,UNIT/LINUX的SHELL)程序”截获,变换成相应的系统服务(systemservice)去调用OS的核心,然后返回。
用户命令是不能直接调用OS核心的。
3.怎样看待操作系统的开销?
答:
OS为了管理硬件等资源,必需付出必要的“管理成本”—开销,比如进程调度。
有时用纯软件方案“成本”太高,不得不加硬件,比如分页内存、虚拟内存、一些CACHE技术等等。
当软件和硬件“成本”都太高时,不得不放弃一些好的方法,比如银行家算法。
操作系统内核程序本身也是进程,本身就是开销。
4有人说某操作系统是多用户多任务的,这是什么意思?
答:
多用户代表多个用户可同时登录使用,分时系统(UNIX)就是典型的多用户操作系统。
多任务是多道程序(或多进程)并发的。
5Windows有一个终端仿真程序,可以将本机仿真成主机终端登录远程主机,这个程序的名字叫什么?
答:
telnet
6有人说设计PC机的单用户操作系统,CPU的利用率不重要,怎么理解此观点?
答:
多道程序设计可提高CPU的利用率,但在PC机中操作系统中,提高CPU利用率只是手段而不是目地,单用户操作系统CPU调度的主要的目地是方便用户同时运行多个任务,及快速响应用户请求。
7为什么通用操作系统一般不支持硬实时?
答:
通用操作系统支持的应用种类太多,内部构造太复杂。
比如CPU调度,要考虑公平性因素,为各类进程服务,很难以最优先的次序满足硬实时要求。
在中断响应机制、进程上下文切换等操作中,时间开销也是无法准确预测的,不能满足硬实时要求。
通用操作系统一般为分层设计,这降低了效率,也不能满足硬实时要求。
注意:
1)“本章要点”部分,用红字标注的不是期末考试出题范围。
2)“习题部分”用蓝字标注的是重点习题,期末考试50%的题目是这些习题的原题。
红字标注的习题期末考试不考,仅供考研的同学参考。
3)大部分习题答案只给出要点,同学们可以自行适当补充,但一定要简明扼要。
4)如“本章要点”部分用红字标注的非考试内容,在“习题”部分有相关的重点习题,则对该部分内容只需做该习题即可。
------------------------------------------------------------
第二章要点
这一章和第3章是本课程最重要的两章。
2.1进程的基本概念
本小节重点内容是进程的概念、进程的三种状态及转换(围绕P38图2-5理解)、进程控制块FCB的概念及作用、进程就绪队列和阻塞(等待)队列的概念。
其它内容作一般性的了解即可。
2.2进程控制
掌握原语的概念。
其它内容作一般性的了解即可。
2.3进程同步
这一小节是至关重要的,也是相当难的。
(1)P47-50,临界资源问题、临界区的概念、同步机制应遵循的规则。
(2)P50,整型信号量原语的含义,及其缺点。
(3)P51,记录型信号量原语的含义,特点,及其优点(与整形信号量对比)。
(4)P52-53AND型信号量和信号量集,一般性了解。
(5)P532.3.3信号量的应用,一般性了解。
(6)P55管程,一般性了解。
2.4经典进程的同步问题
熟练掌握用记录型信号量解生产者—消费者、哲学家进餐、读者--写者问题。
其它解法(AND信号量、信号量集、管程等)可以不看。
2.5进程通信:
一般性了解。
2.6线程
概念性的掌握什么是线程、线程与进程主要的异同、线程的状态、内核线程、用户线程。
对于软件班和数学班的同学,上述概念将结合实验考核,二学历班的同学无此要求。
教材习题
1什么是前驱图?
为什么要引入前驱图?
答:
P35。
前驱图是一个有向无循环图,用于描述进程之间执行的前后关系。
引入前驱图可以比较直观的描述多道程序进程之间的不确定(异步)关系。
2试画出下面四条语句的前驱图:
S1:
a=x+y;S2:
b=z+1;S3:
c=a-b;S4:
w=c+1
答:
参考P36图2-4。
根据变量赋值的顺序,有(S1,S2)->S3->S4
3.程序并发执行为什么会产生间断性特征?
答:
P36。
因为程序在并发执行过程中存在相互制约性(同步要求),另外进程时而要求使用CPU、时而I/O也会造成进程间断。
4.程序并发执行为何会失去封闭性和可再现性?
答:
P37。
多个进程共享系统中的各种共享资源(可以表示为共享变量或共享内存),一方面资源状态可由多个进程来改变,另一方面处置不当可能引起共享变量出错(需要互斥来解决),即存在资源共享性使程序失去封闭性;而失去了封闭性导致程序失去可再现性。
5.在操作系统中为什么要引入进程概念?
它会产生什么样的影响?
a.为了使程序在多道程序环境下能并发执行,并能对并发执行的程序加以描述,而引入了进程概念。
b.影响:
OS通过管理进程,使程序的并发执行得以实行.
6.试从动态性,并发性和独立性上比较进程和程序?
a动态性是进程最基本的特性,程序是静态实体;
b并发性是进程的重要特征,程序是不能并发执行的.
c独立性是指进程实体是一个能独立运行的基本单位,同时也是系统中独立获得资源和独立调度的基本单位.而对于未建立任何进程的程序,都不能作为一个独立的单位参加运行.
7.试说明PCB的作用?
为什么说PCB是进程存在的唯一标志?
答:
P41
a.PCB是进程实体的一部分(进程实体包括PCB、程序代码、数据),是操作系统中最重要的记录型数据结构,PCB中记录了操作系统所需的用于描述进程情况及控制进程运行所需的全部信息.
b.在进程的整个生命周期中,系统总是通过其PCB对进程进行控制,系统是根据进程的PCB而感知到该进程的存在的,所以说,PCB是进程存在的唯一标志.
8.试说明进程在三个状态之间转换的典型原因
答:
结合P38图2.5说明。
主要原因是请求I/O和I/O完成、CPU调度。
9.为什么要引入挂起状态?
该状态具有哪些性质?
答:
P39。
挂起是进程在就绪队列上等待,进程挂起时不接受CPU调度。
a.引入挂起状态是由于5种需要:
终端用户的需要,父进程的需要,操作系统的需要,对换的需要和负荷调节的需要.
b.处于挂起状态的进程虽在就绪队列中,但不能接收处理机调度。
10在进行进程切换时,所要保存的处理机状态信息主要有哪些?
答:
P42第一段。
11试说明引起进程创建的主要事件.
12试说明引起进程撤消的主要事件.
答:
P44----45。
13在创建一个进程时,需完成的主要工作是什么?
答:
P44
操作系统发现请求创建新进程事件后;
1)申请空白PCB;
2)为新进程分配资源;
3)初始化进程控制块;
4)将新进程插入就绪队列.
14在撤消一个进程时,需完成的主要工作是什么?
答:
P45“2进程的终止过程”
15试说明引起进程阻塞或被唤醒的主要事件是什么?
答:
P46
16进程在运行过程中存在哪两种形式的制约?
试举例说明之
答:
P48第1-2段。
1)直接制约:
进程共享独占式资源的互斥制约(比如互斥使用打印机);
2)间接制约:
进程之间存在合作关系带来的同步制约(比如生产者消费者问题)
3)互斥也可以看作是一种特殊的同步。
补充习题:
什么是临界资源和临界区?
a.一次仅允许一个进程使用的资源成为临界资源,这种资源可以用共享变量代表,这种资源必须是互斥使用的。
b.在每个进程中,访问临界资源的那段程序称为临界区。
17.为什么进程在进入临界区之前,应先执行"进入区"代码,在退出临界区后又执行"退出区"代码?
答:
P50。
为了实现多个进程对临界资源的互斥访问,必须在临界区前面增加一段用于检查欲访问的临界资源是否正被访问的代码,如果未被访问,该进程便可进入临界区对资源进行访问,并设置正被访问标志,如果正被访问,则本进程不能进入临界区,实现这一功能的代码成为"进入区"代码;在退出临界区后,必须执行"退出区"代码,用于恢复未被访问标志。
使用信号量,则"进入区"代码为P(S),“退出区”代码为V(S),S初值为1
18同步机构应遵循哪些基本准则?
为什么?
答:
P50
a.空闲让进.
b.忙则等待.
c.有限等待.
d.让权等待.
上述准则适合于进程的同步和互斥。
记录型信号量实现了上述原则。
19试从物理概念上说明记录型信号量wait和signal
答:
P51。
Wait操作又叫P操作,signal操作又叫V操作。
20.你认为整型信号量机制和记录型信号量机制,是否完全遵循了同步机构的四条准则?
答:
P50-51。
a.在整型信号量机制中,未遵循"让权等待"的准则,存在“忙等”现象。
b.记录型信号量机制完全遵循了同步机构的四条准则。
21如何利用信号量机制来实现多个进程对临界资源的互斥访问?
并举例说明之。
答:
P50的伪代码
Repeat
Entrysection
Criticalsection//对共享资源(临界资源)的访问
Exitsection
Remaindersection//不访问共享资源的其他代码
Untilfalse
说明了多个进程对临界资源的互斥访问的解决思路,具体的,可设一记录型信号量S,初值为1,用P(S)替代Entrysection,V(S)替代Exitsection
在教材生产者消费者和读者写者的例子中都能看到上述用法。
22试写出相应的程序来描述图2-17所示的前驱图(图略)
答:
参考P54-55“2利用信号量实现前驱关系”(考研的同学应把这部分内容看一下)。
这也是信号量对进程同步的一种用法,信号量初值为0。
23.在生产者-消费者问题中,如果缺少了signal(full)或signal(empty),对执行结果会有何影响?
答:
缓冲区满后,生产者进程被阻塞(进入关于信号量empty的等待队列),由于消费者取走产品后不执行signal(empty),被阻塞的生产者进程继续被阻塞,即便缓冲区有空位也不能生产。
缓冲区空后,消费者进程被阻塞(进入关于信号量full的等待队列),由于生产者生产后不执行signal(full),被阻塞的消费者进程继续被阻塞,即便缓冲区有产品也不能消费。
24.在生产者-消费者问题中,如果将两个wait操作即wait(full)和wait(mutex)互换位置;或者是将signal(mutex)与signal(full)互换位置结果会如何?
答:
首先,教材P58是生产者消费者问题的最佳解,它支持多个生产者进程和多个消费者进程并发,而不仅仅是一个生产者进程和一个消费者进程并发。
(1)如果将(消费者的)两个wait操作即wait(full)和wait(mutex)互换位置,后果是:
a.影响了多个消费者的并发性,当一个消费者进行了wait(mutex),其它消费者因得不到mutex被阻塞,即便缓冲区有多个产品也不允许取。
形象的说,教材的解法允许多个消费者同时逛商店,但拿产品时一个一个消费者拿;而颠倒wait(full)和wait(mutex)顺序后,商店一次只能允许一个顾客进入,等顾客拿完产品出门后,另一位顾客才能进去。
b.可能造成死锁。
假如某消费者执行wait(mutex)后没被阻塞,但接着执行wait(full)后被阻塞了,要等待生产者的signal(full)才能解除阻塞,而生产者可能因消费者提前使mutex=0而被阻塞,无法执行signal(full),这样就造成死锁。
c可能还有其它后果。
(2)将(生产者的)signal(mutex)与signal(full)互换位置,似乎不会影响并发性,也不会造死锁,个人认为这也是一种正确的写法。
这道题我给出的答案仅供参考。
25.我们为某临界区设置一把锁W,当W=1时,表示关锁;W=0时,表示锁已打开.试写出开锁原语和关锁原语,并利用它们去实现互斥.
答:
先看教材P50的伪代码
Repeat
Entrysection
Criticalsection
Exitsection
Remaindersection
Untilfalse
说明了多个进程对临界资源的互斥访问的解决思路,在前面的第21题中,讨论了可设一记录型信号量S,初值为1,用P(S)替代Entrysection,V(S)替代Exitsection。
还有一种办法是教材P75介绍的“互斥锁”,其思路很简单:
将Criticalsection想象成只允许一个进程进入的小黑屋,小黑外有一把锁,当进程发现锁是开着的,可以进入小黑屋,然后关上锁不让其它进程进入,出来时把锁打开给其它进程进入的机会。
锁可以看作是(小黑屋外的)共享变量W,对W有两个操作:
unlock(W),lock(W),这两个操作必须也是原子操作,其理由与信号量必须是原子操作一样。
开锁原语:
unlock(W){W=0;}
关锁原语:
lock(W){if(W==1)dono_op;W=1;}
利用开关锁原语实现互斥,用lock(W);替代Entrysection,unlock(W)替代Exitsection即可。
varW:
=0;
process:
repeat
lock(W);
criticalsection
unlock(W);
remaindersection
untilfalse;
锁比信号量简单,但只能用于进程互斥,不能用于同步。
26试修改下面生产者—消费者问题解法中的错误
答:
按P58的正确解法修改即可。
27试利用记录型信号量写出一个不会出现死锁的哲学家进餐问题的算法.
答:
先看P62哲学家进餐问题的解及可能出现死锁的原因(出现了循环等待)。
根据P105死锁的四个必要条件,只要破除其中一个必要条件即可。
下面的解的思路是:
偶数哲学家现拿左面的筷子,后拿右面的,奇数哲学家正相反,这样就破除了循环等待,使死锁不可能发生。
设初始值为1的信号量c[I]表示I号筷子被拿(I=1,2,3,4,...,2n),其中n为自然数.
Begin
ifImod2==1then{//如为奇数哲学家
P(c[I]);
P(c[I-1mod5]);
Eat;
V(c[I-1mod5]);
V(c[I]);
}
else{//如为偶数哲学家
P(c[I-1mod5]);
P(c[I]);
Eat;
V(c[I]);
V(c[I-1mod5]);
}
End
28在测量控制系统中的数据采集任务,把所采集的数据送一单缓冲区;计算任务从该单缓冲中取出数据进行计算.试写出利用信号量机制实现两者共享单缓冲的同步算法.
答:
解法与生产者消费者问题一样。
这个题目的用意在于给出生产者消费者问题的一个实际应用---多进程的单缓冲通信。
生产者消费者是非常重要、有广泛实际价值的问题。
29画图说明管程由哪几部分组成?
为什么要引入条件变量?
答:
见P56图2-13
管程由三部分组成:
局部于管程的共享变量说明;对该数据结构进行操作的一组过程;对局部于管程的数据设置初始值的语句.
因为调用wait原语后,使进程等待的原因有多种,为了区别它们,引入了条件变量.
30如何利用管程解决生产者消费者问题?
答:
见P60。
考研的同学无需看这道题,只需会使用记录型信号量解进程同步问题即可,管程、信号量集、AND信号量只需从概念上了解一下即可,无需做大题。
31什么是AND型信号量?
。
。
。
。
32什么是信号量集?
。
。
。
。
答:
考研的同学只需从概念上了解一下即可,无需做大题
33试比较进程间的低级通信工具与高级通信工具.
答:
P65。
信号量是低级的进程通信工具,优点是速度快(