操作系统中的存储管理是怎么设计的呢?

计算机系统中的存储器可以分成两类:内存储器(简称内存)和外存储器(简称外存)。 处理器可以直接访冋内存,但不能直接访冋外存。处理器要通过启动相应的输人/输 出设备后才能使外存与内存交换信息。

与早期的计算机相比较,现在的计算机的内存容量已经是非常之大了,但是程序大小的增长速度与内存容量的增长几乎一样快。正如帕金森定律所说的那样:“存储器有多大,程序就会有多大”。使用计算机的人们总在抱怨机器的内存太小,总是不够用。

在操作系统中,管理内存的部分称为存储管理,是操作系统的重要部分之一。对内存管理的好坏直接影响到计算机系统工作性能的高低。本章将介绍存储管理的基本思想。

第一节存储管理概述

计算机系统中的存储部件,有其自有的体系结构特点,这是理解存储管理的基础。有关存储管理具体需要完成的任务,是本小节的主要内容。

一、存储体系

在计算机系统中,存储器是处理器处理的信息的来源与归宿,占据着重要地位。到目前为止,最先进的计算机科学技术能够提供的存储设备的速度,仍然明显地慢于同级别的中央处理器的速度。而且由于成本等方面的原因,任何一种存储设备都无法在速度与容量两个方面同时满足用户的需求。为解决这些矛盾,计算机存储采用图6-1所示的存储体系。

在上述存储体系中包含:少量的、非常快速、昂贵、内容易变的高速缓存Cache,通常是MB的数量级;若干兆字节、中等速度、中等价格、内容易变的内存RAM,通常是GB的数量级;低速、价廉、内容不易变的磁盘,通常是TB的数量级;如果配有光盘、磁带机或 云存储,总容量可以增大至TB或PB

快速存储设备和大容量存储设备必须构成为统一的整体,由操作系统协调这些存储器的 使用。对于内存速度和容量的要求是,内存的直接存取速度尽量快到与处理器存取速度相匹 配,其容量大到能装下当前运行的程序与数据,否则处理器执行速度就会受到内存速度和容 量的影响而得不到充分发挥。各种速度和容量的存储器硬件,在操作系统协调之下形成了一 种存储器层次结构,或称存储体系。

二、存储管理的任务

任何程序和数据以及各种控制用的数据结构都必须占用一定的存储空间,因此,存储管理直接影响系统性能。存储器由内存(主存)和外存组成所谓内存空间,是由存储单元 (字节或字)组成的一维连续的地址空间,简称内存空间。用来存储当前正在运行程序的代 码及数据,是程序中指令本身地址所指的也就是程序计数器所指的存储器。

内存空间一般分为两部分:一部分是系统区,用以存储操作系统常驻内存部分,用户不 能占用这部分空间;另一部分是用户区,分配给用户使用,用于装人并存储用户程序和数据,这部分的信息随时都在发生变化。存储管理实质上就是管理供用户使用的那部分空间。

内存管理问题主要包括:内存管理方法、内存的分配和释放算法、虚拟存储器的管理、 控制内存和外存之间的数据流动方法、地址变换技术和内存数据保护与共享技术等

为了对内存进行有效的管理,一般把内存分成若干个区域。即使在最简单的单道、单用 户系统中,至少也要把它分成两个区域:在一个区域内存放系统软件,如操作系统本身;而 另外一个区域则用于安置用户程序。显然,在多道、多用户系统中,为了提高系统的利用 率,需要将内存划分成更多的区域,以便支持多道程序。用户对内存管理提出了许多要求。

(1) 充分利用内存,为多道程序并发执行提供存储基础。

(2) 尽可能方便用户使用。

①操作系统自动装人用户程序。

②用户程序中不必考虑硬件细节。

(3)系统能够解决程序空间比实际内存空间大的问题。

(4)程序的长度在执行时可以动态伸缩

(5)内存存取速度快

(6)存储保护与安全

(7)共享与通信

(8)及时了解有关资源的使用状况

(9)实现的性能和代价合理

这就引起了存储器分配以及随之而产生的一系列问题。通过对用户需求的分析,得到在 操作系统中存储管理的主要任务。

1、内存的分配和回收

一个有效的存储分配机制,应对用户提出的需求予以快速响应,为之分配相应的存储空 间;在用户程序不再需要它时及时回收,以供其他用户使用。为此,应该具有以下功能。

(1)记住每个存储区域的状态。内存空间哪些是分配了的,哪些是空闲的?这就需要设 置相应的分配表格,记录内存空间使用状态。

(2)实施分配。当用户提出申请时,按需要进行分配,并修改相应的分配表格。分配方 式有静态分配和动态分配两种。

(3)回收。接收用户释放的区域,并修改相应的分配表格。

为实现上述功能,必须引入分配表格,统称为内存分配表,其组织方式包括的内容如下。

①位示图表示法:用一位(bit)表示一个空闲页面(0表示空闲,1表示占用)。

②空闲页面表:包括首页面号和空闲页面个数,连续若干的页面作为一组登记在表中。

③空闲块表:空闲块首址和空闲块长度,没有记录的区域即为进程所占用。

内存分配有两种方式:

(1)静态分配:程序要求的内存空间是在目标模块连接装入内存时确定并分配的,并且在程 序运行过程中不允许再申请或在内存中“搬家”,即分配工作是在程序运行前一次性完成。

(2)动态分配:程序要求的基本内存空间是在目标模块装人时确定并分配的,但是在程 序运行过程中允许申请附加的内存空间或在内存中“搬家”,即分配工作可以在程序运行前 及运行过程中逐步完成。

显然,动态存储分配具有较大的灵活性,它不需要一个程序的全部信息进人内存后才可以运行,而是在程序运行中需要时,系统自动将其调人内存。程序当前暂不使用的信息可以 不进人内存,这对提高内存的利用率大有好处。动态存储分配反映了程序的动态性,较之静 态存储分配更为合理。

2、存储共享

所谓存储共享是指两个或多个进程共用内存中相同区域,这样不仅能使多道程序动态地 共享内存,提髙内存利用率,而且还能共享内存中某个区域的信息。共享的内容包括代码共 享和数据共享,特别是代码共享要求代码必须是纯代码。

存储共享的一个目的是通过代码共享节省内存空间,提高内存利用率;另一个目的是通数据共享实现进程通信

3、存储保护

在多道程序系统中,内存中既有操作系统,又有许多用户程序。为使系统正常运行,避免内存中各程序相互干扰,必须对内存中的程序和数据进行保护。

存储保护目的在于为多个程序共享内存提供保障,使在内存中的各道程序,只能访问它自己的区域,避免各道程序间相互干扰。特别是当一道程序发生错误时,不至于影响其他程 序的运行,更要防止破坏系统程序。存储保护通常需要有硬件支持,并由软件配合实现。

存储保护的内容包括:保护系统程序区不被用户有意或无意的侵犯;不允许用户程序读 写不属于自己地址空间的数据,如系统区地址空间、其他用户程序的地址空间。

(1)地址越界保护

每个进程都具有其相对独立的进程空间,如果进程在运行时所产生的地址超出其地址空 间,则发生地址越界。地址越界可能侵犯其他进程的空间,影响其他进程的正常运行;也可 能侵犯操作系统空间,导致系统混乱。因此,对进程所产生的地址必须加以检查,发生越界 时产生中断,由操作系统进行相应处理。

(2)权限保护

对于允许多个进程共享的公共区域,每个进程都有自己的访问权限。例如,有些进程可以执 行写操作,而其他进程只能执行读操作等。因此,必须对公共区域的访问加以限制和检查。

①对属于自己区域的信息,可读可写。

②对公共区域中允许共享的信息或获得授权可使用的信息,可读而不可修改。

③对未获授权使用的信息,不可读、不可写。

存储保护一般以硬件保护机制为主,软件为辅,因为完全用软件实现系统开销太大,速 度成倍降低。所以,当发生地址越界或非法操作时,由硬件产生中断,进入操作系统处理。

4、“扩充”内存容量

用户在编制程序时,不应该受内存容量限制,所以要采用一定技术来“扩充”内存的 容量,使用户得到比实际内存容量大得多的内存空间。

具体实现是在硬件支持下,软件、硬件相互协作,将内存和外存结合起来统一使用。通过这种方法扩充内存,使用户在编制程序时不受内存限制。借助虚拟存储技术或其他交换技 术,达到在逻辑上扩充内存容量的目的,即为用户提供比内存物理空间大得多的地址空间, 以至使得用户感觉他的程序是在一个大的存储器中运行。

发布了0 篇原创文章 · 获赞 0 · 访问量 1121

猜你喜欢

转载自blog.csdn.net/qq_32001201/article/details/104079386