1.5k likes | 1.6k Views
第 5 章 存储管理. 5.1. 5.2. 5.3. 存储管理的基本概念. 连续分配存储管理. 离散分配存储管理. 5.4. 5.5. 5.6. 虚拟存储管理. Windows 2000 的存储管理. 案例分析. 5.1 存储管理的基本概念. 在微机中,存储器的组织形式一般是“寄存器-高速缓存-主存-外存”结构,如图 5-1 。 这种组织形式的最佳状态应是各层次的存储器都处于均衡的繁忙状态。. 图 5-1 存储层次结构. 5.1.1 存储管理的功能 在现代操作系统中,存储管理的功能一般有以下几个方面。
E N D
5.1 5.2 5.3 存储管理的基本概念 连续分配存储管理 离散分配存储管理
5.4 5.5 5.6 虚拟存储管理 Windows 2000的存储管理 案例分析
5.1 存储管理的基本概念 • 在微机中,存储器的组织形式一般是“寄存器-高速缓存-主存-外存”结构,如图5-1。 • 这种组织形式的最佳状态应是各层次的存储器都处于均衡的繁忙状态。
5.1.1 存储管理的功能 • 在现代操作系统中,存储管理的功能一般有以下几个方面。 • (1)内存分配。 • (2)地址转换。 • (3)内存共享。 • (4)存储保护。 • (5)内存扩充。
5.1.2 存储管理方式 • 目的是方便用户和提高内存的利用率。 • 内存的管理方法有以下两种方式。 • 1.连续分配方式 • 为用户程序分配一个连续的内存地址空间。又分为以下两种。
(1)单一连续分配方式 • 内存被分为两个区域:系统区和用户区。特点:简单、易于管理,适用于单用户、单任务的操作系统。
(2)分区分配方式 • 把内存分为一些大小相等或不等的分区,操作系统占用其中一个分区,其余分区由应用程序使用,可支持多个程序并发执行。又分为以下两种。
① 固定分区。把内存划分为若干个固定大小的连续分区。每个区域驻留一道程序。特点易于实现,开销小。限制了并发执行的程序数目。 • ② 可变分区。根据用户程序的大小,动态地对内存进行划分。特点分配方式灵活,在作业运行过程中允许在内存空间中移动。
2.离散分配方式 • 将一个用户程序离散地分配到内存中多个不相邻的区域中。又分为以下3种。
(1)分页存储管理 • 用户程序的逻辑地址空间被划分为若干个大小相等的区域,称为“页”。相应地,将内存的物理地址空间分成若干个“块”。页和块的大小相等。将用户程序的一页放入内存中的任意一块中,实现了离散分配。
(2)分段存储管理 • 把用户程序的逻辑地址空间划分为若干个大小不等的“段”,每段可以定义一组相对完整的逻辑信息。进行存储分配时,以段为单位,这些段在内存中的地址可以不相邻。
(3)段页式存储管理 • 分页与分段两种方式结合起来,充分发挥两者的优点。
5.1.3 地址重定位 • 每个用户的程序地址都可以从“0”开始,程序中的其他地址都是相对于起始地址计算的。这种用于编程的地址称为逻辑地址或相对地址。形成的地址范围称为地址空间。
用户提交作业时,系统为其分配一个合适的主存空间。该主存空间的地址称为物理地址或绝对地址。地址空间是逻辑地址的集合,主存空间是物理地址的集合。 • 一般,一个用户作业装入内存时分配到的主存空间与其地址空间是不一致的。
由于一个作业装入到与其地址空间不一致的主存空间引起的,对地址部分调整的过程,称为地址重定位。调整过程是把程序地址空间中使用的逻辑地址变换为主存中的物理地址的过程。这种地址变换又称为地址映射。
地址重定位的方式 • 1.静态重定位 • 在作业装入过程中同时进行地址变换。 • 特点:容易实现,无需增加硬件地址变换机构;为每个程序分配一个连续的存储区,在程序执行期间不能移动;难以实现程序和数据的共享。如图5-3所示。
2.动态重定位 • 在程序执行过程中,对每条指令或数据进行访问时,将要访问的指令或数据的逻辑地址转换为物理地址 。 • 实现要依靠硬件地址变换机构,最简单的实现方法是利用一个重定位寄存器。图5-4给出了动态地址变换过程的示例。
特点是:可以将程序分配到不连续的主存区域中;在程序运行前,只需要装入其部分代码即可投入运行,在程序运行期间,根据需要动态申请分配内存;便于程序段的共享;可以向用户提供一个比主存空间大得多的地址空间;需要硬件的支持,实现存储管理的算法比较复杂。
5.1.4 虚拟存储器 • 大多数程序执行时,在一个较短的时间内仅使用程序代码的一部分,相应程序所访问的存储空间也局限于某个区域,这就是程序执行的局部性原理。
程序装入时,可以将程序的一部分放入内存,将其余部分放在外存,即可启动程序的执行。在程序执行过程中,当要访问的信息不在内存时,将所需部分调入内存,然后继续执行程序。
同时,操作系统将内存中暂时不用的内容换出到外存上,腾出内存空间存放将要调入内存的信息。从效果上看,好像为用户提供了一个存储容量比实际内存大得多的存储器,该存储器称为虚拟存储器(虚存)。
虚拟存储器的实质是把程序存在的地址空间和运行时存放的存储空间区分开来,用户可以在地址空间编写程序,而完全不用考虑实际主存的大小。在多道程序环境下,可以为每个用户建立一个虚拟存储器。
实现虚拟存储技术有以下几个条件。 • (1)要有相当数量的外存,以存放多个用户程序。 • (2)要有一定容量的内存,因为在处理机上运行的程序有一部分信息必需存放在内存中。
(3)要有地址变换机构,动态实现虚地址到实地址的地址变换。(3)要有地址变换机构,动态实现虚地址到实地址的地址变换。 • 常用的虚拟存储技术有请求分页存储管理、请求分段存储管理和请求段页式存储管理。
5.1.5 覆盖与交换 • 多道程序环境下,可以用覆盖与交换技术实现内存共享和扩充内存。
1.覆盖技术 • 覆盖技术,是把一个大的程序划分为一系列的覆盖。每个覆盖是一个相对独立的程序单位。把程序执行时不要求同时装入内存的覆盖组成一组,称为覆盖段。覆盖段分配在同一个存储区域,该存储区域称为覆盖区,与覆盖段一一对应,大小由覆盖段中的最大覆盖确定。图5-5 。
2.交换技术 • 把暂时不用的某个程序及数据的一部分(或全部)从内存移到外存中去,以便腾出必要的内存空间,把需要运行的程序或数据从外存读到内存中,并将控制权转给它,让其在系统上运行。
交换技术与覆盖技术都是一种内存扩充技术,区别是:交换技术不要求程序员给出程序段之间的覆盖结构,交换主要在不同的进程或作业之间进行;覆盖主要在同一个作业或进程中进行,且只能覆盖与覆盖程序段无关的程序段。 • 在分时系统中,进程之间的交换被广泛使用 。
5.1.6 分区的存储保护 • 在多用户或多道程序运行的情况下,存储空间往往是按区分配给各道程序使用的。必须由硬件保证每道程序只能在给定的区域内活动,这种措施称为存储保护。常用的存储保护方法有界限寄存器方法和存储保护键方法。
1.界限寄存器方法 • 有以下两种实现方式。
(1)上、下界寄存器方法 • 为每一个作业的主存空间设置一对上、下界寄存器,分别存放作业的结束地址和开始地址。
在作业运行过程中,产生每一个访问主存的物理地址D时,硬件都将该物理地址D与上、下界比较,正常情况下应满足:下界地址≤D≤上界地址。 • 如果主存的物理地址超出该范围,便产生保护性中断。图5-6(a)。
(2)基址、限长寄存器方法 • 为每一个作业的主存空间设置一对基址、限长寄存器,分别存放作业的起始地址和作业地址空间的长度。在作业运行过程中,产生每一个访问主存的物理地址D时,硬件都将该物理地址D与限长寄存器比较,正常情况下应满足:D-基址≤限长。图5-6(b) 。
2.存储保护键方法 • 基本思想是系统对每一作业和进程进行内存分配时,对同一作业中各个页面对应的内存块指定一个相同的键码,该键码不能与其他作业的键码相重。 该键码保存在快速寄存器和该作业的程序状态字(PSW)中,当程序要访问某一块时,将程序状态字中的键码与被访问块的键码进行比较,若相符,表明允许本次访问,否则发出越界中断。
5.2 连续分配存储管理 • 分区存储管理是把内存划分为若干个大小相等或不相等的分区,除操作系统占用一个分区外,其余每个分区容纳一个用户程序。可将分区存储管理进一步划分为固定分区存储管理和可变分区存储管理。
5.2.1 固定分区存储管理 • 将内存空间划分为若干个固定大小的分区,每个分区可以装入一道程序。分区的大小可以不等,但必须事先确定,在程序运行中不能改变。系统需要建立一张分区说明表,用来记录各分区的分区号、分区的大小、分区的起始地址以及状态。
某个用户程序要装入内存时,由内存分配程序检索分区说明表,从表中找出一个能满足要求的尚未分配的分区分配给该程序,然后修改分区说明表中相应分区表项的状态。若找不到大小足够的分区,则拒绝为该程序分配内存。当程序执行完毕,释放所占用的分区时,只要将对应分区的状态设置为未分配即可。
作业的大小与分区的大小大多数情况下是不相等的,使绝大多数已分配的分区中都有一些存储空间被浪费掉。这些已分配给作业的存储空间中未被利用的部分称为“内部碎片”。主存空间不能得到充分的利用。
5.2.2 可变分区存储管理 • 又称动态分区分配,事先不对主存分区,当作业进入内存时,根据作业的大小动态建立分区,使分区的大小正好适合作业的需要。系统中分区的大小不固定,且分区的数目也不固定。
1.可变分区管理中的数据结构 • (1)空闲分区表 • 登记系统中的空闲分区,每个空闲分区对应一个表项,每个表项包括的内容有分区号、分区起始地址、分区大小,如图5-8所示。
(2)空闲分区链 • 主存中,每一个分区都有相应的分区描述器来说明分区的特征信息。分区描述器的结构如图5-9所示,包括分配标志(空闲分区为0)、分区大小和勾链字。用链头指针将内存中的空闲分区链接起来,构成空闲分区链。图5-10