免费智能真题库 > 历年试卷 > 网络管理员 > 2022年下半年 网络管理员 上午试卷 综合知识
  第17题      
  知识点:   操作系统基础知识   操作系统   分页   进程   中断
  关键词:   操作系统   进程   缺页中断   主存   中断        章/节:   软件基础知识       

 
操作系统的请求分页管理中,当运行进程要访问的页面不在主存中且主存没有可用空闲块时,系统首先产生缺页中断,然后依次按照(17)的顺序进行处理。
①页面调入 ②页面调出 ③决定淘汰页
 
 
  A.  ②③①
 
  B.  ②①③
 
  C.  ③①②
 
  D.  ③②①
 
 
 

 
  第60题    2016年上半年  
   29%
在Windows XP系统中,“网上邻居”文件夹显示指向共享计算机、打印机和网络上其他资源的快捷方式。WIN7系统的图形界面..
  第65题    2018年下半年  
   27%
在Windows中,要打开命令提示窗口,可在"运行"框中输入( )。
  第57题    2009年上半年  
   31%
在Windows XP文件系统中,(57)支持文件加密。
   知识点讲解    
   · 操作系统基础知识    · 操作系统    · 分页    · 进程    · 中断
 
       操作系统基础知识
        在计算机硬件系统中,中央处理器(CPU)是整个系统硬件的核心和基础,将它比拟为计算机的心脏。而在计算机软件系统中,操作系统具有同样的核心和基础作用,将它比拟为计算机的大脑。计算机硬件系统与软件系统紧密配合,才使计算机系统成为电子时代、信息社会无所不在的基础设施。操作系统(Operating System, OS)为计算机使用者提供了一种具有自己特色的操作环境,也为建立在特定的计算机结构之上的应用提供了最基本的支撑环境。无论是巨型机、大型机还是中、小型机,也无论是台式个人计算机、便携式微型机还是连接多台计算机的计算机网络,都离不开操作系统。
               概述
               1)操作系统的定义
               操作系统是这样一些程序模块的集合:它们能有效地组织和管理计算机系统中的硬件及软件资源,合理地组织计算机工作流程,控制程序的执行,并向用户提供各种服务功能,使得用户能够灵活、方便、有效地使用计算机,使整个计算机系统能高效地运行。
               2)操作系统的作用
               操作系统主要具有以下几个作用。
               (1)计算机系统资源管理。在一个计算机系统中,通常都包含了各种各样的硬件和软件资源。归纳起来可分为4类,即处理器、存储器、I/O设备及信息(数据和程序)。相应地,OS的主要功能也正是针对这4类资源进行有效的管理以及作业管理。
               ①处理器管理:用于分配和控制计算机。
               ②存储器管理:主要负责内存的分配和回收。
               ③I/O设备管理:负责I/O设备的分配与操纵。
               ④文件管理:负责文件的存取、共享和保护。
               ⑤作业管理:包括任务、界面管理、人机交互、图形界面、语音控制和虚拟现实等。
               (2)OS通过对各种资源进行合理的分配,改善资源的共享和利用程度,最大限度地发挥计算机系统的工作效率,提高计算机系统的"吞吐量"(即系统在单位时间内处理工作的能力)。
               (3)用户与计算机硬件系统之间的接口。OS作为用户和计算机硬件系统之间接口的含义是:OS处于用户和计算机硬件之间,用户通过OS来使用计算机,也就是用户在OS的帮助下能够方便、快捷、安全、可靠地操纵计算机硬件和运行自己的程序。用户可以通过以下两种方式来使用计算机。
               ①命令方式。这是指由OS提供了一组命令,用户可以通过键盘输入有关命令,来直接操纵计算机。
               ②系统调用方式。OS提供了一组系统调用,用户可在应用程序中通过调用相应的系统调用来操纵计算机。
               (4)扩充机器(虚拟机)。对于一台完全无软件的计算机系统(裸机),即使其功能再强,也必定是难以使用的,如果在裸机上覆盖上一层I/O设备管理软件,用户便可利用它提供的I/O命令来进行数据输入和打印输出。此时用户所看到的机器,将是一台比裸机功能更强、使用更方便的机器。通常把覆盖了软件的机器称为扩充机器或虚拟机。装有操作系统的计算机极大地扩展了原计算机的功能,把用户面对的一个包含有各种硬件部件的计算机系统的操作和使用由复杂变得简单,从低级操作上升为高级操作,把基本功能扩展为多种功能。
               3)操作系统的特征
               操作系统主要具有并发、共享、虚拟和异步4个基本特征。
               (1)并发。并发性是指在计算机系统中存在着许多同时进行的活动。对计算机系统而言,并发是指宏观上看系统内有多道程序同时运行,微观上看是串行运行。
               (2)共享。共享性是指系统中的各种软、硬件资源可供内存中多个并发的程序共同使用,因此操作系统必须解决在多道程序间合理地分配和使用资源的问题。由于资源的属性不同,故多个进程对资源的共享方式也不同。可分为以下两种资源共享方式。
               ①互斥共享方式。系统中的某些资源如打印机,虽然它们可以提供给多个进程使用,但在一段时间内只允许一个进程访问该资源。当一个进程正在访问该资源时,其他欲访问该资源的进程必须等待,仅当该进程访问完并释放该资源后,才允许另一进程对该资源进行访问。
               ②同时访问方式。系统中还有另一类资源,允许在一段时间内有多个进程对它同时进行访问,这里所谓同时也是指宏观上的。典型的可供多个进程访问的资源是磁盘。
               并发和共享是操作系统的两个最基本的特征,它们互为存在条件。一方面,资源共享是以程序(进程)的并发执行为条件的;若系统不允许程序并发执行,自然不存在资源共享的问题。另一方面,若系统不能对资源共享实施有效的管理,则也必将影响到程序的并发执行,甚至无法并发执行。
               (3)虚拟。虚拟是操作系统中的重要特征。虚拟是指把物理上的一台设备变成逻辑上的多台设备。
               (4)异步。在多道程序环境下,允许多个进程并发执行,但由于资源等因素的制约,通常进程的执行并非一气呵成,而是以走走停停的方式运行。内存中的每个进程在何时执行,何时暂停,以怎样的速度向前推进,每道程序总共需要多少时间才能完成,都是不可预知的。或者说,进程是以异步方式运行的,但是只要运行环境相同,作业经过多次运行,都会获得完全相同的结果。这就是进程的异步性,是操作系统的一个重要特征。
               4)操作系统的类型
               操作系统可分为批处理操作系统、分时操作系统、实时操作系统、微机操作系统、网络操作系统和分布式操作系统等。
               (1)批处理操作系统。批处理操作系统(Batch Processing Operating System)有两个特点:一是"多道",二是"成批"。"多道"是指系统内可同时容纳多个作业,这些作业存放在外存中,组成一个后备作业队列,系统按一定的调度原则每次从后备作业队列中选取一个或多个作业调入内存运行,运行作业结束并退出运行和后备作业进入运行均由系统自动实现,从而在系统中形成一个自动转接的连续作业流。而"成批"的特点是在系统运行过程中不允许用户与其他的作业发生交互作用。即作业一旦进入系统,用户就不能直接干预作业的运行。
               批处理系统一般分为两种概念,即单道批处理系统和多道批处理系统。它们都是成批处理或者顺序共享式系统,它允许多个用户以高速、非人工干预的方式进行成组作业工作和程序执行。批处理系统将作业成组(成批)提交给系统,由计算机顺序自动完成后再给出结果,从而减少了用户作业建立和结束的时间。
               ①单道批处理系统。单道批处理系统是在单用户操作系统的基础上发展起来的,其目的是减少员工操作,减少作业建立和结束的时间。在单道批处理系统中,所有用户的作业均交由操作员通过输入设备送入计算机,由操作员、控制台启动并控制计算机,监视作业运行,得到运行结果,交付用户。作业在整个执行过程中,用户不能与作业交互作用,一旦作业出错则停止该作业,同时启动下一作业执行。而且,在输入输出操作过程中,CPU处于等待状态。单道批处理系统是早期计算机系统配置的一种操作系统类型,也具有简单的传统操作系统的资源管理功能模块。作业管理完成命令的解释和作业的定序,即解释执行用户作业命令并决定作业的次序,依次将它们调入内存,将处理机分配给调入的作业使之运行,这种作业管理无须作业调度和进程调度,作业完成的顺序只与它们进入内存的顺序有关。存储管理对进入的作业分配所需的内存,并将作业中的多个程序模块装配成一个可执行的整体程序,然后投入运行。在整个运行过程中,内存中始终只有一道作业,只有当前一道作业运行完毕或者出现不能处理的异常情况时,才调入下一道作业进入内存运行。设备管理则根据命令来控制输入输出设备的方向,即设备的启动、驱动和读写,处理来自设备的中断。同时,通过简单的文件管理进行系统中程序的打开与关闭。
               ②多道批处理系统。多道批处理系统基于多道程序技术的应用,也就是说,在内存中可以同时存放多个用户作业(程序),允许这些作业在系统中交替运行。在多道批处理系统中,用户可以通过系统提供的各种功能,如作业控制语言、命令、程序等,将用户程序、数据等分别提交给系统,在外部存储设备上形成作业的后备等待队列。系统根据一定的调度原则从这些队列中选取若干作业调入内存。在内存中的这些作业按照多道方式组织它们的运行,某一道作业运行完毕或暂停运行,系统就调入新的作业,内存中始终存放多个作业,它们交替运行。这样,作业不断进入系统,又不断退出系统,形成源源不断的作业流,从而大大提高了系统的资源利用率和吞吐率。多道批处理与单道批处理的主要区别在于以下两点。一是在作业管理中必须有作业调度功能和进程调度功能。宏观上的作业调度是从外存上选择若干作业调入内存,微观的进程调度是从主流在内存的多个作业中选择一个,使它获得处理机并执行。二是多道批处理在内存中可以同时存放多道作业,宏观上这些作业在同时进行,而每一时刻则只有一道作业在运行。而且作业完成的顺序与它们进入内存的顺序无严格的对应关系,后进入内存的程序可能先完成。
               批处理系统的输入和输出是两个很重要的问题。早期采用穿孔卡片作为输入,控制台打印机作为输出。其中,采用间接存储缓冲(磁带卷)称为脱机方式(Off-line),采用直接存储缓冲(磁盘)称为联机方式(On-line)。
               批处理系统的主要优点是系统的吞吐量大,资源利用率高,操作系统的开销较小。它的缺点在于作业处理的平均周转时间较长,用户交互能力较弱等。在现代操作系统中,已经没有单一的批处理系统了,而是将批处理的概念和批处理的技术融合在现代操作系统中,成为一种不可缺少的功能服务模块。而且,现今的批处理也与传统的批处理有了较大的不同,已经从传统的单一的作业顺序执行、用户不能干预,发展到批处理系统可控的顺序执行和有限的用户干预,甚至具有高级逻辑编程和控制的功能。
               (2)分时操作系统。分时操作系统(Time Share Operating System)允许多个用户同时联机地使用计算机。一台分时计算机系统连有若干台终端,多个用户可以在各自的终端上向系统发出服务请求,等待计算机的处理结果并决定下一个步骤。操作系统接收每个用户的命令,采用时间片轮转的方式处理用户的服务请求,即按照某个次序给每个用户分配一段CPU时间,进行各自的处理。对每个用户而言,仿佛"独占"了整个计算机系统。具有这种特点的计算机系统称为分时系统。其特点如下。
               ①多路性。若干个用户同时使用一台计算机。微观上看是各用户轮流使用计算机;宏观上看是各用户在并行工作。
               ②交互性。用户可根据系统对请求的响应结果,进一步向系统提出新的请求。这种能使用户与系统进行人一机对话的工作方式,明显地有别于批处理系统,因而分时系统又被称为交互式系统。
               ③独立性。用户之间可以相互独立操作,互不干涉;系统保证各用户程序运行的完整性,不会发生相互混淆或破坏现象。
               ④及时性。系统可对用户的输入及时作出响应。分时系统性能的主要指标之一是响应时间(指从终端发出命令到系统予以应答所需的时间)。
               分时时间片的长短是一个重要问题,它将影响终端用户得到的及时响应。由于系统中的用户终端数是有限的,只要时间片的长短的选择适当,每一个终端用户从放弃CPU到下次再获得CPU的等待时间就不会很长,不会影响用户程序的执行和终端操作。如果时间片过长,用户等待时间将会延长,严重影响用户操作、思维和心理。而时间片过短,就会增加系统本身的开销。大量的时间浪费在程序切换、终端切换和内部管理上。
               其次,用作分时系统主计算机的系统配置也将影响分时系统的性能,如果主机系统运行速度太慢、主存容量太小、I/O接口通道太窄,都会直接影响到终端用户的及时响应,影响到交互操作。此时,用户发出请求命令后迟迟得不到系统的响应,将会对系统的操作产生怀疑,甚至产生厌烦情绪。每增加一台终端,每开启一个用户,系统反应速度将会更慢。所以,主计算机的配置要求一定要能够满足分时操作系统的要求,硬件系统和软件系统紧密配合才能更好地发挥分时操作系统的功能。
               (3)实时操作系统。实时操作系统(Real Time Operating System)是另一类特殊的多道程序系统,它主要应用于需要对外部事件进行及时响应并处理的领域。
               实时含有立即、及时的意思。所以,对时间的响应是实时系统最关键的因素。实时系统是指系统对输入的及时响应,对输出的按需提供,无延迟的处理。换句话说,计算机能及时响应外部事件的请求,在规定的时间内完成事件的处理,并能控制所有实时设备和实时任务协调运行。实时系统可以分为实时控制系统和实时信息系统,二者有两个主要区别:一是服务对象,二是对响应时间的要求。
               实时控制系统。把计算机用于飞机飞行、导弹发射等的自动控制时,要求计算机能尽快处理测量系统测得的数据,及时地对飞机或导弹进行控制,或将有关信息通过显示终端提供给决策人员。把计算机用于轧钢、石化、机加工等工业生产过程控制时,也要求计算机能及时处理由各类传感器送来的数据,然后控制相应的执行机制。
               实时信息处理系统。把计算机用于预订飞机票,查询有关航班、航线、票价等事宜时,或把计算机用于银行系统、情报检索系统时,都要求计算机能对终端设备发来的服务请求及时予以正确的回答。
               实时系统具有以下特征。
               ①及时性。实时系统的及时性是非常关键的,主要反映在对用户的响应时间要求上。对于实时信息系统,其对响应时间的要求类似于分时系统,是由操作者所能接受的等待时间来确定的,通常为秒级。对于实时控制系统,其对时间的响应要求是以控制对象所能接受的延迟来确定的,它可以是秒级,也可以短至毫秒、微秒级。当然,响应时间的决定既依赖于操作系统本身,也依赖于操作系统宿主机的硬件处理速度。
               ②交互性。实时系统的交互性根据应用对象的不同和应用要求的不同,对交互操作的方便性和交互操作的权限性有特殊的要求。由于实时系统绝大多数都是专用系统,所以对用户能进行的干预赋予了不同的权限。例如,实时控制系统在某些情况下不允许用户干预,而实时信息系统只允许用户在授权范围内访问有关计算机资源。
               ③安全可靠性。这是实时系统最重要的设计目标之一。对实时控制系统,尤其是重大控制项目,如航天航空、核反应、药品与化学反应、武器控制等,任何疏忽都可能导致灾难性后果,必须考虑系统的容错机制。对实时信息系统,则要求数据与信息的完整性,要求经过计算机处理、查询并提供给用户的信息是及时的、有效的、完整的和可用的。
               ④多路性。实时系统也具有多路性。实时控制系统常具有现场多路采集、处理和控制执行机构的功能,实时信息系统则允许多个终端用户(或者远程终端用户)向系统提出服务要求,每一个用户都会得到独立的服务和响应。
               (4)微机操作系统。微机操作系统(Microcomputer Operating System, MOS)是指配置在微型计算机上的操作系统。常用的微机操作系统有DOS、Windows、OS/2、UNIX和Linux等。其中,Microsoft公司开发的单用户单任务操作系统DOS是首先在IBM PC上使用的微机操作系统。MS-DOS操作系统是16位微机单用户单任务操作系统的标准。多任务操作系统Windows 98/NT/2000/XP是Microsoft公司开发的一系列图形用户界面的多任务、多线程的操作系统。
               (5)网络操作系统。随着社会的信息化,计算机技术、通信技术和信息处理技术蓬勃发展,产生了计算机信息网络的概念,而信息网络的物理基础则是计算机网络。网络系统软件中的重要一环是网络操作系统(Network Operating System),有人也将它称为网络管理系统,它与传统的单机操作系统有所不同,它是建立在单机操作系统之上的一个开放式的软件系统,它面对的是各种不同的计算机系统的互联操作,面对不同的单机操作系统之间的资源共享、用户操作协调和与单机操作系统的交互,从而解决多个网络用户(甚至是全球远程的网络用户)之间争用共享资源的分配与管理问题。
               (6)分布式操作系统。大量的计算机通过网络被连接在一起,可以获得极高的运算能力及广泛的数据共享。这种系统被称为分布式操作系统(Distributed Operating System)。分布式操作系统的特征如下。
               ①统一性。即它是一个统一的操作系统。
               ②共享性。即所有的分布式系统中的资源是共享的。
               ③透明性。其含义是用户并不知道分布式系统是运行在多台计算机上,在用户眼里整个分布式系统中的许多计算机就像是一台计算机,对用户来讲是透明的。
               ④独立性。即处于分布式系统的多个主机都处于平等地位,在物理上独立。
               分布式系统的优点是它的分布式。分布式系统可用较低的成本获得较高的运算性能。分布式系统的另一个优点是它的可靠性。由于有多个独立的CPU系统,因此当一个CPU系统发生故障时,整个系统仍旧能够工作。对于高可靠的环境,如核电站等,分布式系统是有其用武之地的。
               网络操作系统与分布式操作系统在概念上的主要区别是:网络操作系统可以构架于不同的操作系统之上,也就是说,它可以在不同的本机操作系统上,通过网络协议实现网络资源的统一配置,在大范围内构成网络操作系统。在网络操作系统中并不要求对网络资源进行透明的访问,即需要指明资源的位置与类型,对本地资源和异地资源访问区别对待。分布式比较强调单一性,是由一种操作系统构建的。在这种操作系统中,网络的概念在应用层被淡化了。所有资源(本地资源和异地资源)都用同一方式管理与访问,用户不必关心资源在哪里或者资源是怎样存储的。
               进程管理(处理机管理)
               在多道程序环境中,CPU分配的主要对象是进程,操作系统通过选择一个合适的进程占有CPU来实现对CPU的管理,因此,对CPU的管理归根结底就是对进程的管理。操作系统有关进程方面的管理任务很多,主要有进程调度、进程控制、进程同步与互斥、进程通信、死锁检测与处理等。
               1)进程的概念
               (1)进程的定义。程序可以顺序执行也可以并发执行。程序顺序执行时处理机的操作严格按照程序所规定的顺序执行;而且程序是在封闭的环境下运行的,即程序运行时它独占全机资源,程序一旦运行,其执行结果不受外界因素的影响;只要程序执行时的环境和初始条件相同,当程序多次重复执行时,都将获得相同的结果。而程序并发执行时,由于它们共享资源或相互合作,致使在并发程序之间形成了相互制约的关系,从而导致并发程序执行具有"执行——暂停执行——执行"这种间断性的活动规律;而且程序并发执行时会失去封闭性。例如,当处理机资源被其他程序占有时,某程序必须等待;由于失去了封闭性,也将导致失去其可再现性。
               为了使程序在多道程序环境下能并发执行,并能对并发执行的程序加以控制和描述,而专门为之配置了一个称为"进程控制块(PCB)"的数据结构,其中存放了进程标识符、进程运行的当前状态、程序和数据的地址,以及能保存该程序运行时CPU的环境信息。
               由程序段、数据段及进程控制块三部分构成了一个进程的实体。可把"进程"定义为"可并发执行的程序在一个数据集合上的运行过程"。
               (2)进程的特征。进程和程序是两个截然不同的概念,进程具有5个基本特征,而程序不具备这些特征。
               ①动态性。它是指进程对应着程序的执行过程。体现在两方面:一方面,进程动态产生,动态消亡;另一方面,在进程生命周期内,其状态动态变化。而程序只是一组有序指令的集合,并存放在某种介质上,本身并无运动的含义,可以说是静态实体。
               ②并发性。它是指多个进程实体同存于内存中,能在一段时间内同时运行。并发性是进程的重要特征,同时也是引入进程的目的。而程序是不能并发执行的。
               ③独立性。它是指进程实体是一个能独立运行的基本单位,同时也是系统获得独立资源和独立调度的基本单位。凡未建立进程的程序,都不能作为一个独立的单位参加运行。
               ④异步性。它是指进程按各自独立的、不可预知的速度向前推进。或者说,进出按异步方式运行。
               ⑤结构特征。从结构上看,进程是由程序段、数据段及进程控制块三部分组成,有人把这三部分统称为"进程映像"。
               (3)进程的状态。进程的动态性表明进程在其生存期内需要经历一系列的离散状态。运行中的进程可以处于以下3种状态之一,即就绪、运行、等待。
               ①就绪(Ready)状态是指一个进程已经具备运行条件,但由于没有获得CPU而不能运行所处的状态。一旦把CPU分配给它,该进程就可运行。处于就绪状态的进程可以是多个。
               ②运行状态又称为执行状态,是指进程已获得CPU,并且在CPU上执行的状态。显然,在一个单CPU系统中,最多只有一个进程处于执行状态。
               ③等待状态也称为阻塞(Block)状态或封锁状态,是指进程因等待某种事件发生而暂时不能运行的状态。例如,当两个进程竞争使用同一个资源时,没有占用该资源的进程便处于等待状态,它必须等到该资源被释放后才可以去使用它。引起等待的原因一旦消失,进程便转为就绪状态,以便在适当的时候投入运行。系统中处于等待状态的进程可以有多个。
               进程在运行期间,不断地从一个状态转换到另一个状态,可以多次处于就绪状态和执行状态,也可以多次处于阻塞状态(但可能排在不同的阻塞队列)。这3种状态之间的典型转换如下图所示。
               
               进程状态间的转换
               (4)进程控制块。为了便于系统控制和描述进程的活动过程,在操作系统核心中为进程定义了一个专门的数据结构,称为进程控制块(Process Control Block, PCB), PCB是进程的"灵魂"。系统利用PCB来描述进程的基本情况以及进程的运行变化过程。PCB是进程存在的唯一标志。当系统创建一个进程时,为该进程设置一个PCB,再利用PCB对进程进行控制和管理。撤销进程时,系统收回它的PCB,进程也随之消亡。PCB的内容可以分成调度信息和现场信息两大部分。调度信息供进程调度时使用,描述了进程当前所处的状况,包括进程名、进程号、存储信息、优先级、当前状态、资源清单、"家族"关系、消息队列指针、进程队列指针和当前打开文件等。现场信息刻画了进程的运行情况,由于每个进程都有自己专用的工作存储区,其他进程运行时不会改变它的内容,所以,PCB中的现场信息只记录那些可能会被其他进程改变的寄存器,如程序状态字、时钟、界地址寄存器等。一旦中断进程的运行,必须把中断时刻的内容记入PCB的现场信息。由于进程控制块中保存有进程的地址信息,通过PCB可以得到与进程对应的存储位置,也可以找到整个进程(程序和数据是进程的"躯体")。为了实现对进程的管理,将系统所有进程的PCB排成若干个队列。通常,系统中进程队列分成以下3类。
               ①就绪队列。整个系统拥有一个就绪队列,所有处于就绪状态的进程都按照某种原则排在该队列中。进程入队和出队的次序与处理机调度算法有关。在有些系统中,就绪队列可能有若干个。
               ②等待队列。每一个等待事件对应一个队列。当进程等待某一事件时,进入与该事件相应的等待队列。当某事件发生时,与该事件相关的一个或多个进程离开相应的等待队列。
               ③运行队列。实际上,一个运行队列中只有一个进程,可用一个指针指向该进程。
               (5)进程的控制。进程的控制就是对系统中所有进程从创建到消亡全过程实施有效的控制。这意味着不仅要控制正在运行的进程,而且还要能创建新的进程,撤销已完成的进程。进程的控制机构是由操作系统内核实现的。通常将与硬件密切相关的模块放在紧挨硬件的软件层中,并使它们常驻内存,以便提高操作系统的运行效率,通常将这部分称为操作系统的内核,它为系统对进程进行控制和对存储器进行管理提供了有效的控制机制。不同的操作系统内核所包含的功能不同,但大多数操作系统的内核包含支撑功能和资源管理功能。
               其中支撑功能包括中断处理、时钟管理和原语操作。
               ①中断处理。操作系统的各种重要活动最终都依赖于中断。例如,各种类型的系统调用、键盘命令的输入、设备驱动及文件系统等都依赖于中断。通常内核只对中断进行"有限次处理",然后转入有关进程继续处理。这不仅可以减少中断处理的时间,还可以提高程序的并发性。
               ②时钟管理。操作系统的许多活动要用到时钟管理。如分时系统时间片调度算法中,当时间片用完时,由时钟管理产生一个中断信号,通知调度程序重新调度。在实时系统中的截止时间控制、批处理系统中的最长运行时间控制等都要用到时钟管理。
               ③原语操作。内核在执行某些基本操作时,往往是通过原语操作来实现的。原语是由若干条机器指令构成的,用于完成特定功能的一段程序。原语在执行过程中是不可分割的。进程控制原语主要有创建原语、撤销原语、挂起原语、激活原语、阻塞原语及唤醒原语。内核中所包含的原语主要有进程控制、进程通信、资源管理及其他方面的原语。
               (6)线程。线程是比进程更小的能独立运行的基本单位。在引入线程的操作系统中,线程是进程中的一个实体,是CPU调度和分派的基本单位。线程自己基本上不占用系统资源,只占用一点在运行中必不可少的资源(如程序计数器、一组寄存器和栈),但它可与同属一个进程的其他线程共享该进程所占用的全部资源。一个线程可以创建和撤销另一个线程,同一个进程中的多个线程之间可以并发执行。由于线程之间的相互制约,致使线程在运行中也呈现出间断性。相应地,线程也同样有就绪、等待和运行3种基本状态。在有的系统中线程还有终止状态。
               线程具有以下属性。
               ①每个线程有一个唯一的标识符和一张线程描述表。
               ②不同的线程可以执行相同的程序。
               ③同一进程中的各个线程共享该进程的内存地址空间。
               ④线程是处理机的独立调度单位,多个线程可以并发执行。
               线程在生命周期内会经历等待状态、就绪状态和运行状态等各种状态变化。
               2)进程的异步和同步
               (1)进程的异步。在多道程序环境下,系统中可能有许多进程,在这些进程间有资源共享关系,而这些资源往往一次只能为一个进程服务。因此,各进程间互斥使用这些资源,进程间的这种关系是进程的互斥。进程间的间接相互作用构成进程互斥。例如,多个进程在竞争使用打印机、一些变量、表格等资源时,表现为互斥关系。
               (2)进程的同步。在多道程序环境下,系统中可能有许多进程,在这些进程间既可以有资源共享关系,也存在一种相互合作的关系。例如,有A、B两个进程,A进程负责从键盘读数据到缓冲区,B进程负责从缓冲区读数据进行计算。要完成读取数据并计算的工作,A进程和B进程要协同工作,即B进程只有等待A进程把数据送到缓冲区后才能进行计算,A进程只有等待B进程发出已把缓冲区数据取走的信号之后才能通过键盘向缓冲区中送数据;否则就会出现错误。这就是一个进程同步的问题。
               同步是指进程之间的一种协同工作关系,使这些进程相互合作,共同完成一项任务。进程间的直接相互作用构成进程的同步。
               (3)同步机制应遵循的准则。系统中一些资源一次只允许一个进程使用,这类资源称为临界资源。不论是硬件临界资源还是软件临界资源,多个进程必须互斥地对它进行访问,把在每个进程中访问临界资源的那段代码称为临界区(Critical Section)。为实现进程互斥,可利)用软件方法,也可在系统中设置专门的同步机制来协调进程,但所有的进程机制都应遵循下述4条准则。
               ①空闲让进。当无进程处于临界区时,相应的临界资源处于空闲状态,因而可允许一个请求进入临界区的进程立即进入自己的临界区,以有效地利用临界资源。
               ②忙则等待。当已有进程进入自己的临界区时,意味着相应的临界资源正被访问,因而所有其他试图进入临界区的进程必须等待,以保证进程互斥地访问临界资源。
               ③有限等待。对要求访问临界资源的进程,应保证该进程能在有效时间内进入自己的临界区,以免陷入"死等"状态。
               ④让权等待。当进程不能进入自己的临界区时,应立即释放处理机,以免进程陷入"忙等"。
               (4)信号量和P、V操作。用常规的程序来实现进程之间同步、互斥关系需要复杂的算法,而且会造成"忙等待",浪费CPU资源。为此引入信号量的概念,信号量是一个数据结构,定义如下:
               
               它的表面形式是一个整型变量附加一个队列,而且它只能被特殊的操作(即P操作和V操作)使用。
               P、V操作都是原语。原语是由若干条机器指令构成的一段程序,用以完成特定功能。原语在执行期间是不可分割的,即原语一旦开始执行,直到执行完毕之前,不允许中断。
               可以利用信号量S(设信号量为S,S可以取不同的整数值)的取值表示共享资源的使用情况。在使用时,把信号量S放在进程运行的环境中,赋予其不同的初值,并在其上实施P操作和V操作,以实现进程间的同步与互斥。
               P操作和V操作定义如下。
               ①P(SS=S-1;若S<0,则该进程进入S信号量的队列中等待。
               ②V(SS=S+1;若S≤0,则释放S信号量队列上的一个等待进程,使之进入就绪队列。
               当S>0时,表示还有资源可以分配;当S<0时,其绝对值表示S信号量等待队列中进程的数目。每执行一次P操作,意味着要求分配一个资源;每执行一次V操作,意味着释放一个资源。
               (5)用P、V操作实现进程之间的互斥。令S初值为1,进程A、B竞争进入临界区的程序可以写成:
               
               (6)用P、V操作实现进程间的同步。为解决前面所示的同步关系,可以设两个信号量,即S1S2,且赋予它们的初值分别是:S1为1,S2为0。S1表示缓冲区中是否装满信息,S2表示缓冲区中信息是否取走。程序可写成:
               
               3)进程的通信
               并发进程在运行过程中,需要进行信息交换。交换的信息量可多可少,少的只是交换一些已定义的状态值或数值,如利用信号量和P、V操作;多的则需交换大量信息,而P、V操作只是低级通信原语,因此要引入高级通信原语,解决大量信息交换问题。
               高级通信原语不仅保证相互制约的进程之间的正确关系,还同时实现了进程之间的信息交换。目前常用的高级通信机制有消息缓冲通信、管道通信和信箱通信。
               (1)消息缓冲通信。消息缓冲通信的基本思想是:系统管理若干消息缓冲区,用以存放消息;每当一个进程(发送进程)向另一个进程(接收进程)发送消息时,便申请一个消息缓冲区,并把已准备好的消息送到缓冲区,然后把该消息缓冲区插入到接收进程的消息队列中,最后通知接收进程;接收进程收到发送进程发来的通知后,从本进程的消息队列中找到消息缓冲区,取出所需的信息,然后把消息缓冲区还给系统。
               为实现消息缓冲通信,要利用发送原语和接收原语。
               (2)管道通信。管道通信是以文件系统为基础。管道就是连接两个进程之间的一个打开的共享文件,专用于进程之间进行数据通信。发送进程可以源源不断地从管道一端写入数据流,接收进程在需要时可以从管道的另一端读出数据。
               在对管道文件进行读写操作过程中,发送进程和接收进程要实施正确的同步和互斥,以确保通信的正确性。管道通信的实质是利用外存来进行数据通信,故具有传送数据量大的优点,但通信速度较慢。
               (3)信箱通信。为了实现进程间的通信,设立一个通信机制——信箱,用来发送、接收信件。回答信件作为通信的基本方式。当一个进程希望与另一进程通信时,就创建一个链接两进程的信箱。
               通信时发送进程只要把信件投入信箱,而接收进程可以在任何时刻取走信件。这种通信方式可以分单向信箱和双向信箱两种通信方式,后者是指发送进程要求接收进程予以回答。为了实现信箱通信,必须提供相应的原语,如创建信箱原语、撤销信箱原语、发送原语和接收原语等。
               4)进程的调度
               (1)进程控制原语。进程有一个从创建到消亡的生命周期,进程控制的作用就是对进程在整个生命周期中各种状态之间的转换进行有效的控制。进程控制是通过原语来实现的,用于进程控制的原语一般有创建原语、撤销原语、挂起原语、激活原语、阻塞原语、唤醒原语以及改变原语优先级等。
               ①创建原语。一个进程可以使用创建原语创建一个新的进程,前者称为父进程,后者称为子进程,子进程又可以创建新的子进程,构成新的父子关系。从而整个系统可以形成一个树形结构的进程家族。创建一个进程的主要任务是建立进程控制块(PCB)。具体操作过程是:先申请一空闲PCB区域,将有关信息填入PCB,置该进程为就绪状态,最后把它插入就绪队列中。
               ②撤销原语。当一个进程完成任务后,应当撤销它,以便及时释放它所占用的资源。撤销进程的实质是撤销PCB。一旦PCB撤销,进程就消亡了。具体操作过程是:找到要被撤销进程的PCB,将它从所在队列中消去,撤销属于该进程的一切"子孙进程",释放被撤销进程所占用的全部资源,并删去被撤销进程的PCB。
               ③阻塞原语。某进程在执行过程中,需要执行I/O操作,则由该进程调用阻塞原语把进程从运行状态转换为阻塞状态。具体操作过程是:由于进程正处于运行状态,因此首先应中断CPU执行,把CPU的当前状态保存在PCB的现场信息中,把进程的当前状态置为等待状态,并把它插入到该事件的等待队列中去。
               ④唤醒原语。一个进程因为等待事件的发生而处于等待状态,当等待事件完成后,就用唤醒原语将其转换为就绪状态。具体操作过程是:在等待队列中找到该进程,置进程的当前状态为就绪状态,然后将它从等待队列中撤出并插入到就绪队列中排队,等待调度执行。
               (2)调度类型。进程的调度类型有以下几种。
               ①高级调度(High Level Scheduling),又称"长程调度"(Long-Term Scheduling)或"作业调度",它用于决定把外存上处于后备队列中的哪些作业调入内存并为它们创建进程,分配必要的资源,然后再将新创建的进程排在就绪队列上,准备执行,因此,高级调度又叫接纳调度(Admission Scheduling)。每个作业只需经过一次高级调度,每次执行时要作出以下两个决定,即接纳多少个作业和接纳哪些作业。
               ②低级调度(Low Level Scheduling),又称"短程调度"(Short-Term Scheduling)或"进程调度",它决定处于内存中的就绪队列中哪个进程可以占用处理机,运行频率很高。进程调度可采用下述两种方式。
               .非抢占方式。一旦把处理机分配给某进程后,便让该进程一直执行,直至该进程完成或被阻塞时,才把处理机分配给其他进程,决不允许某进程抢占已经分配出去的处理机。
               .抢占方式。允许调度程序根据某种原则,停止某个正在执行的进程,将已分配给该进程的处理机重新分配给另一进程。
               ③中级调度(Intermediate-Level Scheduling),又称"中程调度"或"对换调度",它决定处于交换区中的就绪进程哪个可以调入内存,以便直接参与对CPU的竞争。在内存资源紧张时,为了将进程调入内存,必须将内存中处于阻塞状态的进程调至交换区,以便为调入进程腾出空间。
               (3)进程调度的主要功能及时机。进程调度记录系统中所有进程的执行状况,根据一定的调度算法,从就绪队列中选出一个进程,准备把CPU分配给它。即把选中进程的进程控制块内有关的现场信息,如程序状态字、通用寄存器等内容送入处理器相应的寄存器中,从而让它占用CPU。
               执行进程调度一般是在下述情况下发生的。
               ①正在执行的进程运行完毕。
               ②正在执行的进程调用阻塞原语将自己阻塞起来进入等待状态。
               ③正在执行的进程调用了P原语操作,从而因资源不足而被阻塞;或调用了V原语操作激活了等待资源的进程。
               ④在分时系统中时间片用完。
               ⑤就绪队列中的某个进程的优先级变得高于当前运行进程的优先级,从而也将引起进程调度。
               5)进程调度算法
               进程调度算法主要有以下几种。
               (1)先来先服务调度算法。先来先服务(FCFS)调度算法是按照作业提交或进程变为就绪状态的先后次序分配CPU。即每当进入进程调度时,总是将就绪队列队首的进程投入运行。FCFS的特点是比较有利于长作业,而不利于短作业;有利于CPU繁忙的作业,而不利于输入输出繁忙的作业。
               (2)短进程优先(SPF)调度算法。短进程优先(SPF)调度算法是指对短作业或短进程优先调度的算法,这是一个非抢占的算法,选中一个进程后一直执行完。
               (3)时间片轮转调度算法。时间片轮转调度算法主要是分时系统中使用的一种调度算法。时间片轮转调度算法的基本思想是:将CPU的处理时间划分成一个个时间片,就绪队列中的就绪进程轮流运行一个时间片;当一个时间片用完时,就强迫运行进程让出CPU,该进程进入就绪队列,等待下一次调度;同时,进程调度又去选择就绪队列中的一个进程,分配给它一个时间片,以投入运行。在时间片轮转调度算法中,时间片长度的选取非常重要,将直接影响系统开销和响应时间。如果时间片长度很小,则调度程序剥夺处理机的次数频繁,加重系统开销;反之,如果时间片长度选择过长,比方说一个时间片就能保证就绪队列中所有进程都执行完毕,则时间片轮转调度算法就退化成先来先服务调度算法。影响时间片大小的主要因素有系统响应时间、就绪进程数目(终端数目)和计算机处理能力。
               (4)优先权调度算法。优先权调度算法分为静态优先权调度算法和动态优先权调度算法两种。
               ①静态优先权调度算法。进程的优先级是在创建时就已确定好了,直到进程终止都不会改变。优先级确定依据主要有进程类型(系统进程优先级较高)、对资源的需求(对CPU和内存需求较少的进程,优先级较高)和用户要求(紧迫程度和付费多少)。
               ②动态优先权调度算法。在创建进程时赋予一个优先级,在进程运行过程中还可以改变,以便获得更好的调度性能。进程每执行一个时间片,就降低其优先级,从而一个进程持续执行时,其优先级可能会降低到让出CPU为止。
               (5)高响应比调度算法。高响应比调度算法的特点是:如果作业等待时间相同,则要求服务的时间越短优先权越高,有利于短作业;当要求服务时间相同时,作业的优先权决定于其等待时间,实现了先来先服务;对于长作业,当其等待的时间足够长时,其优先权便可升到很高,从而也可以获得处理机。
               (6)多级反馈调度算法。多级反馈调度算法是时间片轮转算法和优先级算法的综合与发展。其优点是:照顾了短进程,提高了系统吞吐量,缩短了平均周转时间;照顾了输入输出型进程,获得较好的输入输出设备利用率和缩短响应时间;不必估计进程的执行时间,可动态调节优先级。
               6)死锁
               (1)死锁的概念。在多道程序系统中,一组进程中的每一个进程均无限期地等待被该组进程中的另一进程所占有且永远不会释放的资源,这种现象称系统处于死锁状态。处于死锁状态的进程称为死锁进程。当死锁发生后,死锁进程将一直等待下去,除非有来自死锁进程之外的某种干预。系统发生死锁时,死锁进程的个数至少为两个;所有死锁进程都在等待资源,其中,至少有两个进程已占有资源。系统发生死锁不仅浪费大量的系统资源,甚至会导致整个系统崩溃,带来灾难性的后果。
               死锁是若干进程因使用资源不当而造成的现象。按照资源的使用性质,一般把系统中的资源分成永久性资源和临时性资源两类。永久性资源(可再使用资源)是指系统中那些可供进程重复使用、长期存在的资源,如内存、外部设备、CPU等硬件资源,以及各种数据文件、表格、共享程序代码等软件资源。临时性资源(消耗性资源)是指由某个进程所产生、只为另一个进程使用一次,或经过短暂时间后便不再使用的资源,如I/O和时钟中断、同步信号、消息等。
               (2)产生死锁的必要条件。产生死锁的原因:一是系统提供的资源数量有限,不能满足每个进程的使用;二是多道程序运行时,进程推进顺序不合理。可再用资源和消耗性资源都可能导致死锁发生。
               死锁的产生与各并发进程的相对速度有关,一般不可重现。它涉及进程的并发执行、资源共享和资源分配等因素。对于永久性资源,产生死锁有以下4个必要条件。
               ①互斥条件。进程互斥使用资源,任一时刻一个资源只为一个进程独占,其他进程若请求一个已被占用的资源,只有等占用者释放后才能使用。
               ②请求和保持条件。进程每次申请它所需要的一部分资源,在申请新资源的同时,继续占用已分配到的资源。
               ③不剥夺条件。进程所获得的资源在未使用完毕之前,不能被其他进程强行剥夺,而只能由获得该资源的进程自己释放。
               ④环路等待条件。存在一个进程环路,环路中每一个进程已获得的资源同时被下一个进程所请求。
               进程的死锁问题可以用有向图更加准确而形象地描述,这种有向图称为资源分配图。在有向图中,用圆圈表示进程,用方框表示每类资源,方框中的圆点表示各个单位资源。申请边为从进程到资源的有向边,表示进程申请一个资源单位,但当前该进程在等待资源。分配边为从资源到进程的有向边,表示有一个资源单位分配给进程。申请边仅能指向方框,表示申请时不指定哪一个资源实例,而分配边必须由方框中的圆点引出,表明哪一个资源实例已被占用。可以证明,如果资源分配图中没有环路,则系统中没有死锁;如果图中存在环路,则系统中可能存在死锁。如果每个资源类中均只包含一个资源实例,则环路的存在即意味着死锁的存在。此时,环路是死锁的充分必要条件。
               (3)处理死锁的基本方法。处理死锁的基本方法主要有死锁的预防、死锁的避免、死锁的检测和死锁的解除等。
               ①死锁的预防。根据产生死锁的4个必要条件,只要使其中之一不能成立,死锁就不会出现。为此,可以采取下列3种预防措施:采用资源的静态预分配策略,破坏"部分分配"条件;允许进程剥夺使用其他进程占有的资源,从而破坏"不可剥夺"条件;采用资源有序分配法破坏"环路"条件。
               ②死锁的避免。死锁的预防是设法至少破坏产生死锁的必要条件之一,严格地防止死锁的出现。而死锁的避免则不那么严格地限制产生死锁的必要条件的存在(因为即使死锁必要条件成立,也未必一定会发生死锁),而是在系统运行过程中小心地避免死锁的最终发生。最著名的死锁避免算法是Dijkstra提出的银行家算法。死锁避免算法需要很大的系统开销。
               ③死锁的检测。解决死锁的另一条途径是死锁检测方法,这种方法对资源的分配不加限制,即允许死锁发生。但系统定时地运行一个"死锁检测"程序,判断系统是否已发生死锁,若检测到死锁发生,则设法加以解除。何时进行死锁检测主要取决于死锁发生的频率和死锁所涉及的进程个数。如果死锁发生的频率高,则死锁检测的频率也应很高;否则影响系统资源的利用率,也可能使更多的进程陷入死锁。当然,死锁检测会增加系统开销。通常,可在以下时刻进行死锁检测:进程等待时检测、定时检测、系统利用率降低时检测。
               ④死锁的解除。死锁的解除常常可以采用下面两种办法。
               .资源剥夺法。从一些进程那里强行剥夺足够数量的资源分配给死锁进程,以解除死锁状态。
               .撤销进程法。按照某种策略逐个地撤销死锁进程,直到获得为解除死锁所需要的足够可用的资源为止。按照什么原则撤销进程,实用而又简便的方法是撤销那些代价最小的进程,或者撤销进程的数量最少。
               存储管理
               1)存储管理的功能
               在多道程序环境下,程序要运行必须为之创建进程,而创建进程的第一件事就是要将程序和数据装入内存。要达到尽可能方便用户使用和充分利用内存以提高内存利用率的目的,就要求存储管理解决以下几个重要问题,也就是存储管理的功能。
               (1)内存空间的分配和回收。内存分配的主要任务是将进入内存的每一道程序变为进程并为其分配内存空间;进程运行结束时,操作系统应将其所占用的内存空间收回。
               (2)内存空间的共享。内存共享是指两个或多个进程共用内存中相同的区域,其目的是节省内存空间、实现进程间通信、提高内存空间的利用效率。
               (3)提高内存的利用率。减少碎片(也称零头),允许多道程序动态共享内存。
               (4)存储保护。存储保护的任务是确保每道程序都在自己的内存空间运行,互不干扰。
               (5)内存扩充。内存扩充的任务是从逻辑上扩充内存容量,使用户认为系统所拥有的内存空间远比其实际的内存空间(RAM)大得多。
               2)连续分配存储管理方式
               连续分配是指为一个用户程序分配一个连续的内存空间。连续分配存储管理方式主要有单一连续分配、固定分区分配、动态分区分配和动态重定位分区分配等。
               (1)单一连续分配。单一连续分配是最简单的一种存储管理方式,但只能用于单用户、单任务的操作系统中。采用这种存储管理方式时,内存分为系统区和用户区两个分区。
               (2)固定分区分配。固定分区分配的方法是将内存空间划分为若干个固定大小的分区,可用分区大小相等和分区大小不相等两种方法。
               内存分配时建立一张分区使用表,表项包含有每个分区的起始地址、大小及状态(是否已分配)。
               (3)动态分区分配。动态分区分配是根据进程的实际需要,动态地为之分配连续的内存空间。在动态分区存储管理方式中,主要的操作是分配和回收内存。在实现可变分区分配存储管理方式时,必须解决下述3个问题。
               ①分区分配中所用的数据结构。
               ②分区的分配算法。
               ③分区的分配和回收操作。
               分区分配中的数据结构有空闲分区表和空闲分区链。分区分配算法有以下几种。
               ①首次适应算法。每当用户作业申请一个空间时,系统总是从内存的低地址开始选择一个能装入作业的空白区。当用户释放空间时,该算法更易实现相邻的空白区合并。
               ②循环首次适应算法。与首次适应算法的不同之处是,每次分配都是从刚分配的空闲区开始寻找一个能满足用户要求的空闲区。
               ③最佳适应算法。假设系统中有X1,X2,X3, …,Xi,…,Xn个空闲区(自由区),每当用户申请一个空间时,将从这n个空闲区中找到一个最接近用户需求的分区。这种算法能保留较大的空白区。但缺点是空闲区不可能刚好等于用户要求的区,所以必然要将一个分区一分为二。随着系统不断地分配和释放空间,可能会使产生的小分区小到无法再继续分配,人们将这样的无用小分区称为外碎片。
               ④最差适应算法。系统总是将用户作业装入最大的空闲区。这种算法将一个最大的分区一分为二,所以剩下的空闲区通常也很大,不容易产生外碎片。
               (4)动态重定位分区分配。动态重定位分区分配是解决碎片问题的简单而又行之有效的方法。其基本思想是移动所有已分配好的分区,使之成为连续区域。由于移动分区是要付出代价的,所以通常是在用户请求空间得不到满足时进行。当移动已分配的分区时会导致地址发生变化,所以会产生地址重定位问题。解决程序重定位问题可以采取以下两种方法。
               ①使用模块装入程序。将该程序的装配模块重新装入到指定位置,使程序重新开始执行。
               ②采用动态重定位技术。利用一个重定位寄存器,自动修改访问存储器的地址。
               3)分页存储管理方式
               (1)基本原理。页式存储管理将内存空间划分成等长的若干区域,每个区域称为一个物理页面,有时也称为内存块或块。内存的所有物理页面从0开始编号,称为物理页号或内存块号。每个物理页面内也从0开始依次编址,称为页内地址。
               系统将用户程序的逻辑空间按照同样大小也划分成若干页面,称为逻辑页面,有时也简称为页。程序的各个逻辑页面从0开始依次编号,称为逻辑页号或相对页号。每个逻辑页面内也从0开始编号,称为页内地址。用户程序的逻辑地址由逻辑页号和页内地址两部分组成:
               
               若给定一个逻辑地址空间中的地址为A,页面的大小为L,则页号P和页内地址d可按下式求得:
               
               式中:INT是整除函数;mod是取余函数。
               例如,某系统的页面大小为1KB,设A=2170 H,则由上式可以求得P=2,d=122。
               页面大小一般取2的整数次幂。页面大小直接影响地址转换和页式存储管理的性能,如果页面太大,以至于和作业地址空间相差无几,这种方法就变成了可重定位分区方法的翻版;反之,如果页面太小,则增加了系统的开销。
               存储分配时,以页面(块)为单位,按用户程序的页数多少进行分配。逻辑上相邻的页面在内存中不一定相邻,即分配给用户程序的内存块不一定连续。
               对用户程序地址空间的分页是系统自动进行的,即对用户是透明的。由于页面大小选为2的整数次幂,故系统可将地址的高位部分定义成页号,低位部分定义成页内地址。
               (2)地址映射。系统为每个用户程序建立一张页表,用于记录用户程序逻辑页面与内存物理页面之间的对应关系,如下表所示。用户程序的地址空间有多少页,该页表里就登记多少行,且按逻辑页的顺序排列。页表存放在内存系统区内。系统中设立一张内存空闲页面表,记录内存物理页面空闲情况,用于内存分配和回收。
               
               程序逻辑页面与内存物理页面之间的对应关系
               系统提供一对硬件寄存器,即页表始址寄存器和页表长度寄存器。
               ①页表始址寄存器。用于保存正在运行进程的页表在内存的首地址。当进程被调度程序选中并投入运行时,系统将其页表首地址从进程控制块中取出并送入该寄存器。
               ②页表长度寄存器。用于保存正在运行进程的页表的长度。当进程被选中并投入运行时,系统将它从进程控制块中取出并送入该寄存器。
               进行地址转换时先将页号与页表长度进行比较,如果页号大于或等于页表长度,则表示所访问的地址已超出进程的地址空间,产生越界中断。如果未出现错误,则将页表起始地址与页号和页表项长度的乘积相加,便得到该表项在页表中的位置,于是可得到该页的物理块号,将之装入物理寄存器中。同时再将有效地址寄存器中的页内地址直接送入物理地址的块内地址字段中。
               在地址映射过程中,共需两次访问内存。第一次访问页表,得到数据的物理地址,第二次才是存取数据。显然,这样就增加了访问的时间。提高存取速度有两种方法:一种是在地址映射机制中增加一组高速寄存器保存页表,这需要大量的硬件开销,经济上不可行;另一种方法是在地址映射机制中增加一个小容量的联想寄存器(相连存储器),它由高速寄存器组成一张快表(快表用来存放当前访问最频繁的少数活动页的页号)。在快表中,除了逻辑页号、物理页号对应外,还增加了以下几个标志位:特征位表示该行是否为空,用0表示空,用1表示有内容;访问位表示该页是否被访问过,用0表示未访问,用1表示已访问,这是为了淘汰那些用得很少甚至不用的页面而设置的。
               4)分段存储管理方式
               引入分段管理方式主要是为了满足用户的编程方便、分段共享、分段保护、动态链接和动态增长的要求。它与分页式存储管理方式的区别在于以下几点。
               ①页是信息的物理单位,段是信息的逻辑单位。
               ②页的大小固定且由系统确定,段的长度不固定,决定于用户所编写的程序。
               ③分页的作业地址空间是一维的,分段的作业地址空间是二维的。
               (1)基本原理。在分段存储管理方式中,作业的地址空间被划分为若干个段,每个段定义了一组完整的逻辑信息。例如,有主程序段MAIN、子程序段X、数据段D及堆栈段S等,每个段都有自己的名字,通常可用一个段号来代替段名,每个段名都是从零开始编址,并采用一段连续的地址空间,各段长度是不等的。分段系统的逻辑地址由段号(名)和段内地址两部分组成:
               
               在该地址结构中,允许一个作业最多有64K段,每个段的最大长度为64KB。
               在分段式存储管理系统中,系统为每个段分配一个连续的分区,而进程中的各个段可以离散地分配到内存不同的分区中。在系统中为每个进程建立一张段映射表,简称为"段表"。每个段在表中占有一表项,在其中记录了该段在内存中的起始地址(又称为"基址")和段的长度。进程在执行中,通过查段表来找到每个段所对应的内存区。所以说,段表实现了从逻辑段到物理内存区的映射。
               (2)地址映射。在进行地址变换时,系统将逻辑地址中的段号S与段表的长度TL进行比较,如果S≥TL,表示段号太大,访问越界,产生越界中断信号;若未越界,根据段表的起始地址和该段的段号计算出该段对应段表项的位置,从中读出该段在内存的起始地址,然后,再检查段内地址d是否超过该段的段长SL,若超过则越界;否则将该段的起始地址d与段内地址相加,即得到要访问的内存物理地址。
               像分页系统一样,当段表放在内存时,每访问一个数据,都需两次访问内存,从而降低了计算机的速率。解决的方法也和分页系统类似,再增设一个联想存储器。
               5)段页式存储管理方式
               分页系统能有效地提高内存利用率,而分段系统则能很好地满足用户需要。对两种存储管理方式各取所长,则形成一种新的存储管理方式,即段页式存储管理方式。
               (1)基本原理。先将用户程序分为若干个段,再把每个段划分成若干页,并为每个段赋予一个段名。程序的逻辑地址由3部分组成,其形式如下:
               
               内存是以页为基本单位分配给每个程序的,在逻辑上相邻的页面内存不一定相邻。系统为每个进程建立一张段表,为进程的每一段各建立一张页表。地址转换过程,要经过查段表、页表后才能得到最终的物理地址。
               (2)地址映射。首先也要配置一段表寄存器,用来集中存放段表起始地址和段长TL。先将逻辑地址中的段号S与段表的长度TL进行比较,如果S≥TL,表示段号太大,访问越界,产生越界中断信号;若未越界,利用段表起始地址和段号来求出该段对应的段表项在段表中的位置,从中得到该段的页表地址,并利用逻辑地址中的段内页号P来获得对应页的页表项位置,从中读出该页所在的物理块号b,再用块号b和页内地址构成物理地址。
               6)虚拟存储管理方式
               前面介绍的各种存储管理方案有一个共同的问题,即当一个参与并发执行的进程运行时,其整个程序必须都在内存,因而存在以下缺点:若一个进程的程序比内存可用空间还大,则该程序无法运行;由于程序运行的局部特性,一个进程在运行的任一阶段只需使用所占存储空间的一部分,因此,未用到的内存区域就被浪费。引进虚拟存储技术,其基本思想是利用大容量的外存来扩充内存,产生一个比有限的实际内存空间大得多的、逻辑的虚拟内存空间,以便能够有效地支持多道程序系统的实现和大型作业运行的需要,从而增强系统的处理能力。
               (1)基本原理。当进程要求运行时,不是将它的全部信息装入内存,而是将其一部分先装入内存,另一部分暂时留在外存。进程在运行过程中,要使用的信息不在内存时就发中断,由操作系统将它们调入内存,以保证进程的正常运行。虚拟存储管理分为虚拟页式、虚拟段式和虚拟段页式。
               虚拟页式存储管理又称为请求页式存储管理。其基本思想是,在进程开始执行之前,不是装入全部页面,而是只装入一个(甚至零个)页面,然后根据进程执行的需要,动态地装入其他页面。页表中将增加若干项:驻留位(又称中断位或特征位)指示该页在内存还是在外存;外存地址给出该页在外存的地址;修改位指示该页在内存驻留期间是否被修改过。地址映射时,当从页表中查出此页信息不在内存,则发缺页中断。此时,暂停进程执行,CPU转去执行缺页中断处理程序。该程序负责把所需的页从外存调入内存,并把物理页号填入页表,更改驻留位,然后再返回继续执行被中断的进程。
               虚拟段式存储管理的基本思想是,在进程开始执行之前,不是装入全部段,而是只装入一部分,以后再通过调段功能和置换功能将不运行的段调出,同时调入将要运行的段。
               虚拟段页式存储管理和前两种一样,在段页式系统的基础上加入了请求调页和页面置换功能。
               (2)对换。对换即置换,是指把内存中暂不能运行的进程,或暂时不用的程序和数据,换出到外存上,以腾出足够的内存空间,把已具备运行条件的进程,或进程所需要的程序和数据换入内存。对换是提高内存利用率的有效措施。
               如果对换是以整个进程为单位,便称之为"整体对换"或"进程对换";如果对换是以"页"或"段"为单位进行,则分别称之为"页面对换"或"分段对换",又统称为"部分对换"。
               在具有对换功能的OS中,通常把外存分为文件区和对换区。由于对对换区的分配是采用连续分配方式,因而对对换区空间的分配与回收和动态分区方式时内存的分配与回收方法雷同。其分配算法可以是首次适应算法、循环首次适应算法和最佳适应算法。
               (3)页面淘汰算法。当内存空间已被占满而又要调入新页时,必须把已在内存的某一页面淘汰。如果被淘汰的页面曾被修改过,还要将此页写回到外存,再换进新的页面。这一过程称为页面淘汰。页面淘汰可以在整个内存空间范围内进行,也可以只在一个进程空间范围内考虑。但为了对有关算法作比较准确的评估,以下限制在局部范围内考虑,并假定系统限定每个进程占有的最大页面数。当空间已满,而又有新的页面要装入时,则淘汰自己的一个页面而不能淘汰别的进程的页面。
               用来选择被淘汰页面的算法称为页面淘汰算法,主要有以下几种。
               ①最佳淘汰算法(OPT)。淘汰以后不再需要的,或者在最长时间以后才会用到的页面。这一算法不可能实现,但它可以作为衡量其他页面淘汰算法优劣的一个标准。
               ②先进先出淘汰算法(FIFO)。淘汰进入内存时间最长的页面,这是一种最简单的页面淘汰算法。FIFO算法有可能产生异常现象,即当分给一个进程的页面数增多时,缺页中断次数反而增加。
               ③最近最久未使用淘汰算法(LRU)。淘汰最后一次访问时间距当前时间间隔最长的页面。其出发点是用最近的过去估计最近的将来:一个已在内存的页面,如果在本次缺页中断前的最近一段时间内未被使用的时间最长,那么将来它很可能不再被使用,故应淘汰。LRU算法的实现开销很大,需要有硬件支持。
               ④最近最少使用淘汰算法(LFU)。淘汰最近一段时间内访问次数最少的页面。
               设备管理
               1)设备的分类
               I/O设备类型繁多,从OS观点来看,其重要的性能指标有数据传输速率、数据的传输单位、设备共享属性等。可以从不同角度对I/O设备进行分类。
               (1)按数据传输速率分类。I/O设备按数据传输速率可分为低速设备、中速设备和高速设备。
               ①低速设备指传输速率为每秒几个字节到数百个字节的设备。典型的设备有键盘、鼠标、语音的输入设备等。
               ②中速设备指传输速率在每秒数千字节至数万字节的设备。典型的设备有行式打印机、激光打印机等。
               ③高速设备指传输速率在每秒数十万个字节至数兆字节的设备。典型的设备有磁带机、磁盘机、光盘机等。
               (2)按设备上数据组织方式分类。I/O设备按设备上数据组织方式可分为块设备和字符设备。
               ①块设备指以数据块为单位组织和传送数据的设备,如磁盘、磁带等。其基本特征是传输速率较高,并且可随机读写。
               ②字符设备指以单个字符为单位存取信息的设备,如终端、打印机等。其基本特征是传输速率较低,且不可寻址。
               (3)按资源分配的角度分类。I/O设备按资源分配的角度可分为独占设备、共享设备和虚拟设备。
               ①独占设备。对这类设备来说,在一段时间内最多只能有一个进程占有并使用它。低速I/O设备一般是独占设备,如打印机、终端等。
               ②共享设备。这类设备允许多个进程共享,即多个进程的I/O传输可以交叉。
               ③虚拟设备。在一类设备上模拟另一类设备的技术称为虚设备技术。通常是用高速设备来模拟低速设备,以此把原来慢速的独占设备改造成能为若干进程共享的快速共享设备。就好像把一台设备变成了多台虚拟设备,从而提高了设备的利用率。被模拟的设备称为虚设备。
               2)设备管理的功能
               操作系统设备管理的目标如下。
               (1)向用户提供使用外围设备的方便、统一的接口,按照用户的要求和设备的类型控制设备工作,完成用户的输入输出请求。
               (2)充分利用中断技术、通道技术和缓冲技术,提高CPU与设备、设备与设备之间的并行工作能力,以充分利用设备资源,提高外围设备的使用效率。
               (3)保证在多道程序环境下,当多个进程竞争使用设备时,按照一定的策略分配和管理设备,以使系统有条不紊地工作。
               为实现上述目标,设备管理应具有以下功能:设备分配和回收;管理输入输出缓冲区;设备驱动,实现I/O操作;外部设备中断处理;虚拟设备及其实现。
               3)I/O控制方式
               I/O控制方式有程序I/O方式、中断驱动I/O控制方式、直接存储器访问(DMA)控制方式和I/O通道控制方式。
               (1)程序I/O方式。程序I/O方式又称为忙-等待方式,即在处理机向设备控制器发出一条I/O指令启动输入、输出设备时,要同时把状态寄存器中的忙/闲标志busy置为1,然后不断循环测试busy。当busy=1时,表示输入机尚未输完,继续测试,直至busy=0,表示输入机已经将输入数据送入控制器的数据寄存器中,于是处理机将数据寄存器中的数据取出,送入内存指定单元中,接着,再启动去读下一个数据。
               (2)中断驱动I/O控制方式。当某进程要启动某个I/O设备工作时,便由CPU向相应的设备控制器发出一条I/O命令,然后立即返回执行原来的任务。设备控制器便按照该命令的要求去控制I/O设备。
               在I/O设备输入每个数据的过程中,由于无须CPU干涉,因而可使CPU与I/O设备并行工作,仅当输完一个数据时才需CPU花费极短的时间去进行中断处理。
               (3)直接存储器访问(DMA)控制方式。在外围设备和内存之间开辟直接的数据交换通路。除了控制状态寄存器和数据缓冲寄存器之外,DMA控制器中还包括传输字节计数器、内存地址寄存器等。DMA方式采用窃取(或挪用)处理机的工作周期和控制总线的方式,来实现辅助存储器和内存之间的数据交换。有的DMA方式也采用总线浮起方式传输大批量数据。在内存与输入输出设备间传送一个数据块的过程中,不需要CPU的任何干涉,只需要CPU在过程开始启动(即向设备发出"传送一块数据"的命令)与过程结束(CPU通过轮询或中断得知过程是否结束和下次操作是否准备就绪)时的处理,实际操作由DMA硬件直接执行完成,CPU在此传送过程中可做别的事情。
               (4)I/O通道控制方式。在一般大型计算机系统中,主机对外围设备的控制可以分成3个层次来实现,即通道、控制器和设备。引入通道的目的是使数据的传输独立于CPU,使CPU从繁重的输入输出工作中解脱出来。设置通道后,CPU只需向通道发出输入输出命令,通道收到命令后,从内存中取出本次输入输出要执行的通道程序并执行,仅当通道完成输入输出任务后,才向CPU发出中断信号。
               通道相当于一个功能单纯的处理机,它具有自己的指令系统,并可以执行由这些指令编写的通道程序。通道的运算控制部件包括以下几个。
               ①通道地址字(CAW)。记录下一条通道指令存放的地址,其功能类似于中央处理机的指令寄存器。
               ②通道命令字(CCW)。保存正在执行的通道指令,其作用相当于中央处理机的指令寄存器。
               ③通道状态字(CSW)。记录通道、控制器和设备的状态,包括I/O传输完成信息、出错信息及重复执行次数等。
               通道一般需要与主机共享同一个内存,以保存通道程序和交换数据。通道访问内存采用"周期窃用"方式。
               采用通道方式后,CPU在执行用户程序时遇到I/O请求,可以根据用户的I/O请求生成通道程序放到内存中,并把该通道程序首地址放入CAW中。然后,CPU执行"启动I/O"指令,启动通道工作。通道接收"启动I/O"指令信号,从CAW中取出通道程序首地址,并根据此地址取出通道程序的第一条指令,放入CCW中;同时向CPU发应答信号,通知"启动I/O"指令执行完毕,CPU可继续执行。而通道开始执行通道程序,进行物理I/O操作。执行完一条指令,如果还有下一条指令则继续执行;否则表示传输完成,同时自行停止,CPU转去处理通道结束事件,并从CSW中得到有关通道的状态信息。
               4)缓冲技术
               中断和通道的引入为CPU与外设之间的并行操作提供了可能性,但CPU与外部设备之间速度的不匹配,以及外部设备频繁地中断CPU的运行,仍会降低CPU的使用效率。
               缓冲是计算机系统中常用的技术。一般地,凡是数据到达速度和离去速度不匹配的地方都可以采用缓冲技术。操作系统中以缓冲方式实现设备的输入输出操作主要是缓解处理机与设备之间速度不匹配的矛盾,并减少对CPU的I/O中断次数,从而提高资源利用率和系统效率。
               缓冲区可以由硬件实现,称为硬缓冲。硬缓冲区通常设在设备中,如设在打印机中。缓冲区也可以由软件实现,即在内存空间中开辟专门用于数据传输过程中暂存数据的区域。
               实现缓冲时,由于缓冲区属于系统中的重要资源,为了提高其利用率,一般将系统中所有缓冲区集中起来统一管理,构成缓冲池(缓冲区队列)。缓冲池属于操作系统空间,用户程序不能直接对其进行操作,只能通过系统调用来间接地使用。
               5)设备分配
               设备分配的任务是按照一定的策略为申请设备的进程分配合适的设备、控制器和通道。为了提高系统的适应性和均衡性,应考虑设备的独立性,即不能因物理设备的更换而影响用户程序的正常运行;还要考虑系统的安全性,即设备分配不能导致死锁现象的发生。
               (1)设备独立性。进程申请设备时,应当指定所需设备的类别,而不是指定某一台具体的设备,系统根据当前请求以及设备分配情况在相应类别的设备中选择一个空闲设备并将其分配给申请进程,这称为设备独立性。它具有以下两个优点:提高设备资源利用率,假设申请者指定具体设备,被指定的设备可能正被占用,因而无法得到,而其他同类设备可能空闲,造成资源浪费以及进程不必要的等待;不必因指定设备状态的改变而修改程序。
               (2)独占设备的分配。独占设备通常采用静态分配的方式,即设备的分配是在作业开始运行之前,并且直到作业运行结束才收回设备。但由于单个作业往往不是连续地、自始至终地使用某台设备,所以静态分配方式下的设备利用率较低。为了提高设备利用率,可采用动态分配方式,即把设备的分配推迟到进程真正使用某设备时才进行,并且一旦停止使用便立即收回,而不管整个作业是否运行结束。
               独占设备的分配策略可以采用先请求先服务算法或最高优先级者先服务算法。但是,由于这类设备的独占性是产生死锁的必要条件之一,因此在实施设备动态分配方式时必须考虑分配的安全性,避免由于分配不当而导致死锁发生。在配有通道的计算机系统中,实施分配应考虑整个数据传输通道的分配,即同时要分配设备以及与其相连的控制器和通道。
               (3)共享设备的分配。在多道程序系统中,各进程对共享设备的访问极其频繁,因而对共享设备的使用是否适当,将直接影响着系统的效率。共享设备的管理比较复杂,操作系统应准备随时进行设备的分配和回收,还要保证当两个以上的进程需要同时使用某个设备时,解决好使用正确性的问题;而且也要考虑如何合理地利用设备以改善系统的性能问题。
               (4)SPOOLing系统。SPOOLing(Simultaneous Peripheral Operations On-Line,同时的外围设备联机操作)是为解决独占设备数量少、速度慢、不能满足众多进程的要求,在进程独占设备期间设备利用率又比较低的情况而提出的一种设备管理技术。它是一种虚拟设备技术,其核心思想是:在一台共享设备(通常是高速、大容量磁盘)上模拟独占设备的操作,把一台低速的独占设备改造成若干台可并行操作的虚拟设备,即把独占设备变成逻辑上的共享设备。
               SPOOLing系统将一个作业从进入系统,到完成后撤离系统的全过程划分成输入、处理和输出3个并发执行的过程。当用户作业要进入系统时,由SPOOLing系统的预输入程序将作业信息从物理输入设备上送到磁盘上指定区域(称为输入井);当用户进程运行过程中需要使用输入数据时,可以直接从输入井读入数据;当用户进程需要数据时,可以先将输出数据送往磁盘上另一指定区域(称为输出井);最后,当作业完成后由缓冲程序依次将输出井上的数据送到物理输出设备上。SPOOLing系统的引入也缓解了CPU与设备速度不匹配性,提高了CPU与设备的并行程度。
               6)设备处理
               设备处理程序通常又称为设备驱动程序,它是I/O进程与设备控制器之间的通信程序,其主要任务就是接收上层软件发来的抽象要求,再把它转换为具体要求后发送给设备控制器,启动设备去执行。此外,它也将设备控制器发来的信号传送给上层软件。
               设备驱动程序负责接收和分析从设备分配来的信息以及设备控制块等内容,结合具体物理设备的特性,完成以下功能。
               (1)将接收到的抽象要求转换为具体要求。
               (2)检查用户I/O请求的合法性,了解I/O设备的状态,传递有关参数,设置设备的工作方式。
               (3)发出I/O命令,启动分配到的I/O设备,完成指定的I/O操作。
               (4)及时响应由控制器或通道发来的中断请求,调用相应的中断处理。
               (5)在配有通道的系统中,自动构成通道程序。
               文件管理
               1)概述
               (1)基本概念。文件是数据的一种组织形式,而文件管理系统是指文件和对文件进行操纵和管理的软件集合。基于文件系统的概念把数据的组成分为数据项、记录和文件3级。
               ①数据项。基本数据项用于描述一个对象的某种属性的字符集,是数据组织中可以命名的最小逻辑单位,即原子数据,又称为数据元素或字段,它的命名往往与其属性一致。组合数据项由若干个基本数据项组成,简称组项。
               ②记录。这是相关数据项的集合,与数据项类似。记录的长度可能是定长的,也可能是可变长度的。
               ③文件。它是记录的集合,被用户或应用程序按名字访问,为了安全起见,每一文件都由访问控制约束。
               (2)文件的分类。根据不同角度,可以将文件划分为不同类别。
               ①按性质和用途分类。系统文件(有关操作系统及其他系统程序的信息所组成的文件)、库文件(由标准子程序和常用的应用程序等组成的文件)、用户文件(由用户建立的文件,如源程序、目标程序和数据文件等)。
               ②按文件的保护方式分类。只读文件、读写文件、只执行文件。
               ③按文件的物理结构分类。顺序文件(连续文件)、链接文件、索引文件。
               ④按文件中数据形式分类。源文件、目标文件、可执行文件。
               (3)文件系统的功能。文件系统就是操作系统中实现文件统一管理的一组软件、被管理的文件以及为实施文件管理所需要的一些数据结构的总称。文件系统作为一个统一的信息管理机制,应具有下述功能。
               ①统一管理文件存储空间(即外存),实施存储空间的分配与回收。
               ②确定文件信息的存放位置及存放形式。
               ③实现文件从名字空间到外存地址空间的映射,即实现文件的按名存取。
               ④有效实现对文件的各种控制操作(如建立、撤销、打开、关闭文件等)和存取操作(如读、写、修改、复制、转存等)。
               ⑤实现文件信息的共享,并且提供可靠的文件保密和保护措施。
               2)文件的逻辑结构
               文件的逻辑结构又称为文件组织,是从用户的观点出发所观察到的文件组织形式,是用户可以直接处理的数据及其结构。
               (1)顺序文件。顺序文件是指一系列记录按某种顺序排列所形成的文件。顺序文件的记录定长,记录中的数据项的类型长度与次序固定,一般还有一个可以唯一标识记录的数据项,称为键(Key)。记录是按键值的约定次序组织。顺序文件常用于批处理应用,对于查询或更新某个记录的请求的处理性能不佳。
               (2)索引文件。索引文件是基于记录的一个键数据项组织的,而许多应用需按照别的数据项访问文件,为此,常采用索引文件方法,即对主文件中的记录按需要的数据项(一个或几个)创建索引,索引文件本身是顺序文件组织。
               (3)索引顺序文件。索引顺序文件是基于键的约定次序组织的,并维护键的索引和溢出区域。键的索引也可以是多级索引。索引顺序文件既适用于交互方式应用,也适用于批处理方式应用。
               3)目录管理
               文件系统的一个最大特点是"按名存取",用户只要给出文件的符号名就能方便地存取到外存空间的文件信息,而不必关心文件的具体物理地址。而实现文件符号名到文件物理地址映射的主要环节是检索文件目录。系统为每个文件设置一个描述性数据结构一一文件控制块(File Control Block, FCB),文件目录就是文件控制块的有序集合。
               (1)文件控制块。文件控制块是系统为管理文件而设置的一个数据结构。FCB是文件存在的标志,它记录了系统管理文件所需要的全部信息。FCB通常应包括以下内容:文件名、文件号、用户名、文件的物理位置、文件长度、记录大小、文件类型、文件属性、共享说明、文件逻辑结构、文件物理结构、建立文件的日期和时间、最后访问的日期和时间、最后修改的日期和时间、口令、保存期限等。
               (2)文件目录结构。文件目录结构的组织与管理是文件管理中的一个重要方面,常见的目录结构有3种:即一级目录结构、二级目录结构和多级目录结构。目前大多数操作系统(如UNIX、DOS等)都采用多级目录结构,又称为树形目录结构。
               一级目录结构的整个目录组织是一个线性结构,在整个系统中只需建立一张目录表,系统为每个文件分配一个目录项(文件控制块)。一级目录结构简单,但缺点是查找速度慢,不允许重名和不便于实现文件共享等,因此它主要用在单用户环境中。
               二级目录结构是由主文件目录(Master File Directory, MFD)和用户文件目录(User File Directory, UFD)组成的。在主文件目录中,每个用户文件目录都占有一个目录项,其目录项中包括用户名和指向该用户目录文件的指针。用户目录由用户所有文件的目录项组成。二级目录的优点是提高了检索目录的速度,较好地解决了重名问题。该结构虽然能有效地将多个用户隔离开(这种隔离在各个用户之间完全无关时是一个优点),但当多个用户之间要相互合作去共同完成一个大任务且某一用户又要去访问其他用户的文件时,这种隔离便成为一个缺点,因为这种隔离使诸用户之间不便于共享文件。
               为了解决以上问题,在多道程序设计系统中常采用多级目录结构,这种目录结构像一棵倒置的有根树,所以也称为树形目录结构。从树根向下,每一个节点是一个目录,叶节点是文件。DOS和UNIX等操作系统均采用多级目录结构。采用多级目录结构的文件系统中,用户要访问一个文件,必须指出文件所在的路径名。路径名包含从根目录开始到该文件的通路上所有各级目录名。各级目录名之间、目录名与文件名之间需要用分隔符隔开。例如,在DOS中分隔符为"\",在UNIX中分隔符为"/"。绝对路径名(Absolute Path Name)是指从根目录开始的完整文件名,由从根目录开始的所有目录名以及文件名构成。
               在多级目录中存取一个文件时需要用到绝对路径名,这就意味着允许用户在自己的目录中使用与其他用户文件相同的文件名。采用多级目录结构提高了检索目录的速度。例如,采用单级目录,查找一个文件最多需查遍系统目录文件中的所有文件目录项,平均也要查一半文件目录项;而多级目录查找一个文件最多只要查遍文件路径上根目录文件和子目录文件中的目录项。
               多级目录结构的优点是便于文件分类,可为每类文件建立一个子目录;查找速度快,因为每个目录下的文件数目较少;可以实现文件共享。缺点是比较复杂。
               在树形结构中,树叶节点表示普通文件,非叶节点表示目录文件。树根节点称为根目录,根目录是唯一的,由它开始可以查找到所有其他目录文件和普通文件,根目录一般可放在内存中。从根节点出发到任意非叶节点或树叶节点,都有且仅有一条路径,该路径上的全部分支组成了一个全路径名。采用多级目录结构时,文件名为一个路径名。
               (3)当前目录。在一个多层次的树形文件目录结构中,如果每次都从根节点开始检索,直到树叶的数据文件为止的、包含所有中间各级目录名在内的全路径名,是相当麻烦的。而且各目录文件通常放在外存,影响访问速度,当层次较多时,检索要耗费很多时间。
               为克服这一缺点,引入"当前目录"或称"工作目录"的概念。系统为用户提供一个目前正在使用的工作目录,称为当前目录。查找文件时既可以从根目录开始,也可以从当前目录开始向下检索。若从当前目录开始,路径名只要给出从当前目录开始到所要访问文件的相对路径名即可。这样检索路径缩短了,检索速度提高了。用户可根据需要更改当前目录。
               4)文件的共享
               文件共享是指不同用户进程使用同一文件。文件共享有多种形式,其中采用文件名和文件说明分离的目录结构有利于实现文件共享。常见的文件链接有硬链接和符号链接两种。
               (1)硬链接。硬链接是指两个文件目录指向同一个索引节点的链接,该链接也称为基于索引节点的链接。也就是说,文件的物理地址及其他属性等信息不再放在目录项中,而是放在索引节点中,在文件目录中只设置文件名及指向相应索引节点的指针。文件硬链接不利于文件删除它拥有的文件,因为文件主要删除它拥有的共享文件,必须首先删除(关闭)所有的硬链接;否则就会造成共享该文件的用户目录指针悬空。
               (2)符号链接。符号链接是指新建立的文件或目录与原来文件或目录的路径名之间的映射。当访问一个符号链接时,系统通过该映射找到原文件的路径,并对其进行访问。符号链接的缺点是:其他用户读取符号链接的共享文件比读取硬链接的共享文件需要增加读盘操作的次数。因为其他用户去读符号链接的共享文件时,系统中根据给定的文件路径名,逐个去查找目录,通过多次读盘操作才能找到该文件的索引节点,而用硬链接的共享文件的目录文件表目中已包括了共享文件的索引节点号。
               5)文件的保护
               文件系统对文件的保护常采用存取控制方法进行。存取控制就是不同的用户对文件的访问有不同的权限,以防止文件被未经文件主同意的用户访问。常用存取控制矩阵、存取控制表、用户权限表和密码等方法实现对文件的保护。
               (1)存取控制矩阵。理论上存取控制方法可用存取控制矩阵实现。存取控制矩阵是一个二维矩阵,一维列出计算机的全部用户,另一维列出系统中的全部文件,矩阵中每个元素Aij是表示第i个用户对第j个文件的存取权限。通常存取权限有可读、可写、可执行及其组合。
               (2)存取控制表。存取控制表是按用户对文件的访问权限的差别对用户进行分类,由于某一文件往往只与少数几个用户有关,所以这种分类方法可使存取控制表大为简化。UNIX系统就是使用这种存取控制表方法。它把用户分成3类,包括文件主、同组用户和其他用户,每类用户的存取权限为可读、可写、可执行的组合。
               (3)用户权限表。用户权限表是以用户或用户组为单位将用户可存取的文件集中起来存入表中,表中每个表目表示该用户对相应文件的存取权限,这相当于存取控制矩阵一行的简化。
               (4)密码。在创建文件时,由用户提供一个密码,在文件存入磁盘时用该密码对文件内容加密。进行读取操作时,要对文件进行解密,只有知道密码的用户才能读取文件。
               Windows基本操作
               1)Windows的桌面
               安装好Windows以后,打开计算机电源,计算机自动进入系统。如果一切正常,计算机首先对内存、硬盘、软驱、键盘及其他设备进行自检,然后启动操作系统。
               (1)图标。刚进入Windows XP时只有桌面右下角放置了一个"回收站"图标,而以前的系统通常有以下几个图标。
               ①"我的电脑"图标:通过该图标,可以管理磁盘、文件、文件夹等内容。
               ②"我的文档"图标:用于查看和管理"我的文档"文件夹中的文件和文件夹。
               ③"回收站"图标:Windows在删除文件和文件夹时并不将它们从磁盘上删除,而是暂时保存在"回收站"中,以便在需要时进行还原。
               ④Internet Explorer图标:通过该图标,可以快速地启动Internet Explorer浏览器,访问因特网资源。另外,通过其属性对话框,还可以设置本地的因特网连接属性,包括常规、内容、连接和程序等。
               这些桌面图标实际上是一些快捷方式,另外,也可根据需要自己创建快捷方式,并放置在桌面上。
               (2)"开始"菜单。通过"开始"菜单,可以完成计算机的常规操作和计算机管理工作。它主要包括以下菜单项。
               ①程序:显示可以运行程序的清单。
               ②收藏夹:Internet站点地址。
               ③文档:显示以前打开过的文档。
               ④设置:显示能更改系统设置的组件清单。
               ⑤查找:查找文件夹、文件等。
               ⑥帮助:可以通过帮助找到完成某项任务的方法。
               ⑦注销:关闭所有正在运行的程序,并且作为另一个不同的用户登录。
               ⑧关闭系统:关闭、重启计算机。
               (3)任务栏。初始的任务栏在屏幕的底端,它为用户提供了快速启动应用程序、文档及其他已打开窗口的方法。任务栏的最左边是"开始"按钮。在"开始"按钮的右边放置诸如启动Internet Explorer和Windows Media Player及快速启动图标。任务栏的最右边有输入法、时间等。
               2)Windows的基本操作
               在Windows中主要通过鼠标和键盘对窗口和菜单进行操作。
               (1)鼠标和键盘的操作。鼠标的操作方式有以下几种。
               ①单击左键:用于定位或选中某个对象。
               ②单击右键:用于调出所选对象的快捷菜单。
               ③双击左键:用于启动程序或关闭某个对象。
               ④拖动与释放:用于对象的移动。
               Windows操作系统的操作也可以通过键盘来完成,许多命令和操作有相应的快捷键,常用的快捷键如下。
               .Ctrl+C:复制。
               .Ctrl+X:剪切。
               .Ctrl+V:粘贴。
               .Ctrl+Z:撤销。
               .Delete:删除。
               .Shift+Delete:永久删除所选项,而不将它放到"回收站"中。
               .拖动某一项时按Ctrl键:复制所选项。
               .拖动某一项时按Ctrl+Shift键:创建所选项目的快捷方式。
               .Ctrl+向右键:将插入点移动到下一个单词的起始处。
               .Ctrl+向左键:将插入点移动到前一个单词的起始处。
               .Ctrl+向下键:将插入点移动到下一段落的起始处。
               .Ctrl+向上键:将插入点移动到前一段落的起始处。
               .Ctrl+Shift+任何箭头键:突出显示一块文本。
               .Shift+任何箭头键:在窗口或桌面上选择多项,或者选中文档中的文本。
               .Ctrl+A:选中全部内容。
               .Ctrl+O:显示"打开"对话框。
               .Alt+Enter:查看所选项目的属性。
               .Alt+F4:关闭当前项目或者退出当前程序。
               .Ctrl+F4:在允许同时打开多个文档的程序中关闭当前文档。
               .Alt+Tab:在打开的项目之间切换。
               .Alt+Esc:以项目打开的顺序循环切换。
               .Alt+空格键:显示当前窗口的"系统"菜单。
               .Ctrl+Esc:显示"开始"菜单。
               .Alt+菜单名中带下划线的字母:显示相应的菜单。
               (2)窗口及其操作。窗口是指屏幕上的方框所围成的矩形区域,是Windows中最重要的组成部分,也是Windows操作系统的特点与基础。窗口通常由以下各部分组成。
               ①标题栏:显示应用程序或文件的名称。
               ②菜单栏:包含弹出式菜单,其中的命令可供该程序使用。
               ③工具栏:位于菜单栏的下面,每个工具按钮代表一个常用命令。
               ④最小化按钮:单击该按钮窗口缩小为图标,成为任务栏的一个按钮。
               ⑤最大化按钮:单击该按钮窗口放至最大,且恰好占满整个屏幕。
               ⑥还原按钮:单击该按钮窗口恢复原来大小。
               ⑦关闭按钮:单击该按钮窗口关闭。
               ⑧滚动条:当窗口的内容太长太宽时可分别用垂直滚动条和水平滚动条方便阅览。
               ⑨工作区:在窗口中完成大部分工作所在的地方。
               窗口的操作和管理是用户使用计算机的过程中最常进行的操作。通过鼠标,可以对打开的窗口进行各种操作,包括打开、关闭、最大化、最小化、移动等。
               ①打开窗口:双击准备打开的窗口图标,或者右击准备打开的窗口图标,从弹出的快捷菜单中选择"打开"命令。
               ②关闭窗口:使用键盘关闭窗口只需按Alt+F4组合键即可:如果要使用鼠标关闭窗口,直接单击窗口右上角的关闭按钮或者双击应用程序窗口左上角的控制菜单按钮。
               ③窗口的排列:当同时打开多个窗口时,可右击任务栏的空白处,打开任务栏属性菜单,选择"层叠""横向平铺"或"纵向平铺"命令,以便按需要排列打开的窗口。
               ④窗口的切换:当同时运行几个程序时,可通过单击缩小在任务栏上的窗口图标按钮进行切换,或者使用快捷键切换。
               (3)菜单及其操作。菜单是Windows中提供文字信息的重要工具,它是各种应用程序命令的集合,可分为三类,即横向菜单、下拉式菜单和控制菜单。
               下拉式菜单中的命令用"——"分隔表示适当的分组。深色显示的菜单命令是当前可用的命令,灰色显示的菜单命令是当前不可用的命令。如果命令名后有组合键,则为此命令的快捷键。如果命令名称后有对号,则此命令为打开的开关命令。如果命令名称后有向右指向的箭头,选择此命令将出现下一级菜单。如果命令名后有省略号,选择此命令将弹出一个对话框。
               3)我的电脑和资源管理器
               Windows中"我的电脑"和"资源管理器"是两个主要的文件管理工具,它们的功能完全类似,区别之处在于其窗口中显示了两个不同的信息窗格;"我的电脑"的左侧显示的是当前主窗口中的相关信息;而"资源管理器"左边的窗格中以目录树的形式显示了计算机中的资源项目,右边的窗格中显示了所选项目的详细内容。
               在Windows中,可采取以下方式之一来启动资源管理器。
               ①选择"开始"→"所有程序"→"附件"→"Windows资源管理器"命令。
               ②在桌面上右击"我的电脑"图标,在弹出的快捷菜单中选择"资源管理器"命令。
               ③右击"开始"按钮,在弹出的快捷菜单中选择"资源管理器"命令。
               ④按Windows键的同时按E键。
               ⑤在"运行"对话框中输入Explorer命令后按Enter键。
               在Windows中,"文件"是指存储在计算机系统中的信息;"文件夹"则是文件的集合,即将相关的文件存储在同一个文件夹中,以便更好地查找和管理这些文件。在"我的电脑"和"资源管理器"中,可以对文件和文件夹进行以下操作:创建新文件夹、浏览、选定、重命名、压缩、解压缩、移动、复制、删除文件和文件夹以及用电子邮件形式发送文件。
               4)使用与管理回收站
               回收站是管理文件和文件夹的另一个重要的工具。使用回收站的删除和还原功能,可以将没用的文件或文件夹从磁盘中删除,以便释放磁盘空间。不过,默认情况下,系统只是逻辑上删除了文件或文件夹,实际上,这些文件或文件夹仍保留在磁盘上。如果回收站的空间足够且未被清理过,可以随时恢复已经"删除"的文件。因此,回收站是用户管理文件和文件夹的一个特殊且必要的工具。
               5)磁盘管理
               在Windows中,可以对磁盘进行格式化和复制等操作,还可以利用系统工具对硬盘进行检查以及对数据进行备份与恢复。
               (1)软盘基本操作。
               ①格式化软盘。在Windows的"我的电脑"或"资源管理器"窗口中的"文件夹"列表框中,右击软盘驱动器图标,在弹出的快捷菜单中选择"格式化"命令。
               ②复制软盘。右击"驱动器A:"图标,从弹出的快捷菜单中选择"复制磁盘"命令,弹出"复制磁盘"对话框;在该对话框中单击"开始"按钮,将弹出"复制磁盘"对话框并提醒用户将源盘插入软盘驱动器中;这时将源盘插入,单击"确定"按钮后系统将读取软盘上的信息,并将信息存储在内存中。完成后,系统又将打开"复制磁盘"对话框,提示将目标软盘插入到软盘驱动器中。这时取出第一张源盘,并插入另一张目标盘。完成后,单击"确定"按钮,系统会将已经保存的源盘信息完整地复制到目标盘中。
               (2)数据备份与恢复。
               ①备份数据:选择"开始"→"所有程序"→"附件"→"系统工具"→"备份"命令,在弹出的对话框中选中"新建备份作业",单击"确定"按钮,在出现的备份向导上找出要备份的内容并在其左侧的复选框中单击"下一步"按钮,在"所有选定的文件"和"新建已更改的文件"两个选项中选择其一,单击"下一步"按钮,选择备份到何处,最后为备份作业取个名字,单击"确定"按钮,开始备份。也可以在"我的电脑"或"资源管理器"窗口中右击驱动器图标,在弹出的快捷菜单中选择"属性"命令,再选择"工具"选项卡进行设置。
               ②恢复数据:选择"开始"→"所有程序"→"附件"→"系统工具"→"备份"命令,出现对话框,选中"还原备份作业",单击"确定"按钮,在出现的还原向导上选择已备份数据的位置,单击"下一步"按钮,在对话框的左边双击要还原的文件夹,在右边选定要还原的数据文件,单击"下一步"按钮,选择还原方式,单击"确定"按钮,开始还原。
               (3)磁盘检查和碎片整理。
               ①磁盘检查:选择"开始"→"所有程序"→"附件"→"系统工具"→"磁盘扫描程序"命令,选择包含要检查的文件的磁盘和扫描方式,单击"开始"按钮。
               ②磁盘碎片整理:选择"开始"→"所有程序"→"附件"→"系统工具"→"磁盘碎片整理程序"命令,选择要整理的磁盘,单击"确定"按钮。也可以在"我的电脑"或"资源管理器"窗口中右击驱动器图标,在弹出的快捷菜单中选择"属性"命令,在"工具"选项卡中进行磁盘碎片整理。
 
       操作系统
        编写嵌入式软件有两种选择:一是自己编写内核;二是使用现成的操作系统。如果嵌入式软件只需要完成一项非常小的工作,例如在电动玩具、空调中,就不需要一个功能完整的操作系统。但如果系统的规模较大、功能较复杂,那么最好还是使用一个现成的操作系统。可用于嵌入式系统软件开发的操作系统有很多,但关键是如何选择一个适合开发项目的操作系统,可以从以下几点进行考虑:
        (1)操作系统提供的开发工具。有些实时操作系统只支持该系统供应商的开发工具,因此,还必须从操作系统供应商处获得编译器、调试器等;而有的操作系统应用广泛,且有第三方工具可用,因此选择的余地比较大。
        (2)操作系统向硬件接口移植的难度。操作系统到硬件的移植是一个重要的问题,是关系到整个系统能否按期完工的一个关键因素。因此,要选择那些可移植性程度高的操作系统,以避免因移植带来的种种困难。
        (3)操作系统的内存要求,有些操作系统对内存有较大要求。
        (4)操作系统的可剪裁性、实时性能等。
 
       分页
        Word是通过分页符决定文档分页的位置,也就是说,分页符用来表示上一页结束、下一页开始的位置。分页有自动分页和人工分页两种,自动分页是指文档中每个页面结尾处Word自动插入的分页符,该分页符也称为软分页符;人工分页是指通过Word提供的插入分页符命令,在指定位置上强制插入的分页符,该分页符也称为硬分页符。
        在页面视图、打印预览以及在打印出的文档中,分页符后的文本出现在新页中。在普通视图中,自动分页符显示为横穿页面的单点划线;人工分页符则显示为标有“分页符”字样的单点划线,如下图(a)所示。
        
        设置分页
        插入人工分页符的方法是单击新页的起始位置,选择“插入”→“分隔符”命令,打开“分隔符”对话框,如上图(b)所示。选择“分页符”单选按钮,单击“确定”按钮关闭对话框。
        删除分页符的方法是在普通视图下,先将光标移到分页符的单点划线中,按Delete键。
 
       进程
        简单而言,一个进程就是一个正在运行的程序。一般来说,一个进程至少应该包括以下几个方面的内容。
        .相应的程序:进程既然是一个正在运行的程序,当然需要有相应程序的代码和数据。
        .CPU上下文:指程序在运行时,CPU中各种寄存器的当前值,包括:程序计数器,用于记录将要取出的指令的地址;程序状态字,用于记录处理器的运行状态信息;通用寄存器,用于存放数据或地址;段寄存器,用于存放程序中各个段的地址;栈指针寄存器,用于记录栈顶的当前位置。
        .一组系统资源:包括操作系统用来管理进程的数据结构、进程的内存地址空间、进程正在使用的文件等。
        进程有动态性、独立性和并发行三个特性。
        (1)动态性。进程是一个正在运行的程序,而程序的运行状态是在不断地变化的。例如,当一个程序在运行的时候,每执行完一条指令,PC寄存器的值就会增加,指向下一条即将执行的指令。而CPU中用来存放数据和地址的那些通用寄存器,它们的值肯定也不断地变化。另外,堆和栈的内容也在不断地变化,每当发生一次函数调用时,就会在栈中分配一块空间,用来存放此次函数调用的参数和局部变量。而当函数调用结束后,这块栈空间就会被释放掉。
        (2)独立性。一个进程是一个独立的实体,是计算机系统资源的使用单位。每个进程都有自己的运行上下文和内部状态,在它运行的时候独立于其他的进程。
        (3)并发性。从宏观上来看,在系统中同时有多个进程存在,它们相互独立地运行。
        下图表示四个进程A、B、C、D在系统中并发地运行。从中可以看出,虽然从宏观上来说,这四个进程都是在系统中运行,但从微观上来看,在任何一个特定的时刻,只有一个进程在CPU上运行。从时间上来看,开始是进程A在运行,然后是进程B在运行,然后是进程C和进程D。接下来又轮到了进程A去运行。因此,在单CPU的情形下,所谓的并发性,指的是宏观上并发运行,而微观上还是顺序运行,各个进程轮流去使用CPU资源。
        
        四个进程在并发运行
        在具体实现上,以CPU中的程序计数器PC为例,真正物理上的PC寄存器只有一个。当四个进程在轮流执行时,PC取值的运动轨迹是先在进程A内部流动,然后再到进程B的内部流动,再到进程C和D。从进程的独立性角度来说,每个进程都有“自己”独立的PC寄存器,即逻辑上的PC寄存器,它们的取值相互独立、互不影响。所谓的逻辑PC,其实就是一个内存变量。例如,在上图中,当进程A要执行的时候,就把A的逻辑PC的值拷贝到物理PC中,然后开始运行。当轮到B运行的时候,先把物理PC的当前值保存到A的逻辑PC中,然后再把B的逻辑PC的值装入到物理PC中,即可运行。这样就实现了各个进程的轮流运行。
 
       中断
        中断是异步发生的,是来自处理器外部的I/O设备的信号的结果。硬件中断不是由任何一条专门的指令造成的,从这个意义上来说它是异步的。硬件中断的异常处理程序常常被称为中断处理程序(interrupt handler)。
               硬中断与软中断
               硬中断是由硬件产生的,例如磁盘、网卡、键盘、时钟等。每个设备或设备集都有它自己的IRQ(中断请求)。基于IRQ,CPU可以将相应的请求分发到对应的硬件驱动上。
               软中断是一组静态定义的下半部分接口,可以在所有的处理器上同时执行,即使两个类型相同也可以。但是一个软中断不会抢占另外的一个软中断,唯一可以抢占软中断的是硬中断。
               可屏蔽中断与不可屏蔽中断
               可屏蔽中断和不可屏蔽中断都属于外部中断,是由外部中断源引起的。不可屏蔽中断源一旦提出请求,CPU必须无条件响应,而对可屏蔽中断源的请求,CPU可以响应,也可以不响应。
               CPU一般设置两根中断请求输入线:可屏蔽中断请求INTR(Interrupt Require)和不可屏蔽中断请求NMI(Non Maskable Interrupt)。对于可屏蔽中断,除了受本身的屏蔽位控制外,还都要受一个总的控制,即CPU标志寄存器中的中断允许标志位IF(Interrupt Flag)的控制,IF位为1,可以得到CPU的响应,否则,得不到响应。IF位可以由用户控制,指令STI或Turbo C的Enable()函数,将IF位置1(开中断),指令CLI或Turbo_c的Disable()函数,将IF位清0(关中断)。
               中断优先级
               当多个中断源同时请求中断时,而CPU一次只能响应其中的一个中断,同时为了能响应所有中断,就引入中断优先级来处理。系统会根据引起中断事件的重要性和紧迫程度,将中断源分为若干个级别,称作中断优先级。中断优先级有两种:查询优先级和执行优先级。
               查询优先级是不可以更改和设置的,在该方式下当多个中断源同时产生中断信号时,中断仲裁器会选择中断源优先处理的顺序,此过程与是否发生中断服务程序的嵌套毫不相干。当CPU查询各个中断标志位的时候,会依照优先级顺序依次查询,当数个中断同时请求的时候,会优先查询到高查询优先级的中断标志位,但并不代表高查询优先级的中断可以打断已经并且正在执行的低查询优先级的中断服务。
               由于可屏蔽的中断源很多,故需要对其进行管理,如区分是哪个中断源发出的中断信号?哪个中断源最优先及怎样处理多级中断嵌套等。为此,可使用中断控制器对多个可屏蔽中断源进行管理。
               中断控制器能够对中断进行排队管理,避免中断信号的丢失,同时支持对不同中断进行优先级的配置,使高优先级中断能够中断低优先级中断,满足系统中具有更高时间约束特性功能的需要。
               中断嵌套
               当处理器正在处理一个中断时,有比该中断优先级高的中断源发出中断请求时,如果处理器正在执行中断处理程序,那么处理器会对高优先级的中断进行立即处理,处理完之后再返回到低优先级的中断服务程序继续执行。这样就形成了中断服务程序中套用中断服务程序的情况,即中断嵌套。可嵌套中断的处理流程和中断服务框图如下图所示。
               
               可嵌套中断处理流程
   题号导航      2022年下半年 网络管理员 上午试卷 综合知识   本试卷我的完整做题情况  
1 /
2 /
3 /
4 /
5 /
6 /
7 /
8 /
9 /
10 /
11 /
12 /
13 /
14 /
15 /
 
16 /
17 /
18 /
19 /
20 /
21 /
22 /
23 /
24 /
25 /
26 /
27 /
28 /
29 /
30 /
 
31 /
32 /
33 /
34 /
35 /
36 /
37 /
38 /
39 /
40 /
41 /
42 /
43 /
44 /
45 /
 
46 /
47 /
48 /
49 /
50 /
51 /
52 /
53 /
54 /
55 /
56 /
57 /
58 /
59 /
60 /
 
61 /
62 /
63 /
64 /
65 /
66 /
67 /
68 /
69 /
70 /
71 /
72 /
73 /
74 /
75 /
 
第17题    在手机中做本题