《《操作系统》习题解答.doc》由会员分享,可在线阅读,更多相关《《操作系统》习题解答.doc(46页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、操作系统习题解答操作系统习题解答习题11.术语解释裸机虚拟机操作系统程序接口命令接口非特权指令特权指令核心态用户态系统调用微内核批处理系统分时实时指令的执行周期中断中断源中断请求中断屏蔽中断禁止GPLPOSIX时间片答案:未配置任何软件的计算机称为“裸机”。在裸机上安装一层软件,使机器的功能得以扩展,这时展现在用户面前的“机器”,就是所谓的虚拟机。操作系统是控制和管理计算机硬件和软件资源、合理地组织计算机工作流程以及方便用户使用计算机的一个大型系统软件。在用户编写的程序中,可使用系统调用命令获得操作系统提供的各种功能服务,这是操作系统在程序一级给予用户的支持,称其为程序接口。用户可使用操作系统
2、提供的各种操作命令,通过键盘(或鼠标)控制和完成程序的运行,这是操作系统在作业控制一级给予用户的支持,称为命令接口。操作系统和用户程序都能使用的硬指令,称为非特权指令。只能由操作系统使用的硬指令,称为特权指令。所谓核心态,是指CPU处于可执行包括特权指令在内的一切机器指令的状态。所谓用户态,是指CPU处于只能执行非特权指令的状态。操作系统里预先编制了很多不同功能的子程序。用户在自己的程序里调用这些子程序,以求得操作系统提供的功能服务。就把这些功能服务子程序称为“系统功能调用”程序,简称“系统调用”。微内核即是把操作系统的内核分为基本功能和非基本功能两部分,在内核里只保留基本功能部分,在核心态下
3、运行;非基本功能部分则从内核剥离下来,让它们以各种服务的形式,在用户态下运行。这一的操作系统内核,称为微内核。若在某系统中,用户作业被分批处理,在处理一批的过程中不允许用户与计算机发生交互作用,即使作业在运行中出现错误,也只能等到整批作业处理完毕后在机下修改。这样的系统,就是所谓的“批处理系统”。所谓分时,即指多个用户通过各自的终端同时访问系统,由操作系统控制每个用户程序以很短的时间为单位交替执行。所谓实时,是指能够及时响应随机发生的外部事件并对事件做出快速处理的一种能力。一个单一的指令需要的处理过程,称为指令的一个“执行周期”。所谓“中断”,是指在CPU执行程序过程中,由于内部或某个外部事件
4、的发生,让CPU暂时中止正在执行的程序而转向该突发事件的处理,处理完毕后返回被中止的程序继续执行的这样一个处理过程。凡能引起中断的设备或事件均称为“中断源”。中断源向CPU发出中断信号,称为中断请求。中断屏蔽是指在提出中断请求后,CPU不予响应的情况。中断禁止是指在可能引起中断的事件发生时,系统不接收该中断信号,使之不可能提出中断请求或导致中断。GPL是“通用公共许可协议(General Public License,的缩写)”,其意是要求整个系统的源代码可以自由获取,并且在GPL许可的范围内自由修改、传播。POSIX(Portable Operating System Interface f
5、or Computing Systems,的缩写),是由IEEE和ISO/IEC开发的一系列标准。该标准基于已有Unix的实践和经验,描述系统调用的服务接口,并保证编制的应用程序可在多种操作系统上以源代码一级的形式进行移植和运行。指程序在被中断前可以执行的最大时间段。2为了管理系统中的各种资源,需要共同解决的问题是哪些?答:计算机系统拥有四类资源:处理机(即CPU),存储器,外部设备,程序和数据。前三种属于硬资源,后一种属于软资源。在计算机的运行过程中,对每种资的管理,需要共同解决的问题是:(1)记住资源当前状态:是否被使用,谁在使用。(2)制定资源分配策略:如何分配,何时分配,分配多少,应该
6、分配给谁。(3)实施资源分配:根据分配策略完成分配。(4)完成资源回收:使用结束收回资源,以便进行下次分配。3应用程序与系统程序有什么区别?答:可把软件大致划分为应用软件和系统软件两类。应用软件是为解决某类需要或某个特定问题而编制的程序,它涉及计算机应用的各个领域。系统软件不是针对特定需要或特殊问题编制的程序,而是对计算机系统的资源实施管理、控制,为其他程序的运行提供支持和服务的通用软件,系统软件都是由计算机生产厂家提供的。4CPU的核心态与用户态有何区别?答:当CPU处于核心态时,可以执行包括特权指令在内的一切机器指令;当CPU处于用户态时,禁止使用特权指令,只能执行非特权指令。如果在用户态
7、下发现取到了一条特权指令,中央处理机就会拒绝执行,产生“非法操作”中断。5操作系统的单内核模式和微内核模式有什么区别?答:单内核模式也称集中模式或整体模式,整个系统是一个大的模块。这时,操作系统提供的工作流程是应用主程序用给出的参数值去执行操作系统中的各种系统调用命令。由于完全实行内部调用,因此运行效率极高。但因其源代码是一个整体,因此各模块间的界限不很清晰,调用极为随意。这样,在为内核程序的修改和升级带来极大麻烦。微内核模式则是把操作系统的内核分为基本功能和非基本功能两部分,内核里只保留基本功能部分,在核心态下运行;非基本功能部分则从内核剥离下来,让它们以各种服务的形式,在用户态下运行。这时
8、内核的主要功能是在客户程序和运行在用户空间的各种服务(属系统程序)之间进行通信,客户程序和各种服务之间不会直接交互,而是必须通过内核的消息交换才能完成相互通信。这种模式的优点是内核小,便于系统的扩充和修改。6根据例1-3的数据,分别对单道程序设计和多道程序设计最终完成对表1-2的填写。表1-2 例1-3中不同情况下的资源利用统计单道程序设计多道程序设计处理器使用20%40%存储器使用33%67%磁盘使用33%67%打印机使用33%67%总共运行时间30分钟15分钟吞吐量6个作业/小时12个作业/小时注:所谓一个系统的吞吐量,是指系统在单位时间(通常为小时)内处理的作业数。7在分时系统和实时系统
9、中,其响应时间分别是由(E)和(F)来确定的。A时间片大小B用户数目C计算机运行速度D实时调度E用户所能忍受的等待时间F控制对象所能接受的延时8试问,在分时系统中用户数是100个,为保证响应时间不超过2秒,所设定的时间片的最大值应为多少?答:应为20ms。9在一个分时操作系统中,用户提交了一个作业,其执行流程是:申请存储区计算,并将结果暂存于主存请求打印机将主存中内容在打印机上输出释放打印机归还占用的存储区结束。试从资源管理的观点分析该作业从提交到结束,操作系统为其提供服务涉及到的各个功能模块。答:第1,通过存储管理,为其分配所需存储区;第2,通过处理机管理将CPU分配给它,完成作业计算,并将
10、计算结果存入主存;第3,通过设备管理,把打印机分配给该作业;第4,执行打印机驱动程序,驱动打印机进行打印;第5,打印机完成打印,发出中断信号,请求CPU处理;第6,CPU响应中断,执行打印机中断处理程序,并释放打印机;第7,通过存储管理,回收存储区;第8,撤销该作业。10为进行单道批处理系统和多道批处理系统的特点,请完成表1-3的填写。表1-3 单道批处理和多道批处理的特性比较单道批处理系统多道批处理系统主存中驻留程序的个数一道多道占用CPU的情况独占交替占用是否需要对用户作业进行调度不需要需要程序完成次序与其进入主存次序间的关系严格对应不严格对应11在批处理和分时系统相结合的操作系统中,为什
11、么要引入“前台”和“后台”作业的概念?答:通常,将终端用户作业作为前台作业,将批处理作业作为后台作业。这样的搭配,一方面可以保证系统及时响应前台用户作业的操作请求,并使其得到及时的处理。而作为批处理的后台作业,则只是利用系统不处理前台作业的空闲时间,在CPU上运行,从而达到提高CPU利用率的目的。12就CPU的利用率的高低,对手工操作、单道批处理、多道批处理和多用户分时系统进行排序。答:手工操作阶段,没有操作系统进行管理,大量时间是机器等人,因此CPU的利用率最低。单道批处理系统与手工操作相比,提高了系统自动化处理的程度。但由于主存内只有一道作业程序,CPU与I/O只能串行工作,所以CPU的利
12、用率仍然很低。多用户分时系统属于多道程序系统,比起手工操作和单道批处理来,它的CPU利用率较高。但由于系统的交互性和及时性要求,CPU必须在多个用户程序之间进行切换,从而增加了系统的额外开销。多道批处理系统完全自动处理各个用户的程序,只有在程序等待某事件发生时,才会产生程序间的切换,因此系统花费在程序间切换上的开销,要远小于多用户分时系统。因此,它是这四种系统中CPU利用率最高的系统。习题21.术语解释并发并行进程用户进程系统进程创建状态就绪状态运行状态阻塞状态终止状态就绪/挂起状态阻塞/挂起状态进程控制块PCB进程映像原语线程用户级线程线程库内核级线程位图答案:所谓“并发”,是指从宏观上看在
13、一段时间内有多个程序在同时运行,而从微观上看这些程序是在交替运行。或所谓“并发”,是指逻辑上相互独立的几个应用程序,同时处于活动状态,并竞争使用系统中的各种资源(如CPU、内存、硬设备等)。所谓“并行”,是指多个程序在同一时刻运行。所谓“进程”是指一个程序在给定数据集合上的一次执行过程,是系统进行资源分配和运行调度的独立单位。操作系统中用于管理系统资源的那些可以并发执行的程序,构成了一个个系统进程,它们提供系统的服务,分配系统的资源可以并发执行的用户程序段,形成了一个个用户进程,它们是操作系统的服务对象,是系统资源的实际的享用者。创建状态:一个进程正在初创时期,操作系统还没有把它列入到可执行的
14、进程行列中。就绪状态:一个进程已经具备运行的条件,只要有机会获得CPU就可以投入运行。运行状态:一个进程获得了CPU正在被执行中。假定系统中只有一个CPU,因此任何时候最多只有一个进程处于运行状态。阻塞状态:进程正在等待某个事件(比如I/O的完成)的发生,在事件到来之前,即使把CPU分配给这个进程,它也无法运行。终止状态:一个进程或正常结束,或因某种原因被强制结束。这时,系统正在为其进行善后处理。就绪/挂起状态:进程在辅存,只要被激活,进程就可以调入内存,如果获得CPU就可以投入运行。阻塞/挂起状态:进程在辅存等待事件的发生。只要被激活,进程就可以调入到内存里去等待事件的发生。为了便于管理和控
15、制进程的执行,为了随时刻画进程的动态特性,为了反映进程间的相互关系,操作系统就用一个与进程有关的数据结构来完成这样的任务。这个数据结构就称为“进程控制块(PCB)”。进程将要执行的程序、数据以及进程控制块PCB,这三个部分组成的集合,称为“进程映像”。在操作系统里,那种“在执行期间不能被打断、不能被分割”的程序段,称作“原语”。所谓“线程”,是指进程中实施处理器调度和分配的基本单位。如果有关线程的管理工作(比如线程的创建、撤销,线程间的消息和数据传递,线程的调度和现场保护及恢复等),都是由运行在用户空间的应用程序完成,那么这样的线程称为“用户级线程”。完成用户级线程管理工作的应用程序,称为“线
16、程库”。如果有关线程管理的所有工作都是由内核完成的,用户空间里没有任何进行线程管理的程序,系统给应用程序提供相应的系统调用和应用程序编程接口(API),以使用户程序可以创建、执行、撤销线程。那么这样的线程称为“内核级线程”。在内存开辟一个由若干个字组成的区域,用其中的每一个二进制位表示一种含义。这个区域就称为是一个“位图”。2. 在多道程序设计下,进程具有什么样的特征?答:在多道程序设计下,进程有如下几个方面的特征。(1)进程是一个动态的概念,强调的是程序的一次“执行”过程。(2)不同进程可以执行同一个程序。(3)每一个进程都有自己的生命期。(4)进程之间具有并发性。(5)进程间会相互制约。3
17、. 什么是一个进程的生命期?答:进程的本质是程序的一次执行过程,当系统要完成某一项工作时,就“创建”一个进程,以便执行事先编写好的、完成该工作的那段程序;程序执行完毕,完成预定的任务后,系统就“撤销”这个进程,收回它所占用的资源。一个进程创建后,系统就感知到它的存在;一个进程撤销后,系统就无法再感知到它。于是,从创建到撤销,这个时间段就是一个进程的“生命期”。4. 系统进程与用户进程有什么区别?答:系统进程与用户进程是两类不同性质的进程,主要区别如下。(1)系统进程之间的相互关系由操作系统负责协调,以便有利于增加系统的并行性,提高资源的整体利用率;用户进程之间的相互关系要由用户自己(在程序中)
18、安排。不过,操作系统会向用户提供一定的协调手段(以系统调用命令的形式)。(2)系统进程直接管理有关的软、硬件资源的活动;用户进程不得插手资源管理,在需要使用某种资源时,必须向系统提出申请,由系统统一调度与分配。(3)系统进程与用户进程都需要使用系统中的各种资源,它们都是资源分配与运行调度的独立单位,但系统进程的使用级别,应该高于用户进程。也就是说,在双方出现对资源的竞争时,系统进程有优先获得资源、优先得以运行的权利。只有这样,才能保证计算机系统高效、有序的工作。(4)通常,系统进程运行在核心态,用户进程运行在用户态。不过,在微内核模式下,只有那些执行基本功能程序的进程,运行在核心态,而那些执行
19、非基本功能程序的进程,则是以各种服务的形式运行在用户态。5. 在多道程序设计环境的进程中引入“挂起”状态,对整个系统有什么好处?答:挂起一个进程就是把这个进程调出内存,放到辅存的交换区去。这样做的好处是通过把在内存中等待的进程交换到辅存,就可以腾出宝贵的内存空间,就可以从辅存调入可运行进程,或可以接纳新进程,或可以为当前执行进程提供必要的存储空间,从而提高CPU的利用率。6. 根据图2-4,请回答对如下问题:(1)在哪几种状态变迁下,一个进程会从内存交换到辅存?(2)在哪几种状态变迁下,一个进程会从辅存交换到内存?答:(1)在下面的三种状态变迁下,一个进程会从内存交换到辅存:从阻塞状态变迁到阻
20、塞/挂起状态;从就绪状态变迁到就绪/变迁状态;从运行状态变迁到就绪/挂起状态。(2)在下面两种状态变迁下,一个进程会从辅存交换到内存:从就绪/挂起状态变迁到就绪状态;从阻塞/挂起状态变迁到阻塞状态。7. 一个进程在阻塞状态时等待事件的发生,该进程这时是位于内存还是辅存?一个进程在阻塞/挂起状态时等待事件的发生,该进程这时是位于内存还是辅存?答:在前一种情形时,进程位于内存;在后一种情形时,进程位于辅存。8. 为什么说进程控制块是操作系统中最重要的一种数据结构?答:由于进程控制块PCB里包含了有关一个进程所需要的所有信息,它是操作系统感知到一个进程实际存在的唯一实体。所以说进程控制块是操作系统中
21、最重要的一种数据结构。9. 操作系统中引入线程的优点是什么?答:线程具有如下优点:由于在进程内的线程共享程序和资源,因此创建线程无需进行资源分配,比创建一个进程要快得多;这也使撤消线程比撤消一个进程所花费的时间短;同一进程里线程间的切换是在进程的地址空间里进行,因此比进程间不同地址空间中的切换开销要少得多;进程里的线程可以随时访问该进程拥有的所有资源,无需做任何切换工作;同一进程中的线程共享内存区域和文件,因此它们之间可以直接进行通信,不必通过系统内核。10. 进程与线程有什么区别?答:进程和线程间有如下的几点不同。(1)地址空间:不同进程的地址空间是相互独立的,而同一个进程中的各个线程共享着
22、同一个用户地址空间。因此,进程中的线程,不会被另一个进程所看见。(2)通信关系:不同进程间的通信,必须使用操作系统提供的进程通信机制;同一进程的各个线程间的通信,可以直接通过访问共享的进程地址空间来实现。(3)调度切换:不同进程间的调度切换,系统要花费很大的开销(比如,要从这个地址空间转到那个地址空间,要保护现场等);同一进程的线程间的切换,无须转换地址空间,从而减少了很多的系统开销。11. 什么是Linux的进程链表?如何找到这个链表的头?答:Linux进程的PCB里有名为prev_task和next_task的两个task_struct型指针字段。这样,从init进程PCB里的这两个字段开
23、始,把系统中所有的进程的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的位置在系统里是固定不变的,所以只
24、要找到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. 线程是资源分配的单位,进程是调
25、度和分派的单位C. 不管系统中是否有线程,进程都是拥有资源的独立单位D. 在引入线程的系统中,进程仍是资源和调度分派的基本单位16下面关于用户级线程的叙述,错误的是 D 。A. 用户级线程的切换无需进入内核模式B. 线程库提供对用户线程的调度C. 操作系统无需对内核进行修改以支持用户级线程D. 用户级线程是CPU调度的基本单位17.下面关于内核级线程的叙述,错误的是 B 。A. 处理机调度可以为一个进程中的多个内核线程分配多个CPUB. 如果一个进程中的一个线程被阻塞,整个进程都必须等待C. 进程的一个内核线程阻塞时,可立即调度它的其他内核线程运行D. 内核线程由操作系统的内核提供支持18.
26、如图2-24是一个进程状态变迁图,试问:(1)是什么事件引起每种状态的变迁?(2)在什么条件下,一个进程的变迁3能够立即引起另一个进程的变迁1?(3)在什么情况下将发生后面的因果变迁:21;32;41。图2-24 应用问答第15题图答:(1)引起状态变迁“1”的事件有:正在运行的进程由于时间片用完而转入就绪时;正在运行的进程由于要等待某一事件的发生而被阻塞时;正在运行的进程由于出现故障或正常结束时;在出现更高优先级进程就绪、且允许抢占CPU时。引起状态变迁“2”的事件有:正在运行的进程时间片用完;正在运行的进程的CPU被抢占,使当前进程状态发生变迁2。引起状态变迁“3”的事件有:正在运行的进程
27、等待某事件发生(如等待I/O完成,等待别的进程发来信号、出现异常后等待处理)。引起状态变迁“4”的事件有:进程等待的事件发生(比如I/O完成,信号到达)。(2)就绪队列非空时。(3)21有因果关系。因为“2”发生时,如果就绪队列不空,就会选择一个进程运行,从而发生“1”;如果就绪队列空,发生了“2”就变为不空,所以仍能发生“1”。32没有因果关系。41当系统中无进程在运行、且就绪队列为空,这时发生“4”就出现一个就绪进程,于是发生变迁“1”;若系统实行可抢占调度策略,发生“4”、且就绪进程的优先级高于运行进程,则发生抢占,先“2”而后“1”。19. 进程能够自己将自己唤醒吗?为什么?举例说明一
28、次只能唤醒一个进程和一次能够唤醒多个进程的情形。答:(1)唤醒是一种被动行为。被阻塞的进程不可能获得CPU而成为主动行为者,因此只能由其他运行进程来实施唤醒。所以进程不能自己唤醒自己。(2)在I/O中断处理程序中唤醒进程时,只唤醒等待该I/O结束的那个进程;当释放某种系统资源(比如一块存储区)时,就应该唤醒所有等待这种资源的阻塞进程,以便让它们进行竞争(比如,与其一个个去查等待者所需的存储区大小,还不如把它们都释放去竞争来得方便)。20. Linux的进程由哪几部分组成?Linux的线程由哪几部分组成?答:Linux的进程由四部分组成,它们是:(1)一段可执行的程序;(2)一个专用的系统栈空间
29、,用来保存中断现场信息和进程进入内核模式后执行子程序(函数)嵌套调用的返回现场信息;(3)进程控制块PCB(task_struct结构);(4)独立的存储空间。在Linux里,线程有它自己的可执行的程序;有它自己的专用系统栈;有它自己的进程控制块PCB(task_struct结构)。这些都与进程相同。唯一与进程不同的是,它没有自己独立的存储空间。21.为了了解某单行道的交通流量,在路口安放一个监视器,功能是有车通过该路段时,就向计算机发送一个信号。为此设计两个程序:程序A的功能是接收到监视器的信号时,就在计数单元COUNT上加1;程序B的功能是每隔半小时,将计数单元COUNT的值打印输出,然后
30、清零。COUNT初始时为0。两个程序的描述如图2-25所示。图2-25 应用问答第20题图因为是多道程序设计环境,程序A和程序B都作为进程出现在内存。内存中的各个进程的执行过程交织在一起,没有什么规律可循。假定进程A和B的执行一直很顺利,现在计数器COUNT里的值是9,随之后面的执行顺序是:A1A2B1B2A1A2B3。执行完成后,按说由于做了两次A2,在最后做B3时,打印出COUNT的值应该是11,但打印的却是10。怎么会少打印了一辆车?试对此现象做出解释。答:现在的执行顺序是在进程B做了B1和B2后,没有直接执行B3,而是插入了进程A的两个操作A1和A2,于是出了问题。即执行这一顺序时,A
31、1收到监视器发来的第10辆车通过的信息,于是由A2在COUNT上完成加1操作,使得计数器COUNT取值为10。紧接着做B1去延迟半小时,然后由B2将COUNT中的10打印输出来。这时又做A1,它收到的是第11辆车到达的信息,通过做A2,COUNT里的值成为11。这时接着做B3,它把COUNT清零。结果导致该系统把第11辆车漏掉了,少计算了一辆车。这正是在多道程序设计环境下,结果的再现性已不再存在的例子。习题31.术语解释后备作业后备作业队列高级调度低级调度中级调度非抢占式调度策略抢占式调度策略吞吐量处理机限制型作业I/O限制型作业作业的周转时间作业的带权周转时间CPU的利用率作业的响应比FCF
32、S作业调度短作业优先调度最短剩余时间调度最高响应比调度轮转调度优先级调度多级队列调度多级反馈队列调度最早截止时间最晚截止时间硬实时任务软实时任务周期性任务非周期性任务任务速率最早截止时间优先速率单调调度Linux的活动进程Linux的过期进程答案:被系统接纳的作业,在没有真正投入运行之前被称为“后备作业”。所有后备作业的JCB链接在一起,形成所谓的“后备作业队列”。这些作业没有资格参与对处理机的竞争,但系统是从它们的里面去挑选参与CPU竞争的作业的。决定哪一个后备作业可以进入到系统去接受处理的调度,称为“高级调度”,它控制着多道程序设计环境的“度”。真正决定CPU下一次执行哪一个进程,并按照一
33、定的算法从就绪队列里挑选出可运行的进程投入运行的调度,称为“低级调度”。在系统出现过高的并发度时,应将内存中的某些进程暂时换出到外存;在系统的并发度较低时,应将外存中的某些进程换入到内存。实现进程在内、外存间换出和换入的调度,就称为“中级调度”,它通过这种交换,以求达到调节和平衡系统“并发度”的目的。非抢占式也称非剥夺式。实施这种调度策略的系统,在调度程序把CPU分配给了某个进程使用后,就会一直让它使用下去,直到进程完成自己的工作自愿释放CPU,或因为要等待某个事件的发生而交出CPU,在此期间不允许其他进程从运行进程手中夺取CPU。抢占式也称剥夺式。实施这种调度策略的系统,在调度程序把CPU分
34、配给了某个进程使用后,只要满足某种条件,就允许立即通过调用调度程序,把CPU从运行进程手中夺取过来,分配给满足条件的进程使用,而不管当前运行进程是否愿意。所谓“吞吐量”,是指单位时间内CPU完成作业的数量。所谓“处理机限制”型作业,即该作业需要花费大量的CPU时间,很少输入/输出,因此有时也称“CPU繁忙”型作业。所谓“I/O限制”型作业,即该作业在运行期间主要是输入/输出,很少需要进行计算和处理,有时也称“I/O繁忙”型作业。作业的“周转时间”,是指该特定作业从提交给系统到获取结果所经历的时间间隔。所谓一个特定作业的“带权周转时间”,是指该作业的周转时间与所需运行时间之比。所谓“CPU的利用
35、率”,是指在一定的时间区间内,CPU为用户提供服务的时间与CPU总运行时间的比率。所谓作业的“响应比”,是指一个特定作业的周转时间与它所需的执行时间之比。FCFS作业调度算法基于作业到达后备队列的先后次序以及作业对系统资源的需求,从中挑选进入内存、参与CPU竞争的作业对象。短作业优先调度算法是基于作业要求的运行时间来进行调度。在需要调度时,调度程序总是在作业后备队列里选择要求运行时间短的、满足其资源需要的作业进入内存,参与对CPU的竞争。最短剩余时间优先作业调度算法,是从后备作业队列里挑选所需运行时间最短的作业投入运行;在运行过程中,若有所需运行时间更短的作业达到,那么它就抢占CPU,让当前正
36、在运行的作业暂停执行。最高响应比调度算法,是在每个作业运行完毕进行下一次调度时,计算作业后备队列里所有作业当前的响应比RR,从中挑选出响应比值最高者进入内存,参与对CPU的竞争。轮转调度算法,有时也称时间片轮转算法,是一种基于时钟中断和FCFS调度的抢占式调度算法。系统时钟周期性地产生中断。中断发生时,迫使当前正在运行的进程中止运行,到就绪队列里排队,随之调度程序按FCFS从就绪队列里选择下一个就绪进程投入运行。优先级调度算法,是基于进程优先级进行的调度算法。在需要调度时,HPF算法总是从就绪队列里挑选优先级最高者投入运行。多级队列调度算法,是把就绪进程按不同的性质组合成若干个就绪队列,每个队
37、列实行不同的进程调度算法。多级反馈队列调度算法,是在多级队列调度算法基础上加入队列间的反馈措施构成的,它允许进程在不同的就绪队列里移动。最早截止时间是指一个实时任务最晚什么时候必须开始的那个时刻。最晚截止时间是指一个实时任务最晚什么时候必须完成的那个时刻。所谓“硬实时任务”,是指对这种任务的处理必须满足它时限的要求,否则会给系统带来无法预测的结果或产生致命的错误。所谓“软实时任务”,是指这种任务的处理也与一个时限相关联,但这不是强制性的要求,即使超过了一点儿时限,调度和完成该任务仍然是有意义的。所谓“周期性任务”,是指该任务每过一定的时间间隔T就要做一次(做一次就称为该任务的一个“实例”)。也
38、就是说,每隔T个CPU单位时间做一次。所谓“非周期性任务”,是指那些只有开始或结束的时限约束的任务。所谓“任务速率”,是该任务周期T(单位为秒)的倒数。最早截止时间优先算法,是指通过任务最早截止时间所确定的优先级来进行调度。速率单调调度算法,是基于任务的周期确定出任务的优先级,然后根据优先级进行调度。Linux的活动进程,是指上次没有使用完自己的时间片的那些进程。Linux的过期进程,是指上次使用完自己的时间片的那些进程。2. 试述高级、中级、低级三种调度的区别。答:高级调度是从后备作业队列里选择一个或多个作业,为其分配必要的资源,并为之创建进程,做好运行前的准备,它主要解决有无资格参与CPU
39、竞争的问题;低级调度是从进入内存的进程就绪队列里,选择一个进程真正占有CPU,为其运行实施进程间的切换,让它立即运行,它主要解决进程真正在CPU上运行的问题;中级调度是基于系统确定的某种策略,将内存中处于等待状态或就绪状态的某个或某些进程交换到辅存交换区,以便把交换区中具有运行条件的进程换入内存,以解决内存紧张和提高内存利用率的问题。3. 作业调度算法中,若所有作业同时到达,那么, B 调度算法能够使作业的平均周转时间为最小。A. FCFS B. SJF C. SRTFD. HRRN4. CPU的利用率和使用率有什么不同?答:CPU的利用率是指CPU为用户提供服务的时间与CPU总运行时间的比;
40、CPU的使用率则是指CPU工作时间(为用户提供服务的时间与系统为提供服务所需的额外开销之和)与CPU总运行时间的比。CPU的利用率里不包含系统的额外开销。5. 有如图3-26所示的进程状态变迁图。试回答下列问题:(1)给出一个进程发生变迁3、4、6的原因。(2)能发生23、45、72、36这样的因果变迁吗?若会,请说明发生的条件。(3)根据状态变迁图,说明该系统使用的CPU调度算法和调度效果。图3-26 应用问答题4的状态变迁图答:(1)一个运行进程等待某事件发生时,发生变迁3;采用抢占式优先级调度,有更高优先级进程变为就绪时,发生变迁4;进程所等待的I/O完成时,使进程变为高优先级就绪,发生
41、变迁6。(2)不会有23的因果变迁;当分配给进程的时间片用完时,会发生45的变迁;72变迁是会发生的,因为一个进程运行完毕,进程调度程序会先从高优先级就绪队列中选择一个进程运行;不会有36的因果变迁。(3)系统采用的是抢占式优先级调度算法,使需要紧急处理的进程能够得到及时的响应和处理。6. 有两个作业J1和J2。J1的执行顺序是:使用10s的CPU,使用5s的设备A,使用5s的CPU,使用10s的设备B,最后使用10s的CPU结束。J2的执行顺序是:使用10s的设备A,使用10s的CPU,使用5s的设备B,使用5s的CPU,最后使用10s的设备B结束。在顺序环境下首先执行作业J1,再执行作业J
42、2。试问CPU的利用率是多少?答:根据题意,作业J1的运行时间为10+5+5+10+10=40s,其中CPU的运行时间是10+5+10=25s。作业J2的运行时间为10+10+5+5+10=40s,其中CPU的运行时间是10+5=15s。因此,CPU的利用率为:(15+25)/(40+40)=50%。7. 设系统中有n(n =3)个进程,且当前并不是在执行进程调度程序。试分析下面给出的各种情况是否有可能,为什么?(1)没有运行进程,没有就绪进程,n个进程处于等待状态;(2)没有运行进程,有一个就绪进程,n-1个进程处于等待状态;(3)有一个运行进程,没有就绪进程,n-1个进程处于等待状态;(4
43、)有一个运行进程,一个就绪进程,n-2个进程处于等待状态;(5)有一个运行进程,n-1个就绪进程,没有任何进程处于等待状态。答:(1)有可能。当n个进程由于I/O请求、且都尚未完成而处于等待状态时,既没有运行进程,也没有就绪进程。(2)不可能。只要CPU空闲,而且有一个就绪进程,那么一定会发生CPU调度,因此不可能存在有一个就绪进程而没有运行进程的情况。(3)可能。当n-1个进程由于请求I/O、且I/O都未完成时,这n-1个进程就处于等待状态。此时没有就绪进程,只有一个进程在运行。(4)可能。当n-2个进程由于请求I/O、且I/O都未完成时,这n-2个进程就处于等待状态。此时有一个运行进程,另
44、一个肯定是处于就绪状态。(5)可能。当一个进程处于运行状态时,其他n-1个进程可能会都处于就绪状态,在就绪队列里等待运行。8. 某个进程被唤醒后又立即投入了运行,因此可以说该系统采用的是剥夺式调度策略。此结论对吗,为什么?答:不对。若进程被唤醒前CPU恰处于空闲状态,那么某进程被唤醒后就会立即得到运行,但这并不是剥夺式的调度策略。只有当一个进程被唤醒后,立即抢占当前运行进程的CPU,那么才可以说系统采取的是剥夺式调度策略。9.一个单CPU系统共有n个进程。试给出:(1)拥有运行进程的个数;(2)拥有就绪进程的个数;(3)拥有阻塞进程的个数。答:(1)在这个系统里,最多可以有1个运行进程,也可以
45、一个运行进程也没有。(2)0=就绪进程的个数=n-1。(3)0=阻塞进程的个数=n。10. 有5个作业:作业到达时间所需CPU时间110.10.7210.30.5310.50.4410.60.4510.70.2它们进入后备作业队列的到达时间如上所示(注意,不是同时到达)。采用FCFS的作业调度算法。请计算每个作业的周转时间以及它们的平均周转时间。(忽略系统调度时间)答:按照FCFS的作业调度算法,调度顺序应该是:1、2、3、4、5。每个作业的完成时间和周转时间如下所示:作业到达时间所需CPU时间完成时间周转时间110.10.710.80.7210.30.511.31310.50.411.71.
46、2410.60.412.11.5510.70.212.31.6不难算出它们的平均周转时间是1.2。(这里,把时间都按十进制计算,即0.1代表6分钟)11. 考虑同时到达系统的四个作业P1P4,P1所需CPU时间为6;P2所需CPU时间为8;P3所需CPU时间为7;P4所需CPU时间为3。分别对它们采用FCFS和SJF调度算法,计算作业的平均等待时间。答:对于SJF算法,进程P1的等待时间是3,进程P2的等待时间是16,进程P3的等待时间是9,进程P4的等待时间是0。因此,平均等待时间为(3+16+9+0)/4=7。如果采用FCFS调度算法,平均等待时间为10.25。12. 有如下四个作业P1P4:作业到达时间所需CPU时间P108P214P329P435对它们实施SRTF调度算法,试计算作业的平均等待时间。若实施SJF调度算法,平均等待时间又是多少?答: