5.1 资源管理概述

5.1.1 资源管理的目的和任务

计算机系统拥有大量的资源。所谓资源是指执行一个用户程序所需要的全部硬件设备、软件设施和数据。系统的一个重要功能是把它所管理的各种资源,按照用户要求在所有用户之间进行合理的分配。随着计算机硬件和软件技术的发展,操作系统应管理的硬、软件设备愈来愈多,它们所管辖的范围也愈来愈大。这不仅促进了操作系统的发展,而且产生的抽象研究“资源”的客观要求。尽管各种资源的性质的极不相同,但从本质上看,它们除了具有“个性”之外,又都具有“共性”。因此,这就促使人们去研究资源的统一概念,研究资源的使用方法和管理策略,以便寻求一种资源管理的普遍原则和系统方法。

当代操作系统的一个很重要特点,就是多任务处理,在主存中可以同时有多个作业处于可运行状态。在批处理系统中将一个用户提交的算题任务看作为一道作业,由于采用脱机方式,为使一个算题任务能得到最后结果,计算机系统必须按指定步骤对初始数据进行处理, 这一加工过程便形成了一个作业。当作业进入主存时处于执状态,会建立相应的进程。而在分时操作系统和个人计算机操作系统中,用户任务提交给系统时建立相应的进程。对计算机系统而言,作业和进程就是系统中需要请求分配资源的顾客,而资源就是被存取的对象。为了完成某种服务功能,需要有一个“服务员”对资源服务进行管理,这个“服务员”就是资源管理程序。

在批处理系统中,对作业一级采用资源静态分配方法。作业所需要的资源是在调度到这个作业时,根据用户给出的信息(如所需主存大小、需独占的外部设备)进行分配的,并在作业运行完毕时释放所分到的全部资源。这种分配通常称为资源的静态分配。而进程所需要的资源是在进程运行中根据运行情况动态地分配、使用和释放的。这种分配通常称为动态分配,依照资源的特点以及系统所采用的实际方法的不同,每种资源的分配、使用、释放的方式也就不同。比如,或者采用明显的调用命令加以说明,或者不用指明而由系统代为完成。

在现代计算机系统中,有限的资源和众多的请求分配资源的顾客之间存在着矛盾。以无限多的资源去做到“有求必应”,这一途径是有吸引力的,但遗憾的是提供足够多的资源来满足系统中堵进程的并发要求是不现实的。为此,在进行资源管理时必须采取某种技术,使一些互相竞争的进程共享有限的资源。资源管理的目的总的说来是为用户提供一种简单而有效地使用资源的方法,充分发挥各种资源的作用。其应达到的目标是:

①保证资源的高利用率。

②在“合理”时间内使所有顾客有获得所需资源的机会。

③对不可共享的资源实施互斥使用。

④防止由资源分配不当而引起的死锁(见 5.4 节)

读者会看到,这些目标未必一致。尤其是目标②意味着使用户满意,为了达到这一点,通常就不得不在目标①方面作出一些牺牲。这是因为,当要照顾某些用户的请求时,可能会使资源利用率下降。在使用户满意和资源利用率之间进行折衷是评价资源分配和调度策略的标准之一。在确保响应时间的实时系统中,希望这种折衷偏向于用户,而在批处理系统中它可能要偏向于高的利用率。在一个企图同时提供批处理和分时服务的系统中,这就会引起管理上的困难。

为了实现上述目标,资源管理模块的任务是:解决资源分配问题,在资源分配中严发生死锁现象;解决对资源的存取、使用方法问题,并提供对资源存取的控制和实施安全保护措施。为此,不论是软件资源还是硬件资源,对它们的管理应包含以下四个方面:

①资源数据结构的描述。为了完成资源管理的两个方面的任务,相应的数据结构也必须包括这两方面的描述信息。驿某类资源实行分配的数据结构应包含该类资源最小分配单位的描述信息,如该资源的物理名、逻辑名、类型、地址、分配状态等。这些信息记录了该类资源的分配情况,哪些单位还没被占用,哪些单位已被占用,谁正在使用等。另外,在资源数据结果中还应包括对该资源的存取权限、密级、最后一次存取时间、记帐信息以及该类资源使用的特性等。

②确定资源的分配原则和调度原则。根据系统的设计目标,确定一组原则,用对决定资源应分给谁,何时分配,分配多少等问题。

③执行资源分配。根据②中所确定的原则以及用户的要求,执行资源分配。当资源不再需要时,收回资源以便重新分配给其他作业和进程使用。

④存取控制和安全保护。这一问题在各类资源管理中都是存在的,尤其是对程序资源——文件的管理最为突出。任何一个用户对任一文件的存取都要经过文件管理系统中的存取控制验证模块的检查。只有合法的用户进行合法的操作才能通过合法性检查,否则将为系统所捕俘。由于对某一文件的操作将转成对某个设备(磁盘或字符设备)的操作,所以对某些外部设备的存取可以认为在它的上一层已进行了合法性检查。当然,根据实际需要也可对各种外部设备作进一步的存取权限的检查,对主存单元的存取同样也要经过主存保护硬件的检查,只有检查通过者才能进行相应操作,以保证同存于主存的各个用户程序的隔离。有的系统对磁盘的某些操作采用锁、密码的方法,以实现对磁盘的存取控制。至于对中央处理机的存取权,可以认为处于就绪队列的进程有着存取 CPU 的权利。存取控制和安全保护问题已越来越引起人们的重视。

由于各类资源都具有各自的特性,所以对各类资源的具体描述会各有侧重。

5.1.2 资源的分类方法

人们可以依据不同的标准,对各类资源进行分类。

(一)物理资源和程序资源

在计算机系统中,某些资源是机器的组成部件,如中央处理机、主存、 I/O 通道、外部设备等。另外一些资源,则是程序设计与执行过程中形成的,如消息、服务(应用)程序,或文件等。我们称前一类资源为物理资源,后一类资源为程序资源。应用时,程序资源一定要用到物理资源(例如存储器)。

(二)单一访问入口的资源和多访问入口的资源

一般情况下,中央处理机、暂时用于某一进程的各存储器、私有文件或带有访问保护的共享文件、某此外部设备(如磁带机、打印机、卡片阅读机、穿孔机、图形显示终端),以及各类不可重入的服务程序等都属于单一访问入口的资源。

带有多路选择的输入输出通道、可重入的程序与服务程序、某些被允许读出的文件(公用文件)等都属于多访问入口的资源。

(三)等同资源

对某类资源,可能有多个完全相同的设备,在某些条件下,在这些设备之间到底要选用哪些,申请者并无任何要求。在这种情况下,这些设备被说成是等同的。例如,各台磁带机、磁盘或磁鼓的各道,主存中的各块等都是一些等同资源。

(四)虚拟资源

系统所管理的资源数量总是有限的,比如,只有一台 CPU 、一定容量的主存、数量一定的外部设备等,它们无法同时满足所有的资源申请要求。但是,人们却可以取得这样的效果,似乎每个进程都拥有它所申请的全部资源。这种客观效果是通过系统提供的虚拟资源的手段达到的。系统提供的资源并不是那些物理、实际的资源,而是经过改造后的、使用方便的虚拟资源。这不仅可以提高资源利用率,实现多用户共享,同时也可使用户避免对繁杂的物理设备特性进行了解,能方便地、简使用资源。如对于主存储器的使用,系统为用户提供逻辑地址空间,也就是提供虚拟存储器。用户只须用逻辑地址编程,而且地址空间大小不受限制。操作系统的存储管理功能为用户实现逻辑地址到物理地址的映射,并提供对主存的扩充。如果一个用户程序要求的存储空间很大,则只须将它的一部分安排在主存中,而其余部分留在辅存上,并由操作系统自动实现这两类存储器之间的信息交换,从而为用户提供了虚拟存储器。

类似地,系统可为用户提供虚拟外部设备。比如,像打印机这样的单入口设备本来是只能为一个用户独占使用的,但为了满足多用户共享的需要,系统为用户提供虚拟打印同,它是用辅存的一个区域来代替的。当然,操作系统的设备管理就要提供相应功能,实现虚、实设备的转换。在这种情况下,一个进程与一台真正的打印机之间进行的信息交换,是分两步来完成的:

①在进程控制下,在主存与虚拟打印机之间进行信息交换。

②在操作系统的 SPOOLING 假脱机系统控制之下,在物理的打印机和虚拟打印机之间进行信息交换。

对中央处理机而言,当多进程并发执行时,每一个进程就相当于一个逻辑处理机,它是一个独立的活动单位,进程控制块 pcb 中有着所需保留的中央处理机现场信息。当某一进程被调度到真正占用中央处理机时,物理的处理机和逻辑的处理机在此时便统一了。

关于系统提供的各种虚拟资源及采用的技术,将在以后的章节中进一步介绍。

5.1.3 资源管理的机构和策略

在讨论资源管理的问题时,从资源管理的机构和策略这两个方面开展讨论是有益的,因为这抓住了资源管理实质问题。

机构指的是进行资源分配所必需的基本部件,它包括描述资源状态的数据结构(如描述各类资源的资源信息块,描述各类资源中最小分配单位的资源描述器),还包括保证不可共享资源互斥使用的技术(如锁、上锁原语、开锁原语、信号灯的 p 、 v 操作等)以及对不能立即得到满足的资源请求进行排队的手段(等待各种资源的队列)等。

策略则给出这些机构所使用的方法,它们涉及到在相应资源满足的情况下,批准请求的决策,包括死锁问题和系统平衡问题。这也就是要制定一个资源分配的原则。当某类资源有空闲时,将它分给哪一个请求者?分多少?占用多长时间?确定这样一类问题的原则就是资源分配的策略。

有关在制定资源分配策略时如何防止死锁和系统平衡等问题在稍后的几节中讨论。

 
 Copyright © 2007 华中师范大学计算机科学系  All Rights Reserved