资源描述
第九章操作系统支持第九章操作系统支持返回第九章操作系统支持第九章操作系统支持 操作系统是管理计算机资源并为用户提供服务的系统软件,作为硬件与应用软件之间的接口,操作系统起着承上启下的作用。了解操作系统与硬件之间的相互关系有助于理解计算机系统的整体工作过程。本章仅就操作系统与硬件关系最密切的处理机调度与存储管理问题进行讨论。9.19.1操作系统概述操作系统概述一、操作系统的概念l计算机系统大体上可以分为三个部分:硬件、系统软件和应用软件。硬件是所有软件运行的物质基础。l操作系统(简称OS)则是最重要的系统软件,是管理计算机系统资源、控制程序执行的系统软件。操作系统作为计算机用户与计算机硬件之间的接口程序,向用户和应用软件提供各种服务,合理组织计算机工作流程,并为用户使用计算机提供良好运行环境。l操作系统已经成为现代计算机系统不可分割的重要组成部分。操作系统依托计算机硬件并在其基础上提供许多新的服务和功能,从而使用户能够方便、可靠、安全、高效地操纵计算机硬件并运行应用程序。9.19.1操作系统概述操作系统概述二、操作系统的主要目标归结为以下几点:l管理系统资源:操作系统能有效管理系统中的所有硬件资源和软件资源,使资源得到充分利用。l提高系统效率:操作系统能合理地组织计算机的工作流程,改进系统性能,提高系统效率。l方便用户使用:通过向用户提供友好的用户界面,操作系统能让用户更方便、更轻松地使用计算机系统。l增强机器功能:操作系统能通过扩充改造硬件部件并提供新的服务来增强机器功能。l构筑开放环境:操作系统通过遵循相关技术标准的方式支持体系结构的可伸缩性和可扩展性,支持应用程序在不同平台上的移植和互操作。9.1.29.1.2操作系统的功能操作系统的功能l操作系统的核心任务:管理计算机系统中的资源。l从资源管理的角度来看,作为资源管理器的操作系统对计算机硬件资源的管理主要体现在以下三个方面:l处理器管理l存储器管理l设备管理9.1.29.1.2操作系统的功能操作系统的功能l处理机管理:处理机是最重要的硬件资源,因为所有软件的执行和系统功能的实现都依赖于处理机。因此,能否充分发挥处理机的效能,是系统功能和性能的关键。l早期的计算机系统是单用户、单任务系统,处理机仅为一个用户的一个任务服务见图所示。9.1.29.1.2操作系统的功能操作系统的功能l现代的计算机系统广泛采用多任务机制支持多个程序或多个用户并行使用计算机。在引入多任务机制后,当一个作业需等待I/O操作等外部条件满足时,处理机转去执行另一个作业,从而实现多任务的并行执行。操作系统负责组织多个任务的并行执行,并负责解决处理机的调度、分配和回收等问题。l多务系统运行两道程序时处理机的使用效率见图9.1.29.1.2操作系统的功能操作系统的功能l存储管理:按照冯诺依曼体系结构,无论是指令还是操作数,都存储在内存储器中。因此存储系统的性能对系统整体性能的影响非常大。随着现代计算机系统的存储系统层次结构的复杂化,操作系统担负的存储管理任务也越来越繁杂。尤其在多任务系统中。(1)存储分配:即根据程序的需要为其分配存储器资源,在方便存储器使用的同时又要保证存储器的高利用率。(2)存储共享:允许主存中的多个任务或多个用户程序共享存储器资源,这一方面可以提高存储器的利用率,另一方面又便于多任务间的数据交换。(3)存储保护:确保用户程序不会有意或无意地访问或破坏操作系统的关键代码和数据。各个用户程序之间也需要相互隔离、互不干扰。(4)存储扩充:基于存储器的层次结构,存储管理需要为用户提供与实际物理内存空间不直接相关的逻辑编程空间,并在主存和辅助存储器的支持下实现逻辑地址空间与物理地址空间之间的映射与变换,方便用户的编程和使用。9.1.29.1.2操作系统的功能操作系统的功能l设备管理:设备管理的主要任务是进行各类外围设备的调度与管理,协调各个用户提出的I/O请求,提高各I/O设备操作与处理机运行的并行性,提高处理机和I/O设备的利用率。设备管理还需提供每种设备的设备驱动程序,向用户屏蔽硬件使用细节。9.1.39.1.3操作系统的特性及其需要解决的问题操作系统的特性及其需要解决的问题l操作系统作为计算机系统的管理者,必须解决一系列复杂的管理问题。而计算机系统运行的特性决定着操作系统的策略。l并发性l共享性l随机性等特征。9.1.39.1.3操作系统的特性及其需要解决的问题操作系统的特性及其需要解决的问题l并发性:为了提高系统资源利用率,多任务系统采用并发技术消除计算机系统中部件和部件之间的相互等待:两个或两个以上的程序可以在同一时间间隔内同时执行,设备的输入输出操作和处理机执行程序同时进行。因此并发性是操作系统的重要特征。l共享性:多个并发执行的程序需要共享系统中的硬件资源和信息资源。l随机性:在多道程序环境中,随机性是显而易见的:用户发出命令或输入数据的时间相对于指令的执行时间是随机的,程序运行发生错误或异常的时刻是随机的,外部中断事件发生的时刻是随机的,一个程序由于等待资源而被暂停执行的时间也是随机的。9.1.49.1.4操作系统的硬件环境操作系统的硬件环境l处理机状态控制:为了支持操作系统的特权,中央处理机需要知道当前执行的程序是操作系统代码还是一般用户程序代码。为此,处理机中设置了状态标志。大多数系统把处理机的状态划分为管理状态又称超级用户状态、管态或特权状态和用户状态又称目标状态、常态、目态或解题状态)。l特权指令:为了防止用户程序执行有关资源管理的机器指令从而破坏系统正常工作状态,在多任务环境中,通常把指令系统中的指令分为两类:特权指令(Privileged Instructions)和非特权指令。特权指令是只能由操作系统核心程序执行的机器指令,用于系统资源管理与程序执行控制等操作,如启动输入输出设备、设置系统时钟、控制中断屏蔽位、设置存储管理状态、加载程序状态字等。9.1.49.1.4操作系统的硬件环境操作系统的硬件环境l寄存器访问权限:计算机系统的中央处理机内设置了很多寄存器,包括用于暂存数据的通用数据寄存器和用于存放处理器的控制和状态信息的控制寄存器。后者主要有:程序计数器PC、程序状态字寄存器PWSR、指令寄存器IR等,也包括和系统存储管理、中断管理等相关的寄存器。l程序状态字和程序执行现场:为了记录计算机系统当前的工作状态,需要专门设置程序状态字(PSW)用于控制指令的执行并存储与程序有关的系统状态。l程序状态字寄存器保存的信息通常包括以下几类:(1)当前正在执行的指令地址这由程序计数器给出。(2)状态条件码表示指令执行结果的状态特征,例如算术运算指令运行结果是否为零、是否有溢出、是否是负数等。(3)处理机状态指明当前的处理机状态,如目态或管态,是否允许某类中断,是否处于中断嵌套状态,当前的存储保护状态等。(4)控制标志能够影响某些指令执行方式的一些标志位。9.1.49.1.4操作系统的硬件环境操作系统的硬件环境l 中断机制:l现代的计算机系统都支持中断(异常)。通过检测中断源并进行中断响应,中断机制提供了一种程序随机切换的方式。l通过响应硬件定时器中断,操作系统可以执行周期性的例行管理任务,例如进程调度。这可以确保某个进程不会独占系统资源。以中断方式实现处理机与外界进行信息交换的握手联络,能保证CPU与外设的并行工作。l计算机工作时可能发生软件或硬件故障,故障发生的时间相对于CPU的指令执行是完全随机的。常见的硬件故障有掉电、校验错、运算出错等;常见的软件故障有运算溢出、地址越界、使用非法指令等。一旦发生故障,应由CPU执行中断处理程序进行处理。9.1.49.1.4操作系统的硬件环境操作系统的硬件环境l存储管理:系统硬件通过存储管理部件支持操作系统实现多级存储体系和存储保护功能。在后面将详尽讨论与存储管理相关的问题。9.29.2调度调度一、进程的概念:操作系统除了负责管理用户程序的执行外,也需要处理各种系统任务。在操作系统中,通常使用进程(process)这一概念描述程序的动态执行过程。l程序是静态实体;l进程是动态实体,是执行中的程序。进程不仅仅包含程序代码,也包含了当前的状态(这由程序计数器和处理机中的相关寄存器表示)和资源。因此,如果两个用户用同样一段代码分别执行相同功能的程序,那么其中的每一个都是一个独立的进程。虽然其代码是相同的,但是数据却未必相同。9.29.2调度调度二、进程的状态:进程在不同阶段会处于不同状态。进程的状态会随着进程当前进行的活动而改变。l创建进程:正在被创建,并未准备好运行。l就绪进程:已经准备好运行,并正等待分配处理器时间。l运行进程:正占用处理机执行。l阻塞进程:由于等待I/O操作完成或某些事件出现而被系统挂起。l终止进程:完成操作结束运行。在不同的系统中,进程的状态种类和名称不尽相同。系统中可能有多个进程处于创建、就绪、阻塞和终止等状态,但是处理机在任意时刻只能运行一个进程。9.29.2调度调度l进程控制块:为了管理和控制进程,操作系统必须保存与每个进程有关的状态等信息。为此,操作系统为每个进程设置一个进程控制块PCB(Process Control Block)。PCB中记录了操作系统所需要的用于描述进程情况及控制进程运行所需的全部信息。PCB通常包含以下信息:(1)进程标识符用于唯一标识当前进程;(2)状态记录进程当前状态;(3)程序计数器将要执行的下一条指令的地址;(4)进程上下文进程执行时CPU内部寄存器的取值,是进程执行的现场数据;(5)存储管理信息指明进程占用的内存空间的范围;(6)I/O状态信息例如打开的文件、未完成的I/O请求、占用的I/O设备等。9.29.2调度调度进程调度是操作系统必备的功能。通常将进程调度分为抢占式和非抢占式两种模式。(1)非抢占模式:非抢占模式是指一旦将处理机时间分配给某个进程后,便让该进程一直运行,直到该进程因运行完毕或因发生某事件而被阻塞,才把处理机时间重新分配给其它进程。否则,不允许其他进程抢占已经分配出去的处理机时间。“先来先服务”策略就是一种非抢占调度模式,先进入就绪队列的进程首先运行,直到运行结束或被阻塞为止。这种调度模式的优点是实现简单、系统开销小,但无法满足实时系统对紧急事件处理的时间要求。(2)抢占模式:在抢占调度模式中,允许进程调度程序根据某种策略,暂停某个正在运行的进程,将处理机时间重新分配给另一个进程。9.29.2调度调度常用的抢占策略有:l时间片策略处理机时间被分割为等长的时间单位,称为时间片。每个进程被分配一个时间片运行,当该时间片超时时,由操作系统重新进行进程调度,将处理机时间交给另一个就绪进程。这种策略适用于分时系统和要求较高的批处理系统。l优先权策略操作系统为某些重要或紧急的进程指定较高的优先级。当这种进程就绪时,如果其优先级比正在运行的进程的优先级高,便暂停正在运行的进程,将处理机时间分配给优先级高的进程。l短进程优先策略当就绪队列中的某个进程比正在运行的进程的运行时间明显地短时,操作系统将剥夺长进程的执行,将处理机分配给短进程,使之优先运行。该调度策略能有效地降低进程的平均等待时间,提高系统的吞吐量。9.29.2调度调度调度的层次l高级调度:是指按一定原则把辅存上处于后备队列中的作业调入内存,并为它们创建进程、分配必要的资源,再将新创建的进程排在就绪队列上准备执行。高级调度决定哪些作业可以进入系统竞争系统资源。9.29.2调度调度l操作系统在进行高级调度时必须考虑两个因素:(1)接纳多少个作业系统允许有多少个作业同时在内存中运行用多道程序度表征。内存中同时运行的作业太多可能会影响到系统的服务质量,同时运行的作业太少又会导致系统资源利用率和系统吞吐量太低。因此,多道程序度的确定应根据系统的规模和运行速度等做适当折衷。(2)接纳哪些作业操作系统根据所采用的调度算法决定哪些作业从辅存调入内存。例如,先来先服务调度算法将最早进入辅存的作业最先调入内存;短作业优先调度算法将辅存上最短的作业最先调入内存;而基于作业优先权的调度算法则需根据作业的重要程度与轻重缓急选择调入内存的作业。l高级调度在较大的粒度上决定对处理机时间的使用权分配,故又称作业调度、收容调度或长程调度。9.29.2调度调度l低级调度即进程调度,决定当存在多个就绪进程时,哪一个就绪进程将分配到中央处理机的运行时间,并且把中央处理机实际分配给这个进程。l低级调度在较小的粒度上决定对处理机时间的使用权分配,又称为短程调度。低级调度执行非常频繁,进程调度程序每秒钟可执行多次进程调度,故进程调度程序必须常驻内存。9.29.2调度调度 中级调度的目的是为了提高内存的利用率和系统吞吐量。为了让那些因为某些原因暂时不能运行的进程不再占用宝贵的内存资源,操作系统通过中级调度将这些进程调出至辅存等待。当这些处于挂起状态的进程再次准备好运行,且内存又出现空闲空间时,由中级调度决定将辅存上的哪些处于就绪驻外存状态的进程重新调入内存。被调入的进程将转换为就绪状态挂在就绪队列上,等待进程调度。9.29.2调度调度l处理机调度的实现:为了调度的方便,操作系统会建立并维护若干个进程队列。每个队列均用于维护一个等待某些资源的进程的列表。l在批处理系统中,作业进入系统后,先驻留在辅存的后备队列中,作业调度从辅存的后备队列中选择作业调入内存,并为之创建进程,然后送入内存就绪队列,并等待进程调度。交互型作业则直接进入内存就绪队列。9.29.2调度调度l三级处理机调度队列模型9.29.2调度调度l进程调度根据某种调度算法从就绪队列中选择一个进程运行。每个进程运行时都可能在分配给其运行的时间出现以下三种情况:(1)该进程在分配给其运行的时间内运行完成,该进程释放处理机后转入完成状态;(2)该进程在运行期间因等待某些事件(如等待某些资源可用或等待某些I/O操作完成)而无法继续运行,操作系统将该进程送入内存阻塞队列;(3)该进程在分配给其运行的时间超时时尚未运行完成,操作系统将暂停该进程运行,并将该进程重新排入内存就绪队列。9.29.2调度调度l一旦进程等待的事件发生,操作系统进程调度程序可以将其从内存阻塞队列重新挂入内存就绪队列。而内存就绪队列中的进程可以被重新调度到运行状态。l在某个进程运行过程中,某些事件会使进程暂停执行而转入操作系统的进程调度程序执行。其一是该进程调用系统服务程序,例如请求系统进行I/O服务操作;其二是该进程引发中断,无论是硬件引发的输入/输出中断、软件错误引发的系统异常,还是系统定时器超时中断;其三是某些和该进程无关但影响系统状态的事件需要操作系统处理。9.39.3存储管理存储管理l存储管理主要解决存储器的分配与回收,存储器地址变换,存储器扩充,存储器共享与保护等问题。9.39.3存储管理存储管理一、分区式存储管理l早期的单用户、单任务的操作系统将内存空间简单地分为两个区域:系统区和用户区。操作系统使用系统区;应用程序则装入到用户区,并使用用户区全部空间。这种方式管理简单,但会浪费内存空间。l为了支持多个程序并发执行,现代操作系统引入了分区式存储管理。内存被分为若干个区域,操作系统占用其中一个分区,其余的分区则提供给应用程序使用,每个应用程序占用其中一个或几个分区。l根据分区的大小是否固定,可以将分区式存储管理机制分为固定分区和动态分区两种类型。9.39.3存储管理存储管理二、交换技术和分页技术l根据程序的局部性原理,在一个较短的时间间隔内,程序所访问的存储器地址在很大比例上集中在存储器地址空间的很小范围内。交换技术正是利用了程序的局部性原理实现多任务并发环境中的存储管理。9.3 9.3存储管理存储管理l交换过程由换入和换出两个过程组成:换入过程将外存交换区的数据和程序代码换至内存,而换出过程将内存中的数据换到外存交换区中。9.39.3存储管理存储管理l操作系统将暂时不执行的程序代码保存在外存中,并将这些进程排入进程请求的长期调度队列。队列中的一部分进程被调到主存中执行。当由于输入/输出操作等原因使得存储器中无进程处于就绪状态时,操作系统将部分进程换出至外存,并排入中期队列。腾出的内存空间则换入中期队列或长期队列中的一个可执行的进程。l交换技术的优点是增加了并发运行的进程数目。缺点是换入和换出操作增加了处理机的时间开销;而且交换的单位为整个进程的地址空间,没有考虑程序执行过程中地址访问的统计特性。l交换技术和早期采用的覆盖技术一样,虽然都是从逻辑上利用外存扩大主存空间,但并没有将主存和外存组成一个有机的整体。l分页技术引申出一种非常重要的存储管理策略虚拟存储器(简称虚存)。在存储管理部件(MMU)的支持下,虚拟存储器技术可以彻底解决存储器的调度与管理问题。虚拟存储器工作原理虚拟存储器工作原理也称为虚拟存储系统、虚拟存储体系等其概念由英国曼彻斯特大学的Kilbrn等人于1961年提出到70年代广泛应用于大中型计算机系统目前,许多微型机也使用虚拟存储器把主存储器、磁盘存储器和虚拟存储器都划分成固定大小的页 主存储器的页称为实页 虚拟存储器中的页称为虚页9.49.4虚拟存储器虚拟存储器一、虚拟存储器的基本概念1、实地址与虚地址:用户编制程序时使用的地址称为虚地址或逻辑地址,其对应的存储空间称为虚存空间或逻辑地址空间;而计算机物理内存的访问地址则称为实地地或物理地址,其对应的存储空间称为物理存储空间或主存空间。程序进行虚地址到实地址转换的过程称为程序的再定位。9.49.4虚拟存储器虚拟存储器2、虚存的访问原理 虚存空间的用户程序按照虚地址编程并存放在辅存中。程序运行时,由地址变换机构依据当时分配给该程序的实地址空间把程序的一部分调入实存。每次访存时,首先判断该虚地址所对应的部分是否在实存中:如果是,则进行地址转换并用实地址访问主存;否则,按照某种算法将辅存中的部分程序调度进内存,再按同样的方法访问主存。由此可见,每个程序的虚地址空间可以远大于实地址空间,也可以远小于实地址空间。前一种情况以提高存储容量为目的,后一种情况则以地址变换为目的。后者通常出现在多用户或多任务系统中:实存空间较大,而单个任务并不需要很大的地址空间,较小的虚存空间则可以缩短指令中地址字段的长度。9.49.4虚拟存储器虚拟存储器3、cache与虚存的异同l从虚存的概念可以看出,主存辅存的访问机制与cache主存的访问机制是类似的。这是由cache存储器、主存和辅存构成的三级存储体系中的两个层次。lcache和主存之间以及主存和辅存之间分别有辅助硬件和辅助软硬件负责地址变换与管理,以便各级存储器能够组成有机的三级存储体系。cache和主存构成了系统的内存,而主存和辅存依靠辅助软硬件的支持构成了虚拟存储器。9.49.4虚拟存储器虚拟存储器 在三级存储体系中,cache主存和主存辅存这两个存储层次有许多相同点;(1)出发点相同二者都是为了提高存储系统的性能价格比而构造的分层存储体系,都力图使存储系统的性能接近高速存储器,而价格和容量接近低速存储器。(2)原理相同都是利用了程序运行时的局部性原理把最近常用的信息块从相对慢速而大容量的存储器调入相对高速而小容量的存储器。但cache主存和主存辅存这两个存储层次也有许多不同之处:(3)侧重点不同cache主要解决主存与CPU的速度差异问题;而就性能价格比的提高而言,虚存主要是解决存储容量问题,另外还包括存储管理、主存分配和存储保护等方面。(4)数据通路不同CPU与cache和主存之间均有直接访问通路,cache不命中时可直接访问主存;而虚存所依赖的辅存与CPU之间不存在直接的数据通路,当主存不命中时只能通过调页解决,CPU最终还是要访问主存。(5)透明性不同cache的管理完全由硬件完成,对系统程序员和应用程序员均透明;而虚存管理由软件(操作系统)和硬件共同完成,由于软件的介入,虚存对实现存储管理的系统程序员不透明,而只对应用程序员透明(段式和段页式管理对应用程序员“半透明”)。(6)未命中时的损失不同由于主存的存取时间是cache的存取时间的510倍,而主存的存取速度通常比辅存的存取速度快上千倍,故主存未命中时系统的性能损失要远大于cache未命中时的损失。9.4 9.4虚拟存储器虚拟存储器4、虚存机制要解决的关键问题(1)调度问题决定哪些程序和数据应被调入主存。(2)地址映射问题在访问主存时把虚地址变为主存物理地址(这一过程称为内地址变换);在访问辅存时把虚地址变成辅存的物理地址(这一过程称为外地址变换),以便换页。此外还要解决主存分配、存储保护与程序再定位等问题。(3)替换问题决定哪些程序和数据应被调出主存。(4)更新问题确保主存与辅存的一致性。l在操作系统的控制下,硬件和系统软件为用户解决了上述问题,从而使应用程序的编程大大简化。内部地址变换:多用户虚拟地址Av变换成主存实地址A 多用户虚拟地址中的页内偏移D直接作为主存实地址中的页内偏移d,主存实页号p与它的页内偏移d直接拼接起来就得到主存实地址A。地址的映象与变换地址的映象与变换三种地址空间:虚拟地址空间 主存储器地址空间 辅存地址空间地址映象:把虚拟地址空间映象到主存地址空间地址变换:在程序运行时,把虚地址变换成主存实地址三种虚拟存储器:页式虚拟存储器 段式虚拟存储器 段页式虚拟存储器9.49.4虚拟存储器虚拟存储器二、页式虚存存储器1、页式虚存地址映射 页式虚拟存储系统中,虚地址空间被分成等长大小的页,称为逻辑页;主存空间也被分成同样大小的页,称为物理页。相应地,虚地址分为两个字段:高字段为逻辑页号,低字段为页内地址(偏移量);实存地址也分两个字段:高字段为物理页号,低字段为页内地址。通过页表可以把虚地址(逻辑地址)转换成物理地址。l页式虚拟存储器的地址映射过程见下图。页式虚拟存储器的地址映射过程见下图页式虚拟存储器的地址映射过程见下图2.页式虚拟存储器 地址映象方法:地址变换方法:9.49.4虚拟存储器虚拟存储器l在大多数系统中,每个进程对应一个页表。页表中对应每一个虚存页面有一个表项,表项的内容包含该虚存页面所在的主存页面的地址(物理页号),以及指示该逻辑页是否已调入主存的有效位。地址变换时,用逻辑页号作为页表内的偏移地址索引页表(将虚页号看作页表数组下标)并找到相应物理页号,用物理页号作为实存地址的高字段,再与虚地址的页内偏移量拼接,就构成完整的物理地址。现代的中央处理机通常有专门的硬件支持地址变换。l每个进程所需的页数并不固定,所以页表的长度是可变的,因此通常的实现方法是把页表的基地址保存在寄存器中,而页表本身则放在主存中。由于虚存地址空间可以很大,因而每个进程的页表有可能非常长。例如,如果一个进程的虚地址空间为2G字节,每页的大小为512字节,则总的虚页数为231/29=222。9.49.4虚拟存储器虚拟存储器l为了节省页表本身占用的主存空间,一些系统把页表存储在虚存中,因而页表本身也要进行分页。当一个进程运行时,其页表中一部分在主存中,另一部分则在辅存中保存。l另一些系统采用二级页表结构。每个进程有一个页目录表,其中的每个表项指向一个页表。因此,若页目录表的长度(表项数)是m,每个页表的最大长度(表项数)为n,则一个进程最多可以有mn个页。l在页表长度较大的系统中,还可以采用反向页表实现物理页号到逻辑页号的反向映射。页表中对应每一个物理页号有一个表项,表项的内容包含该物理页所对应的逻辑页号。访存时,通过逻辑页号在反向页表中逐一查找。如果找到匹配的页,则用表项中的物理页号取代逻辑页号;如果没有匹配表项,则说明该页不在主存中。这种方式的优点是页表所占空间大大缩小,但代价是需要对反向页表进行检索,查表的时间很长。有些系统通过散列(哈希)表加以改进。9.49.4虚拟存储器虚拟存储器2、转换后援缓冲器l由于页表通常在主存中,因而即使逻辑页已经在主存中,也至少要访问两次物理存储器才能实现一次访存,这将使虚拟存储器的存取时间加倍。为了避免对主存访问次数的增多,可以对页表本身实行二级缓存,把页表中的最活跃的部分存放在高速存储器中,组成快表。这个专用于页表缓存的高速存储部件通常称为转换后援缓冲器(TLB)。保存在主存中的完整页表则称为慢表。9.49.4虚拟存储器虚拟存储器lTLB的地址映射过程见图9.49.4虚拟存储器虚拟存储器l内页表和外页表 页表是虚地址到主存物理地址的变换表,通常称为内页表。与内页表对应的还有外页表,用于虚地址与辅存地址之间的变换。当主存缺页时,调页操作首先要定位辅存,而外页表的结构与辅存的寻址机制密切相关。例如对磁盘而言,辅存地址包括磁盘机号、磁头号、磁道号和扇区号等。外部地址变换 每个程序有一张外页表,每一页或每个程序段,在外页表中都有对应的一个存储字。主要优点:(1)主存储器的利用率比较高 (2)页表相对比较简单 (3)地址变换的速度比较快 (4)对磁盘的管理比较容易 主要缺点:(1)程序的模块化性能不好 (2)页表很长,需要占用很大的存储空间 例如:虚拟存储空间4GB,页大小1KB,则页表的容量为4M字,16MB。9.49.4虚拟存储器虚拟存储器三、段式虚拟存储器和段页式虚拟存储器1、段式虚拟存储器:段是按照程序的自然分界划分的长度可以动态改变的区域。通常,程序员把子程序、操作数和常数等不同类型的数据划分到不同的段中,并且每个程序可以有多个相同类型的段。在段式虚拟存储系统中,虚地址由段号和段内地址(偏移量)组成。虚地址到实主存地址的变换通过段表实现。每个程序设置一个段表,段表的每一个表项对应一个段。每个表项至少包含下面三个字段:(1)有效位:指明该段是否已经调入实存。(2)段起址:指明在该段已经调入实存的情况下,该段在实存中的首地址。(3)段长:记录该段的实际长度。设置段长字段的目的是为了保证访问某段的地址空间时,段内地址不会超出该段长度导致地址越界而破坏其他段。段表本身也是一个段,可以存在辅存中,但一般是驻留在主存中。9.49.4虚拟存储器虚拟存储器2、段式虚地址向实存地址的变换过程见图地址映象方法:每个程序段都从0地址开始编址,长度可长可短,可以在程序执行过程中动态改变程序段的长度。地址变换方法:由用户号找到基址寄存器,读出段表起始地址,与虚地址中段号相加得到段表地址,把段表中的起始地址与段内偏移D相加就能得到主存实地址。9.49.4虚拟存储器虚拟存储器3、段式虚拟存储器特点l段式虚拟存储器有许多优点:段的逻辑独立性使其易于编译、管理、修改和保护,也便于多道程序共享。段长可以根据需要动态改变,允许自由调度,以便有效利用主存空间。l段式虚拟存储器也有一些缺点:因为段的长度不固定,主存空间分配比较麻烦。容易在段间留下许多外碎片,造成存储空间利用率降低。由于段长不一定是2的整数次幂,因而不能简单地像分页方式那样用虚地址和实地址的最低若干二进制位作为段内偏移量,并与段号进行直接拼接,必须用加法操作通过段起址与段内偏移量的求和运算求得物理地址。因此,段式存储管理比页式存储管理方式需要更多的硬件支持。9.49.4虚拟存储器虚拟存储器4、段页式虚拟存储器l段页式虚拟存储器是段式虚拟存储器和页式虚拟存储器的结合。l实存被等分成页。每个程序则先按逻辑结构分段,每段再按照实存的页大小分页,程序按页进行调入和调出操作,但可按段进行编程、保护和共享。段页式虚拟存储器 用户按段写程序,每段分成几个固定大小的页 地址映象方法:每个程序段在段表中占一行,在段表中给出页表长度和页表的起始地址,页表中给出每一页在主存储器中的实页号。地址变换方法:先查段表,得到页表起始地址和页表长度,再查页表找到要访问的主存实页号,把实页号p与页内偏移d拼接得到主存实地址。9.49.4虚拟存储器虚拟存储器【例1】假设有三道程序,基号用A、B和C表示,其基址寄存器的内容分别为SA、SB和SC。程序A由4个段构成,程序C由3个段构成。段页式虚拟存储系统的逻辑地址到物理地址的变换过程如图所示。在主存中,每道程序都有一张段表,A程序有4段,C程序有3段,每段应有一张页表,段表的每行就表示相应页表的起始位置,而页表内的每行即为相应的物理页号。请说明虚实地址变换过程。解:地址变换过程如下:(1)由存储管理部件根据基号C找到段表基址寄存器表第c个表项,获得程序C的段表基址SC。再根据段号S(=1)找到程序C段表的第S个表项,得到段S的页表起始地址b。(2)根据段内逻辑页号P(=2)检索页表,得到物理页号(图中为10)。(3)物理页号与页内地址偏移量拼接即得物理地址。假如计算机系统中只有一个基址寄存器,则基号可不要。多道程序切换时,由操作系统修改基址寄存器内容。实际上,上述每个段表和页表的表项中都应设置一个有效位。只有在有效位为1时才按照上述流程操作,否则需中断当前操作先进行建表或调页。可以看出,段页式虚拟存储器的缺点是在由虚地址向主存地址的映射过程中需要多次查表,因而实现复杂度较高l可以看出,段页式虚拟存储器的缺点是在由虚地址向主存地址的映射过程中需要多次查表,因而实现复杂度较高加快内部地址变换的方法加快内部地址变换的方法造成虚拟存储器速度降低的主要原因:(1)要访问主存储器必须先查段表或页表,(2)可能需要多级页表。页表级数的计算公式:其中:Nv为虚拟存储空间大小,Np为页面的大小,Nd为一个页表存储字的大小例如:虚拟存储空间大小Nv4GB,页的大小Np1KB,每个页表存储字占用4个字节。计算得到页表的级数:通常仅把1级页表和2、3级页表中的一小部分驻留在主存中1.目录表 基本思想:用一个小容量高速存储器存放页表地址变换过程:把多用户虚地址中U与P拼接,相联访问目录表。读出主存实页号p,把p与多用户虚地址中的D拼接得到主存实地址。如果相联访问失败,发出页面失效请求。主要优点:与页表放在主存中相比,查表速度快。主要缺点:可扩展性比较差,主存储器容量大时,目录表造价高,速度低。2.快慢表3.散列函数 目的:把相联访问变成按地址访问 散列(Hashing)函数:AhH(Pv)采用散列变换实现快表按地址访问 避免散列冲突:采用相等比较器 地址变换:相等比较与访问存储器同时进行9.49.4虚拟存储器虚拟存储器四、虚存的替换算法 虚拟存储器的替换算法与cache的替换算法类似,有FIFO算法、LRU算法、LFU算法等,下面通过示例来说明过程。【例2】假设主存只允许存放a、b、c三个页面,逻辑上构成a进c出的FIFO队列。某次操作中进程访存的序列是0,1,2,4,2,3,0,2,1,3,2(虚页号)。若分别采用FIFO算法、FIFO+LRU算法,请用列表法分别求两种替换策略情况下主存的命中率。解:可以参见Cache中例子9.49.4虚拟存储器虚拟存储器l当从辅存调页至主存而主存已满时,也需要进行主存页面的替换。虚拟存储器的替换算法与cache的替换算法类似,有FIFO算法、LRU算法、LFU算法等。9.49.4虚拟存储器虚拟存储器l虚拟存储器的替换算法与cache的替换算法不同的是:(1)cache的替换全部靠硬件实现,而虚拟存储器的替换有操作系统的支持。(2)虚存缺页对系统性能的影响比cache未命中要大得多,因为调页需要访问辅存,并且要进行任务切换。(3)虚存页面替换的选择余地很大,属于一个进程的页面都可替换。9.5存存 储储 保保 护护一、存储区域保护 任何软件都存在着出现错误的可能。一旦程序出错,应尽量将错误的影响限制在最小范围内。当多个用户共享主存时,应防止由于一个用户的程序有意或无意破坏其他用户的程序和系统软件,以及一个用户程序非法地访问不是分配给它的主存区域。在虚拟存储系统中,通常采用页表保护、段表保护和键保护等方法。9.5存存 储储 保保 护护1、页表保护和段表保护l原理见图9.5存存 储储 保保 护护2、键保护方式9.5存存 储储 保保 护护3、环保护方式9.5存存 储储 保保 护护二、访问方式保护对主存信息的使用可以有三种方式:读(R)、写(W)和执行(E),相应的访问方式保护就有R、W、E三种方式形成的逻辑组合。9.6奔腾系列机的虚存组织奔腾系列机的虚存组织一、存储器模型l平坦存储器模型l分段存储器模型l实地址模式存储器模型9.6奔腾系列机的虚存组织奔腾系列机的虚存组织二、虚地址模式 IA32体系结构微处理机的虚拟存储器可以通过两种方式实现:分段和分页。存储管理部件包括分段部件SU和分页部件PU两部分。分段部件将程序中使用的虚地址转换成线性地址。而分页部件则将线性地址转换为物理地址。9.6奔腾系列机的虚存组织奔腾系列机的虚存组织三、分页模式下的地址转换本本 章章 小小 结结l操作系统是计算机硬件资源的管理器,其管理功能主要包括处理机管理、存储管理和设备管理等。l操作系统的管理功能只有在专门的硬件支持下才能充分保证系统工作的高效与安全。硬件系统在设计层面上为操作系统提供了支持,包括处理机状态控制、特权指令、寄存器访问权限控制、程序状态字和程序执行现场保护与切换、中断机制、存储管理硬件等。操作系统设计者则应根据硬件特性和用户的使用需要,采用各种有效的管理策略。l处理机调度是操作系统的核心功能之一。按照调度的层次,处理机调度可以分成作业调度、交换调度和进程调度。其中,进程调度的运行频率最高。作业调度的周期较长,往往发生在一个作业运行完毕并将退出系统,需要重新调入一个作业进入内存时。交换调度的运行频率介于作业调度和进程调度之间。本本 章章 小小 结结l存储管理是操作系统的另外一个核心功能。存储管理主要解决存储器的分配与回收、存储器地址变换、存储器扩充、存储器共享与保护等问题。l为了支持多个程序并发执行,现代操作系统逐渐引入了分区式存储管理,以及交换技术和分页技术。在存储管理部件MMU的支持下,虚拟存储器技术可以彻底解决存储器的调度与管理问题。l用户程序按照虚地址(逻辑地址)编程并存放在辅存中。程序运行时,由地址变换机构依据当时分配给该程序的实地址空间把程序的一部分调入实存(物理存储空间或主存空间)。由操作系统在硬件的支持下对程序进行虚地址到实地址的变换,这一过程称为程序的再定位。每次访存时,首先判断该虚地址所对应的部分是否在实存中:如果是,则进行地址转换并用实地址访问主存;否则,按照某种算法将辅存中的部分程序调度进内存,再按同样的方法访问主存。对应用程序而言,如果主存的命中率很高,虚存的访问时间就接近于主存访问时间,而虚存的大小仅仅依赖于辅存的大小。本本 章章 小小 结结l虚存机制也要解决一些关键问题,包括调度问题、地址映射问题和替换问题等。在操作系统的控制下,硬件和系统软件为用户解决了上述问题,从而使应用程序的编程大大简化。l页式虚拟存储系统中,虚地址空间和主存空间都被分成大小相等的页,通过页表可以把虚地址转换成物理地址。为了避免对主存访问次数的增多,可以对页表本身实行二级缓存,把页表中的最活跃部分存放在转换后援缓冲器(TLB)中。本本 章章 小小 结结l分页方式的缺点是页长与程序的逻辑大小不相关,而分段方式则可按照程序的自然分界将内存空间划分为长度可以动态改变的存储区域。在段式虚拟存储系统中,虚地址由段号和段内地址(偏移量)组成。虚地址到实主存地址的变换通过段表实现。l段页式虚拟存储器是段式虚拟存储器和页式虚拟存储器的结合,程序按页进行调入和调出操作,但可按段进行编程、保护和共享。l虚拟存储器还解决存储保护等问题。在虚拟存储系统中,通常采用页表保护、段表保护和键式保护方法实现存储区域保护。还可以结合对主存信息的使用方式实现访问方式保护。返回个人观点供参考,欢迎讨论!
展开阅读全文