当对磁盘上的一hyper v 物理磁盘块进行访问时,要经过哪些操作

当前位置: >>
2 操作系统习题及参考答案
操作系统原理操作系统习题集参考教材: 汤小丹等编著,计算机操作系统(第三版) ,西安电子科技大学出版社,2007 年版; 何炎祥等编著,计算机操作系统,清华大学出版社,2005 年版; 邹恒明著,计算机的心智操作系统之哲学原理,机械工业出版社,2009 年 4 月。第一章 操作系统引论 1.1 选择题1.下列哪一条是在操作系统设计中引入多道程序技术的好处?A A. 使并发执行成为可能 B. 简化操作系统的实现 C. 减少对内存容量的需求 D. 便于实施存储保护 2.Windows XP 属于下列哪一类操作系统?B A. 单用户单任务 B. 单用户多任务 C. 多用户 D. 批处理 3.下列哪一条不是批处理系统的优点?D A. 吞吐量大 B. 资源利用率高 C. 系统开销小 D. 响应及时 4.能及时处理由过程控制反馈的数据并作出响应的操作系统是( C ) A、分时系统 B、网络系统 C、实时系统 D、批处理系统 5.UNIX 系统是一个____C______操作系统。 A、单用户 B、单用户多任务 C、多用户多任务 D、多用户单任务 6.在分时系统中,当用户数一定时,影响响应时间的主要因素是_B_。 A、时间片 B、调度算法 C、存储分配方式 D、作业的大小 7.Windows NT 属于哪一类操作系统?B A、单用户单任务 B、单用户多任务C、单道批处理D、多用户8.多道程序设计技术是指:多道程序可同时进入 A ,在 A 的位置 B ,为使多道进程并发执行必 须为每个用户作业创建进程,批处理系统由 C 创建,而分时系统由 D 创建。 选择答案: (1)内存 (2)系统 (3)固定 (4)不定 (5)进程调度 (6)中级调度 (7) 作业调度 (8)输入进程 (9)系统调用 (10)命令解释进程 答 案 A 1 B 4 C 7 D 101 操作系统原理1.2 填空题1.在手工操作阶段,操作员在进行装卸卡片或磁带等手工操作时,CPU 处于空闲等待,我们称这种 现象为 人机矛盾 。 2.多道批处理系统的特征为 并发?、共享、虚拟和异步 。3.批量处理系统的缺点为 周转时间长 ; 缺乏人工干预(人机交互) 。 4.多道批处理 系统的出现,标志着操作系统的形成。 5.操作系统的基本类型有 批处理操作系统、分时系统和实时系统 。 6.分时系统的特征为 多路性、 独立性、 及时性、 交互性 四个基本特征。 7.以多道程序设计为基础的现代操作系统具有并发性 、共享性 、 虚拟性 、 异步性 。 8.计算机系统按用户指定的步骤,为用户一次上机解题所完成的工作的总和称为 作业 。 9. 从资源管理的观点出发, 可把操作系统分为 存储管理 、 设备管理、 文件管理 、 处理机管理 和 作业管理 五大部分。 10.单道批处理系统是在解决 人机矛盾 和 CPU 与 I/O 设备速度不匹配 的矛盾中发展起来的。1.3 判断题1.分时操作系统必然建立在多道程序技术的基础之上。错 2.联机批处理解决了作业自动转接,减少了作业建立和手工操作时间。对 3.交互性是批处理系统的一个特征。错 4.解决了作业自动转接,减少了作业建立和手工操作时间。对 5.过载保护是分时系统的一个特征。错 6.多道程序的引入是为了提高 CPU 的利用率。对 7.多道程序技术可将一台物理 CPU 虚拟为多台逻辑 CPU。对 8.在分时系统中,时间片越小,一个作业的总运行时间越短。错1.4 简答题1.研究操作系统的主要观点有那些? 答: (1)资源的观点:研究如何对计算机系统中的各种软、硬件资源进行管理;怎样使计算机系统 协调一致地、有效地为用户服务;如何既发挥计算机系统资源的使用效率、提高计算机系统的服务 质量,又确保计算机系统的安全可靠。 (2)用户观点:操作系统是一个黑盒子,配置了操作系统的计算机与原来真实的物理计算机迥然不 同,因为它提供了用户使用计算机的更方便手段,构造了一台虚拟机,采用的操作命令决定了虚拟 机的功能。 (3)进程观点:从进程角度分析操作系统,则所有进程的活动就构成了操作系统的当前行为,在每 一个瞬间都有一棵进程家族树,它展示着操作系统行为主体的一个快照。 (4)模块分层观点:用模块分层观点讨论模块之间的关系或者说讨论如何形成操作系统的架构,如 何安排连结这些程序模块才能构造一个结构简单清晰、逻辑正确、便于分析和实现的操作系统。 2.什么是操作系统?简述现代操作系统的特征。2 操作系统原理答:操作系统是控制和管理计算机系统内各种硬件和软件资源、合理有效地组织计算机系统的工作, 为用户提供一个使用方便可扩展的工作环境,从而起到连接计算机和用户的接口作用。 现代操作系统具有如下特征: 1 ○并发(共行)性:指能处理多个同时性活动的能力。I/O 操作和计算重叠,内存中同时存放几道用 户程序,这些都是并发的例子。 2 ○共享:指多个计算任务对资源的共同享用。并发活动可能要求共享资源和信息;多个用户共享一 个程序的同一个副本,而不是分别向每个用户提供一个副本可以避免重复开发,节省人力资源。 3 ○不确定性:指操作系统必须能处理任何一种事件序列,以使各个用户的算题任务正确地完成。 3.操作系统和用户程序之间的关系是什么? 答:操作系统通过虚拟及其界面给用户程序提供各种服务,用户程序在运行过程中不断使用操作系 统提供的服务来完成自己的任务。如用户程序在运行过程中需要读写磁盘,这时就要调用操作系统 的服务来完成磁盘读写操作。 另一方面,用户程序不可能先于操作系统启动之前启动,因此每次启动一个用户程序,都相当于操 作系统将控制转移给用户程序;而在用户程序执行完毕后,又将控制还回给操作系统。从这个角度 看,操作系统是主程序,用户程序是子程序,操作系统在其生命周期内不断地调用各种应用程序。 因此操作系统和各种应用程序可以看作是互相调用,从而形成一个非常复杂的动态关系。 4.推动操作系统进化的原因有哪些? 答:推动操作系统进化的根本原因是:硬件成本的不断下降;计算机功能和复杂性的不断变化。成 本降低意味着同样的价格可以买到更为先进的计算机;而复杂性的提高自然需要操作系统能力的提 高。 另外,操作系统和攻击者之间的博弈也是影响操作系统发展的一个重要因素。 5.试简述操作系统的发展历史。 答:操作系统大致经历了如下几个重要阶段: 第一阶段:状态机操作系统(1940 年以前) 。此时计算机尚处于萌芽状态,操作系统运行在英国人 贝巴斯想象的自动机上。驱动这一阶段操作系统的动力是个人英雄主义。 第二阶段:单一操作员、单一控制端操作系统(20 世纪 40 年代) 。这种单一操作员、单一控制端操 作系统(SOSC,single operator,single console)的操作系统是刚出现计算机时人们能想到的最直观 的控制计算机的方式,以美国宾西法尼亚大学的 ENIAC 计算机为代表。操作系统提供一个标准命令 供用户使用,满足用户基本的人机交互需求。 (串行执行) 第三阶段:批处理操作系统(20 世纪 50 年代) 。由于人操作缓慢,致使 SOSC 的运行效率低下,即 人机矛盾,为了改变这种状况,出现了批处理操作系统,以 IBM 的 1401 和 7094 为代表。用户首先 将自己的程序编在卡片或纸带上,交给计算机管理员,管理员在收到一定数量的用户程序后,将卡 片及纸带上的程序和数据通过 IBM 1401 机器读入,并写在磁带上。然后,计算机操作系统将这盘磁 带加载到 IBM 7094 上,一个个地运行用户程序,运行的结果写到另一个磁盘上。所有程序运行完毕 后, 将存有结果的磁盘连接到 IBM 1401 上输出。 因此批处理操作系统就是由批处理监视器和原来的 操作系统库函数组成的。 (串行执行) 第四阶段:多道批处理操作系统(20 世纪 60 年代) 。批处理阶段不能很好地解决高速设备(CPU) 等待低速设备(I/O)的问题。此阶段的主要目标是让 CPU 和 I/O 重叠运行,以 IBM 的 OS 360 为代 表。同一时间可以运行多个程序(宏观上) ,但控制计算机的人还是一个,即用户将自己的程序交给 计算机管理员,再由管理员负责加载运行。 (并发执行) 第五阶段: 分时/实时操作系统 (20 世纪 70 年代) 分时操作系统是为了解决人机交互问题而出现的, 。 以 MULTICS 和 UNIX 为代表。用户重新回到了机器的前面,通过 RS232 与主机进行通信,管理自 己的程序;主机给每个用户分配一定的时间片,轮流地为各个用户服务。 实时操作系统是为了解决对计算机相应时间有严格要求的临界系统或应用而产生的,以 VxWorks 和 EMC 的 DART 为代表。 第六阶段:现代操作系统(1980 年以后) 。是工作站和个人计算机出现的结果,代表性的有 DOS, Windows,Unix 和 Linux 等。这时以信息安全、网络为主要特征。 6.现代几个典型操作系统所属的类型? 答:操作系统是由于需要而产生的,它随着计算机技术本身及其计算机应用的日益发展而逐渐发展3 操作系统原理和不断完善。它的功能由弱到强,现已成为计算机系统的核心组成。经历了手工操作、早期批处理 阶段、执行系统阶段、多道程序系统阶段、分时系统、实时系统、通用操作系统。进入 80 年代,硬 件技术飞速发展以及微处理机的出现和发展,操作系统有了进一步发展,如单用户操作系统、网络 操作系统、分布式操作系统及智能化操作系统。 单用户、单任务的操作系统,以 DOS 操作系统为代表,继 CP/M 操作系统之后,还出现了 C-DOS、 M-DOS、TRS-DOS、S-DOS 和 MS-DOS 等磁盘操作系统。还包括 Windows 3.1/3.2/95/98 等版本。 多用户多道作业和分时系统,其典型代表有 UNIX、XENIX、OS/2 以及 Windows NT 及其后来版本 的操作系统。1.5 综合题1.假设有一个支持多道程序设计的计算机系统,其中每个作业都有完全相同的属性。对一个作业, 在一段计算周期 T 中,一半的时间用于 I/O,另一半时间用于处理器操作。每个作业总共运行 N 段 计算周期。有几个定义如下: 周期(Turnaround Time)=完成一个作业实际用的时间; 吞吐量(Throughput)=在一时间段 T 中完成的平均作业数; 处理器使用率(Processor Utilization)=处理器处于激活态(非等待)时间的百分比。 计算当有 1,2 或 4 个作业并发执行时的周期、吞吐量和处理器使用率,假设时间段 T 按一下任一种 方式分布: (1)I/O 在前半段,处理器运行在后半段; (2)将 T 分为 4 段,I/O 在第 1,4 段,处理器运行于第 2,3 段。 答: (1)I/O 在前半段,处理器运行于后半段1 A I/O CPU 1 A I/O CPU B 1 A I/O CPU B C D 1 A I/O CPU CPU I/O 1 A I/O CPU CPU I/O B A C D I/O I/O I/O 1 I/O CPU CPU I/O CPU CPU I/O CPU CPU I/O I/O CPU CPU I/O I/O CPU CPU I/O 2 I/O I/O I/O I/O I/O CPU CPU I/O 3 CPU CPU CPU … … … … 2N-3/4 2N-1/2 2N 2N+1/2 N/2 N/2 N/2 N/2 2N 2N+1/2 I/O CPU … I/O I/O CPU I/O CPU I/O CPU I/O I/O CPU 2 I/O 2 CPU I/O I/O CPU 3 I/O … … … … CPU N I/O CPU CPU I/O N I/O CPU CPU I/O I/O CPU CPUI/O N N+1/2 N/2 N/2 N N+1/2 N N 50% … … I/O CPU CPU I/O I/O CPU 2N 2N CPU I/O CPU I/O CPU 2N-1/2 2N 2N+1/2 N/2 N/2 N/2 N/2 2N 2N+1/2 2 CPU I/O … … CPU I/O N CPU I/O CPU N N+1/2 N/2 N/2 N N+1/2 N CPU 完成时刻 N 运行时间 N 利用率 50%2N-1 I/O CPU I/O(2)I/O 在第 1、4 段,处理器运行于第 2、3 段B I/O CPU CPU4 操作系统原理当同时运行 2 个作业时,系统吞吐量和 CPU 利用率显著增加,表明系统被充分利用。但当作业增加 到 4 个时,吞吐量和 CPU 使用率变化不大,但平均周期却增加一倍,表明系统负荷过重,作业处理 时间明显增长。 2.某计算机用 Cache、内存和磁盘来实现虚拟内存。如果某数据在 Cache 中,访问它需要 tA(ns) ; 如果在内存但不在 Cache 中,则需要 tB(ns)的时间将其装入 Cache 然后开始访问;如果不在内存 中,需要 tC(ns)将其读入内存,然后用 tB(ns)读入 Cache。如果 Cache 命中率为 中率为m ?1 ,则平均访问时间是多少? mn ?1 ,内存命 n答:根据题目中的数据,平均访问时间为:n ?1 n ?1 m ?1 n ?1 m ?1 ?t A ?(1 ? )? ? (t A ? t B ) ? (1 ? ) ? (1 ? ) ? (t A ? t B ? t C ) n n m n m n ?1 1 m ?1 1 1 ?t A ? ? ? (t A ? t B ) ? ? ? (t A ? t B ? t C ) = n n m n m 1 1 tC = t A ? tB ? n mn3.操作系统的未来发展趋势是怎样的? 答:随着计算机的不断普及,操作系统的功能会变得越来越复杂。在这种趋势下,操作系统的发展 面临着两个不同的方向选择:一是微内核,二是大而全的全方位发展。微内核操作系统虽然有不少 人在研究,但在工业界获得认可的并不多。对工业界来说,操作系统是向着多功能、全方位方向发 展的。另外,随着人们对信息安全重视程度的不断提高,如何构建可靠、可用和安全的操作系统将 成为一个十分重要的课题。从 Unix 的 1400 行代码到 Windows XP 的 4000 万行代码,这种系统的爆 炸性增长给系统的可靠、可用和安全性带来的安全隐患,在短时期内是很难解决的。 综上所述,操作系统的发展趋势很难预测。 4.操作系统的主要特征是什么? 答:操作系统的主要特征是并发性、共享性、虚拟性和不确定性。 1 ○并发性:并发性是指两个或多个事件在同一时间间隔内发生。在多道程序环境下,并发性是 指在一段时间内,宏观上有多个程序在同时运行,但在单处理机系统中,每一时刻却仅能有一道程 序执行,故微观上这些程序只能是分时地交替执行。倘若在计算机系统中有多个处理机,则这些可 以并发执行的程序便可被分配到多个处理机上,实现并行执行,即利用每个处理机来处理一个可并 发执行的程序,这样,多个程序便可同时执行。两个或多个事件在同一时刻发生称为并行。在操作 系统中存在着许多并发或并行的活动。 2 ○共享性:共享是指系统中的资源可供内存中多个并发执行的程序共同使用。由于资源属性的 不同,对资源共享的方式也不同,目前主要有以下两种资源共享方式互斥共享方式和同时访问方式。 并发和共享是操作系统的两个最基本的特征,它们又互为对方存在的条件。一方面,资源共享是以 程序的并发执行为条件的,若系统不允许程序并发执行,自然不存在资源共享问题;另一方面,若 系统不能对资源共享实施有效管理,协调好多个程序对共享资源的访问,也必然影响到程序并发执 行的程度,甚至根本无法并发执行。 3 ○虚拟性:是指将一个物理实体映射为若干个逻辑实体。前者是客观存在的,后者是虚构的, 是一种感觉性的存在,即主观上的一种想象。 4 ○不确定性:在多道程序环境下,允许多个程序并发执行,但只有程序在获得所需的资源后方 能执行。在单处理机环境下,由于系统中只有一个处理机,因而每次只允许一个程序执行,其余程 序只能等待。内存中的每个程序在何时能获得处理机运行,何时又因提出某种资源请求而暂停,以 及程序以怎样的速度向前推进,每道程序总共需多少时间才能完成,等等,都是不可预知的。因此, 在操作系统中,存在着不确定性。 4.简述 Windows 系列操作系统的发展历史。 答:Windows 系列操作系统是由微软公司从 1985 年起开发的一系列视窗操作系统产品,包括个5 操作系统原理人(家用) 、商用和嵌入式 3 条产品线(图 1.4 ) 。个人操作系统包括 Windows Me、Windows 95/98, 及更早期的版本 Windows 1.x、 3.x 等, 2.x、 主要在 IBM 个人机系列上运行。 商用操作系统是 Windows 2000 和其前身版本 Windows NT,主要在服务器、工作站等上运行,也可以在 IBM 个人系列机上运 行。 嵌入式操作系统有 Windows CE 和手机用操作系统 stinger 等。 Windows XP 将使家用和商用两条 产品线合二为一。截止至 20 世纪末,全世界运行各种 Windows 版本的计算机有两亿台左右。微软 公司从 1983 年开始研制 Windows 操作系统。当时,IBM PC 进入市场已有两年,微软公司开发的磁 盘操作系统 DOS 和编程语言 BASIC 随 IBM PC 捆绑销售,取得了很大的成功。Windows 操作系统 最初的研制目标是在 DOS 的基础上提供一个多任务的图形用户界面。不过,第一个取得成功的图形 用户界面系统并不是 Windows, 而是 Windows 的模仿对象――苹果公司于 1984 年推出的 Mac OS(运 行于苹果公司的 Macintosh 个人计算机上) Macintosh 机及其上的操作系统当时已风靡美国多年, , 是 IBM PC 和 DOS 操作系统在当时市场上的主要竞争对手。当年苹果公司曾对 PC 机和 Windows 操作 系统不屑一顾, 并大力抨击微软公司抄袭 Mac OS 的外观和灵感。 但苹果机和 Mac OS 是封闭式体系 (硬件接口不公开、系统源代码不公开等) ,而 IBM PC 和 MS-DOS 是开放式体系 (硬件接口公 开、允许并支持第三方厂家做兼容机、公开操作系统源代码等) 。这个关键的区别使得 IBM PC 后来 者居上, 销量超过了苹果机, 并使得在 IBM PC 上运行的 Windows 操作系统的普及率超过了 Mac OS, 成为个人计算机市场占主导地位的操作系统。 5.简述 UNIX 系列操作系统的发展历史。 答: “UNIX”这个名字是取“Multics”的反义,其诞生背景与特点一如其名。Multics 项目 (MULTiplexed Information and Computing Service) 由贝尔(电话)实验室 (Bell (Telephone) Laboratories,简称 BTL) 、通用电气公司 (General Electric) 和麻省理工学院联合开发,旨在建立 一个能够同时支持数千个用户的分时系统,该项目因目标过于庞大而失败,于 1969 年撤销。退出 Multics 项目后,1969 年中期,贝尔实验室的雇员 Thompson 开始在公司的一台闲置的只有 4KB 内 存的 PDP-7 计算机上开发一个“太空漫游”游戏程序。由于 PDP-7 缺少程序开发环境,为了方便这 个游戏程序的开发,Thompson 和公司的另一名雇员 Ritchie 一起用 GE-645 汇编语言 (以前曾用于 Multics 开发) 开发 PDP-7 上的操作环境。最初是一个简单的文件系统,很快又添加了一个进程子 系统、一个命令解释器和一些实用工具程序。他们将这个系统命名为 UNIX。此后,随着贝尔实验 室的工作环境的需要,他们将 UNIX 移植到 PDP-11 上,并逐渐增加了新的功能。很快,UNIX 开始 在贝尔实验室内部流行, 许多人都投入到它的开发中来。 1971 年, 《UNIX 程序员手册》 1 版出版, 第 这之后直到 1989 年,贝尔实验室又相继发行了 10 个版本的 UNIX 和相应的手册。1973 年 Ritchie 用 C 语言重写了 UNIX(第 4 版) ,这使得 UNIX 的可移植性大大增强,这是 UNIX 迈向成功之路的 关键一步。1973 年 10 月,Thompson 和 Ritchie 在 ACM (Association for Computing Machinery,计 算机协会)的 SOSP (Symposium Operating Systems Principles,操作系统原理讨论会)会议上发表 了首篇 UNIX 论文,这是 UNIX 首次在贝尔实验室以外亮相。 UNIX 的第一次移植是由 Wollongong 大学于 1976 年将其移植到 Interdata 机上。其它几次较早 的移植包括: 1978 年, 微软公司与 SCO 公司合作将 UNIX 移植到 Intel 8086 上, XENIX 系统 (最 即 早的 UNIX 商业变种之一) ;1978 年,DEC 公司将 UNIX 移植到 VAX 上,即 UNIX/32V3 (BSD 的 前身) 。 UNIX 的不断发展导致许多计算机公司开始发行自己机器上的 UNIX 增值商业版本。 UNIX 的第 一个商业变种是 1977 年 Interactive Systems 公司的 IS/1(PDP-11) 。20 世纪 80 年代著名的商业变种 有 SUN 公司的 Sun OS、微软公司与 SCO 公司的 XENIX 等。 20 世纪 70 年代中期到 80 年代中期,UNIX 的迅速发展,众多大学和公司的参与,使得 UNIX 的变种迅速增多。 这些变种主要围绕 3 条主线: 由贝尔实验室发布的 UNIX 研究版 (First Edition UNIX 到 Tenth Edition UNIX,或称 V1 到 V10,以后不再发行新版;由加利福尼亚州大学伯克利分校发布 的 BSD(Berkeley Software Distribution)和由贝尔实验室发布的 UNIX System Ⅲ 和 System V。 到 20 世纪 80 年代,UNIX 已在从微型机到巨型机等众多不同机型上运行。作为通用操作系统, 当时 UNIX 的主要竞争对手是各计算机厂商的专有系统,如 IBM 的 OS 360/370 系列等。 20 世纪 80 年代后期,UNIX 已经出现了很多变种,变种增多导致了程序的不兼容性和不可移植 (同一应用程序在不同 UNIX 变种上不能直接运行) 。因此,迫切需要对 UNIX 进行标准化。这就导 致了两大阵营的出现。 1987 年,在统一市场的浪潮中,AT&T 宣布与 SUN 公司合作,将 System V 和 Sun OS 统一为一 个系统。其余厂商十分关注这项开发,认为他们的市场处于威胁之下,于是联合开发新的开放系统。6 操作系统原理他们的新机构 Open Software Foundation (开放软件基金会,简称 OSF)于 1988 年成立。作为回应, AT&T 和 SUN 公司联盟亦于 1988 年形成了 UNIX International (UNIX 国际, 简称 UI) 这场 。 “UNIX 战争”将系统厂商划分成 UI 和 OSF 两大阵营。UI 推出了 SVR4,而 OSF 则推出了 OSF/1。虽然两 者都是 UNIX,但他们在系统构架、命令操作以及管理方式上都有所不同。两者在市场上展开了激 烈的竞争。 两种 UNIX 系统并存,却又不能相互兼容,这对用户非常不利,因而直接影响了 UNIX 对用户 的吸引力。随着 Microsoft 公司的迅速崛起,并以惊人的速度由传统的 PC 机市场向工作站和网络市 场扩张,迫使 UI 和 OSF 两大阵营不得不相互让步、握手言和,从而共同制定了应用程序接口 API (Application Program Interface) 标准技术规范, 并联合开发共同开放软件环境 COSE(Common Open Software Environment) 。 6.简述 Linux 操作系统的发展历史。 答:Linux 最初是由芬兰赫尔辛基大学计算机系大学生 Linus Torvalds,在从 1990 年底到 1991 年的几个月中, 为了自己的操作系统课程学习和后来上网使用而陆续编写的, 在他自己买的 Intel 386 PC 机上,利用 Tanenbaum 教授自行设计的微型 UNIX 操作系统 Minix 作为开发平台。据 Linus 说刚 开始的时候他根本没有想到要编写一个操作系统内核,更没想到这一举动会在计算机界产生如此重 大的影响。最开始是一个进程切换器,然后是为自己上网需要而自行编写的终端仿真程序,再后来 是为他从网上下载文件而自行编写的硬盘驱动程序和文件系统。这时候他发现自己已经实现了一个 几乎完整的操作系统内核,出于对这个内核的信心和美好的奉献与发展愿望,Linus 希望这个内核能 够免费扩散使用,但出于谨慎,他并没有在 Minix 新闻组中公布它,而只是于 1991 年底在赫尔辛基 大学的一台 FTP 服务器上发了一则消息,说用户可以下载 Linux 的公开版本(基于 Intel 386 体系结 构)和源代码。从此以后,奇迹发生了。 1993 年,Linux 的第一个产品――Linux 1.0 版问世的时候,是按完全自由版权进行扩散的。它 要求所有的源代码必须公开,而且任何人均不得从 Linux 交易中获利。然而半年以后,Linus 开始意 识到这种纯粹的自由软件理想对于 Linux 的扩散和发展来说, 实际上是一种障碍而不是一股推动力, 因为它限制了 Linux 以磁盘复制或者 CD-ROM 等媒体形式进行扩散的可能, 也限制了一些商业公司 参与 Linux 进一步开发并提供技术支持的良好愿望。于是 Linus 决定转向 GPL 版权,这一版权除了 规定有自由软件的各项许可权之外,还允许用户出售自己的程序复制品。这一版权上的转变后来证 明对 Linux 的进一步发展确实极为重要。从此以后,便有多家技术力量雄厚又善于市场运作的商业 软件公司加入了原先完全由业余爱好者和网络黑客所参与的这场自由软件运动, 开发出了多种 Linux 的发布版本,增加了更易于用户使用的图形界面和众多的软件开发工具,极大地拓展了 Linux 的全 球用户基础。Linus 本人也认为: “使 Linux 成为 GPL 的一员是我一生中所做过的最漂亮的一件事。 ” 一些软件公司,如 Red Hat、InfoMagic 等也不失时机地推出了自己的以 Linux 为核心的操作系统版 本, 这大大推动了 Linux 的商品化。 在一些大的计算机公司的支持下, Linux 还被移植到 Alpha、 Power PC、MIPS 及 SPARC 等为处理机的系统上。 随着 Linux 用户基础的不断扩大,性能的不断提高、功能的不断增加,各种平台版本的不断涌 现,以及越来越多商业软件公司的加盟,Linux 已经在不断地向高端发展,开始进入越来越多的公司 和企业计算领域。Linux 被许多公司和 Internet 服务提供商用于 Internet 网页服务器或电子邮件服务 器,并已开始在很多企业计算领域中大显身手。1998 年下半年,由于 Linux 本身的优越性,使得它 成为传媒关注的焦点,进而出现了当时的“Linux 热” :首先是各大数据库厂商(Oracle、Informix、 Sybase 等) ;继而是其它各大软硬件厂商(IBM、Intel、Netscape、Corel、Adeptec、SUN 公司等) , 纷纷宣布支持甚至投资 Linux (支持是指该厂商自己的软硬件产品支持 Linux, 即可以在 Linux 下运 行,最典型的是推出 xxx for Linux 版或推出预装 Linux 的机器等) 。即使像 SUN 和 HP 这样的公司, 尽管它们的操作系统产品与 Linux 会产生利益冲突,也大力支持 Linux,从而达到促进其硬件产品销 售的目的。 7.自由软件的含义是什么? 答:自由软件的自由(free)有两个含义:第一是免费,第二是自由。免费是指自由软件可免费 提供给任何用户使用,即便是用于商业目的,并且自由软件的所有源程序代码也是公开的,可免费 得到。自由是指它的源代码不仅公开而且可以自由修改,无论修改的目的是使自由软件更加完善, 还是在对自由软件进行修改的基础上开发上层软件。总之,可以对它做自己喜欢做的任何事情,除 了一两件不能做的事之外(如不能宣称这个系统是你自己开发的) 。自由软件的出现给人们带来很大7 操作系统原理的好处:首先,免费可给用户节省相当的费用;其次,公开源码可吸引尽可能多的开发者参与软件 的查错与改进;在开发协调人的控制下,自由软件新版本的公布、反馈、更新等过程是完全开放的。8 操作系统原理第二章 进程管理 2.1 选择题1.进程在发出 I/O 请求后,可能导致下列哪种进程状态演变?D A. 就绪 → 执行 B. 执行 → 就绪 C. 阻塞 → 执行 D. 执行 → 阻塞 2. “临界区”是指:C A. 一组临界资源的集合 C. 访问临界资源的一段代码B. 可共享的一块内存区 D. 请求访问临界资源的代码3.使用一个信号量协调 5 个进程对 3 个同类临界资源的访问,下列哪个信号量值不应该出现?D A. 3 B. 0 C. C1 D. C3 4.使用一个信号量协调 6 个进程对 2 个同类临界资源的访问,下列哪个信号量值不应该出现?A A. 3 B. 0 C. C1 D. C3 5. “临界资源”是指:C A. 正在被占用的资源 C. 一次只能被一个进程使用的资源B. 不可共享的资源 D. 可同时使用的资源6.下列哪种通信方式不属于:一个进程向中间实体发送消息,等待另一进程异步地接收。D A. 共享存储区 B. 消息缓冲 C. 信箱方式 D. 共享文件 7.如何从用户方式(用户态)转入特权方式(核心态)?D A. 使用特权指令 B. 发生子程序调用 C. 使用共享代码 D. 进行系统调用 8.进程由就绪状态转变为执行状态是通过以下那个调度程序实现的?B A. 作业调度 B. 进程调度 C. 中级调度 D. 驱臂调度 9.以下哪个不是程序并发执行时所产生的特性:D A.与速度无关性 B.不可再现性 C.相互制约性 D.通信性 10.当某个作业被作业调度程序选中,进入内存开始运行时,作业的状态为:C A.提交状态 B.完成状态 C.执行状态 D.后备状态 11.以下哪个不是程序顺序执行时的特性( D ) A.封闭性 B.顺序性 C.无关性 D.不可再现性 12.在消息缓冲通信方式中,通信的基本单位是___B___。 A.文件 B.消息 C.记录 D.字段 13.可以使用银行家算法__D_____死锁。9 操作系统原理A.预防B.检测C.解除D.避免14.在消息缓冲队列中,消息队列属于_A_资源。 A.临界 B.共享 C.永久D.可剥夺15.在操作系统中,进行资源分配、调度和管理的最小独立单位是_C_。 A.作业 B.程序 C.进程 D.用户 16. 进程控制的功能是首先将要参加并发执行的程序 A , 进程完成时撤销进程, 以及控制进程 B , 进程控制通常是利用 C 实现的。进程从运行态到阻塞态的转换,由 D 的进程调用 E 原语来实现; 一个进程因等待某类资源而阻塞, 正在执行的进程释放该类资源时调用 F 原语把阻塞的进程转换为 G 。正在执行的进程响应外中断后再把阻塞的进程唤醒,被唤醒的进程原来等待的事件为 H 。 选择答案: (1)创建进程 (2)分派 CPU (3)调入内存 (4)状态转换 (5)过程调用 (6)原语 (7) 阻塞 (8)唤醒 (9)正在运行 (10)I/O 操作 (11)就绪态 (12)运行态 (13)阻塞态 A B C D E F G H 答 3 4 6 9 7 8 11 10 案 17.如果多个进程共享系统资源或相互合作完成一个共同的任务,则诸进程是以 A 方式运行的。对 临界资源的访问时采用 B 方式,对于相互合作的进程采用 C 方式以协调各进程执行的 D 。 选择答案: (1)共享 (2)独立 (3)互斥 (4)同步 (5)次序 (6)次数(7)异步 A B C D 答 4 3 7 2 案 18.一个数据表格(Dtab),在同一时间只允许一个写者去写,容许 RN 个读者同时去读。每个读者 读前必须在登记表(Tab)上登记,退出时则要删除相应的登记项。对以下流程填入正确语句实现同 步操作。 (注:Tab=Ω 表示登记表为空,即没有读者或写者正在操作 Dtab。 ) var mutex,wmutex,count : semaphore : =1,1,RN //语义? begin parbegin reader :begin repeat □ A □ B if tab= Ω then --------tab 的初值是多少呢?目前教学中《数据结构》均由 Pascal 语言改成了 C 语言。若用 Pascal 写信号量,学生理解起来比较困难,考试 易出差错。 P(wmutex) Add entry V(mutex) perform re P(mutex) delete entry if Tab=Ω then □ C □ D V(count); until false End writer : begin repeat □ E10 操作系统原理perform writing dtab operation □ F until false end parend end 选择答案: (1) p(mutex) (2) p(wmutex) (3) p(count) (4) v(mutex) (5) v(wmutex) (6) v(count) A B C D 答 1 6 5 4 案E 2F 519.在分时系统中用户登陆成功,系统要为该终端用户建立 A ,并把它插入到就绪队列。正在执行 的进程请求读磁盘数据,若数据不在输入缓冲区中,则调用 B 将自己投入到相应的 C 。 选择答案: (1)输入进程 (2)子进程 (3)终端解释进程 (4)激活原语 (5)唤醒原语 (6)阻塞 原语 (7)阻塞队列 (8)就绪队列 (9)运行队列 A B C 答 3 6 7 案 20. 在含有线程的系统中, 引入线程的目的是为了进一步提高系统的 A , 节省只有进程系统的 B 。 线程是一个 C 单位,线程切换基本不涉及 D 的再分配。 选择答案: (1)吞吐量 (2)交互能力 (3)并发能力 (4)执行 (5)资源 (6)CPU (7)占有资源 (8) 时间开销 (9)空间开销 (10)时空开销 A B C D 答 3 10 4 5 案 21.生产者与消费者分别利用计数信号量 empty,full 并借助单缓冲 buffer 进行数据传输: var empty,full: semaphore: =1,0; begin parbegin producer: begin repeat produce an item in nextp: A □; buffer: =nextp: B □ until false: end consumer: begin repeat C □ nextc: =buffer: D □ consume the item in nextc: until false end parend end 选择答案: (1)wait(full) (2)wait(empty) (3)signal(full) (4)signal(empty) A B C D 答 2 3 1 4 案11 操作系统原理22. 利用消息缓冲通信机制进行通信, 为发送进程的发送区首地址, 为接收进程的接收区首地址, a b mq、mutex、sm 分别为接收进程消息队列的队首地址、互斥信号量和同步信号量,对以下发送原语 和接收原语实现正确的同步操作: procedure send (receiver,a) // receiver 为接收者,a 为发送区首址 begin getbuf(a.size ,i) i.sender:= a. i.size: = a. i.text: = a. i.next: =0; getid (PCBset, receiver, j); A □; insert (j.mq, i) B □; signal (j.sm); endprocedure receive() begin j: = C □; Wait(j.mutex); D □; b.sender: =i. b.size: =i. b.text: =i. end 选择答案: (1)wait(j.mutex) (2)wait(j.sm) (3)signal(j.mutex) (4)signal(j.sm) A B C D 答 1 3 2 i:=delete(j.sm) 案 23.进程 get、copy、put 分别对缓冲区 buffer1、buffer2 进行操作。get 把产生的数据送 buffer1;copy 把 buffer1 的数据复制到 buffer2 中;put 把 buffer2 中的数据取出来打印。请选择相关的 wait、signal 语句完善给出的流程: 流程中 s1 是 get 的私用信号量;s2、s3 是 copy 的私用信号量;s4 是 put 的私用信号量。 get buffer1 copy buffer2 put卡片 var s1, s2, s3, s4:semaphore := A ; buffer1, buffer2 : begin parbegin get : begin repeat
wait(s1) ; buffer1:= B;12打印机 操作系统原理 end copy : begin repeat wait(s2) ; C; copy buffer1 to buffer2; D; E; end put : begin repeat F; y := buffer2; signal(s3) ; end parend end 选择答案: A : ① 1,1,1,1 ② 0,1,0,1 ③ 1,0,1,0 ④ 1,1,0,0 B、C、D、E、F: ① wait(s1) ② wait(s2) ③ wait(s3) ④ wait(s4) ⑤ signal(s1) ⑥ signal(s2) ⑦ signal(s3) ⑧ signal(s4) A B C D E F 答 3 6 3 8 5 4 案 24.用户级线程与内核线程之间的关系存在多对一、一对一、多对多三种模型。其中:多对一模型 是指多个用户级线程映射到一个内核线程。在这种模型中用户级线程在内核之上支持,并在用户空 间通过 A 实现;对线程的创建、管理、和调度 B 内核支持;任何一个用户级线程执行了引起阻塞 的系统调用,则该 C 阻塞;开发人员可创建任意多的线程,系统的并发度(并发性能) D 。一对 一模型是指每个用户级线程映射到一个内核线程,在这种模型中线程的并发能力 E ,能 F 运行在 多处理器系统上。 多对多模型是指多路复用了许多用户级线程到同样数量或更小数量的内核线程上, 开发人员可创建 G 的用户级线程,内核线程可在多处理器系统上并行运行。 选择答案: A:① 内核 ② 线程库 ③ 原语 ④ 系统调用 B:① 需要 ② 不需要 C、D、E、F、G: ① 线程 ② 程序 ③ 进程 ④ 任意数量 ⑤ 提高 ⑥ 并发 ⑦ 不变 ⑧ 并行 ⑨ 有限数量 A B C D E F G 答 1 1 2 7 5 8 4 案2.2 填空题1.Sa、Sb、Sc 是已定义信号量,初值分别为 1、0、0;x、y、z 是公共变量。下面三个并发程序段 执行结束后,x= 19 _,y= 10 ,z= 28 。 prA() { P(Sc); z=x+y;13 操作系统原理V(Sb); }prB() { y=18; P(Sb); V(Sc); P(Sb); y=z-y; V(Sa); } prC() { P(Sa); x=10; V(Sb); P(Sa); x=z-9; } 2.从物理意义上讲,信号量的值大于 0 时,其值表示 有效资源的数量 。 3. 管程的三个组成部分为 局部于管程的共享变量说明 、 对该数据结构进行操作的一组过程、 对 局部于管程的数据设置初始值的语句 。 4.系统感知进程存在的唯一标识为 进程控制块(PCB) 。 5.从结构上看每个进程由 用户程序、 用户数据、 系统栈、 进程控制块 组成。 6.一段时间内仅允许一个进程访问的资源称为 临界资源 。 7.在操作系统控制下的多个程序的执行顺序和每个程序的执行时间是不确定的,? 这种现象称为操 作系统的 异步性 。 8.进程的动态特征是指 进程是动态创建、动态执行和动态消亡的 。 9.设有 n 个进程共享一个临界区,若最多允许 m 个进程(m&n)同时进入临界区,则所采用的信号 量的初值应为 m ,信号量值的变化范围为 [m-n, m] 。 10.在 Unix V 系统中,PCB 大致可分为 进程表项 和 U 区 两部分。 11.并发进程之间存在着 同步 和 互斥 两种关系。 12.把执行不能分割的过程称为 原语 。 13.进程调度的两种基本方式为 非剥夺调度 和 可剥夺调度 。 14.有2个同类临界资源,被5个并发进程访问,使用信号量机制实现互斥,则初值为 2 ,信号 量值的变化范围为 [-3, 2] 。 15.进程三种基本状态之间有四种基本变迁关系:1、2、3、4,如图所示。对下列给出的每个事件, 在括号“ ”中分别填上对应的变迁关系。例如:若事件只引起了变迁关系“2”,则只在括号“ ” () () 中填入 2:若事件引起了变迁关系“2” ,随后一定会再产生变迁关系“1” ,则在“ ”中填入 2、1。 () 运行 2 3 1 4 阻塞就绪1 ○设备驱动进程启动了通道程序( 3 ) 。 2 ○进程发出了读键盘指令( 3 ) 。 3 ○接受进程取消息时,发现消息队列中无消息( 3 ) 。 4 ○运行进程时间片用完( 2 ) 。 5 ○高优先级进程剥夺运行进程的 CPU( 2,1) 。 6 ○输入设备输入完成中断,且中断时没有其他进程运行( 4,1) 。14 操作系统原理7 ○某资源的信号量 S 的值为负时,运行进程执行了 Signal(S)操作( 4 ) 。 8 ○批处理系统中,后备队列有新作业到来( 1 ) 。 9 ○在就绪队列不空时,运行进程完成( 1 ) 。 10 ○磁盘驱动进程把读入的数据传送给用户( 4,1 ) 。2.3 判断题1.原语仅可在管态下执行。对 2.原语可在目态下执行。错 3.进程就是作业。错 4.所谓并行是指两个或两个以上的事件在同一时刻发生。对 5.处理机从目态转变为管态是通过置程序状态字来实现的。错 6.所谓并发是指两个或两个以上的事件在同一时刻发生。错 7.操作系统的不确定性是指同一程序使用相同的输入、在相同的环境下,?经过多次运行却可能获 得完全不同的结果。错 8.处理机从管态转变为目态是通过置程序状态字来实现的。对 9.广义指令必须在管态下执行。对 10.在采用顾客/服务员模型的系统中,服务员必须在管态下运行。错 11.在消息缓冲通信中,消息队列属于临界资源。对 12.访管中断是由于程序执行特权指令引起的。对 13.信号量的值不一定表示某类可用资源的数量。对 14.在 UNIX 系统中所有进程都可在核心态和用户态两种状态下运行。错 15.并发指的是在操作系统本身存在着许多同时的或并行的活动。错 16.在 UNIX 系统中,所有进程都是利用系统调用 fork 创建的。错 17.我们可以通过设置状态字,将 CPU 设置为内核态或用户态。对 18.所谓的用户态、内核态实际上是处理器的一种状态,而不是程序的状态。对2.4 简答题1.对比“进程”和“线程”的异同。 答:相同点: (a)二者都具有 ID,一组寄存器,状态,优先级以及所要遵循的调度策略。 (b)每个进程都有一个进程控制块,线程也拥有一个线程控制块。 (c) 线程和子进程共享父进程中的资源; 线程和子进程独立于它们的父进程, 竞争使用处理器资源; 线程和子进程的创建者可以在线程和子进程上实行某些控制,比如,创建者可以取消、挂起、继续 和修改线程和子进程的优先级;线程和子进程可以改变其属性并创建新的资源。 不同点: (a)线程是进程的一部分,一个没有线程的进程是可以被看作单线程的,如果一个进程内拥有多个 进程,进程的执行过程不是一条线(线程)的,而是多条线(线程)共同完成的。 (b)启动一个线程所花费的空间远远小于启动一个进程所花费的空间,而且,线程间彼此切换所需 的时间也远远小于进程间切换所需要的时间。 (c)系统在运行的时候会为每个进程分配不同的内存区域,但是不会为线程分配内存(线程所使用 的资源是它所属的进程的资源) 线程组只能共享资源。 , 对不同进程来说, 它们具有独立的数据空间, 要进行数据的传递只能通过通信的方式进行,这种方式不仅费时,而且很不方便。而一个线程的数 据可以直接为其他线程所用,这不仅快捷,而且方便。 (d)与进程的控制表 PCB 相似,线程也有自己的控制表 TCB,但是 TCB 中所保存的线程状态比 PCB 表中少多了。 (e)进程是系统所有资源分配时候的一个基本单位,拥有一个完整的虚拟空间地址,并不依赖线程 而独立存在。15 操作系统原理2.为什么要引入信号量集机制。信号量机制可以被用于何种场合? 答:1965 年,Dijkstra 在讨论并发进程时指出信号量机制是一种卓有成效的进程同步机制。由于操 作系统可以被看成一个并发进程集,如果提供一种能支持他们之间合作的可靠机制,用户就能很容 易地使用它们。因此它现已被广泛地应用于各种类型的操作系统中。 信号量的主要含义和用途如下: 1 ○信号量的含义。信号量是一个用来实现同步的整型或记录型变量,除了初始化外,对它只能执行 wait 和 signal 这两种原子操作。 2 ○信号量的物理意义。一个信号量 S 通常对应于一类临界资源。 3 ○用信号量实现互斥。为了实现进程对临界资源的互斥访问,需为每类临界资源设置一初值为 1 的 互斥信号量 mutex。 4 ○用信号量实现前趋关系。为实现前趋关系 Pi→Pj,可为它们设置一个初值为 0 的信号量 S。 3.原语与广义指令的主要区别。 答:所谓原语,是由若干条指令所组成都是一个指令序列,用来实现某个特定的操作功能。这个指 令序列的执行是连续的,具有不可分割性,在执行时也不可间断,直到该指令序列执行结束。原语 是操作系统核心的一个组成部分。原语必须在管态下执行,并且常驻内存。 广义指令是作为机器指令的扩充而提供的,以便增加机器的功能。它是通过执行相应的程序模块来 实现的, 使计算机成为功能强大的虚拟计算机。 现代计算机 CPU 的指令系统中都有一条称为 “访管” 的指令,用户特别是编程人员可以利用这条指令来访问操作性并向它提出要求。 4.管态和目态有何区别?如何区分二态? 答: 大多数计算机系统将 CPU 执行状态分为管态和目态。 CPU 的状态属于程序状态字 PSW 的一位。 CPU 交替执行操作系统程序和用户程序。 管态又叫特权态,系统态或核心态。CPU 在管态下可以执行指令系统的全集。通常,操作系统在管 态下运行。 目态又叫常态或用户态。机器处于目态时,程序只能执行非特权指令。用户程序只能在目态下运行, 如果用户程序在目态下执行特权指令,硬件将发生中断,由操作系统获得控制,特权指令执行被禁 止,这样可以防止用户程序有意或无意的破坏系统。 从目态转换为管态的唯一途径是中断。 从管态到目态可以通过修改程序状态字来实现,这将伴随着由操作系统程序到用户程序的转换。 5.什么是并发?什么是并行? 答:并发与并行是两个既相似而又不相同的概念:并发性,又称共行性,是指能处理多个同时性活 动的能力,如下左图所示;并行是指同时发生的两个并发事件,具有并发的含义,如下右图所示。 并发则不一定并行,也亦是说并发事件之间不一定要同一时刻发生。所有的并发处理都有排队等候, 唤醒,执行至少三个这样的步骤。所以并发肯定是宏观概念,在微观上他们都是序列被处理的,只 不过资源不会在某一个上被阻塞(一般是通过时间片轮转), 所以在宏观上看多个几乎同时到达的请求 同时在被处理。如果是同一时刻到达的请求也会根据优先级的不同,而先后进入队列排队等候执行。6.进程的三种基本状态是什么?它们之间相互转换的主要原因是什么?16 操作系统原理答:进程的三种基本状态是: 1 ○就绪状态(Ready),存在于处理机调度队列中的那些进程,它们已经准备就绪,一旦得到 CPU, 就立即可以运行,这些进程所处的状态为就绪状态(有多个进程处于此状态) 。 2 ○运行状态(Running) ,当进程由调度/分派程序分派后,得到 CPU 控制权,它的程序正在运行,该 进程所处的状态为运行状态(在系统中,总只有一个进程处于此状态) 。 3 ○阻塞状态(blocked),若一个进程正在等待某个事件的发生(如等待 I/O 的完成) ,而暂停执行, 这时,即使给它 CPU 时间,它也无法执行,则称该进程处于阻塞状态。进程状态转换的主要原因有: 运行?阻塞:等待某事件的发生(如请求磁盘或键盘等执行 I/O 操作、等待同步信号、等待消息等) 。 阻塞?就绪:等待的事件已经发生(如 I/O 完成,消息已到达) 运行?就绪:在可剥夺调度方式中,更高优先级的进程到达;在时间片轮转调度方式中,进程运行 的时间片到。7.何谓临界资源?使用临界资源的原则是什么?使用临界资源的诸进程间如何实现进程同步。 答:一次仅允许一个进程使用的资源称为临界资源。内存变量、指针、数组等等也是临界资源。 入临界区的准则: (1)每次至多有一个进程处于临界区; (2)当有若干个进程欲进入临界区时,应在有限的时间内使其进入; (3)进程在临界区内仅逗留有限的时间。 可以采取如下策略实现临界资源的访问同步: (1)锁机制 (2)信号量机制 (3)管程 (4)消息机制 8.何谓管程,管程是由哪几部分组成?说明引入管程的必要性。 答:Hansan 为管程所下的定义: “一个管程定义了一个数据结构和能为并发进程所执行(在该数据 结构上)的一组操作,这组操作能同步进程和改变管程中的数据” 。 由上述定义可知,管程由四部分组成: 1 ○管程内部的共享变量; 2 ○管程内部的条件变量; 3 ○管程内部并行执行的进程; 4 ○对局部于管程内部的共享数据设置初始值的语句。 局部于管程的数据结构,只能被局部于管程的过程所访问,任何管程之外的过程都不能访问它;反 之,局部于管程的过程也只能访问管程内的数据结构。由此可见,管程相当于围墙,它把共享变量 和对它进行操作的若干个过程围了起来,所有进程要访问临界资源时,都必须经过管程才能进入, 而管程每次只允许一个进程进入管程,从而实现了进程的互斥。 引入管程的必要性:管程的基本思想是将共享变量和对它们的操作集中在一个模块中,操作系统或 并发程序就由这样的模块构成。这样模块之间联系清晰,便于维护和修改,易于保证正确性。 9.对相关临界区的管理有哪些要求? 答:为了使并发进程能正确地执行,对若干进程共享某一变量(资源)的相关临界区应满足以下四 点要求:17 操作系统原理①空闲让进。当无进程处于临界区时,应允许一个请求进入临界区的进程立即进入自己的临界区, 有效地利用临界资源。 ②以忙则等待。当已有进程进入临界区时,其它试图进入临界区的进程必须等待,以保证对临界资 源的互斥访问。 ③有限等待。对要求访问临界资源的进程,应保证在有限的时间内能进入自己的临界区,以免陷入 “死等”状态。 4 ○让权等待。当进程不能进入自己的临界区时,应立即释放处理机,以免进程陷入“忙等”状态。 10.进程产生的主要原因有哪些?Windows XP 在启动时会有哪些进程产生? 答:进程产生的主要原因有:系统初始化;正在执行进程创立程序(子进程) ;用户请求创建新进程。 在一个系统初始化时,将有许多系统正常运行时必不可少的进程产生。如 Windows 初始化时自动产 生对话管理(SMSS) 、登录管理(WINLOGON) 、安全管理(LSASS) ,Windows 子系统(CSRSS) 、 Windows 壳(explore)等系统进程。 11.进程消亡的主要原因有哪些? 答:进程消亡的主要原因有:进程运行完成而退出(寿终) ;进程因错误而自行退出(自杀) ;进程 被其他进程强行“杀死” (他杀) ;进程因异常而强行终结(处决) 。 12.进程创建的主要步骤是什么? 答:进程创建的主要步骤是:分配进程控制块;初始化机器寄存器;初始化页表;将程序代码从磁 盘读入内存;将处理器状态设置为“用户态” ;跳转到程序的起始地址(即设置程序计数器) 。 注:最后 2 步由硬件作为一个步骤一起完成。 13.消息队列和管道有何区别? 答:管道是一个线性字节数组,发送线程在一端写入信息,接受线程则在另一端读取信息。管道所 占的空间可以在内存,也可以在磁盘。而消息队列是一列具有头和尾的消息排列,仅存在于内存。 基于此,消息队列与管道的区别在于: 1 ○消息队列无需固定的读写进程,任何进程都可以读写; 2 ○消息队列可以支持多个进程,多个进程可以读写消息队列,即多对多,而不是管道的点对点; 3 ○消息队列只在内存中实现; 4 ○消息队列并不是只在 UNIX 和类 UNIX 操作系统实现, 几乎所有的主流操作系统都支持消息队列。2.5 综合题1. 某宾馆门前有一个出租汽车停车位, 假设宾馆每一位顾客出门都要乘坐出租车, 并且对顾客约定: 如果有其它顾客在此停车位等车则在旁等待;否则在此等车;此停车位有车则乘坐。对出租车作出 约定:如果此停车位已停有车,则等待此停车位空闲;否则停到此停车位等待顾客;有顾客则搭载 顾客离开。试用 P、V 原语编写程序描述顾客与出租车的行为。 答:设置信号量 empty1, empty2, vehicle_ready, cust_ready,其初值分别为 1,1,0,0。顾客与出租车的行 为描述如下: 出租车:repeat P(empty1); 进入停车位,等待顾客; V(vehicle_ready); P(cust_ready); 顾客上车后,开走; V(empty1);18 操作系统原理forever 顾客:repeat P(empty2); 进入停车位,等待出租车; V(cust_ready); P(vehicle_ready); 坐上出租车; V(empty2); forever 2.使用 P、V 原语实现图示的前趋关系。 答:设置信号量 s12,s13,s25,s24,s43,s36,s46,s67,s57, 初值均为 0。各个进程的描述分别如下: S1: … V(s12); V(s13); S2: P(s12); … V(s24); V(s25); S3: P(s13); P(s43); … V(s36); S4: P(s24); … V(s43); V(s46); S5: P(s25); … V(s57); S6: P(s36); P(s46); … V(s67); S7: P(s57); P(s67); … 3.现有四个进程 R1,R2,W1,W2,它们共享可以存放一个数的缓冲区。进程 R1? 每次把从键盘上 读入的一个数存到该缓冲区中,供进程 W1 打印输出;进程 R2? 每次从磁盘上读一个数存放到该缓 冲区中,供 W2 打印输出。当一个进程把数存放到缓冲区后,? 在该数还没有被打印输出之前不准任 何进程再向缓冲区中存数。? 当一个进程已把缓冲区中的数打印输出后,在缓冲区中还没有存入一 个新的数之前不准任何进程再从缓冲区中取数打印。? 用PV操作来协调它们的工作。 解:设置信号量:empty,full1 和 full2,其初值分别为 1,0,0。 进程描述如下: R1: repeat 准备数据; P(empty); 放置数据到19 操作系统原理V(full1); W1: repeat P(full1); 放置数据到 V(empty); 消费数据; R2: repeat 准备数据; P(empty); 放置数据到 V(full2); W2: repeat P(full2); 放置数据到 V(empty); 消费数据; 4.设有一数据区,有若干进程要去读或写它。各进程要遵循下列原则: 写是互斥的。当一进程正在写时,其它进程既不能读也不能写。 读可同时进行。只要没有进程正在写,则任何进程都可读。 请用P、V操作写出读写过程的同步算法。 答:算法描述如下: var w, s, mutex: // w 表示有效资源的个数(写者信号灯) ,初值为 1,表示一次仅 允许一个写者进程进入。S 和 mutex 分别是写者和读者互斥信号灯。 RC: //读者计数器,进入临界区中的读者数目。 begin w:=1; s:=1; mutex:=1; RC:=0; Cobegin Reader: Repeat P(w); //登记 P(mutex); if RC=0 then p(s); RC:=RC+1; V(mutex); V(w); R P(mutex); //退出 RC:=RC-1; if RC=0 then v(s); V(mutex); until FALSE Writer: Repeat P(w); P(s); W V(s); V(w); until FALSE20 操作系统原理coend 5.读者优先的读者-写者问题。除了上述两个规则外,还增加读者优先的规定,即当有读者和写者 同时等待时,则首先满足读者。其算法描述如下: var s, mutex: RC: //读者计数器,进入临界区中的读者数目。 begin s:=1; mutex:=1; RC:=0; cobegin Reader: Repeat P(mutex); if RC=0 then p(s); RC:=RC+1; V(mutex); R P(mutex); RC:=RC-1; if RC=0 then v(s); V(mutex); until FALSE Writer: Repeat P(s); W V(s); until FALSE coend 6.写者优先的读者-写者问题。 Var m, w, s, mutex, k: //m 表示读者信号灯 (一次读) s 表示写者信号灯 , (一次写) mutex , 表示读者互斥信号灯,k 表示写者互斥信号灯。 RC,WC: begin m:=w:=s:=mutex:=k:=1; RC:=WC:=0; Cobegin Reader: Repeat P(m); P(w); P(mutex); if RC=0 then p(s); RC:=RC+1; V(mutex); V(w); V(m); R P(mutex); RC:=RC-1; IF RC=0 then v(s); V(mutex); until FALSE;Writer: Repeat P(k); if WC=0 then p(w); WC:=WC+1;21 操作系统原理V(k); P(s); W V(s); P(k); WC:=WC-1; if WC=0 then v(w); V(k); until FALSE Coend 7.假设有一如图所示的工作模型,具有三个并发 进程 P1、P2 和 P3,两个单缓冲 B1 和 B2。进程 P1 负责不断从输入设备读数据,若读入的数据为正 数,则直接送入 B2,否则应先将数据送入 B1,经 P2 取出加工后再送入 B2,P3 从 B2 中取信息输出。 请用信号量和 P、V 操作描述进程 P1、P2、P3 实现 同步的算法。 答:设置信号量 empty1,empty2,其初值为 1; 信号量 full1,full2,其初值为 0。 各个进程的描述如下: P1: repeat 读入一个数据 data; if( data & 0 ) { P(empty2); 放数据 data 到 buffer2 中; V(full2) ; } else { P(empty1); 放数据 data 到 buffer1 中; V(full1) ; } until forever P2: repeat P(full1); 从 buffer1 中取出数据 data; 然后处理该数据 data 成 DATA; P(empty2); 将数据 DATA 放入 buffer2 中; V(full2) ; V(empty1) ; until forever P3: repeat P(full2); 从 buffer2 中取出数据 data; V(full2) ; 打印数据 data; until forever22 操作系统原理8. 在天津大学与南开大学之间有一条弯曲的小路, 这条路上每次每个方向上只允许一辆自行车通过。 但其中有一个小的安全岛 M,同时允许两辆自行车停留,可供两辆自行车已从两端进入小路的情况 下错车使用。如图所示。下面的算法可以使来往的自行车均可顺利通过。其中使用了 4 个信号量,T 代表天大路口资源,S 代表南开路口资源, L 代表从天大到安全岛一段路的资源,K 代表从南开到安全岛一段路的资源。 程序如下,请在空白位置处填写适当的 PV 操作语句,每处空白可能包含若干个 P,V 操作语句。 begin t:=1;s:=1;l:=1;k:=1; cobegin 从天大到南开的进程 begin ______(1)___p(t); p(l);___ 通过 L 路段; 进入安全岛 M; ______(2)__v(l); v(t); p(s); p(k);____ 通过 K 路段 ______(3)__v(k);v(s);____ end 从南开到天大的进程 begin 略,与“从天大到南开的进程”相反。 end coend end. 9.五个哲学家在一块儿思考问题并一起用餐。用餐时,它们公用一个由 5 把椅子围成的圆桌。每把 椅子归某个哲学家使用。桌子中间是一些“永远也吃不完”的饭菜。桌子上还放有 5 个盘子和 5 支 筷子。当哲学家们思考问题时,它们互不干扰。一个哲学家需要用餐了,他就进入餐厅,走到餐桌 边找到一把空椅子就座,然后就试图去拿相邻的两支筷子。当然,他不能去拿已经握在邻近椅子上 同事手上的筷子,也不能去拿位于其左、右同事位置之外的筷子。当一个需用餐的哲学家拿到邻近23 操作系统原理的两支筷子后,他就开始用餐而不放下。当他用餐完毕,就把手中的两支筷子放回原处再去思考他 的问题。因此,这些哲学家门的生活是一种单调的重复动作,即这个问题可以概括为: repeat think, eat forever。 答: 1 ○用一个信号量表示一支筷子。一个哲学家试图去拿一支筷子是通过在哪个信号量上执行一个 P 操作来表示的,放下一支筷子则是在相应的信号量上执行一个 V 操作来描述的。因此共享变量是 筷子,相应的程序为: progra var chopstick: array[0..4] (*binary*) i: procedure philosopher(I:integer); p(chopstick[i]); p(chopstick[(i+1) mod 5]); v(chopstick[i]); v(chopstick[(i+1) mod 5]); begin (* main program *) for i:=1 to 4 do chopstick[i]:=1; cobegin philosopher(0); philosopher(1); philosopher(2); philosopher(3); philosopher(4); coend end. 注:该算法简单,能够互斥,但有可能产生死锁(每个人都拿到了左边的筷子,又试图去拿右 边的筷子时) 。 2 ○Progra Moni Var chopstick: array[0..4] oktoeat: array[0..4] i: procedure takechopstick(i:integer); begin if chopstick[i]&&2 then wait(oktoeat); chopstick[(i+1) mod 5]:=chopstick[(i+1) mod 5]-1; chopstick[(i-1) mod 5]:=chopstick[(i-1) mod 5]-1; procedur releasechopstick(i:integer); begin chopstick[(i+1) mod 5]:=chopstick[(i+1) mod 5]+1; chopstick[(i-1) mod 5]:=chopstick[(i-1) mod 5]+1; if chopstick[(i+1) mod 5]=2 then singal(oktoeat[(i+1) mod 5]); if chopstick[(i-1) mod 5]=2 then singal(oktoeat[(i-1) mod 5]); begin (* monitor 赋初值部分*) for i:=1 to 4 do chopstick[i]:=2 procedure philosopher(i:integer); takechopstick(i);24 操作系统原理releasechopstick(i); begin (* main program *) cobegin philosopher(0); philosopher(1); philosopher(2); philosopher(3); philosopher(4); coend end 注:这种使用管程方法解决了死锁,同时又是互斥执行。 3 ○下面给出一种使用 P、V 操作实现的办法,它不仅保证了安全性,而且也不会发生死锁和饥 饿现象。相应的程序描述如下: progra var chopstick: array[0..4] (*binary*) room: i: Procedure philosopher(i:integer); P(room); P(chopstick[(i+1) mod 5]); V(chopstick[i]); V(chopstick[(i+1) mod 5]); V(room); forever E begin (*main program *) for i:=0 to 4 do chopstick[i]:=1; room:=4; cobegin philosopher(0); philosopher(1); philosopher(2); philosopher(3); philosopher(4); coend End. 除了增加一个信号量 room 外, 这种解决方法与第一中解决方法类似。 安全性同前面一样得到了 保证。也不会产生死锁,因为 room 保证了至多有 4 个哲学家试图(同时)去存取 chopstick。而且根 据“鸽巢原理” (pigeon-hole priciple) ,在圆圈中的 4 个哲学家之间分配 5 支筷子的任何尝试将导致 至少一个哲学家会分得二支筷子,有关信号量 room 的不变式是:room+(p(room)和 v(room)之间的 进程个数)=4。 下面通过一系列的引理来证明该方法也不会出现饥饿现象。 引理 1 若进程 Pi 执行了 P(chopstick[i]),则最终它将完成该 P 操作的执行。 证明:若 Pi 仅因为 chopstick[i]=0 而没有完成 P 操作,这隐含 Pi-1 正在用餐(因为 Pi-1 这时右手 边的那支筷子,在 eat 之前被 Pi-1 拿走了) 。最终 Pi-1 用完餐就会马上执行 V(chopstick[i])而允许 Pi 继 续。 引理 2 若 Pi 正没完没了地等待在 chopstick[i+1]上,则 Pi+1 正没完没了地等待在 chopstick[i+2] 上。 证明: 仅考虑 Pi 和 Pi+1 “竞争” 信号量 chopstick[i+1]的情况。 Pi+1 在 think 出终止, chopstick[i+1] 若 则 就不可能阻塞 Pi。类似地,Pi 和 Pi+1 不可能同时都阻塞在同一信号量 chopstick[i+1]上(考虑该信号 量的不变式) 。因此,如果 Pi 被阻塞在 chopstick[i+1]上,而且假定 Pi+1 决不会“唤醒”这个信号量, 那么剩下的唯一可能是 Pi+1 被无限期地阻塞在信号量 chopstick[i+2]上。 引理 3 若 Pi 执行 P(chopstick[i+1]),最终它将完成该操作(和 eat)的执行。 证明:通过连续四次运用引理 2,我们便得知,若 Pi 没完没了地等待在 chopstick[i+1]上,则 Pi+1 就 没完没了地等待在 chopstick[i+j+1]上,其中 j=1,2,3,4,但这与信号量 room 的不变式相矛盾。25 操作系统原理第三章 处理机调度与死锁 3.1 选择题1.操作系统中的高级调度是指:A A. 作业调度 B. 进程调度 C. 进程交换调度 D. 线程调度 2.作业经过下面哪一个过程进入“后备”状态?A A. 作业创建 B. 作业调度 C. 进程调度 D. 作业终止 3.要求进程一次性申请所需的全部资源,是破坏了死锁必要条件中的哪一条?B A. 互斥 B. 请求与保持 C. 不剥夺 D. 循环等待 4.使用“银行家算法”决定是否给进程分配资源,这种策略属于:B A. 预防死锁 B. 避免死锁 C. 检测死锁 D. 解除死锁 5.对资源编号,要求进程按照序号顺序申请资源,是破坏了死锁必要条件中的哪一条?D A. 互斥 B. 请求与保持 C. 不剥夺 D. 循环等待 6.通过破坏死锁必要条件之一来防止死锁产生,这种策略属于:A A. 预防死锁 B. 避免死锁 C. 检测死锁 D. 解除死锁 7.当某个作业被作业调度程序选中,进入内存开始运行时,作业的状态为:D A、提交状态 B、完成状态 C、执行状态 D、后备状态 8.死锁定理用于:A A、预防死锁 C、避免死锁B、解除死锁 D、检测死锁9.进入输入井的作业其状态处于( D ) A、提交状态 B、完成状态 C、执行状态 D、后备状态 10.作业由后备状态转变为执行状态是通过以下那个调度程序实现的( A ) A、作业调度 B、进程调度 C、中级调度 D、驱臂调度 11.以下那种调度算法不可能是剥夺式的( A ) A、先来先服务 B、最短CPU执行期优先 C、最高优先权 D、轮转法 12.在 UNIX 系统中,用来实现进程换入换出的是( B ) A、0 进程 B、1 进程 C、kill 系统调用 D、作业调度进程 13.可以破坏环路等待条件的策略是( C ) A、资源抢占 B、独享分配 C、按序分配D、共享分配14.在操作系统中用户进程本身启动的唯一状态转换是__B__。26 操作系统原理A、调度B、阻塞 C、时间片到D、唤醒15.把资源按类型排序编号,并要求进程严格按序申请资源,这种方法摒弃了下述哪一个(D)死 锁发生条件? A、互斥条件 B、部分分配条件 C、不剥夺条件 D、环路等待条件 16.以下哪种调度算法不可能是剥夺方式的?( A ) A、先来先服务 B、最短 CPU 执行期优先 C、最高优先权D、轮转法17.作业调度无工作可做时处于 A 状态,当后备队列有新作业录入时,输入进程要 B 作业调度。 进程调度作为 C 执行,通常采用两种调度方法,批处理系统常采用 D 方式,分时系统采用 E 方 式。在内存和外存对换区之间完成‘页面对换’或‘分段对换’功能的进程称之为 F 调度。 选择答案: (1) 激活 (2)唤醒 (3)就绪 (4)挂起 (5)阻塞 (6)非抢占 (7) 进程 (8)原语 (9)低级 (10)高级 (11)中级 (12)抢占 A B C D E F 答 4 2 8 6 12 11 案 18.CPU 的状态可分为用户态和 A ,CPU 状态由现行的 B 来描述。在用户态下运行时,CPU 执 行特权指令将产生 C ,中断处理程序将 D 该程序的执行。 选择答案: (1)运行态 (2)目态 (3)系统态 (4)通道寄存器 (5)指令寄存器 (6) 程序状态字 (7)I/O 中断 (8)访管中断 (9)程序中断 (10)终止 (11) 暂停 (12)继续 A B C D 答 3 6 8 11 案 19.现有 3 个同时到达的作业 J1、J2 和 J3,它们的执行时间分别为 T1、T2 和 T3,且 T1&T2&T3。 系统按单道方式运行且采用短作业优先算法,则平均周转时间是___C___。 A、T1+T2+T3 B、(T1+T2+T3)/3 C、(3T1+2T2+T3)/3 D、(T1+2T2+3T3)/33.2 填空题1.常用的多道处理系统的作业调度算法有 先来先服务调度算法、 基于优先级的作业调度、分时与 优先级结合的作业调度、 综合考虑资源要求的调度策略、 轮转法 。 2.产生死锁的原因 系统资源不足、进程推进顺序非法 。 3.一个作业从提交开始到完成,往往要经历 长程调度 、 短程调度 和中级调度三级调度。 4.常用的单道批处理作业调度有 短作业优先、最高响应比(优先) 和 先来先服务 。 5.解决死锁问题常用的三种方法是 死锁的预防 、 死锁的避免 和 死锁的检测与解除 。3.3 判断题1.多用户实时操作系统一定采用剥夺调度方式。对 2.进程发出 I/O 请求后将被阻塞,直至 I/O 操作完成。对 3.死锁危害很大,操作系统要绝对防止死锁的发生。错 4.不安全状态是死锁状态。错 5.处于死锁的系统中,没有进程可再运行。错27 操作系统原理6.最短 CPU 执行期优先算法一定是剥夺式的。 错 7.多级反馈队列属于非剥夺式调度。 错 8.最短 CPU 执行期优先算法(SCBF--Shortest CPU Burst First)一定是剥夺式的。错 9.一系统处于死锁状态则一定是不安全状态。对 10.作业 A 处于运行状态,作业 A 的进程一定处于执行状态。错 11.如果死锁的四个必要条件同时成立,则系统一定产生死锁。错 12.在分时系统中,时间片越小,一个作业的总运行时间越短。错 13.预防死锁可通过屏弃“互斥条件”实现。错 14.进程被创建后处于就绪状态。对 15.作业 A 处于运行状态,但作业 A 的进程 B 可能处于阻塞状态。对 16.当进程提出资源请求得不到满足时,系统必定发生死锁。错 17.当进程调度采用以下方案时,判断各语句的对错,对者在□中打“√“,错者在□中打“ד。 1)先来先服务调度: (1)到达时间指进入内存时间。错 (2)进程获得 CPU 一直运行到完成或等待某事件才让出 CPU。对 (3)有利于 I/O 忙的工作。对 2)短进程优先调度: (1)用户满意度好。对对 (2)吞吐量好。对 (3)长进程运行机会少。对 3)多级反馈队列调度(就绪队列 1、就绪队列 2、`````````,优先级依次下降) : (1)各就绪对列的优先级依次下降,他们分得的时间片依次增加。对 (2)某就绪队列给予较大的时间片,是因为该队列的进程优先级高。错 (3)只有就绪队列 1 为空时,才去调度就绪对列 2 中的进程。对 (4)进入高优先级就绪队列的进程不能抢占低优先级对列进程的 CPU。错 (5)长进程可能出现在各个就绪对列中。对 (6)为了保证响应时间,就绪对列 1 的时间片设置必须使得大部分终端命令在几个 时间片内完成。错3.4 简答题1.进程调度的时机有哪些? 1 答:进程调度的时机主要有以下几种:○正在执行的进程执行完毕或因发生某事件而不能再继续执 2 执行中的进程因提出 I/O 请求而暂停执行;○在进程通信或同步过程中执行了某种原语操作 3 行;○ 4 如 P 操作、阻塞、挂起原语等;○在可剥夺式调度中,有比当前进程优先权更高的进程进入就绪队 5 列;○在时间片轮转法中,时间片完。 通常系统是按先来先服务或优先权形式来组织调度队列。 2.何为死锁?产生死锁的原因和必要条件是什么? 答:死锁是指多个进程的永久性阻塞现象,产生的原因主要有 2 个:进程间竞争资源;进程推进顺 序非法。 产生死锁的四个必要条件: (1)互斥条件:一个资源每次只能被一个进程使用。 (2)请求与保持条件:一个进程因请求资源而阻塞时,对已获得的资源保持不放。 (3)不剥夺条件:进程已获得的资源,在末使用完之前,不能强行剥夺。 (4)循环等待条件:若干进程之间形成一种头尾相接的循环等待资源关系。 这四个条件是死锁的必要条件,只要系统发生死锁,这些条件必然成立,而只要上述条件之一不满 足,就不会发生死锁。 3.死锁排除的方法有哪些?28 操作系统原理1 答:○撤消陷于死锁的全部进程; 2 ○逐个撤消陷于死锁的进程,直到死锁不存在; 3 ○从陷于死锁的进程中逐个强迫放弃所占用的资源,直至死锁消失; 4 ○从另外一些进程那里强行剥夺足够数量的资源分配给死锁进程,以解除死锁状态。4.Windows NT 利用多线程可以更好地实现多任务。简略回答:什么是多任务?Windows NT 实现 这种技术的方法是什么? 答:Windows NT 是 Microsoft 推出的面向工作站、网络服务器和大型计算机的网络操作系统,也可 做 PC 操作系统。它与通信服务紧密集成,提供文件和打印服务,能运行客户机/服务器应用程序, 内置了 Internet/Intranet 功能,是企业组网的标准平台。 多任务操作系统就是能同时运行多个任务的操作系统。 Windows NT 是一种抢先式的多任务系统。 所 谓抢先式多任务系统就是 CPU 时间被分为一个个时间片, 调度器将时间片分给当前优先级最高的线 程(thread ,一旦有更高优先级的线程就绪,就马上抢先正在运行的线程,如果有多个优先级相同的 线程,调度器把它们排队,先执行队首的线程,执行过的则放到队尾。抢先多任务功能是由操作系 统内部的调度器(scheduler)实现的。 基于优先级的进程、线程在 Win32 API 中,将进程分成四类:空闲进程、常规进程、高级进程和实 时进程。1)空闲进程:这类进程的线程只有系统处于空闲状态时才运行,如屏幕保护线程。2)常规进 程:一般进程都属于该类型。3)高级进程:指执行紧急任务的进程,如弹出 Windows 的任务列表窗 口。4)实时进程:这类进程的线程可以抢占所有其它类型的线程,包括操作系统线程,例如,一个 实时线程的执行可能会导致磁盘缓冲刷新或鼠标操作无效。Win32 API 中,线程有 32 级优先级,其 中 1-15 级是可变优先级线程,16-31 级是实时线程(0 级为系统保留),0 级最低,31 级最高,每个线 程有一个基本优先级,它可以由程序改变。线程被调度时的优先级称为调度优先级,对于可变优先 级线程,操作系统可以动态调整线程的调度优先级,调整范围最低为其基本优先级,最高为 15 级; 而实时线程的调度优先级是不能被系统改变的。 5.引起进程调度的因素有哪些? 答:引起进程调度的因素主要有: (1) 正在执行的进程执行完毕。这时如果不选择新的就绪进程执行,将浪费处理机资源。 (2) 进程在执行中调用阻塞原语将自己阻塞起来进入睡眠等待状态。 (3) 进程在执行中调用了 P 原语操作,从而因资源不足而被阻塞;或调用了 V 原语操作激活了等待 资源的进程队列。 (4) 进程在执行中提出 I/O 请求后被阻塞。 (5) 在分时系统中时间片已经用完。 (6) 在执行完系统调用等系统程序后返回用户程序时, 可看做系统进程执行完毕, 从而调度选择一新 的用户进程执行。 (7) 在 CPU 执行方式是可剥夺时,就绪队列中的某进程的优先级变得高于当前执行进程的优先级, 从而也将引发进程调度。 6.为什么说多级反馈队列调度算法能较好地满足各类用户的需要? 答:对终端型作业用户,由于作业大都属于交互性,通常比较短小,系统只要使这些作业在第一队 列所规定的时间片内完成,便能使用户满意。 对短批处理作业用户,他们的作业通常在第二、三队列各执行一次即可完成,其周转时间仍然较短。 对长批处理作业用户,他们的作业在各个队列中依此运行,用户不必担心其作业长期得不到处理。 7.实时调度与非实时调度的主要区别是什么? 答:(1)实时调度所调度的任务有完成时限,而非实时调度没有。从而,实时调度算法的正确与否不 仅与算法的逻辑有关,也与调度算法调度的时限有关。 (2)实时调度要求较快的进程或线程切换时间,而非实时调度的进程或线程的切换时间较长。 (3)非实时调度强调资源利用率(批处理系统)或用户共享处理机(分时系统), 实时调度则主要强调在规 定时限范围内完成对相应设备的控制。 (4)实时调度为抢先式调度,而非实时调度则很少采用抢先式调度。 8.分时系统中有作业调度的概念吗?如果没有,为什么?29 操作系统原理答:在分时系统中,一般不存在作业调度,而只有线程调度、进程调度和交换调度。这是因为在分 时系统中,为了缩短响应时间,作业不是建立在外存,而是直接建立在内存中。在分时系统中,一 旦用户和系统的交互开始,用户马上要进行控制。因此,分时系统中没有作业提交状态和后备状态。 分时系统的输入信息经过终端缓冲区为系统直接接收,或立即处理,或经交换调度暂存外存中。 9.某一系统分配资源的策略是:当进程提出申请资源时,? 只要系统有资源总是分配给它,系统无 资源时让其等待。任一进程总是先释放已占有的资源后再申请新的资源,且每次申请一个资源,系 统中的进程得到资源后总能在有限的时间内归还。证明该系统不会发生死锁。 证明:死锁的四个必要条件分别是:互斥、请求与保持、循环等待、非剥夺条件。 根据题目中的描述,任一进程总是先释放已占有的资源后再申请新的资源,且每次申请一个资 源,系统中的进程得到资源后总能在有限的时间内归还。因此,四个必要条件中的“请求与保持条 件”被破坏,所以死锁不会发生。 10.处理器调度的总体目标是什么? 答:处理器调度的总体目标是要达到极小化平均响应时间、极大化系统吞吐率、保持系统各个功能 部件均处于繁忙状态和提供某种貌似公平的机制。 极小化平均响应时间就是要极小化用户发出命令和看到结果之间所花费的时间;极大化系统吞吐率 就是在单位时间内完成尽可能多的程序; 保持系统各个功能部件均处于繁忙状态就是要让 CPU 和输 入输出设备均处于忙碌状态;而公平是任何系统都应该努力达到的目标。 对于不同的系统,在调度目标上是有细微的区别的。批处理系统追求系统吞吐率和 CPU 的利用率, 不太重视系统响应时间;而交互式系统对系统响应时间要求严格。 11.何谓优先级倒挂?如何解决优先级倒挂问题? 答:优先级倒挂是指一个低优先级任务持有一个被高优先级认为所需要的共享资源。这样高优先级 任务因缺乏资源而处于阻塞状态,一直到低优先级任务释放资源为止。优先级倒挂可能造成系统故 障,或激发事先定义的纠正措施,如美国的火星探路器 Mars Pathfinder 就是因为优先级倒挂而出现 故障。 优先级倒挂问题在 20 世纪 70 年代就已经被发现,但一直未找到一个可以预测其发生的方法,只能 通过一些手段来防止其发生。主要有:使用中断禁止;优先级上限;优先级继承。3.5 综合题1.某系统有三类非剥夺性资源,其中 r1 类有 2 进程 个、2 类有 2 个、3 类有 4 个; r r 当前三个进程 1、 (P P2、P3)对资源的占用和请求情况如右表: P1 ①画出当前资源分配图; P2 ②通过化简资源分配图判断是否发生死锁。 P3 答:①当前资源分配图为:r2占用情况 r1 r2 r3 1 2 2 2请求情况 r1 r2 r3 1 1 2 1P2P3r3 r1P130 操作系统原理②对于进程 P1 来说,尚需要一个 r1 就可以运行完毕,而此时系统的空闲资源为(1,0,0) ,如果将 此资源分配给 P1 的话,那么等 P1 运行完毕后,就可以释放已占有的其他 3 个资源(r1 类 1 个,r3 类 2 个,记做(1,0,2),因此剩余资源就为(2,0,2)=(1,0,0)+(1,0,2) ) 。而 P3 需要的 资源数为(2,0,1) ,所以 P3 能顺利执行完毕。而 P3 执行完后,能释放 r2 类资源 2 个,系统的空闲 资源为(2,2,2)=(2,0,2)+(0,2,0) ,能满足进程 P2 的需求。 综上所述,存在一个安全序列 P1,P3,P2。所以系统不会死锁。 2.设进程调度算法为:按统计规律输入输出多的进程高优先,使用 CPU 时间多的低优先,在同一 优先级上按先来先服务原理调度。 (1)设计就绪队列 (2)画出此算法的进程状态转换图 答: (1)就绪队列如下:(2)状态转换图如下:3.在银行家算法中,若出现下述的资源分配情况: Allocation 数组 Need 数组 Available 向量 P0 0 0 3 2 0 0 1 2 1 6 2 2 P1 1 0 0 0 1 7 5 0 P2 1 3 5 4 2 3 5 6 P3 0 3 3 2 0 6 5 2 P4 0 0 1 4 0 6 5 6 试问该状态是否安全?若安全给出一安全序列,若此时进程 P2 提出请求 Request(1,2,2,2),请问 系统能否将资源分配给它,为什么? 答:目前是安全状态,存在一个安全序列 P0,P1,P3,P2,P4。 若此时进程 P2 提出请求 Request(1,2,2,2),系统不能将资源分配给它。这是因为若系统将资源分 配给它后,系统尚可用资源为(0,4,0,0) ,不能满则任何进程的需求,使系统处理不安全状态。31 操作系统原理第四章 存储器管理 4.1 选择题1.可变分区存储管理中用链表记录分区使用情况,为应用最差适应法(WF)分配空闲分区,链表中应 该按照下列哪种方法排列?D A. 按分区起始地址递增排列 B. 按分区起始地址递减排列 C. 按分区大小递增排列 D. 按分区大小递减排列 2.关于段页式存储管理系统中的页表数,下面哪种说法比较准确?C A. 整个系统有一个 B. 整个系统有多个 C. 每个进程有一个 D. 每个进程有多个 3.可变分区存储管理中用链表记录分区使用情况,为应用最先适应法(FF)分配空闲分区,链表中应 该按照下列哪种方法排列?A A. 按分区起始地址递增排列 B. 按分区起始地址递减排列 C. 按分区大小递增排列 D. 按分区大小递减排列 4.在可变分区存储管理中,可能存在( B ) A、内零头 B、外零头 C、A,B 均可能D、A,B 均不可能5.分页存储管理系统中引入“快表” ,是为了:B A. 保存最近访问的数据 B. 保存最近用过的页表项 C. 保存最近用过的物理地址 D. 保存最近用过的虚拟地址 6.以下哪个叙述正确?D A、使用静态重定位的系统,用户的作业可不要求分配连续的存储空间。 B、使用静态重定位的系统,作业可在内存中移动。 C、使用静态重定位的系统,有可能为用户提供一个比内存大的多的地址空间。 D、使用静态重定位的系统,无需增加硬件地址变换机构。 7.以下那种存储管理不可用于多道程序系统中?B A、固定分区存储管理 B、单一连续区存储管理 C、可变分区存储管理 D、段式存储管理 8.以下哪种存储管理可使用静态重定位?A A、固定分区存储管理 B、页式存储管理 C、可重定位分区存储管理 D、段式存储管理 9.以下哪种存储管理会产生内零头?A A、固定分区存储管理 B、可变分区存储管理 C、可重定位分区存储管理 D、段式存储管理 10.以下哪个关于纯分页存储管理的叙述不正确?C A、此种存储管理会产生内零头 B、此种存储管理要求作业一次全部调入内存 C、此种存储管理会产生外零头 D、此种存储管理不要求作业分配连续的存储区32 操作系统原理11.以下那个叙述不正确( C ) A、使用动态重定位的系统,用户的作业可不要求分配连续的存储空间。 B、使用动态重定位的系统,作业可在内存中移动。 C、使用动态重定位的系统有可能为用户提供一个比内存大的多的地址空间。 D、使用动态重定位的系统有可能为用户提供一个比内存大的多的存储空间。 12.以下哪种存储管理会产生内零头?A A、固定分区存储管理 B、可变分区存储管理 C、可重定位分区存储管理 D、段式存储管理 13.目标程序存在于( B ) A、名空间 B、逻辑地址空间 C、储存空间D、物理地址空间 14.以下哪种存储管理必须使用动态重定位( D ) A、固定分区存储管理B、单一连续区存储管理 C、可变分区存储管理D、段式存储管理 15.通常以下哪种分区分配算法产生的外零头最小( B ) A、首次适应B、最佳适应 C、最坏适应D、下次适应 16.在段页式存储管理系统中,当访问主存中的一条指令或数据时( C ) A、需访问两次主存 B、需访问一次主存 C、至少访问三次主存 D、至少访问两次主存 17.在页式存储管理方案中,进行主存分配的单位是( B ) A、段 B、块 C、作业 D、不一定 18.在请求分页存储管理的页面置换策略中,会产生贝莱迪异态的算法是( A ) A、FIFO B、最佳置换 C、LRU D、最坏适应 19.动态重定位是在( B )进行的重定位。 A、作业执行前 B、作业执行过程中 C、作业装入过程中 D、A,B,C 均不对 20.可以实现虚拟存储器的方案是____D_____。 A、固定分区方式 B、可变分区方式 C、纯分页方式 21.程序访问的局部性原理决定应使用__C___。 A、中断 B、DMA C、高速缓存 D、虚拟存储器 22.可变式分区管理中存在一些小而无用的分区,称做_A_。 A、外零头 B、内零头 C、页表零头 D、页内零头 23.操作系统中的工作集模型与_C_有关。 A、合并存储区中的空白块 B、将 CPU 分配给进程 C、一个进程访问的页面集合 D、为进程分配 I/O 资源 24.在一个可变分区存储管理中,最佳适应算法是将空闲区表中的空闲区按_C_的次序排列。 A、地址递增 B、地址递减 C、大小递增 D、大小递减 25.在 UNIX 系统中,对换空间的管理采用得是_A_适应算法。 A、首次 B、最佳 C、最坏 D、下次33D、请求页式 操作系统原理26.内存分配的主要任务是为每道程序分配 A ,具体实现的方法有 B 与 C 两种方式,对于 C 方 法,作业装入内存后不再申请新的空间; B 方法容许作业在内存中移动位置,并采用 D 重定位技 术,在可变分区管理中,借助于 E 进行重定位,而在段式管理中则借助于 F 进行地址变换。 选择答案: (1)动态 (2)静态 (3)段表 (4)页表 (5)部分装入 (6)基地址寄存器 (7)地址空间 (8) 外存空间 (9)全部装入 (10)动态连接 (11)虚地址寄存器 (12)物理地址寄存器 A B C D E F 答 7 5 6 1 6 3 案 27.在具有对换功能的操作系统中,通常把外存分为文件区和对换区,对换功能由 A 来实现。对文 件区的存贮空间分配常采用 B 方式;而对对换区的分配采用 C ,分配的基本单位是 D 。 选择答案: (1)高级调度 (2)中级调度 (3)低级调度 (4)记录 (5)页面 (6)盘块 (7)离散分配 (8) 连续分配 A B C D 答 2 7 8 6 案 28.请求分段存贮管理系统中,共享段 SEG 不在内存,进程 A、B 执行中同时共享 SEG 段。设 A 先访问 SEG 段,B 在 A 后访问 SEG 段,对下面给出的语句重新排序为:A、B、C、D、E、F、G、 H、I,描述系统对 SEG 段进行内存分配的过程。 ① B 执行访问 SEG 段,产生缺段中断。 ② 填写共享段表已分配的表项:SEG 段的说明、共享计数为 1、进程 A 说明。 ③ 中断处理程序查共享段表,发现 SEG 段已在内存。 ④ 共享段表中的 SEG 段内存地址复制到 B 进程段表,状态位改为 1。 ⑤ 中断处理程序查共享段表,分配一个空闲表项。 ⑥ 共享段表中的 SEG 段内存地址复制到 A 进程段表,状态位改为 1。 ⑦ 填写共享段表中的共享计数为 2、进程 B 的说明。 ⑧ A 执行,访问 SEG 段进行地址变换时硬件产生缺段中断。 ⑨ 给 SEG 段分配内存,SEG 段调入内存。 A B C D E F G H I 答 9 6 2 1 3 4 7 ⑧ 5 案 29.MS-DOS 操作系统采用了 A 内存管理方案和 B 重定位技术,每个段在内存中 C 。 选择答案: (1)可以移动 (2)不可以移动 (3)静态 (4)动态 (5)页式 (6)段式 (7)四重分区 (8)固定分区 A B C 答 8 3 2 案4.2 填空题1.分页系统的页长为 1KB,虚拟地址 0x3C8F 对应的页号为 15 ,页内地址为 0x8C 。 2. 可变分区 管理是在作业装入和处理过程中,根据作业的实际需要动态地划分 页号 存储空间的。 0 3.在一个分页存储管理的系统中,页长为 4KB,某一作业的页表如右所示,虚拟 1 地址 3000 对应物理地址 0x3BB8 ,12000 对应 0x6EE0 。 234页帧号 3 4 6 操作系统原理4.地址空间是 逻辑 地址的集合,存储空间是 物理 地址的集合。 5.系统中有 4MB 内存,最大有效物理地址为 4MB-1 ,如果采用分页管理,页长 1KB,全部内 存可分为 4096 页帧。 6.所谓时间的局部性是指 程序即将用到的信息可能就是目前正在使用的信息 。 7.程序的空间局部性是指 程序即将用到的信息可能与目前正在使用的信息在空间上相邻或者临 近 。 8.虚空间的大小取决于 计算机的寻址范围,如 32 位机的虚空间大小为 232=4GB 。 9.解决外零头的办法有 紧凑技术、 。 10.解决小内存大作业的方法有 覆盖技术、 交换技术、 请求式分页管理、 请求式分段管理以及 请求式段页式管理 。 11.所谓静态重定位是指 由动态重定位装配程序在程序装入时一次完成地址重定位 以后不再进行 重定位 。 12.存储分配的三种方式 分区管理、 分页管理、 和分段管理 。 13.覆盖是用于解决 大作业不能一次全部装入内存而引起的大作业与小内存之间 的问题。 14.在存储分配时,产生外零头的主要原因为 作业在装入时占有一个不可分割的主存空间,而且作 业要求一次性地全部装入内存 。 15.在请求式分页系统中,块的极小数取决于 工作集的大小 。 16.页面置换算法分为 公平算法 , 非公平算法 两}

我要回帖

更多关于 虚拟机物理磁盘装系统 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信