操作系统习题解答Word格式文档下载.docx
《操作系统习题解答Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《操作系统习题解答Word格式文档下载.docx(64页珍藏版)》请在冰豆网上搜索。
中断源向CPU发出中断信号,称为中断请求。
中断屏蔽是指在提出中断请求后,CPU不予响应的情况。
中断禁止是指在可能引起中断的事件发生时,系统不接收该中断信号,使之不可能提出中断请求或导致中断。
GPL是“通用公共许可协议(GeneralPublicLicense,的缩写)”,其意是要求整个系统的源代码可以自由获取,并且在GPL许可的范围内自由修改、传播。
POSIX(PortableOperatingSystemInterfaceforComputingSystems,的缩写),是由IEEE和ISO/IEC开发的一系列标准。
该标准基于已有Unix的实践和经验,描述系统调用的服务接口,并保证编制的应用程序可在多种操作系统上以源代码一级的形式进行移植和运行。
指程序在被中断前可以执行的最大时间段。
2.为了管理系统中的各种资源,需要共同解决的问题是哪些?
答:
计算机系统拥有四类资源:
处理机(即CPU),存储器,外部设备,程序和数据。
前三种属于硬资源,后一种属于软资源。
在计算机的运行过程中,对每种资的管理,需要共同解决的问题是:
(1)记住资源当前状态:
是否被使用,谁在使用。
(2)制定资源分配策略:
如何分配,何时分配,分配多少,应该分配给谁。
(3)实施资源分配:
根据分配策略完成分配。
(4)完成资源回收:
使用结束收回资源,以便进行下次分配。
3.应用程序与系统程序有什么区别?
可把软件大致划分为应用软件和系统软件两类。
应用软件是为解决某类需要或某个特定问题而编制的程序,它涉及计算机应用的各个领域。
系统软件不是针对特定需要或特殊问题编制的程序,而是对计算机系统的资源实施管理、控制,为其他程序的运行提供支持和服务的通用软件,系统软件都是由计算机生产厂家提供的。
4.CPU的核心态与用户态有何区别?
当CPU处于核心态时,可以执行包括特权指令在内的一切机器指令;
当CPU处于用户态时,禁止使用特权指令,只能执行非特权指令。
如果在用户态下发现取到了一条特权指令,中央处理机就会拒绝执行,产生“非法操作”中断。
5.操作系统的单内核模式和微内核模式有什么区别?
单内核模式也称集中模式或整体模式,整个系统是一个大的模块。
这时,操作系统提供的工作流程是应用主程序用给出的参数值去执行操作系统中的各种系统调用命令。
由于完全实行内部调用,因此运行效率极高。
但因其源代码是一个整体,因此各模块间的界限不很清晰,调用极为随意。
这样,在为内核程序的修改和升级带来极大麻烦。
微内核模式则是把操作系统的内核分为基本功能和非基本功能两部分,内核里只保留基本功能部分,在核心态下运行;
这时内核的主要功能是在客户程序和运行在用户空间的各种服务(属系统程序)之间进行通信,客户程序和各种服务之间不会直接交互,而是必须通过内核的消息交换才能完成相互通信。
这种模式的优点是内核小,便于系统的扩充和修改。
6.根据例1-3的数据,分别对单道程序设计和多道程序设计最终完成对表1-2的填写。
表1-2例1-3中不同情况下的资源利用统计
单道程序设计
多道程序设计
处理器使用
20%
40%
存储器使用
33%
67%
磁盘使用
打印机使用
总共运行时间
30分钟
15分钟
吞吐量
6个作业/小时
12个作业/小时
注:
所谓一个系统的吞吐量,是指系统在单位时间(通常为小时)内处理的作业数。
7.在分时系统和实时系统中,其响应时间分别是由(E)和(F)来确定的。
A.时间片大小B.用户数目C.计算机运行速度D.实时调度E.用户所能忍受的等待时间F.控制对象所能接受的延时
8.试问,在分时系统中用户数是100个,为保证响应时间不超过2秒,所设定的时间片的最大值应为多少?
应为20ms。
9.在一个分时操作系统中,用户提交了一个作业,其执行流程是:
申请存储区→计算,并将结果暂存于主存→请求打印机→将主存中内容在打印机上输出→释放打印机→归还占用的存储区→结束。
试从资源管理的观点分析该作业从提交到结束,操作系统为其提供服务涉及到的各个功能模块。
第1,通过存储管理,为其分配所需存储区;
第2,通过处理机管理将CPU分配给它,完成作业计算,并将计算结果存入主存;
第3,通过设备管理,把打印机分配给该作业;
第4,执行打印机驱动程序,驱动打印机进行打印;
第5,打印机完成打印,发出中断信号,请求CPU处理;
第6,CPU响应中断,执行打印机中断处理程序,并释放打印机;
第7,通过存储管理,回收存储区;
第8,撤销该作业。
10.为进行单道批处理系统和多道批处理系统的特点,请完成表1-3的填写。
表1-3单道批处理和多道批处理的特性比较
单道批处理系统
多道批处理系统
主存中驻留程序的个数
一道
多道
占用CPU的情况
独占
交替占用
是否需要对用户作业进行调度
不需要
需要
程序完成次序与其进入主存次序间的关系
严格对应
不严格对应
11.在批处理和分时系统相结合的操作系统中,为什么要引入“前台”和“后台”作业的概念?
答:
通常,将终端用户作业作为前台作业,将批处理作业作为后台作业。
这样的搭配,一方面可以保证系统及时响应前台用户作业的操作请求,并使其得到及时的处理。
而作为批处理的后台作业,则只是利用系统不处理前台作业的空闲时间,在CPU上运行,从而达到提高CPU利用率的目的。
12.就CPU的利用率的高低,对手工操作、单道批处理、多道批处理和多用户分时系统进行排序。
手工操作阶段,没有操作系统进行管理,大量时间是机器等人,因此CPU的利用率最低。
单道批处理系统与手工操作相比,提高了系统自动化处理的程度。
但由于主存内只有一道作业程序,CPU与I/O只能串行工作,所以CPU的利用率仍然很低。
多用户分时系统属于多道程序系统,比起手工操作和单道批处理来,它的CPU利用率较高。
但由于系统的交互性和及时性要求,CPU必须在多个用户程序之间进行切换,从而增加了系统的额外开销。
多道批处理系统完全自动处理各个用户的程序,只有在程序等待某事件发生时,才会产生程序间的切换,因此系统花费在程序间切换上的开销,要远小于多用户分时系统。
因此,它是这四种系统中CPU利用率最高的系统。
习题2
并发并行进程用户进程
系统进程创建状态就绪状态运行状态
阻塞状态终止状态就绪/挂起状态阻塞/挂起状态
进程控制块PCB进程映像原语线程
用户级线程线程库内核级线程位图
所谓“并发”,是指从宏观上看在一段时间内有多个程序在同时运行,而从微观上看这些程序是在交替运行。
或所谓“并发”,是指逻辑上相互独立的几个应用程序,同时处于活动状态,并竞争使用系统中的各种资源(如CPU、内存、硬设备等)。
所谓“并行”,是指多个程序在同一时刻运行。
所谓“进程”是指一个程序在给定数据集合上的一次执行过程,是系统进行资源分配和运行调度的独立单位。
操作系统中用于管理系统资源的那些可以并发执行的程序,构成了一个个系统进程,它们提供系统的服务,分配系统的资源
可以并发执行的用户程序段,形成了一个个用户进程,它们是操作系统的服务对象,是系统资源的实际的享用者。
创建状态:
一个进程正在初创时期,操作系统还没有把它列入到可执行的进程行列中。
就绪状态:
一个进程已经具备运行的条件,只要有机会获得CPU就可以投入运行。
运行状态:
一个进程获得了CPU正在被执行中。
假定系统中只有一个CPU,因此任何时候最多只有一个进程处于运行状态。
阻塞状态:
进程正在等待某个事件(比如I/O的完成)的发生,在事件到来之前,即使把CPU分配给这个进程,它也无法运行。
终止状态:
一个进程或正常结束,或因某种原因被强制结束。
这时,系统正在为其进行善后处理。
就绪/挂起状态:
进程在辅存,只要被激活,进程就可以调入内存,如果获得CPU就可以投入运行。
阻塞/挂起状态:
进程在辅存等待事件的发生。
只要被激活,进程就可以调入到内存里去等待事件的发生。
为了便于管理和控制进程的执行,为了随时刻画进程的动态特性,为了反映进程间的相互关系,操作系统就用一个与进程有关的数据结构来完成这样的任务。
这个数据结构就称为“进程控制块(PCB)”。
进程将要执行的程序、数据以及进程控制块PCB,这三个部分组成的集合,称为“进程映像”。
在操作系统里,那种“在执行期间不能被打断、不能被分割”的程序段,称作“原语”。
所谓“线程”,是指进程中实施处理器调度和分配的基本单位。
如果有关线程的管理工作(比如线程的创建、撤销,线程间的消息和数据传递,线程的调度和现场保护及恢复等),都是由运行在用户空间的应用程序完成,那么这样的线程称为“用户级线程”。
完成用户级线程管理工作的应用程序,称为“线程库”。
如果有关线程管理的所有工作都是由内核完成的,用户空间里没有任何进行线程管理的程序,系统给应用程序提供相应的系统调用和应用程序编程接口(API),以使用户程序可以创建、执行、撤销线程。
那么这样的线程称为“内核级线程”。
在内存开辟一个由若干个字组成的区域,用其中的每一个二进制位表示一种含义。
这个区域就称为是一个“位图”。
2.在多道程序设计下,进程具有什么样的特征?
在多道程序设计下,进程有如下几个方面的特征。
(1)进程是一个动态的概念,强调的是程序的一次“执行”过程。
(2)不同进程可以执行同一个程序。
(3)每一个进程都有自己的生命期。
(4)进程之间具有并发性。
(5)进程间会相互制约。
3.什么是一个进程的生命期?
进程的本质是程序的一次执行过程,当系统要完成某一项工作时,就“创建”一个进程,以便执行事先编写好的、完成该工作的那段程序;
程序执行完毕,完成预定的任务后,系统就“撤销”这个进程,收回它所占用的资源。
一个进程创建后,系统就感知到它的存在;
一个进程撤销后,系统就无法再感知到它。
于是,从创建到撤销,这个时间段就是一个进程的“生命期”。
4.系统进程与用户进程有什么区别?
系统进程与用户进程是两类不同性质的进程,主要区别如下。
(1)系统进程之间的相互关系由操作系统负责协调,以便有利于增加系统的并行性,提高资源的整体利用率;
用户进程之间的相互关系要由用户自己(在程序中)安排。
不过,操作系统会向用户提供一定的协调手段(以系统调用命令的形式)。
(2)系统进程直接管理有关的软、硬件资源的活动;
用户进程不得插手资源管理,在需要使用某种资源时,必须向系统提出申请,由系统统一调度与分配。
(3)系统进程与用户进程都需要使用系统中的各种资源,它们都是资源分配与运行调度的独立单位,但系统进程的使用级别,应该高于用户进程。
也就是说,在双方出现对资源的竞争时,系统进程有优先获得资源、优先得以运行的权利。
只有这样,才能保证计算机系统高效、有序的工作。
(4)通常,系统进程运行在核心态,用户进程运行在用户态。
不过,在微内核模式下,只有那些执行基本功能程序的进程,运行在核心态,而那些执行非基本功能程序的进程,则是以各种服务的形式运行在用户态。
5.在多道程序设计环境的进程中引入“挂起”状态,对整个系统有什么好处?
挂起一个进程就是把这个进程调出内存,放到辅存的交换区去。
这样做的好处是通过把在内存中等待的进程交换到辅存,就可以腾出宝贵的内存空间,就可以从辅存调入可运行进程,或可以接纳新进程,或可以为当前执行进程提供必要的存储空间,从而提高CPU的利用率。
6.根据图2-4,请回答对如下问题:
(1)在哪几种状态变迁下,一个进程会从内存交换到辅存?
(2)在哪几种状态变迁下,一个进程会从辅存交换到内存?
(1)在下面的三种状态变迁下,一个进程会从内存交换到辅存:
从阻塞状态变迁到阻塞/挂起状态;
·
从就绪状态变迁到就绪/变迁状态;
从运行状态变迁到就绪/挂起状态。
(2)在下面两种状态变迁下,一个进程会从辅存交换到内存:
从就绪/挂起状态变迁到就绪状态;
从阻塞/挂起状态变迁到阻塞状态。
7.一个进程在阻塞状态时等待事件的发生,该进程这时是位于内存还是辅存?
一个进程在阻塞/挂起状态时等待事件的发生,该进程这时是位于内存还是辅存?
在前一种情形时,进程位于内存;
在后一种情形时,进程位于辅存。
8.为什么说进程控制块是操作系统中最重要的一种数据结构?
由于进程控制块PCB里包含了有关一个进程所需要的所有信息,它是操作系统感知到一个进程实际存在的唯一实体。
所以说进程控制块是操作系统中最重要的一种数据结构。
9.操作系统中引入线程的优点是什么?
线程具有如下优点:
由于在进程内的线程共享程序和资源,因此创建线程无需进行资源分配,比创建一个进程要快得多;
这也使撤消线程比撤消一个进程所花费的时间短;
同一进程里线程间的切换是在进程的地址空间里进行,因此比进程间不同地址空间中的切换开销要少得多;
进程里的线程可以随时访问该进程拥有的所有资源,无需做任何切换工作;
同一进程中的线程共享内存区域和文件,因此它们之间可以直接进行通信,不必通过系统内核。
10.进程与线程有什么区别?
进程和线程间有如下的几点不同。
(1)地址空间:
不同进程的地址空间是相互独立的,而同一个进程中的各个线程共享着同一个用户地址空间。
因此,进程中的线程,不会被另一个进程所看见。
(2)通信关系:
不同进程间的通信,必须使用操作系统提供的进程通信机制;
同一进程的各个线程间的通信,可以直接通过访问共享的进程地址空间来实现。
(3)调度切换:
不同进程间的调度切换,系统要花费很大的开销(比如,要从这个地址空间转到那个地址空间,要保护现场等);
同一进程的线程间的切换,无须转换地址空间,从而减少了很多的系统开销。
11.什么是Linux的进程链表?
如何找到这个链表的头?
Linux进程的PCB里有名为prev_task和next_task的两个task_struct型指针字段。
这样,从init进程PCB里的这两个字段开始,把系统中所有的进程的PCB链接在一起,形成一个双向链表,就成为是Linux的进程链表。
由于init进程PCB的位置在系统里是固定不变的,所以找到init进程PCB里的next_task,就可以找到Linux进程链表的表头。
12.什么是Linux的可运行状态队列?
如何找到这个队列的头?
Linux进程的PCB里有名为prev_run和next_run的两个task_struct型指针字段。
从init进程PCB里的这两个字段开始,把系统中所有“可运行状态”进程的PCB链接在一起形成一个双向链表,就成为是Linux的“可运行状态”队列。
由于init进程PCB的位置在系统里是固定不变的,所以只要找到init进程PCB里的next_run,就可以找到“可运行状态”队列的头。
13.下列活动中,属于直接制约关系的是B和C,属于间接制约关系的是A和D。
A.几位同学去图书馆借同一本书B.两队进行篮球比赛
C.流水生产线上的各道工序D.商品生产和社会消费
14.下面的说法中,正确的是D。
A.引入线程后,CPU只能在线程间切换
B.引入线程后,CPU仍然在进程间切换
C.线程的切换,不会引起进程的切换
D.线程的切换,可能引起进程的切换
15.下面的说法中,正确的是C。
A.无论是内核级线程还是用户级线程,其切换都要内核的支持
B.线程是资源分配的单位,进程是调度和分派的单位
C.不管系统中是否有线程,进程都是拥有资源的独立单位
D.在引入线程的系统中,进程仍是资源和调度分派的基本单位
16.下面关于用户级线程的叙述,错误的是D。
A.用户级线程的切换无需进入内核模式
B.线程库提供对用户线程的调度
C.操作系统无需对内核进行修改以支持用户级线程
D.用户级线程是CPU调度的基本单位
17.下面关于内核级线程的叙述,错误的是B。
A.处理机调度可以为一个进程中的多个内核线程分配多个CPU
B.如果一个进程中的一个线程被阻塞,整个进程都必须等待
C.进程的一个内核线程阻塞时,可立即调度它的其他内核线程运行
D.内核线程由操作系统的内核提供支持
18.如图2-24是一个进程状态变迁图,试问:
(1)是什么事件引起每种状态的变迁?
(2)在什么条件下,一个进程的变迁3能够立即引起另一个进程的变迁1?
(3)在什么情况下将发生后面的因果变迁:
2→1;
3→2;
4→1。
图2-24应用问答第15题图
(1)引起状态变迁“1”的事件有:
①正在运行的进程由于时间片用完而转入就绪时;
②正在运行的进程由于要等待某一事件的发生而被阻塞时;
③正在运行的进程由于出现故障或正常结束时;
④在出现更高优先级进程就绪、且允许抢占CPU时。
引起状态变迁“2”的事件有:
①正在运行的进程时间片用完;
②正在运行的进程的CPU被抢占,使当前进程状态发生变迁2。
引起状态变迁“3”的事件有:
正在运行的进程等待某事件发生(如等待I/O完成,等待别的进程发来信号、出现异常后等待处理)。
引起状态变迁“4”的事件有:
进程等待的事件发生(比如I/O完成,信号到达)。
(2)就绪队列非空时。
(3)2→1有因果关系。
因为“2”发生时,如果就绪队列不空,就会选择一个进程运行,从而发生“1”;
如果就绪队列空,发生了“2”就变为不空,所以仍能发生“1”。
3→2没有因果关系。
4→1①当系统中无进程在运行、且就绪队列为空,这时发生“4”就出现一个就绪进程,于是发生变迁“1”;
②若系统实行可抢占调度策略,发生“4”、且就绪进程的优先级高于运行进程,则发生抢占,先“2”而后“1”。
19.进程能够自己将自己唤醒吗?
为什么?
举例说明一次只能唤醒一个进程和一次能够唤醒多个进程的情形。
(1)唤醒是一种被动行为。
被阻塞的进程不可能获得CPU而成为主动行为者,因此只能由其他运行进程来实施唤醒。
所以进程不能自己唤醒自己。
(2)在I/O中断处理程序中唤醒进程时,只唤醒等待该I/O结束的那个进程;
当释放某种系统资源(比如一块存储区)时,就应该唤醒所有等待这种资源的阻塞进程,以便让它们进行竞争(比如,与其一个个去查等待者所需的存储区大小,还不如把它们都释放去竞争来得方便)。
20.Linux的进程由哪几部分组成?
Linux的线程由哪几部分组成?
Linux的进程由四部分组成,它们是:
(1)一段可执行的程序;
(2)一个专用的系统栈空间,用来保存中断现场信息和进程进入内核模式后执行子程序(函数)嵌套调用的返回现场信息;
(3)进程控制块PCB(task_struct结构);
(4)独立的存储空间。
在Linux里,线程有它自己的可执行的程序;
有它自己的专用系统栈;
有它自己的进程控制块PCB(task_struct结构)。
这些都与进程相同。
唯一与进程不同的是,它没有自己独立的存储空间。
21.为了了解某单行道的交通流量,在路口安放一个监视器,功能是有车通过该路段时,就向计算机发送一个信号。
为此设计两个程序:
程序A的功能是接收到监视器的信号时,就在计数单元COUNT上加1;
程序B的功能是每隔半小时,将计数单元COUNT的值打印输出,然后清零。
COUNT初始时为0。
两个程序的描述如图2-25所示。
图2-25应用问答第20题图
因为是多道程序设计环境,程序A和程序B都作为进程出现在内存。
内存中的各个进程的执行过程交织在一起,没有什么规律可循。
假定进程A和B的执行一直很顺利,现在计数器COUNT里的值是9,随之后面的执行顺序是:
A1→A2→B1→B2→A1→A2→B3。
执行完成后,按说由于做了两次A2,在最后做B3时,打印出COUNT的值应该是11,但打印的却是10。
怎么会少打印了一辆车?
试对此现象做出解释。
现在的执行顺序是在进程B做了B1和B2后,没有直接执行B3,而是插入了进程A的两个操作A1和A2,于是出了问题。
即执行这一顺序时,A1收到监视器发来的第10辆车通过的信息,于是由A2在COUNT上完成加1操作,使得计数器COUNT取值为10。
紧接着做B1去延迟半小时,然后由B2将COUNT中的10打印输出来。
这时又做A1,它收到的是第11辆车到达的信息,通过做A2,COUNT里的值成为11。
这时接着做B3,它把COUNT清零。
结果导致该系统把第11辆车漏掉了,少计算了一辆车。
这正是在多道程序设计环境下,
结果的再现性已不再存在的例子。
习题3
后备作业后备作业队列高级调度低级调度
中级调度非抢占式调度策略抢占式调度策略吞吐量
处理机限制型作业I/O限