• 666.00 KB
  • 2022-04-22 11:29:58 发布

《操作系统》习题解答.doc

  • 46页
  • 当前文档由用户上传发布,收益归属用户
  1. 1、本文档共5页,可阅读全部内容。
  2. 2、本文档内容版权归属内容提供方,所产生的收益全部归内容提供方所有。如果您对本文有版权争议,可选择认领,认领后既往收益都归您。
  3. 3、本文档由用户上传,本站不保证质量和数量令人满意,可能有诸多瑕疵,付费之前,请仔细先通过免费阅读内容等途径辨别内容交易风险。如存在严重挂羊头卖狗肉之情形,可联系本站下载客服投诉处理。
  4. 文档侵权举报电话:19940600175。
'《操作系统》习题解答《操作系统》习题解答习题11.术语解释裸机虚拟机操作系统程序接口命令接口非特权指令特权指令核心态用户态系统调用微内核批处理系统分时实时指令的执行周期中断中断源中断请求中断屏蔽中断禁止GPLPOSIX时间片答案:·未配置任何软件的计算机称为“裸机”。·在裸机上安装一层软件,使机器的功能得以扩展,这时展现在用户面前的“机器”,就是所谓的虚拟机。·操作系统是控制和管理计算机硬件和软件资源、合理地组织计算机工作流程以及方便用户使用计算机的一个大型系统软件。·在用户编写的程序中,可使用系统调用命令获得操作系统提供的各种功能服务,这是操作系统在程序一级给予用户的支持,称其为程序接口。·用户可使用操作系统提供的各种操作命令,通过键盘(或鼠标)控制和完成程序的运行,这是操作系统在作业控制一级给予用户的支持,称为命令接口。·操作系统和用户程序都能使用的硬指令,称为非特权指令。·只能由操作系统使用的硬指令,称为特权指令。·所谓核心态,是指CPU处于可执行包括特权指令在内的一切机器指令的状态。·所谓用户态,是指CPU处于只能执行非特权指令的状态。·操作系统里预先编制了很多不同功能的子程序。用户在自己的程序里调用这些子程序,以求得操作系统提供的功能服务。就把这些功能服务子程序称为“系统功能调用”程序,简称“系统调用”。·微内核即是把操作系统的内核分为基本功能和非基本功能两部分,在内核里只保留基本功能部分,在核心态下运行;非基本功能部分则从内核剥离下来,让它们以各种服务的形式,在用户态下运行。这一的操作系统内核,称为微内核。·若在某系统中,用户作业被分批处理,在处理一批的过程中不允许用户与计算机发生交互作用,即使作业在运行中出现错误,也只能等到整批作业处理完毕后在机下修改。这样的系统,就是所谓的“批处理系统”。·所谓分时,即指多个用户通过各自的终端同时访问系统,由操作系统控制每个用户程序以很短的时间为单位交替执行。·所谓实时,是指能够及时响应随机发生的外部事件并对事件做出快速处理的一种能力。·一个单一的指令需要的处理过程,称为指令的一个“执行周期”。·所谓“中断”,是指在CPU执行程序过程中,由于内部或某个外部事件的发生,让CPU暂时中止正在执行的程序而转向该突发事件的处理,处理完毕后返回被中止的程序继续执行的这样一个处理过程。·凡能引起中断的设备或事件均称为“中断源”。-45- 《操作系统》习题解答·中断源向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%磁盘使用33%67%打印机使用33%67%-45- 《操作系统》习题解答总共运行时间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利用率最高的系统。-45- 《操作系统》习题解答习题21.术语解释并发并行进程用户进程系统进程创建状态就绪状态运行状态阻塞状态终止状态就绪/挂起状态阻塞/挂起状态进程控制块PCB进程映像原语线程用户级线程线程库内核级线程位图答案:·所谓“并发”,是指从宏观上看在一段时间内有多个程序在同时运行,而从微观上看这些程序是在交替运行。或所谓“并发”,是指逻辑上相互独立的几个应用程序,同时处于活动状态,并竞争使用系统中的各种资源(如CPU、内存、硬设备等)。·所谓“并行”,是指多个程序在同一时刻运行。·所谓“进程”是指一个程序在给定数据集合上的一次执行过程,是系统进行资源分配和运行调度的独立单位。·操作系统中用于管理系统资源的那些可以并发执行的程序,构成了一个个系统进程,它们提供系统的服务,分配系统的资源·可以并发执行的用户程序段,形成了一个个用户进程,它们是操作系统的服务对象,是系统资源的实际的享用者。·创建状态:一个进程正在初创时期,操作系统还没有把它列入到可执行的进程行列中。·就绪状态:一个进程已经具备运行的条件,只要有机会获得CPU就可以投入运行。·运行状态:一个进程获得了CPU正在被执行中。假定系统中只有一个CPU,因此任何时候最多只有一个进程处于运行状态。·阻塞状态:进程正在等待某个事件(比如I/O的完成)的发生,在事件到来之前,即使把CPU分配给这个进程,它也无法运行。·终止状态:一个进程或正常结束,或因某种原因被强制结束。这时,系统正在为其进行善后处理。·就绪/挂起状态:进程在辅存,只要被激活,进程就可以调入内存,如果获得CPU就可以投入运行。·阻塞/挂起状态:进程在辅存等待事件的发生。只要被激活,进程就可以调入到内存里去等待事件的发生。·为了便于管理和控制进程的执行,为了随时刻画进程的动态特性,为了反映进程间的相互关系,操作系统就用一个与进程有关的数据结构来完成这样的任务。这个数据结构就称为“进程控制块(PCB)”。·进程将要执行的程序、数据以及进程控制块PCB,这三个部分组成的集合,称为“进程映像”。·在操作系统里,那种“在执行期间不能被打断、不能被分割”的程序段,称作“原语”。·所谓“线程”,是指进程中实施处理器调度和分配的基本单位。·如果有关线程的管理工作(比如线程的创建、撤销,线程间的消息和数据传递,线程的调度和现场保护及恢复等),都是由运行在用户空间的应用程序完成,那么这样的线程称为“用户级线程”。·完成用户级线程管理工作的应用程序,称为“线程库”。·-45- 《操作系统》习题解答如果有关线程管理的所有工作都是由内核完成的,用户空间里没有任何进行线程管理的程序,系统给应用程序提供相应的系统调用和应用程序编程接口(API),以使用户程序可以创建、执行、撤销线程。那么这样的线程称为“内核级线程”。·在内存开辟一个由若干个字组成的区域,用其中的每一个二进制位表示一种含义。这个区域就称为是一个“位图”。2.在多道程序设计下,进程具有什么样的特征?答:在多道程序设计下,进程有如下几个方面的特征。(1)进程是一个动态的概念,强调的是程序的一次“执行”过程。(2)不同进程可以执行同一个程序。(3)每一个进程都有自己的生命期。(4)进程之间具有并发性。(5)进程间会相互制约。3.什么是一个进程的生命期?答:进程的本质是程序的一次执行过程,当系统要完成某一项工作时,就“创建”一个进程,以便执行事先编写好的、完成该工作的那段程序;程序执行完毕,完成预定的任务后,系统就“撤销”这个进程,收回它所占用的资源。一个进程创建后,系统就感知到它的存在;一个进程撤销后,系统就无法再感知到它。于是,从创建到撤销,这个时间段就是一个进程的“生命期”。4.系统进程与用户进程有什么区别?答:系统进程与用户进程是两类不同性质的进程,主要区别如下。(1)系统进程之间的相互关系由操作系统负责协调,以便有利于增加系统的并行性,提高资源的整体利用率;用户进程之间的相互关系要由用户自己(在程序中)安排。不过,操作系统会向用户提供一定的协调手段(以系统调用命令的形式)。(2)系统进程直接管理有关的软、硬件资源的活动;用户进程不得插手资源管理,在需要使用某种资源时,必须向系统提出申请,由系统统一调度与分配。(3)系统进程与用户进程都需要使用系统中的各种资源,它们都是资源分配与运行调度的独立单位,但系统进程的使用级别,应该高于用户进程。也就是说,在双方出现对资源的竞争时,系统进程有优先获得资源、优先得以运行的权利。只有这样,才能保证计算机系统高效、有序的工作。(4)通常,系统进程运行在核心态,用户进程运行在用户态。不过,在微内核模式下,只有那些执行基本功能程序的进程,运行在核心态,而那些执行非基本功能程序的进程,则是以各种服务的形式运行在用户态。5.在多道程序设计环境的进程中引入“挂起”状态,对整个系统有什么好处?答:挂起一个进程就是把这个进程调出内存,放到辅存的交换区去。这样做的好处是通过把在内存中等待的进程交换到辅存,就可以腾出宝贵的内存空间,就可以从辅存调入可运行进程,或可以接纳新进程,或可以为当前执行进程提供必要的存储空间,从而提高CPU的利用率。6.根据图2-4,请回答对如下问题:(1)在哪几种状态变迁下,一个进程会从内存交换到辅存?(2)在哪几种状态变迁下,一个进程会从辅存交换到内存?答:(1)在下面的三种状态变迁下,一个进程会从内存交换到辅存:·从阻塞状态变迁到阻塞/挂起状态;·从就绪状态变迁到就绪/变迁状态;·从运行状态变迁到就绪/挂起状态。(2)在下面两种状态变迁下,一个进程会从辅存交换到内存:·从就绪/挂起状态变迁到就绪状态;·从阻塞/挂起状态变迁到阻塞状态。-45- 《操作系统》习题解答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。-45- 《操作系统》习题解答A.无论是内核级线程还是用户级线程,其切换都要内核的支持B.线程是资源分配的单位,进程是调度和分派的单位C.不管系统中是否有线程,进程都是拥有资源的独立单位D.在引入线程的系统中,进程仍是资源和调度分派的基本单位16.下面关于用户级线程的叙述,错误的是D。A.用户级线程的切换无需进入内核模式B.线程库提供对用户线程的调度C.操作系统无需对内核进行修改以支持用户级线程D.用户级线程是CPU调度的基本单位17.下面关于内核级线程的叙述,错误的是B。A.处理机调度可以为一个进程中的多个内核线程分配多个CPUB.如果一个进程中的一个线程被阻塞,整个进程都必须等待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-45- 《操作系统》习题解答而成为主动行为者,因此只能由其他运行进程来实施唤醒。所以进程不能自己唤醒自己。(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辆车漏掉了,少计算了一辆车。这正是在多道程序设计环境下,结果的再现性已不再存在的例子。习题31.术语解释后备作业后备作业队列高级调度低级调度-45- 《操作系统》习题解答中级调度非抢占式调度策略抢占式调度策略吞吐量处理机限制型作业I/O限制型作业作业的周转时间作业的带权周转时间CPU的利用率作业的响应比FCFS作业调度短作业优先调度最短剩余时间调度最高响应比调度轮转调度优先级调度多级队列调度多级反馈队列调度最早截止时间最晚截止时间硬实时任务软实时任务周期性任务非周期性任务任务速率最早截止时间优先速率单调调度Linux的活动进程Linux的过期进程答案:·被系统接纳的作业,在没有真正投入运行之前被称为“后备作业”。·所有后备作业的JCB链接在一起,形成所谓的“后备作业队列”。这些作业没有资格参与对处理机的竞争,但系统是从它们的里面去挑选参与CPU竞争的作业的。·决定哪一个后备作业可以进入到系统去接受处理的调度,称为“高级调度”,它控制着多道程序设计环境的“度”。·真正决定CPU下一次执行哪一个进程,并按照一定的算法从就绪队列里挑选出可运行的进程投入运行的调度,称为“低级调度”。·在系统出现过高的并发度时,应将内存中的某些进程暂时换出到外存;在系统的并发度较低时,应将外存中的某些进程换入到内存。实现进程在内、外存间换出和换入的调度,就称为“中级调度”,它通过这种交换,以求达到调节和平衡系统“并发度”的目的。·非抢占式也称非剥夺式。实施这种调度策略的系统,在调度程序把CPU分配给了某个进程使用后,就会一直让它使用下去,直到进程完成自己的工作自愿释放CPU,或因为要等待某个事件的发生而交出CPU,在此期间不允许其他进程从运行进程手中夺取CPU。·抢占式也称剥夺式。实施这种调度策略的系统,在调度程序把CPU分配给了某个进程使用后,只要满足某种条件,就允许立即通过调用调度程序,把CPU从运行进程手中夺取过来,分配给满足条件的进程使用,而不管当前运行进程是否愿意。·所谓“吞吐量”,是指单位时间内CPU完成作业的数量。·所谓“处理机限制”型作业,即该作业需要花费大量的CPU时间,很少输入/输出,因此有时也称“CPU繁忙”型作业。·所谓“I/O限制”型作业,即该作业在运行期间主要是输入/输出,很少需要进行计算和处理,有时也称“I/O繁忙”型作业。·作业的“周转时间”,是指该特定作业从提交给系统到获取结果所经历的时间间隔。·所谓一个特定作业的“带权周转时间”,是指该作业的周转时间与所需运行时间之比。所谓“CPU的利用率”,是指在一定的时间区间内,CPU为用户提供服务的时间与CPU总运行时间的比率。·所谓作业的“响应比”,是指一个特定作业的周转时间与它所需的执行时间之比。·FCFS作业调度算法基于作业到达后备队列的先后次序以及作业对系统资源的需求,从中挑选进入内存、参与CPU竞争的作业对象。·短作业优先调度算法是基于作业要求的运行时间来进行调度。在需要调度时,调度程序总是在作业后备队列里选择要求运行时间短的、满足其资源需要的作业进入内存,参与对CPU的竞争。·最短剩余时间优先作业调度算法,是从后备作业队列里挑选所需运行时间最短的作业投入运行;在运行过程中,若有所需运行时间更短的作业达到,那么它就抢占CPU,让当前正在运行的作业暂停执行。-45- 《操作系统》习题解答·最高响应比调度算法,是在每个作业运行完毕进行下一次调度时,计算作业后备队列里所有作业当前的响应比RR,从中挑选出响应比值最高者进入内存,参与对CPU的竞争。·轮转调度算法,有时也称时间片轮转算法,是一种基于时钟中断和FCFS调度的抢占式调度算法。系统时钟周期性地产生中断。中断发生时,迫使当前正在运行的进程中止运行,到就绪队列里排队,随之调度程序按FCFS从就绪队列里选择下一个就绪进程投入运行。·优先级调度算法,是基于进程优先级进行的调度算法。在需要调度时,HPF算法总是从就绪队列里挑选优先级最高者投入运行。·多级队列调度算法,是把就绪进程按不同的性质组合成若干个就绪队列,每个队列实行不同的进程调度算法。·多级反馈队列调度算法,是在多级队列调度算法基础上加入队列间的反馈措施构成的,它允许进程在不同的就绪队列里移动。·最早截止时间是指一个实时任务最晚什么时候必须开始的那个时刻。·最晚截止时间是指一个实时任务最晚什么时候必须完成的那个时刻。·所谓“硬实时任务”,是指对这种任务的处理必须满足它时限的要求,否则会给系统带来无法预测的结果或产生致命的错误。·所谓“软实时任务”,是指这种任务的处理也与一个时限相关联,但这不是强制性的要求,即使超过了一点儿时限,调度和完成该任务仍然是有意义的。·所谓“周期性任务”,是指该任务每过一定的时间间隔T就要做一次(做一次就称为该任务的一个“实例”)。也就是说,每隔T个CPU单位时间做一次。·所谓“非周期性任务”,是指那些只有开始或结束的时限约束的任务。·所谓“任务速率”,是该任务周期T(单位为秒)的倒数。·最早截止时间优先算法,是指通过任务最早截止时间所确定的优先级来进行调度。·速率单调调度算法,是基于任务的周期确定出任务的优先级,然后根据优先级进行调度。·Linux的活动进程,是指上次没有使用完自己的时间片的那些进程。·Linux的过期进程,是指上次使用完自己的时间片的那些进程。2.试述高级、中级、低级三种调度的区别。答:高级调度是从后备作业队列里选择一个或多个作业,为其分配必要的资源,并为之创建进程,做好运行前的准备,它主要解决有无资格参与CPU竞争的问题;低级调度是从进入内存的进程就绪队列里,选择一个进程真正占有CPU,为其运行实施进程间的切换,让它立即运行,它主要解决进程真正在CPU上运行的问题;中级调度是基于系统确定的某种策略,将内存中处于等待状态或就绪状态的某个或某些进程交换到辅存交换区,以便把交换区中具有运行条件的进程换入内存,以解决内存紧张和提高内存利用率的问题。3.作业调度算法中,若所有作业同时到达,那么,B调度算法能够使作业的平均周转时间为最小。A.FCFSB.SJFC.SRTFD.HRRN4.CPU的利用率和使用率有什么不同?答:CPU的利用率是指CPU为用户提供服务的时间与CPU总运行时间的比;CPU的使用率则是指CPU工作时间(为用户提供服务的时间与系统为提供服务所需的额外开销之和)与CPU总运行时间的比。CPU的利用率里不包含系统的额外开销。5.有如图3-26所示的进程状态变迁图。试回答下列问题:(1)给出一个进程发生变迁3、4、6的原因。(2)能发生2→3、4→5、7→2、3→6这样的因果变迁吗?若会,请说明发生的条件。(3)根据状态变迁图,说明该系统使用的CPU调度算法和调度效果。-45- 《操作系统》习题解答图3-26应用问答题4的状态变迁图答:(1)一个运行进程等待某事件发生时,发生变迁3;采用抢占式优先级调度,有更高优先级进程变为就绪时,发生变迁4;进程所等待的I/O完成时,使进程变为高优先级就绪,发生变迁6。(2)不会有2→3的因果变迁;当分配给进程的时间片用完时,会发生4→5的变迁;7→2变迁是会发生的,因为一个进程运行完毕,进程调度程序会先从高优先级就绪队列中选择一个进程运行;不会有3→6的因果变迁。(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,再执行作业J2。试问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)有一个运行进程,一个就绪进程,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个进程就处于等待状态。此时有一个运行进程,另一个肯定是处于就绪状态。(5)可能。当一个进程处于运行状态时,其他n-1个进程可能会都处于就绪状态,在就绪队列里等待运行。8.某个进程被唤醒后又立即投入了运行,因此可以说该系统采用的是剥夺式调度策略。此结论对吗,为什么?答:不对。若进程被唤醒前CPU恰处于空闲状态,那么某进程被唤醒后就会立即得到-45- 《操作系统》习题解答运行,但这并不是剥夺式的调度策略。只有当一个进程被唤醒后,立即抢占当前运行进程的CPU,那么才可以说系统采取的是剥夺式调度策略。9.一个单CPU系统共有n个进程。试给出:(1)拥有运行进程的个数;(2)拥有就绪进程的个数;(3)拥有阻塞进程的个数。答:(1)在这个系统里,最多可以有1个运行进程,也可以一个运行进程也没有。(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.2410.60.412.11.5510.70.212.31.6不难算出它们的平均周转时间是1.2。(这里,把时间都按十进制计算,即0.1代表6分钟)11.考虑同时到达系统的四个作业P1~P4,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.有如下四个作业P1~P4:作业到达时间所需CPU时间P108P214P329P435对它们实施SRTF调度算法,试计算作业的平均等待时间。若实施SJF调度算法,平均等待时间又是多少?答:开始时,作业后备队列里只有作业P1,因此它在时刻0开始运行。作业P2在时刻1到达。这时,作业P1的剩余时间(7)大于作业P2所需的时间(4),因此P2抢占P1的CPU开始运行。这时整个调度情况如下图所示。所以,平均等待时间是:((10-1)+(1-1)+(17-2)+(5-3))/4=6.5如果采用SJF调度算法,那么平均等待时间为7.75。-45- 《操作系统》习题解答13.有4个作业:作业到达时间所需CPU时间A8.02B8.50.5C9.00.1D9.50.2它们进入后备作业队列的到达时间如上所示。采用HRRN调度算法,求每个作业的周转时间以及它们的平均周转时间。(忽略系统调度时间)答:初启时,后备作业队列里只有作业A,理所当然地调度它投入运行。它在时刻10时完成。重新调度时,作业B、C、D都已到达后备作业队列。根据HRRN,应该计算这一时刻这三个作业各自具有的响应比。比如对于作业B,它是在时间8.5到达后备作业队列,现在是时间10.0,它等待的时间为(10.0-8.5)=1.5。由于它所需的运行时间是0.5,因此该时刻它的响应比是1.5/0.5=3。下表给出了这一时刻三个作业各自的已等待时间和响应比。这时作业3有最高的响应比,因此它是第2个调度的对象。作业到达时间所需CPU时间已等待时间响应比B8.50.51.53C9.00.1110D9.50.20.52.5当前CPU时间=10.0作业C在时刻10.1运行完毕,作业B和作业D是参与调度的对象。这时,它们的已等待时间和各自的响应比如下表所示。可以看出,这次选中的应该是作业B,因为它的响应比是3.2。作业到达时间所需CPU时间已等待时间响应比B8.50.51.63.2D9.50.20.63当前CPU时间=10.1作业B在时刻10.6完成。最后调度运行的作业是作业D,它在时刻10.8完成。于是,这4个作业的完成时间和周转时间如下表所示。作业进入内存时间完成时间周转时间A8.010.02B10.110.62.1C10.010.11.1D10.610.81.3这4个作业的平均周转时间=1.625。14.有三个都已就绪的实时任务A、B、C,具体数据如表所示:实时任务所需执行时间周期A10ms30msB15ms40msC5ms50ms利用速率单调调度(RMS)算法对它们实施调度,画出任务的调度时序图。-45- 《操作系统》习题解答答:本题除了实施的调度算法不同外,与例3-11完全一样。不同之处发生在时刻90。在例3-11里,由于B3和A4的最早截止时间都是时刻120,因此调度谁都可以。但实施速率单调调度(RMS)算法时,只能调度A4运行,因为它的优先级高于B3,必须从B3那里抢占CPU。任务的调度时序,如图3-27所示。图3-27应用问答题13的答案15.有三个都已就绪的实时任务A、B、C,具体数据如表所示:实时任务所需执行时间周期A15ms30msB15ms40msC5ms50ms利用最早截止时间优先(EDF)调度算法对它们实施调度,画出任务的调度时序图。答:本题除了实施的调度算法不同外,与例3-12完全一样。对RMS算法,作用在这三个任务上时,有丢失任务实例的情形存在。但对EDF算法,一切都属正常,可以较好地完成任务的调度。整个任务的调度时序,如图3-28所示。图3-28应用问答题14的答案习题41.术语解释地址重定位绝对地址物理地址空间相对地址空间相对地址绝对定位静态重定位动态重定位链接编辑静态链接动态链接固定分区存储管理内部碎片可变分区存储管理外部碎片紧凑最先适应最佳适应覆盖对换页帧和页页表相联存储器命中率分段式存储管理段表-45- 《操作系统》习题解答答案:·对程序指令中的地址进行调整,使其反映程序所在存储区的正确位置,这就是所谓的“地址重定位”。·内存单元的地址称为绝对地址或物理地址。·从任何一个绝对地址开始的一段连续的内存空间,被称为“物理地址空间”,或“绝对地址空间”。·程序通过链接编辑,产生出一个相对于“0”计算的地址空间,这个地址空间被称为是用户程序的“相对地址空间”,或“逻辑地址空间”。·相对地址空间中的地址,被称为“相对地址”或“逻辑地址”。·所谓“绝对定位”,即是在程序装入内存之前,程序指令中的地址就已经是绝对地址,已经正确地反映了它将要进入的存储区位置。·在程序执行前完成指令地址的重定位,称为地址的“静态重定位”,或称为“静态地址绑定”。·将地址定位的时间推迟到程序执行时再进行,则被称为地址的“动态重定位”。·所谓“链接编辑”是指把单独翻译后的一个个目标程序代码,链接编辑产生出一个统一的目标程序代码的过程。·所谓“静态链接”,是指整个链接编辑工作发生在程序运行之前,由链接编辑程序将一个个程序段的相对地址空间链接成为一个大的、统一的相对地址空间。·所谓“动态链接”,是指把对程序段的链接编辑工作推迟到程序执行时进行,即在遇到外部引用时,才对所涉及的程序段进行链接编辑工作,将它纳入到统一的地址空间中。·事先把内存划分成一个个固定尺寸的分区,把它们分配给用户程序使用,即为“固定分区存储管理”。·在操作系统中,把分配给了用户、但未被使用的区域称为“内部碎片”。内部碎片的存在是对内存资源的一种浪费。·所谓“可变分区存储管理”,是指在作业要求装入内存时,如果当时内存有足够的连续存储空间供使用,那么就依照作业相对地址空间的大小,划分出一个分区分配给它。·把那些无法满足作业存储请求的空闲区称为“外部碎片”。·在可变分区存储管理中,对空闲分区的合并,有时被称为“紧凑”。·在需要存储分配时,总是把最先找到的、满足存储需求的那个空闲分区作为分配的对象。这种策略称为“最先适应”或称“首次适应”。在需要存储分配时,总是从当前所有空闲区中找出一个能够满足存储需求的、最小的空闲分区作为分配的对象。这种策略称为“最佳适应”。·所谓“覆盖”是早期为程序设计人员提供的一种扩充内存的技术,其中心思想是允许一个作业的若干个程序段使用同一个存储区,被共用的存储区称为“覆盖区”。各程序段存放在磁盘上,需要时由操作系统完成对它们的调入或调出。·所谓“对换”,是指将作业信息都存放在辅助存储器上,根据单一分区存储管理的分配策略,每次只让其中的一个进入内存投入运行。当运行中提出输入/输出请求或分配给的时间片用完时,就把这个程序从内存“换出”到辅存,把辅存里的另一个作业“换入”内存运行,从而达到系统中同时有几个作业处在运行之中的目的。·在分页式存储管理中,内存空间被事先划分成一个个大小相同的存储分区,称为“页帧”,简称“帧”。页帧是分页式存储管理对存储空间进行分配的单位。另一方面,系统在内部按照帧的尺寸对用户作业的相对地址空间进行划分,每个部分被称为一“页”。·在分页式存储管理中,为作业建立的页、帧对应关系,称为该作业的“页表”-45- 《操作系统》习题解答。系统中的每一个作业,都有关于自己的页表。用户作业相对地址空间划分成多少页,其页表中就含有多少个表项,表项按页号顺序排列。·所谓“相联存储器”,是利用高速缓存组成的一个表,有时也称为“转换后备缓冲”或“快表”,用它配合内存中的页表,一起完成地址转换的工作。·通过查相联存储器就能得到页号所对应页帧号的百分比,被称为“命中率”。·所谓“分段式存储管理”,即是要求用户将自己的整个作业程序以多个相互独立的称为“段”的地址空间提交给系统,每个段都是一个从“0”开始的一维地址空间,长度不一。操作系统按照段长为作业分配内存空间。·所谓“段表”,是实施分段式存储管理时,系统为每个用户程序设置一个记录各段在内存中存放信息的表。逻辑空间中有多少段,段表里就有多少个表项。每个表项通常包括的信息有段号、段长、该段的基址(即起始地址)等。所谓“段页式存储管理”,是指将用户的作业地址空间按分段来管理,系统在内部将组成该空间的每一个段按内存页帧的尺寸划分成固定大小的页。这样,任何一个用户作业有一个段表,作业中的每一个段有一个页表。系统通过一个段表和若干个页表,实现对作业存储空间的管理和地址转换。2.在固定分区存储管理中,每个分区的大小是C。A.相同的B.可以不同,但作业长度固定C.可以不同,但事先划分好D.根据用户要求而定3.在可变分区存储管理中,紧凑的目的是A。A.合并空闲区B.合并已分配区C.增加内存容量D.便于地址转换4.在下列存储管理方案中,不适用于多道程序设计环境的是A。A.单一分区管理B.固定分区管理C.可变分区管理D.段页式管理5.可变分区存储管理采用的地址转换公式是C。A.物理地址=界限寄存器值+相对地址B.物理地址=下限寄存器值+相对地址C.物理地址=基址寄存器值+相对地址D.物理地址=帧号×页帧长+页内位移6.最坏适应算法中,最好要求空闲分区按照D顺序形成空闲分区链表。A.地址递增B.地址递减C.尺寸递增D.尺寸递减7.在分段式存储管理中,是由用户实施分段的。因此B。A.段内和各段间的地址都是连续的B.段内的地址是连续的,各段间的地址可以不连续C.段内的地址可以不连续,但段间的地址是连续的D.段内的地址和各段间的地址都是不连续的8.采用B的存储管理方式,不会产生内部碎片。A.固定分区B.分段式C.分页式D.段页式9.在分页式存储管理中,若用字长为32位的8个字组成位图管理内存。现在用户归还一个页帧号为100的帧。那么它对应位图的位置是C。A.字号3,位号5B.字号4,位号4C.字号3,位号4D.字号4,位号5(100/32的商为3,余数为4)10.在各种内存的基本管理模式中,D模式的存储利用率最高,且最容易实现对存储的共享和保护。A.分区管理B.分段管理C.分页管理D.段页式管理11.一个分段式存储管理系统,地址用24位表示,其中8位表示段号。那么每段的最大长度应该是B。A.224B.216C.28D.232-45- 《操作系统》习题解答12.在分页式存储管理系统中,逻辑地址长为16个二进制位,页面尺寸为4KB。某作业的页和页帧的对应关系是:0→5、1→10、2→11。现有一个逻辑地址的十六进制表示为2F6A,试问其物理地址为多少(用十六进制表示)?答:逻辑地址中高4位为页号,低12位为页内位移。逻辑地址2F6A=0010111101101010。由此可知该地址在第2页里,第2页在第11页帧,用十六进制表示为页帧号为B。所以对应的物理地址为BF6A。13.一个作业有4页,每页尺寸为1KB。该作业的页和页帧对应关系为:0→3、1→5、2→6、3→2。给出下面的逻辑地址,请将它们转换成对应的物理地址。(1)(0,100);(2)(1,179);(3)(2,785);(4)(3,1010)答:(1)3072+100=3172;(2)5120+179=5299;(3)6144+785=6929;(4)2048+1010=305814.假定访问相联存储器的时间为20ns,访问内存的时间是100ns。若相联存储器的命中率为80%。试问现在进行一次内存存取的平均时间是多少?比只采用页表下降了多少?那么分页存储管理访问内存比直接访问内存慢了多少?如果相联存储器的命中率为98%,同样回答这些问题。答:通过相联存储器进行内存存取的时间是100 + 20 = 120ns;通过页表进行内存存取的时间是20+100 + 100 = 220ns(先访问相联存储器失败,再两次访问内存)。由于相联存储器的命中率为80%,因此现在进行一次内存存取的平均时间是:120× 80% + 220× 20% = 140ns只用页表进行内存存取,每次需要200ns。因此,采用AM比只采用页表少花200 − 140= 60ns。60ns在200ns中所占的比率为:(60/200) × 100% =30%,即下降了30%。现在访问内存的速度是140ns,以前是100ns,因此现在比以前要慢40%。如果相联存储器的命中率该为98%,那么现在进行一次内存存取的平均时间是:120× 98% + 220× 2% = 122ns只用页表进行内存存取,每次需要200ns。因此,采用AM比只采用页表少花200 − 122= 78ns。78ns在200ns中所占的比率为:(78/200) × 100% =39%,即下降了39%。现在访问内存的速度是122ns,以前是100ns,因此现在比以前要慢22%。15.当前内存中的空闲分区如图4-31所示,最后一次是将一个22KB的空闲区分配出去14KB,留下8KB的空闲区。现在有一个需要16KB的存储请求。分别使用最先适应算法、最佳适应算法和下次适应算法进行这次存储分配,各会对哪个空闲区进行分配?图4-31应用问答题14的空闲分区图答:最先适应算法应该对22KB的空闲分区进行分配,分配后该分区还剩余6KB形成一个新的空闲分区;最佳适应算法应该对18KB的空闲分区进行分配,分配后该分区还剩余2KB形成一个新的空闲分区;下次适应算法应该对36KB的空闲分区进行分配,分配后该分区还剩余20KB形成一个新的空闲分区。16.如图4-32所示为某个时刻内存的分配情况,深色处为已分配区,白色处为空闲区。接下来有三个内存请求:40KB、20KB、10KB。对它们分别实行(1)最先适应算法、(2)最佳适应算法、(3)下次适应算法(假定最近分配的存储区位于内存开始处)、(4)最坏适应算法。请指出三个请求分配存储区的起始地址。-45- 《操作系统》习题解答图4-32应用问答题15的空闲分区图答:(1)最先适应算法:40KB的起始地址为80KB;20KB的起始地址为20KB;10KB的起始地址为120KB。(2)最佳适应算法:40KB的起始地址为230KB;20KB的起始地址为20KB;10KB的起始地址为160KB。(3)下次适应算法:40KB的起始地址为80KB;20KB的起始地址为120KB;10KB的起始地址为160KB。(4)最坏适应算法:40KB的起始地址为80KB;20KB的起始地址为230KB;10KB的起始地址为360KB。17.利用伙伴系统分配一个1MB的内存区域,存储请求和释放的序列为:请求A(70KB)、请求B(35KB)、请求C(80KB)、释放A、请求D(60KB)、释放B、释放D、释放C。画出类似于图4-19的图。答:结果如下图所示。18.某系统采用分页式存储管理策略,用户地址空间最多可以有32页,每页2KB。内存尺寸为1MB。试回答:(1)画出逻辑地址的结构格式;(2)作业页表最多有多少表项?每项至少要有多少位?答:(1)由于相对地址空间最多32页,每页2KB,故相对地址中应该用5个二进制位表示页号,用11个二进制位表示页内位移。因此逻辑地址的结构格式如下:(2)作业页表最多有32个表项,每项所占用的位数应该由内存的页帧数决定(页表表项里至少要有帧号)。现在内存为1MB,即可以划分成512个2KB的帧,它需要用9个二进制位表示。19.某程序在逻辑地址100处有指令:“LOAD1,500”,意为将地址500处的数据51678取出送入1#寄存器。现将5000单元开始的内存分区分配给该程序使用。试用图示表明采用下列各种方式时,该指令进入内存的情形以及地址的变换过程。(1)实行静态重定位;(2)实行动态重定位;(3)实行分页式存储管理,页帧尺寸为100单元,其各页映射到50、51、52、…、59页帧上。答:(1)静态重定位是在该程序装入内存时,由装入程序完成对程序中指令地址的重定位,因此程序进到物理空间后,指令地址都已经被修改,已适应所在的内存位置。具体如图(a)所示。-45- 《操作系统》习题解答(2)动态重定位是将程序原封不动地装入到分配给它的物理空间,只有执行到某条指令时,才对它里面的地址进行重定位,方法是将定位寄存器中的物理空间基址加上相对地址即可。具体如图(b)所示。(3)分页式存储管理是将用户空间划分成为页,把这些页原封不动地装入到分配给它们的页帧中。程序执行时,借助页表实现对指令地址的动态重定位。具体如图(c)所示。20.一个分页式存储管理中,假定页面尺寸为100B,逻辑地址长为12个二进制位。请把下面给出的相对地址转换成数对:(页号,页内位移),并用二进制数表示出来。(1)263(2)264(3)265(4)901(5)902答:(1)(2,63)=(0010,01111111);(2)(2,64)=(0010,10000000)(3)(2,65=(0010,10000001));(4)(9,01)=(1001,00000001)(5)(9,02)=(1001,00000010)21.有段表如下所示。已知逻辑地址:(1)[0,430];(2)[3,400];(3)[1,10];(4)[2,2500];(5)[4,42];(6)[1,11]。求它们所对应的物理地址。段号段长段基址06002191142300210090358013274961954答:(1)物理地址为:219+430=649;(2)物理地址为:1327+400=1727;(3)物理地址为:2300+10=2310;(4)第2段的段长为100,现在逻辑地址中的段内位移2500超出段长,发生越界错;(5)物理地址为:1954+42=1996;(6)物理地址为:2300+11=2311。22.对所给十进制的逻辑地址,分别使用4KB页面和8KB页面尺寸,计算它们所对应的数对:(页号,页内位移)。(1)20000;(2)32768;(3)60000。答:对于4KB,有(1)(4,3616);(2)(8,0);(3)(14,2656)。对于8KB,有(1)(2,3616);(2)(4,0);(3)(7,2656)。-45- 《操作系统》习题解答习题51.术语解释程序执行局部性原理虚拟存储器虚拟地址空间虚拟地址读取策略放置策略替换策略页面失效页面走向缺页中断率抖动OPTLRULFUFIFOBelady异常工作集工作集模型工作集窗口“段失效”位直接地址间接地址间接字链接中断位答案:·程序执行的“局部性”原理,是指任何一个程序在执行的某一时刻,并不是均匀地访问它的地址空间,而往往是集中于某一小部分区域。·所谓“虚拟存储器”,是一种扩大内存容量的软件设计技术,它把辅助存储器作为计算机实际内存储器的后援,操作系统把当前需要使用的那部分程序、数据等内容读入内存,其他部分保存在磁盘上,必要时由操作系统实施内存和磁盘之间的信息交换。·在虚拟存储意义下,系统向每一个用户提供一个虚拟存储器,用户作业的相对地址空间,就是系统提供给他的虚拟存储器。为了强调和区分起见,这时用户作业的相对地址空间,称为“虚拟地址空间”。·虚拟地址空间里面的相对地址称为“虚拟地址”。·读取策略是指在程序运行过程中,何时把所需要的块调入内存的策略。通常有两种方式:请求式和预约式。·放置策略是指当要把所需的页面信息从辅存调入内存时,决定把所需要的页面存放到内存的哪个空闲页帧里去。有两种放置策略:固定的和可变的。·替换策略是指在需要放置时,如果内存里没有空闲的区域,那么就必须先要把当前暂时不用的信息从内存替换出去,以便腾出位置进行放置。有两种替换策略:局部的和全局的。·页面失效是指如果所要访问的页面不在内存,那么就没有具体的页帧与之对应,运行无法继续下去的情况。页面失效也称为“缺页”。此时,操作系统必须根据所缺页的页号,把它从辅存调入内存,修改页表后,程序才能在原先失效处继续运行。·页面走向是指一个作业程序在执行过程中页号的变化序列。·假定一个作业运行的页面走向中涉及到的页面总数为A,其中有F次页面失效,需要通过缺页中断把它们调入内存。则f = F/A称为“缺页中断率”。·重复频繁发生页面替换的调出、调入现象,称为“抖动”。·最佳页面替换策略是指:在出现页面失效、且需要进行页面替换时,总是把下次访问距离当前最远的那个页面作为调出的的对象。·最近最少使用页面替换策略是指:最近被访问过的页面,很可能不久又会被访问,因此尽量不把这种最近访问过的页面作为替换的对象,而是选择最长时间没有被使用的页面作为替换的对象。·最小使用频率页面替换策略是指:如果一页过去没有经常使用,那么将来被用到的可能性就小,因此在需要页面替换时,就将其作为替换的对象。在可能有不止一个页面满足被替换的条件时,就在满足条件的那些页面里随便选一个加以替换。·先进先出页面替换策略是指:总把在内存页帧中停留最久时间的页面,作为替换时的对象。·有时增加分配给作业可用的页帧数,其页面失效次数反而会上升,策略性能下降。操作系统称其为“Belady异常”现象。-45- 《操作系统》习题解答·所谓“工作集”,是指一个进程当前正在使用的页面的集合。·依据进程过去某段时间间隔内的运行行为,预测和近似其将来某段时间间隔内的运行行为,确保在进程继续运行前,它的工作集就已经在内存。这就是所谓的“工作集模型”。·在任一小段时间间隔(t-Δ,t)里,由最近内存访问用过的页面组成的集合WS(t,Δ),是该进程在时间t的工作集。称其中的Δ是工作集窗口。·段表表项中必须要有一位用来标明该段当前是否在内存,这就是“段失效”位I的作用:I=0时,表示要访问的段不在内存,于是产生缺段中断,请求系统将该段从磁盘调入内存;I=1时,表示要访问的段在内存。·指令中的“直接”地址,是指该地址直接指向操作数。·指令中的“间接”地址,是指该地址指向的是存放直接地址的地方,只有到那个地方去,才能得到操作数的地址。·称存放直接地址的地方为“间接字”。·为了能够告知系统需要实施动态链接,在间接字里增设一个链接中断位(L),它向系统提供是否需要进行动态链接的信息。如果L=0,表示所需程序段已在作业的虚拟地址空间里,不需要进行动态链接。如果L=1,表示所需程序段还不在虚拟地址空间里,需要进行动态链接,将其纳入到作业的地址空间中来。2.在下面给出的替换策略中,A策略有可能产生Belady异常现象。A.FIFOB.LRUC.OPTD.LFU3.下面正确的说法是B。A.在请求页式存储管理中,以页为单位管理用户的虚拟存储空间,以页帧为单位管理内存空间B.在请求段页式存储管理中,以段为单位管理用户的虚拟存储空间,以页帧为单位管理内存空间C.在请求段式存储管理中,用户虚拟存储空间中的每个段都有一个段表D.在请求段页式存储管理中,利用一个段表和一个页表,来管理用户作业的虚拟存储空间4.实现虚拟存储器的目标是B。A.扩充物理内存B.逻辑上扩充内存C.逻辑上扩充辅存D.都不对5.在请求页式存储管理中,发生页面失效时就会产生缺页中断。它属于D中断。A.硬件故障B.I/OC.访管D.程序6.Linux系统在发生页面失效时,采用A页面替换策略。A.基于时钟的B.FIFOC.随机D.OPT7.某请求页式存储管理系统使用二级页表结构,页面尺寸为212B,虚拟地址长为32位,页目录占用8位,页表占用C位。A.8B.10C.12D.148.虚拟存储管理技术,不能以A存储管理为基础实现。A.分区B.分页式C.分段式D.段页式9.为什么要引入虚拟存储器?虚拟存储器的容量是由什么决定的?答:在作业程序空间大于内存时,或要实行多道程序设计时,固定的内存尺寸,为用户使用计算机带来了极大的不便。为此,在辅存的支撑下,操作系统把内存和辅存统一管理起来,给用户造成一种假象:系统中有一个很大的内存供他们使用。实际上,这个“很大的内存”并不存在,而是通过内存和辅存间信息的交换得到的。有了虚拟存储器,用户根本不用去考虑内存的大小,为计算机的使用带来了便利。虚拟存储器的容量是由计算机的地址结构决定的。若其地址用n-45- 《操作系统》习题解答个二进制位表示,那么虚拟存储器的最大容量为2n。另外,虚拟存储器的实际容量,则由内存和磁盘容量之和来确定。10.试述在一个请求页式存储管理中,实行局部和全局替换策略的区别所在。答:在一个请求页式存储管理中,实行局部页面替换策略,即是为每个作业进程分配固定数量的页帧。该作业程序运行过程中出现页面失效时,页面的替换只能局限从这些页帧里挑选替换的对象。实行全局页面替换策略时,系统将对分配给各作业进程使用的页帧进行统一管理。一旦发生页面失效,就从所有页帧中选取替换的对象。11.什么是“抖动”?为什么系统中会发生抖动现象?答:在请求页式存储管理中,作业程序并不是全部装入内存。于是,在内存页帧已满、而又要调入新的页面时,就必须实行页面替换。这样,就有可能出现刚调入的页面又要被调出、或刚被调出的页面又要被调入的情形,使得整个系统陷于频繁的页面替换之中。这种情况就称为“抖动”。系统之所以会出现抖动,其原因是多方面的,大致有如下几个因素:与系统中的进程数太多有关,与分配给进程使用的页帧少有关,与实行的是什么页面替换策略有关,与程序执行时涉及的具体页面走向有关。12.采用请求页式存储管理的计算机,内存尺寸为512KB,虚拟存储空间最大为2048KB,页帧大小为2KB。试问:(1)物理地址为多少个二进制位?可划分成多少页帧?最大页帧号是多少?(2)虚拟地址为多少个二进制位?可划分成多少页面?(3)虚拟地址中的最大页内位移是多少?最小页内位移是多少?答:(1)512KB=219,所以物理地址为19个二进制位;可划分成256个页帧;最大页帧号是255。(2)2048KB=221,所以虚拟地址为21个二进制位;一页大小为2KB,所以最多可划分成1024个页面。(3)虚拟地址中的最大页内位移是2047,最小页内位移是0。13.假设一个请求页式存储管理系统有2g+h的虚拟地址,内存中有2h+k个单元可供使用,其中g、h、k都是整数。那么所给虚拟和物理地址的大小,暗示系统的页面尺寸是多少?需要用多少位来存储一个虚拟地址?答:由所给虚拟和物理地址的大小,暗示系统的页面尺寸是2h,虚拟地址空间最大可有2g个页面,内存空间有2k个页帧。应该用g+h个二进制位来存储一个虚拟地址。14.采用请求页式存储管理的计算机,虚拟存储器的大小为221B,内存为218B,页面尺寸为210B。现有虚拟地址(0123456)8(八进制表示的地址)其所在页面存放在第8页帧。试求该虚拟地址所对应的、用八进制表示的物理地址。答:(0123456)8=(000,001,010,011,100,101,110)2,页面尺寸为210B,所以该虚拟地址对应的页号p和页内位移d分别是:p=(00,000,101,001)2,d=(1,100,101,110)2第8页帧的起始地址是:(000,010,000,000,000,000)2,所以相应的物理地址是:r=(000,010,000,000,000,000)2+(1,100,101,110)2=(000,010,001,100,101,110)2=(021456)815.已知某系统页面尺寸为4KB,页表项尺寸为4B。欲采用多级页表结构,对64位的虚拟地址进行地址转换。假定第一级页表占用一页。问它最多可采用几级页表结构?答:该虚拟地址空间为264B,页面尺寸为212B,页表项尺寸为4B,因此每页可放页表项的个数是210。第一级页表占用一页,该页最多存放的页表项个数是210,每项指向一页;每页又可以存放210个页表项。依此类推,故最多可采用的页表结构是64/10=6级(“/”是整除运算符)。16.-45- 《操作系统》习题解答作业的页面走向是4、3、2、1、4、3、5、4、3、2、1、5。运行时,分别实行FIFO和LRU页面替换策略,试就3个页帧和4个页帧的情形,求出各自的缺页中断率,并分析对于FIFO是否会发生异常现象。答:对于FIFO页面替换策略,当页帧数m=3时,缺页中断率f = 9/12;当页帧数m=4时,缺页中断率f = 10/12。也就是说,对于这个页面走向,FIFO页面替换策略会出现异常现象。对于LRU页面替换策略,页帧数m=3时,缺页中断率f = 10/12;页帧数m=4时,缺页中断率f = 9/12。也就是说,对于LRU页面替换策略,为作业增加内存块的数量,不会增加缺页中断的次数。17.在请求页式存储管理中,为了解决抖动问题采用工作集模型。有如下图所示的页面走向:工作集窗口尺寸Δ=9,试求时刻t1和t2时的工作集。答:t1时刻的工作集WS(t1,9)={2,3,4,6,7,8,9},t2时刻的工作集WS(t2,9)={3,4,5}。18.在请求页式存储管理中,某作业的页表如下所示。已知页面尺寸为1KB,现在要分别访问用户空间中的虚拟地址1011、3000和4012。试问谁会发生页面失效?谁不会发生页面失效?页号页帧号页面失效位磁盘上位置021--130--211--360--答:从页表的当前情况看,用户空间中的第0页和第2页在内存页帧中,因为它们所对应的页面失效位为“1”;第1页和第3页不在内存页帧中,因为它们所对应的标志位为“0”。如果题目中给出的三个虚拟地址里,有在第1、3页的,就会发生页面失效。(1)1011/1024=0(“/”表示整除运算),1011%1024=1011(“%”表示求余运算)。这表示虚拟地址1011对应的数对为(0,1011)。既然它在第0页,因此不会发生缺页中断。(2)因为3000/1024=2,3000%1024=952。这表示虚拟地址3000对应的数对为(2,952)。既然它在第2页,所以不会发生页面失效。(3)因为4012/1024=3,4012%1024=940。这表示虚拟地址4012对应的数对为(3,940)。既然它在第3页,所以会发生页面失效。19.作业的页面走向是1、2、3、4、2、1、5、6、2、12、3、7。分配的页帧数是4。试就FIFO、LRU、OPT页面替换策略,请回答问题:各自产生多少次页面失效?缺页中断率是多少?每次页面替换时,淘汰出去的是哪个页面?答:对于FIFO,产生10次页面失效,缺页中断率f=10/13≈77%,依次淘汰的页面是:1、2、3、4、5、6。对于LRU,产生8次页面失效,缺页中断率f=8/13≈62%,依次淘汰的页面是:4、3、5、6。对于OPT,产生7次页面失效,缺页中断率f=7/13≈54%,依次淘汰的页面是:4、5、6。20.设请求页式存储管理向用户提供的虚拟地址空间最大为256页,每页尺寸是1KB,它们可被映射到16个页帧的内存储器中。试问:(1)虚拟地址为多少位?(2)物理地址为多少位?-45- 《操作系统》习题解答答:(1)虚拟地址由数对:(页号,页内位移)组成。根据题意,知道虚拟地址空间最大为256页,即其页面的编号为0~255,这表明需要用8个二进制位来表示;另外每页尺寸是1KB,这表明需要用10个二进制位来表示。所以,一个虚拟地址需要用8+10=18个二进制位来表示。(2)根据题意,内存被划分成16个页帧。由于页帧和页的尺寸是一样的,即每个内存页帧的尺寸也是1KB。于是,内存总的字节数为:16×1024=16384=214这表明为了表示它,应该用14个二进制位。所以,一个物理地址为14个二进制位。21.某计算机系统提供224的虚拟地址空间,页面尺寸为28B,内存容量为218B。假设用户程序中产生一个八进制的虚拟地址:(11123456)8。试问如何才能获取这个虚拟地址的物理地址?答:与这个虚拟地址的八进制数相对应的二进制数是:001001001010011100101110由于页面尺寸为28B,虚拟地址空间为224B,所以在24位的虚拟地址里,由左往右的16位表示页号,其余8位表示页内位移,即上述二进制形式的高16位“0010010010100111”,是这个虚拟地址所在页的页号;其余8位“00101110”,是这个虚拟地址在该页里的页内位移。用页号去查页表。如果该页在内存页帧里,那么就可以得到所在的内存的页帧号,就可以得到该页帧的起始地址。用这个地址与页内位移相加,就可以计算出所对应的物理地址。如果该页不在内存,那就会产生页面失效,并把所需要的页调入内存页帧中。然后进行地址转换,得到相应的物理地址。22.有一个用户程序长460字,程序运行时访问的逻辑地址序列为:10,11,104,170,73,309,185,245,246,434,458,364(1)假定页面尺寸为100字,试给出程序运行时的页面走向。(2)如果内存中有200字供该程序使用,采取FIFO页面替换策略,这时的页面失效次数是多少?(3)如果采取LRU或OPT页面替换策略,这时的页面失效次数是多少?答:(1)由于页面尺寸为100字,故逻辑地址10、11、73在第0页;逻辑地址104、170、185在第1页;逻辑地址245、246在第2页;逻辑地址309、364在第3页;逻辑地址434、458在第4页。因此,程序运行时访问的逻辑地址序列所对应的页面走向是:0,1,0,3,1,2,4,3(2)“内存中有200字供该程序使用”表示分配给该程序两页。采取FIFO页面替换策略时,缺页中断次数是6。(3)采取LRU页面替换策略时,缺页中断次数是7;采取OPT页面替换策略时,缺页中断次数是5。23.要把50×50的数组元素初始化为0.数组中的每个元素占用2B。假定页面尺寸为200B,按行顺序进行存放。系统分配给作业2个页帧用于数组的初始化。开始时,程序全部在内存,用于数组初始化的2个页帧均为空。试问下面给出的两个程序在运行时各会发生多少次页面失效?程序1:程序2:main()main(){{inta[50][50];inta[50][50];inti,j;inti,j;for(i=0;i<50;i++)for(j=0;j<50;j++)-45- 《操作系统》习题解答for(j=0;j<50;j++)for(i=0;i<50;i++)a[i][j]=0;a[i][j]=0;}}答:a的一行要占用100B,因此一个页帧能够放数组a的两行元素。每次页面失效就调入数组的两行。程序1是按行来对a的元素进行初始化的,一次页面失效就可以完成对两行元素的初始化。所以,程序1通过发生25次页面失效,完成对a的初始化。程序2是按列来实行元素初始化的,每次页面失效只能完成数组一列中的两个元素的初始化,完成整个列的初始化需要25次页面失效。数组a共有50列,所以程序2总共需要经过25×50=1250次页面失效,才能完成对数组a的初始化。24.假定在某请求页式存储管理中,内存的平均访问时间为1µs,辅存的平均访问时间为10ms。试问,如果希望虚拟存储器的平均访问时间仅比内存增加10%,那么要求页面失效率应该是多少?(注:1ms=1000µs)答:设页面失效率为f,那么虚拟存储器的平均访问时间为:(1-f)×1µs+f×10ms=1µs-fµs+10000fµs=(1+9999f)µs如果要求它仅比访问内存增加10%的时间,就是要求满足条件:1.10>1+9999f于是有f<0.00001。这就是说,访问10万次最多允许出现一次页面失效。25.分配给一个作业4个页帧。下表给出了上一次把一页装入到一个页帧的时间,上一次访问页帧中的页的时间,每个页帧中当前的页面号,以及每个页面的访问位(R)、修改位(M)。表中所有数字都是十进制的,页号和页帧号等都是从0开始编号。目前页号为4的页面要求进入,于是产生页面失效。使用给出的页面替换策略:(1)FIFO、(2)LRU、(3)Clock,哪一个页帧中的页面被替换?页号页帧号加载时间访问时间R位W位2060161011113016010022616210332016311答:(1)基于表中所给的时间数据,可知现在在内存的四个页面里,页面3最早进入内存,所以对于FIFO替换策略,在第4页面要进来时,应该选择页面3作为替换的对象。(2)基于表中所给的时间数据,可知现在在内存的四个页面里,最近最少使用的是页面1,所以对于LRU替换策略,在第4页面要进来时,应该选择页面1作为替换的对象。(3)基于表中所给的时间数据,可知由页帧进入的时间排列的循环链表顺序是:3→2→0→1。由于刚访问第3页帧,所以时针应该指向第2页帧。第4页面要求进来时,就先查看第2页帧。由于该页帧的访问位为1,所以暂不把它作为替换对象,而是把R位置0后,时钟移到第0页帧。第0页帧访问位R=0,所以它应该是替换对象。不过,要把它先回写道磁盘后,才能把第4页面装入第0页帧。26.考虑如下的页面走向:1,2,3,4,5,2,1,3,3,2,3,4,5,4,5,1,1,3,2,5当Δ=2、3、4、5时,给出与表5-11-类似的图表,来说明在各时刻的工作集。答:与表5-11-类似的图表如下所示。时间顺序页面走向工作集窗口Δ尺寸Δ=2Δ=3Δ=4Δ=51111112212121212-45- 《操作系统》习题解答332312312312344342341234123455453452345123456252452·3452712152145213452183132135213452139331321352131023223·132113··23·124342342342341354534523452345144·45354·155··4534516151451451451171151··18313135134513192321321325132205253251325·习题61.术语解释域记录文件数据库按名存取系统文件用户文件目录文件特殊文件文本文件二进制文件文件系统文件的逻辑结构文件的物理结构字节序列结构记录成组与分解FCB文件目录目录项目录文件索引节点索引节点表索引节点指针绝对路径名相对路径名顺序文件串联文件索引文件顺序存取随机存取文件共享存取控制矩阵存取控制表用户权限表管道文件异构文件系统虚拟文件系统答案:·“域”有时也称“字段”,是数据中不可再分的基本单元。一个域包含一个值,可以通过数据类型和长度两个属性来描述域。·“记录”是一组相关域的集合,它是程序进行读/写的单位。·“文件”是一组有相同结构的相关记录的集合,通常存储在磁盘上。文件有自己的名字,用户或应用程序通过名字对它进行访问。·“数据库”由一种或多种类型的文件组成,它们涉及到与一个组织或项目相关的所有数据,反映着各数据元素间存在的关系,以供不同应用程序共享使用。·用户或应用程序都是通过文件名来实现对文件的访问的。这就是所谓的“按名存取”。·操作系统及其他系统程序(如语言的编译程序)构成系统文件的范畴。这些文件通常是可执行的目标代码及所访问的数据,用户对它们只能执行,没有读和写的权利。-45- 《操作系统》习题解答·用户文件是用户在软件开发过程中产生的各种文件,如源程序、目标程序代码和计算结果等。这些文件只能由文件主和被授权者使用。·在管理文件时,每个文件都有一个目录项。如果文件很多,那么文件的目录项也就很多。操作系统经常把这些目录项聚集在一起,成为一个文件来加以管理。由于这种文件中包含的都是文件的目录项,因此称其为“目录文件”。·为了统一管理和方便使用,在操作系统中常以文件的观点来看待设备。被视为文件的设备称为“特殊文件”。·文本文件是指把内存中的数据转变成相应的ASCII码值形式,然后存放在磁盘上,这时磁盘上每个字节存放的内容是ASCII码值,表示一个字符。·二进制文件是指把内存中的数据就按其在内存中的存储形式原样存放到磁盘上去。·所谓“文件系统”,是指操作系统中管理信息资源的一组系统软件、数据结构和文件,它实行文件的存取、检索、更新,提供安全可靠的共享和保护机制,提供操作文件的接口,方便用户“按名存取”。·用户从自己的角度出发去组织文件,去体现数据间的关系,这样的文件组织形式,就是文件的逻辑结构。·系统从把数据存储在磁盘上的角度出发组织文件,去体现数据间的关系,这样的文件组织形式,就是文件的“物理结构”。·一般地,扇区尺寸总要比记录大。因此,写操作时必须先将记录在内存缓冲区里聚集“成组”,然后再一起写入扇区。在读操作时,必须先将包含所需记录的整个扇区读到内存缓冲区,然后进行“分解”,从中挑出所需要的记录,将其移入用户指定的区域。·对于每个文件,操作系统开辟一个存储区,在它的里面记录着该文件的有关信息,该存储区就称为“文件控制块(FCB)”。·把系统中各个文件的文件控制块汇集在一起,就形成了文件目录。·每个文件的文件控制块就是文件目录中的一个目录项。·如果系统中的文件很多,那么文件的目录项就会很多。因此,一般常把文件目录这样一个整体视为一个文件,以“目录文件”的形式存放在磁盘上。·把FCB中除了文件名外的其他信息分离出来,独立成为一种数据结构,称其为这个文件的“索引节点”,简称“i-节点”。·把系统中所有文件的索引节点集中存放在磁盘的i-节点区里,成为“索引节点表”。·每个i-节点在i-节点表里的存放顺序,被称为“索引节点指针”。·由根目录出发到具体某个文件所经过路径中的名字组成的序列,称为该文件的“绝对路径名”。·在用户指定一个目录作为当前的工作目录时,所有不是从根目录开始的路径名,都被认为是相对于这个工作目录的,就是该文件的“相对路径名”。·若分配给文件的磁盘存储块是连续的,那么该文件的物理结构就是顺序式的,称这样的文件为顺序文件或连续文件。·如果把逻辑上连续的文件信息存放到磁盘的不连续存储块中,每块中包含一个指针,指向与它链接的下一块所在的位置,最后一块的指针放上“−1”,表示文件的结束。那么该文件的物理结构就是链式的,称这样的文件为串联文件。·如果把逻辑上连续的用户文件存放到磁盘不连续的物理块中,且为每个文件建立一张索引表,表项依次登记文件记录成组后存放的物理块号,那么,此时文件记录的连续性将通过索引表中记录的存储块号反映出来,称这种文件的物理结构是索引式的,即索引文件。·所谓“顺序存取”,即是按照文件记录的排列次序一个接一个地存取。·随机存取有时也称直接存取,-45- 《操作系统》习题解答即可以以任何次序存取文件中的记录,无须先涉及它前面的记录。·所谓文件的“共享”,是指一个文件可以被多个授权的用户共同使用,也就是不同的用户能够使用同一个文件。·所谓文件的“保护”,是指要防止未经授权的用户使用文件,也要防止文件主自己错误地使用文件而给文件带来伤害。·所谓“存取控制矩阵”,即是整个系统维持一个二维表,一维列出系统中的所有文件名,一维列出系统中所有的用户名,在二维表的行、列交汇处,给出用户对各文件的存取权限。·按照用户对某个文件的存取权限,将系统中的用户划分成若干组,规定每组用户对这个文件的存取权限。所有用户组对该文件的存取权限的集合,就是这个文件的“存取控制表”。·一个用户通常只与少数几个文件交往。因此,可以把某个用户对系统中各文件的存取权限集中在一起,形成该用户对所有文件的“用户权限表”。·管道文件是一种很特殊的文件,主要用于在不同进程间进行大量的信息传递。利用管道文件,一个进程将需要传输的数据或信息(以字节流的形式)写入管道的一端,另一个进程则从管道的另一端获得所需的数据或信息。·把不同类型的文件系统结合在一起,建立起来的文件层次结构,就是所谓的“异构文件系统”。·Linux文件管理器采用了称之为虚拟文件系统的开关技术,负责处理异构文件系统的问题。VFS分成“与文件系统相关”和“与文件系统无关”的两个部分。VFS中的与文件系统相关部分,是针对计算机中使用的每种具体的文件系统类型编写的。VFS中的与文件系统无关部分,用于实现通用的各种文件操作(如创建、拷贝、删除等),以便能够对VFS文件系统进行读/写。2.文件系统的绝对路径名由C组成。A.盘符与目录名B.目录名和文件名C.盘符、路径中的各目录名、文件名D.盘符、根目录名、文件名3.一个FCB需要64B的存储量,磁盘块尺寸为1KB,采用一级目录结构。若文件目录中有3200个目录项。那么查找一个文件平均需要访问B次磁盘。A.50B.100C.150D.200(注:3200个目录项要占用3200×64/1024=200磁盘块。由于采用的是一级目录结构,所以平均需要访问200/2=100次。)4.文件系统中,可命名的最小数据单位是B,用户以C为单位对文件进行存取,文件存储空间则以D为单位进行分配。A.字符串B.域(或字段)C.记录D.文件5.在下面的文件物理结构中,A不利于文件长度的动态增长变化。A.顺序结构B.链式结构C.FATD.索引结构6.在Linux系统中,文件的索引结构存放在B中。A.超级块B.索引节点C.目录项D.空闲块7.允许用户共享一个文件时,下面说法中A是错误的。A.允许读者和写者同时使用共享文件B.允许多个用户同时对共享文件进行读操作C.不允许读者和写者同时使用共享文件D.不允许多个写者同时对共享文件进行写操作8.对文件记录进行成组与分解的目的,是B和D。-45- 《操作系统》习题解答A.缩短检索文件的时间B.提高磁盘存储空间的利用率C.提高内存空间的利用率D.减少启动磁盘I/O的次数9.试比较文本文件和二进制文件。答:文件存储在磁盘上,是以字节为单位进行的。文本文件是把内存中的数据转变成相应的ASCII码值形式,然后存放在磁盘上。因此,这时磁盘上每个字节存放的内容是ASCII码值,表示一个字符。二进制文件则是把内存中的数据就按其在内存中的存储形式原样存放到磁盘上去。可以看出,数据按文本形式存储在磁盘上,所要占用的存储空间较多,往磁盘上存储时要花费转换的时间。但是以这种形式存储,一个字节代表一个字符,便于对字符进行逐个处理,也便于显示和打印。当数据按二进制形式存储在磁盘上时,无须花费转换时间,占用空间也少。但字节不与字符对应,不能直接显示和打印。因此,人们常把计算机产生的中间结果数据,按二进制文件的形式暂时保存在磁盘,以利于以后进入内存继续处理。10.文件系统中为什么提供open命令?答:绝大多数文件操作命令都要涉及到文件的目录,如果每次都必须根据文件名到磁盘去搜索文件的目录,效率显然很低。因此,许多操作系统要求在首次使用一个文件之前,必须先通过open命令将其打开。11.删除文件命令与关闭文件命令有什么区别?答:删除文件命令的执行结果是文件的目录项在目录中消失,文件所占用的存储区被释放,于是系统不再会感知到这个文件的存在。关闭文件命令的执行,只是在打开文件表中把文件的目录项删除,文件以及目录项仍然存在在磁盘,系统仍旧可以感知到这个文件的存在。12.Ext2中的块组,在文件管理中起什么作用?答:Ext2把磁盘的一个分区或整个软盘视为一个文件卷,并把它划分成所谓的“块组”。块组从0开始编号,每个块组中有若干数据块。一个文件卷上可以有一个或多个块组。在一个块组里,可以存放普通文件的信息,存放目录文件的信息,存放文件的inode,当然还应该存放对本块组的管理信息(比如该块组中数据块的尺寸,块的数目,哪些块是空闲的,哪些块是已分配的等)。13.Ext2一个块组中的超级块、组描述符、盘块位图、索引节点位图、索引节点表、数据区,在文件管理中各起什么作用?相互间如何配合?答:超级块涉及的是文件系统的总体信息;组描述符涉及的是一个块组的总体信息;盘块位图用于管理一个块组数据区中拥有的盘块,限定盘块的数目;索引节点位图用于管理一个块组中可以拥有的索引节点,限定了索引节点的数目;索引节点表是一个块组中所有索引节点的集合;数据区是一个块组中所有可以分配给文件使用的盘块的集合。Linux正是通过这样一层一层的关系,来实现对磁盘存储区的管理的。14.简述Ext2文件inode里的数组i_block[],在形成文件物理结构时的作用。答:在把文件存储到磁盘上时,Ext2采用的是多级索引式结构,即通过该文件inode里的数组i_block[],建立起文件的逻辑块号与相应物理块号之间的对应关系,形成文件存储的索引表。该数组有15个元素,每个元素为一个索引项。利用这15个元素,可形成四种不同的索引文件结构:索引项i_block[0]~i_block[11]为直接索引,直接给出文件数据存放的磁盘物理块号;索引项i_block[12]为一次间接索引;索引项i_block[13]为二次间接索引;索引项i_block[14]为三次间接索引。于是,Linux可以根据文件的大小,通过inode里的i_block[]这张存储索引表,形成小型文件、中型文件、大型文件和巨型文件四种不同规模的文件。15.16GB的磁盘有224个1KB的块(扇区)。若用位示图来管理,试问总共需要多少个二进制位?需要用多少块组成这个位示图?-45- 《操作系统》习题解答答:总共需要224个二进制位来管理,即需要用2048块来组成这个位示图。16.16GB的磁盘,有32位的磁盘块号和1KB(扇区)的磁盘块尺寸。若采用成组链接法来管理空闲块,试问该磁盘共有多少磁盘块?每块最多可包含多少个空闲块的块号?总共需要多少块来存放磁盘全部的磁盘块号?答:该磁盘共有224个磁盘块;每块最多可包含255个空闲块的块号;总共需要16794个块来存放磁盘全部的磁盘块号。17.某操作系统采用文件分配表FAT管理磁盘存储空间的分配。现在分配给文件A的磁盘块号为11、12、16、14,分配给文件B的磁盘块号为13、18、20.试简要画出两个文件的磁盘块在FAT中的链接情况,以及各自的FCB与FAT的关系。答:两个文件的磁盘块在FAT中的链接情况,以及各自的FCB与FAT的关系如图所示。18.有一个长度为l的文件要存放在磁带上。磁带上的块尺寸为k。试问:(1)该文件存放在磁带上需要占用多少块:(2)若启动一次磁带机可以交换10个物理记录,那么存放该文件要启动多少次I/O操作?答:m=l/k(整除),n=l%k(求余)。(1)如果n=0,那么该文件需要m块,否则需要m+1块。(2)如果n=0,那么需要做(m+9)/10次I/O操作,否则需要做((m+1)+9)/10=1+m/10次I/O操作。19.若磁盘有b个盘块,现在有f个空闲块,每个盘块号用d位表示。此时采用空闲块链比采用位示图花费更少的存储空间的条件是什么?答:由于磁盘有b个盘块,因此采用位示图需要b位。现在有f个空闲块,每个盘块号要用d位表示,因此为了链接它们共需要f×d位。所以,希望此时采用空闲块链比采用位示图花费更少的存储空间的条件是f×d0,执行V操作的进程继续运行;若V操作后s.count≤0,表示原先有进程阻塞等待,因此要从队列中唤醒一个进程,使它从阻塞变为就绪,然后自己继续运行。15.进程A和B共享一个变量,因此在各自的程序里都有自己的临界区。现在进程A在自己的临界区里。试问进程A的执行能被别的进程打断吗?能被进程B打断吗(这里,“打断”的含义是调度新进程运行,使进程A暂停执行)?答:当进程A在自己的临界区里执行时,能够被别的进程打断,没有任何的限制。当进程A在自己的临界区里执行时,也能够被进程B打断,不过这种打断是有限制的。即当进程B执行到要求进入自己的临界区时,就会被阻塞。这是因为在它打断进程A时,A正在临界区里还没有出来,既然A占据了临界区,B当然就无法进入自己的临界区了。16.有两个进程A和B,采用TSL指令来实现对临界区的互斥。假定现在锁变量x=0。进程A先运行。在A做完指令TSL后,它被时钟中断,恰好进程B被系统调度到运行。试问(1)在A执行完TSL指令时,R和x里的值各自是多少?B执行完TSL指令时,R和x里的值各自是多少?(2)A和B谁先进入临界区?(3)A何时进入临界区?B何时进入临界区?-45- 《操作系统》习题解答答:(1)A执行完TSL指令时,R里的值是0,x里的值是1;B执行完TSL指令时,R里的值是1,x里的值是1。(2)由于进程A的R里是0,因此它会先进入临界区,B后进入临界区。(3)B值执行完指令TSL后,就处于忙等待,希望从x里取出的值为0。但这只有在下一次调度到A时,系统根据A的PCB恢复R为0,这时进程A才能够进入临界区。等到它执行了指令“MOVEx,#0”退出临界区后,再调度到进程B执行时,进程B才能进入自己的临界区。17.对于Peterson算法,如果在进程0已经把interested[0]设置成了TRUE、还没有来得及把turn设置为0之前,被时钟中断。然后调度到进程1运行。进程1能够进入临界区吗?它何时能够进入临界区?进程0何时进入临界区?答:在所给前提下,调度进程1执行,它在把interested[1]设置成了TRUE、把turn设置为1后,进入while循环。由于现在turn是1,而interested[other]是TRUE,所以进程1不能够进入临界区,只能在临界区外忙等待。等到进程0被调度到、且执行了语句“turn=0”后,进程0也成为忙等待(因为这时turn是0,interested[1]是true)。这样,当再次调度到进程1时,由于while循环测试到turn是0而不是1,进程1才能够进入临界区。进程0要等到进程1退出临界区后,才能进入临界区。18.在读者优先的读者-写者的算法中,若写者已经在临界区里访问数据。这时紧接着来到三个读者希望访问数据。当然,他们都会被阻挡在外。试问,他们都被阻挡在哪里了?为什么?答:当已有一个写者进入临界区使用数据时,来到的第1个读者在做P(mutex)时不会受到阻拦,它在first上加1,使first的值为1。于是该读者就去做P(wrt)。由于已有写者在临界区里,故第1个读者在此受阻,即在与信号量wrt有关的等待队列wrt.queue上等待。这时后面又来了两个读者,它们都将在与信号量mutex有关的等待队列mutex.queue上排队等待,而不是在与信号量wrt有关的等待队列上排队。这是因为第1个读者在做P(wrt)受阻时,并没有退出mutex的临界区,即没有做V(mutex)。既然地一个读者占据着这个临界区,那么后续的读者当然就只能在与信号量mutex有关的等待队列上排队了。19.在写者优先的读者-写者算法中,若已有三个读者在使用数据,这时来了一个写者和两个读者。试问,这些读者和写者都在哪里等待进入自己的临界区?何时才能够进入自己的临界区去使用数据?答:来的一个写者是在wsem.queue上等待进入写者临界区。随后来的第1个读者将在rsem.queue上等待进入自己的临界区;第2个来到的读者将在z.queue队列上等待进入自己的临界区。当在临界区里使用数据的三个读者中的最后一个访问完数据时,由于有rfirst==0,就在信号量wsem上做V操作,那么就会把在wsem.queue上等待的写者唤醒。这样,该写者就可以进入自己的临界区去访问数据了。只有在该写者试图退出临界区、且判定他是使用数据的最后一个写者(即有wfirst==0)时,由于他在信号量rsem上做V操作,而使随后的第1个读者被唤醒,进入rmutex的临界区,对读者计数(当然是rfirst为1)。然后退出rmutex临界区,退出rsem临界区。在退出z临界区时,由于第2个读者在此等待,所以会唤醒他,得到进入自己临界区的权利。20.在公共汽车上,司机和售票员的工作流程如图8-27所示。为确保行车安全,请用信号量及其P、V操作来协调司机和售票员的工作,画出他们的工作流程图。答:从生活知识知道,司机和售票员之间的工作有如下的制约关系存在:(1)司机必须在得到售票员的“关门完毕”的信号后,才能启动汽车,这是司机要与售票员取得同步的问题;(2)售票员必须在得到司机的“已经停车”的信号后,才能打开车门,这是售票员要与司机取得同步的问题。-45- 《操作系统》习题解答图8-27司机和售票员的工作流程因此,为了确保行车安全,需要设置两个同步信号量:s1——初值为0,控制司机与售票员取得同步;s2——初值为0,控制售票员与司机取得同步。在加入了信号量上的P、V操作后,他们的工作流程如图所示。第20题答案第21题答案21.阅览室共100个座位。用一张表来管理它,每个表目记录座号以及读者姓名。读者进入时要先在表上登记,退出时要注销登记。试用信号量及其P、V操作来描述各个读者“进入”和“注销”工作之间的同步关系,画出其工作流程。答:由题意知,在管理读者“进入”和“注销”阅览室的工作中,存在这样一些制约关系:(1)100个座位是读者共同使用的资源,因此要用一个资源分配信号量来管理它;(2)读者“进入”阅览室时,要申请座位。只有申请到座位才能进入,否则应该等待到座位的释放;(3)没有读者时,不能做“注销”-45- 《操作系统》习题解答工作,必须等到有了读者才能做;(4)表是登记和注销的共享变量,需互斥使用。因此,设置三个信号量:s1——初值为100,管理座位的分配;s2——初值为0,控制“注销”与“进入”间取得同步;mutex——初值为1,控制互斥使用登记表。读者进入时,调用“进入”进程,通过P(s1)申请座位。如果申请到,再申请使用登记表。申请到时就可以办理阅览手续。如果100个座位都申请完毕,那么第101个读者就只有在关于s1的队列上等待,等到有读者离开调用“注销”进程时,执行V(s1),唤醒等待的进程。“进入”与“注销”两个进程的流程如图所示。22.有四个进程A、B、C、D。进程A通过一个只能容纳一条消息的缓冲区不断向进程B、C、D发送消息。A每向缓冲区送入一个消息后,必须等进程B、C、D对此消息各取一次后,才可以发送下一条消息。请用信号量上的P、V操作实现它们之间的正确工作。答:由于缓冲区的容量一次只能存放一条消息,因此设三个初值为0的同步信号量sb、sc、sd,来制约B、C、D三个消息接收者,即每当进程A送入一条消息到缓冲区时,就在三个同步信号量上做V操作。另一方面,只有当三个接收者都取走消息后,进程A才能发送下一条消息,因此设一个初值为1的互斥信号量s,来保证进程A和另外三个进程互斥使用这个缓冲区。再有,由于B、C、D都要取走消息后,A才能再次使用缓冲区,所以需要设B、C、D三个进程共用的计数器count,由初值为1的互斥信号量mutex来保证它们对这个计数器的互斥使用。算法的框架描述如下:进程A:进程B:进程C:进程D:while(1)while(1)while(1)while(1){{{{P(s);P(sb);P(sc);P(sd);发送消息;接收消息;接收消息;接收消息;V(sb);P(mutex);P(mutex);P(mutex);V(sc);count++;count++;count++;V(sd);if(count==3)if(count==3)if(count==3)}V(s);V(s);V(s);}}}23.试用信号量上的P、V操作,解决读者-写者之间的同步,要求是无写者时,允许多个读者同时读;来了一个写者后,随后来的读者和写者有公平使用数据的权利,即谁先来谁先使用。答:为此,设置信号量和变量如下:z:读者、写者竞争数据使用权的互斥信号量,初值为1;mutex:互斥访问变量first的信号量,初值为1;wrt:读者、写者在使用数据上互斥信号量,初值为1;first:读者计数器,是一个初值为0的变量。reader:{P(z);/*读者与写者在z上竞争使用权*/P(mutex);first++;if(first==1)P(wrt);/*与写者互斥使用数据*/-45- 《操作系统》习题解答V(mutex);V(z);读取所需数据;/*读者临界区*/P(mutex);first--;if(first==0)V(wrt);/*已经没有读者使用数据了*/V(mutex);}writer:{P(z);/*读者与写者在z上竞争使用权*/P(wrt);/*与读者互斥使用数据*/对数据进行修改;/*这是写者临界区*/V(wrt);/*这个写者访问完了数据*/V(z);}24.下面给出一个进程互斥访问临界区的方法。试问它正确吗?为什么?#defineTRUE1#defineFALSE0intflag[2];flag[0]=flag[1]=FALSE;enter_CS(i)/*临界区的进入区代码*/{while(flag[1-i])flag[i]=TRUE;}exit_CS(i)/*临界区退出区代码*/{flag[i]=FALSE;}process(i)/*进程i的程序代码*/{……enter_CS(i);/*申请进入临界区*/进程i的临界区;exit_CS(i);}-45- 《操作系统》习题解答答:该设计不能保证临界区的互斥执行。比如进程0申请使用临界资源,在判断这时有flag[1]为FALSE、但还没有把flag[0]设置为TRUE前,进程1被调度到。这时它判断flag[0]肯定为FALSE,就把flag[1]设置为TRUE,并进入自己的临界区工作。在进程1还没有退出临界区之前,若调度到进程0继续执行,那么它就会在原先检测的基础上,把flag[0]设置为TRUE,并进入自己的临界区。于是,发生了两个进程同时在临界区的情形。25.下面的两个并发进程代码框架,试图共享一种临界资源,因此希望在各自的临界区上互斥执行。请找出它们的错误,并修改之。其中信号量s1和s2的初值现在都是0。进程A:进程B:while(1)while(1){{…………进程A的临界区;P(s1);V(s1);进程B的临界区;P(s2);v(s2);…………}}答:要将信号量s1初值改为1,或将信号量s2的初值改为1。进程程序框架改为:进程A:进程B:while(1)while(1){{…………P(s1);P(s2);进程A的临界区;进程B的临界区;V(s2);V(s1);…………}}习题91.术语解释可抢占资源不可抢占资源死锁饥饿资源分配图死锁预防死锁避免安全状态银行家算法死锁检测内部安全外部安全数据的机密性数据的完整性系统的可用性系统的真实性被动攻击主动攻击安全实体主体认证外部认证内部认证授权入侵者或黑客骇客伪装者违法行为者神秘用户恶意软件后门逻辑炸弹特洛伊木马病毒蠕虫僵尸生物识别进程的“保护域”访问控制表权能表答案:·所谓“可抢占资源”,是指可以从拥有它的进程手中抢夺过来而不会产生副作用的那些资源。比如,内存储器就是一种可抢占资源。·所谓“不可抢占的资源”-45- 《操作系统》习题解答,是指不能从当前拥有它的进程手中抢夺,否则就会引起不必要麻烦的那些资源。比如,打印机就是一种不可抢占资源。·所谓“死锁”,即是指如果一个进程集合中的所有进程都在等待只能由该组进程中的其他进程才能引发的一个事件(比如,等待请求资源的释放),那么就说该组进程是死锁的。·在许多资源分配策略中,一些进程由于它们的优先级不如其他进程高,因此所提出的资源请求被无限期地忽略。这种现象称之为“饥饿”。·所谓“资源分配图”,即是用来勾勒系统中各个进程的资源分配情况,反映哪个进程已经分配了什么资源,哪个进程由于等候什么资源而处于阻塞的一种图示。·所谓“死锁预防”,就是试图让设计出来的系统里不包含四个产生死锁的必要条件中的某一个。既然排除了发生死锁的可能,系统也就不会出现死锁了。·所谓“死锁避免”,含义是允许系统里存在产生死锁的条件,但对于进程的每一次资源申请,都将根据当时资源的已分配情况,去探测分配的结果。只有在探测结果确定不会有死锁发生时,才正式接受资源请求,真正把资源分配给进程。·所谓系统处于“安全状态”,就是至少存在有一个进程的执行序列,能够在有限时间内使所有进程最终都能够运行到结束(也就是说,不会导致死锁);否则,就说系统处于“不安全状态”。·所谓“银行家算法”,是指对进程所要求的每一个资源申请都进行测试,判断接受申请是否会致使系统进入不安全状态。如果是就拒绝分配;如果接受申请后系统仍然是安全的,那么就予以分配。·所谓“死锁检测”,即系统允许产生死锁,操作系统周期性地在进程和资源之间检测是否出现了循环等待的情形。每当检测到这种情形时,就认为可能会出现死锁,于是采取措施对系统进行恢复。·操作系统应该提供一个环境,以保证信息使用的私密和共享,这是内部安全问题。·操作系统需要提供各种手段,防止来自各方的有意或无意的入侵和攻击,这是外部安全问题。·所谓“数据的机密性”,即要求计算机系统中的机密数据处于保密状态。更确切地说,如果数据的所有者决定这些数据只能用于特定的人,那么系统就应该保证数据不会发布给未经授权的人。·所谓“数据的完整性”,即要求未经授权的用户,在没有得到所有者的许可前不得擅自改动数据。·所谓“系统的可用性”,即要求不能因为人有意识地干扰系统而使之瘫痪。·所谓“系统的真实性”,即要求计算机系统能够鉴别用户的真实身份。·被动攻击是指攻击者试图了解或使用系统的信息,但并不去影响和破坏信息资源。被动攻击的行为是进行监视和窃听,从而达到获取正在通信线路上传输的数据信息的目的。·主动攻击是指攻击者试图通过更改数据流或产生错误的数据流,达到改变系统资源、或影响系统运行的目的。·所谓“安全实体”,是对被保护的信息或资源(如CPU、文件、数据、设备)的抽象,操作系统应该阻止所有对安全实体未经授权的访问。·所谓“主体”,是对信息或资源进行访问的对象(如进程、线程)的抽象,未经授权的主体不允许访问特定的安全实体。·所谓“认证”,是指用来确定需要访问安全实体的主体是否就是它所声称的身份的过程。·用户与计算机系统的最初交互体现为登录。在登录对话框中,操作系统试图通过提交的信息,去验证来者就是它们所声称的身份。这种保护就是“外部认证”,也称“用户认证”。-45- 《操作系统》习题解答·所谓“内部认证”,即是指要确保执行的线程(进程)不被其他用户拥有。·所谓“授权”,指的是在一个主体被认证后,确定它是否有权访问安全实体。·就计算机安全来说,通常把喜欢闯入与自己毫不相干区域的人称为“入侵者”,也就是通常所说的“黑客”。·在计算机界,“黑客”其实是对资深程序员的一种荣誉称谓。考虑到黑客的真正含义,应该把那些企图非法闯入计算机系统的人归结称为“骇客”。·伪装者:是指未经授权的人,穿越了系统的访问控制,以一个合法用户账号的身份使用计算机。·违法行为者:是指一个合法用户,未经授权访问了不该访问的数据、程序或资源;或者虽经授权,却错误地使用了他的特权。·神秘用户:是指夺取了对系统的管理控制权,且使用这一权利躲避系统的访问控制和审计。·所谓“恶意软件”,是指利用计算机系统本身的漏洞,专门设计来制造破坏或用尽计算机资源的软件,它们常常隐藏在合法软件中,或伪装成合法软件。·所谓“后门”是指进入某个程序的隐蔽入口点,知道后门的人无需通过正常的安全访问渠道,就可以获得访问。·所谓“逻辑炸弹”,是一种最古老的恶意软件,它被嵌入到某些合法程序的代码中,并设置发作的条件,只要条件满足,就会发生“爆炸”。·所谓“特洛伊木马”,是一个有用的、但又含有隐秘代码的程序或命令过程,能通过系统的安全检查。执行它时,那段隐秘代码就会去完成那些未授权用户无法直接完成的事情。·所谓“病毒”,就是能够通过将其代码内嵌到合法程序之上进行自我繁殖的一个程序段,它能像生物病毒似的自我繁殖。·所谓“蠕虫”,是一个独立完整的程序,被设计成能够在网络上寻找寄生和繁殖的场所。它一旦在一个系统内部活跃起来,就会进行分裂性的自我复制,通过网络连接在系统之间进行传播。·所谓“僵尸”,是一个程序,它能够秘密地控制通过Internet连接的另一台计算机,并通过该计算机向目标Web站点发送大量的登录请求,达到使其拒绝服务的目的。·所谓“生物识别”,是指对用户的某些难以伪造的物理特征进行的认证。比如指纹识别、声音识别。·所谓一个进程的“保护域”,是指关于该进程的一系列(安全实体,访问权限)对,每个对规定了一个安全实体和一些可在其上实施的操作的子集。这就是说,保护域告诉用户进程,在某个安全实体上可以做什么和不可以做什么。·实现访问矩阵的一种方法是将矩阵按照安全实体(也就是访问矩阵的“列”)划分,形成一个个表,每个表里包含着对相应安全实体能够进行访问的所有主体的访问权限。这样的表被称为是安全实体的“访问控制表”。·实现访问矩阵的另一种方法是将矩阵按照主体(也就是访问矩阵的“行”)划分,形成一个个表,每个表里包含着该主体可以访问的所有安全实体的访问权限。这样的表被称为是主体的“权能表”。2.产生死锁的四个必要条件是:互斥、B、不可抢占和循环等待。A.请求与阻塞B.占有并等待C.请求与释放D.释放与阻塞3.为了预防死锁的发生,通常是破坏产生死锁的四个必要条件。但是,在计算机系统中,破坏A条件是不现实的,很难行得通。A.互斥B.占有并等待C.不可抢占D.循环等待4.将系统资源进行统一编号,实行按顺序分配的策略,可破坏产生死锁的D条件。-45- 《操作系统》习题解答A.互斥B.占有并等待C.不可抢占D.循环等待5.某个系统有3个进程,都需要同类资源4个。那么该类资源数至少为C个时,系统不会发生死锁。A.8B.9C.10D.116.死锁的预防是根据C而采取措施实现的。A.配置足够的系统资源B.使进程的推进顺序合理C.破坏死锁的四个必要条件之一D.防止系统进入不安全状态7.下面的论述中,只有B是不正确的。A.如果P、V操作使用不当,系统仍可能发生死锁B.使用P、V操作进行资源分配,可以完全避免死锁的发生C.系统处于不安全状态,并不一定就发生死锁D.银行家算法是在保证系统处于安全状态下,才答应把资源分配给申请者8.从安全角度来说,A不是计算机系统提出的主要设计目标。A.CPU的利用率B.数据的机密性C.数据的完整性D.系统的可用性9.计算机系统或网络在安全性上受到的主动攻击是B、重放、更改消息和拒绝服务四种形式。A.火灾B.伪装C.地震D.病毒10.为什么说为系统资源统一编号,采取顺序资源分配方法,可以避免死锁的发生?答:为了便于说明,不妨设系统中有n个进程P1、P2、…、Pn,有m类资源R1、R2、…、Rm,下标即是资源的编号。根据顺序资源分配法可知,进程申请资源时必须按照资源编号的升序进行。即任何进程获得Ri类资源后,再申请的资源Rj的编号j一定大于i。因此在任何时刻,系统中至少存在一个进程Pk,它占有了较高编号的资源Rh,且它继续申请的资源必然是空闲可用的。因此,进程Pk可以一直向前推进直至完成,并在完成后释放所占有的所有资源。在Pk完成后,剩下的进程集合中同样会存在一个进程,它占用了较高编号的资源,且它继续申请的资源必然是空闲可用的。因此,它也可以运行到结束,并释放它所占用的所有资源。依此类推,所有进程都可以运行到结束。也就是说,系统不会发生死锁。11.十个单元的一种资源被进程A、B、C共享,每个进行的最大需求量分别是4、7、8。假设它们对资源的申请序列如下表所示。试问:(1)为使系统不发生死锁,在进行到序号6时,三个进程各处于什么状态?获得的资源数各是多少?(2)系统会发生死锁吗?为什么?序号进程申请资源数1A22B43C24B25C26A2………答:这是-45- 《操作系统》习题解答单种资源银行家算法的问题。(1)根据银行家算法,在进行到序号4、进程B又提出2个单元的资源申请时,如果满足它,那么系统所有资源都分配出去,但没有一个进程可以完成自己的任务。所有此时不能答应进程B的资源申请,只能让其阻塞等待。同理,在进行到序号5、进程C又提出2个单元的资源申请时,也只能让其阻塞等待。于是,在进行到序号6时,进程B和C分别占用4个和2个单元的资源,并处于阻塞等待的状态,进程A处于就绪/可运行状态。(2)当进程A在序号6处提出2个单元的资源申请时,系统可以满足它的申请。因为把此时最后2个单元的资源分配给它后,就满足了A对资源的最大需求量,它就可以运行到结束,交出它所占用的4个单元的资源。这样,进程B和进程C都可以先后完成。因此,在进行到序号6之后,系统处于安全状态。12.一个系统有四类资源:R1、R2、R3、R4,五个并发进程:P1、P2、P3、P4、P5,各个进程对各种资源的最大需求量以及已分配资源量,如下表所示。最大需求量(Claim)已分配量(Allocation)R1R2R3R4R1R2R3R4P100120012P227502000P366560034P443562354P506520332试问:(1)计算各进程还需要的资源向量。(2)系统当前处于安全状态吗?(3)当进程P3又提出资源申请为(0,1,0,0)时,系统能够接受这次资源申请吗?答:这是多种资源银行家算法的问题。(1)各进程还需要的资源量等于其最大需求量减去已分配量。因此,进程P1还需要的资源向量为(0,0,0,0);进程P2还需要的资源向量为(0,7,5,0);进程P3还需要的资源向量为(6,6,2,2);进程P4还需要的资源向量为(2,0,0,2);进程P5还需要的资源向量为(0,3,2,0)。(2)目前,系统处于安全状态,因为存在一个安全运行序列:P1→P4→P5→P2→P3。(3)当进程P3又提出资源申请为(0,1,0,0)时,系统不能立即满足它,因为否则会使系统处于不安全状态。13.试述病毒和蠕虫的异同点。答:病毒和蠕虫的目的都是扩散到别的程序中,并在系统中搞破坏,比如修改和毁坏文件、导致系统崩溃和程序出错。它们都是依靠繁殖来扩展自己的。但是,病毒是一个内嵌到合法程序中的程序段,而蠕虫则是一个独立、完整的程序。14.下面给出的安全问题,应该使用哪种保护机制:是访问控制表还是权能表?(1)Ken想要他的文件除了自己办公室的人外都可读。(2)Mitch和Steve想要共享某些机密文件。(3)Linda想要公开自己的某些文件。答:(1)使用依附于Ken的文件的访问控制表;(2)使用依附于Mitch和Steve的权能表;(3)使用依附于Linda想要公开的那些文件的访问控制表。-45-'