操作系统第4章存储器管理_第1页
操作系统第4章存储器管理_第2页
操作系统第4章存储器管理_第3页
操作系统第4章存储器管理_第4页
操作系统第4章存储器管理_第5页
已阅读5页,还剩99页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第四章 存 储 器 管 理 第四章第四章 存储器管理存储器管理 4.1 4.1 存储器的层次结构存储器的层次结构4.2 4.2 程序的装入和链接程序的装入和链接 4.3 4.3 连续分配方式连续分配方式4.4 4.4 基本分页存储管理方式基本分页存储管理方式4.5 4.5 基本分段存储管理方式基本分段存储管理方式4.6 4.6 虚拟存储管理虚拟存储管理第四章 存 储 器 管 理 4.1 存储器的层次结构 4.1.1 4.1.1 多级存储器结构多级存储器结构 计算机系统存储层次示意图计算机系统存储层次示意图 寄存器高速缓存主存磁盘缓存磁盘可移动存储介质CPU寄存器主存辅存第四章 存 储 器 管

2、理 4.1.2 4.1.2 主存储器与寄存器主存储器与寄存器 1.主存储器-内存,保存进程运行时的程序和数据内存,保存进程运行时的程序和数据。CPU与外围设备交换的信息一般也依托于主存储器地址空间。为缓和主为缓和主存储器的访问速度远低于存储器的访问速度远低于CPUCPU执行指令的速度,在计算机系统执行指令的速度,在计算机系统中引入了寄存器和高速缓存中引入了寄存器和高速缓存。 2.寄存器-与CPU协调工作,用于加速存储器的访问速度用于加速存储器的访问速度,如用寄存器存放操作数,或用作地址寄存器加快地址转换速度地址寄存器加快地址转换速度等。 4.1 存储器的层次结构 第四章 存 储 器 管 理 4

3、.1.3 4.1.3 高速缓存和磁盘缓存高速缓存和磁盘缓存 1.1.高速缓存高速缓存-根据程序执行的根据程序执行的局部性原理局部性原理将主存中一些经常将主存中一些经常访问的信息存放在高速缓存中,减少访问主存储器的次数,可访问的信息存放在高速缓存中,减少访问主存储器的次数,可大幅度提高程序执行速度。大幅度提高程序执行速度。2.2.磁盘缓存磁盘缓存-将频繁使用的一部分磁盘数据和信息,暂时存将频繁使用的一部分磁盘数据和信息,暂时存放在磁盘缓存中,可放在磁盘缓存中,可减少访问磁盘的次数减少访问磁盘的次数。它依托于固定磁盘,。它依托于固定磁盘,提供对主存储器存储空间的扩充,即利用主存中的存储空间,提供对

4、主存储器存储空间的扩充,即利用主存中的存储空间,来暂存从磁盘中读来暂存从磁盘中读/ /写入的信息。写入的信息。4.1 存储器的层次结构 第四章 存 储 器 管 理 4.2 程序的装入和链接程序的装入和链接 在多道程序环境下,程序要运行必须为之创建进程,而创在多道程序环境下,程序要运行必须为之创建进程,而创建进程的第一件事,就是要将程序和数据装入内存。如何将一建进程的第一件事,就是要将程序和数据装入内存。如何将一个用户源程序变为一个可在内存中执行的程序,通常需要经过个用户源程序变为一个可在内存中执行的程序,通常需要经过以下几步:以下几步:(1 1)编译)编译 由编译程序将用户源代码编译成若干个目

5、标模块。由编译程序将用户源代码编译成若干个目标模块。(2 2)链接)链接 由链接程序将编译后形成的目标模块以及它们所需要的库函数由链接程序将编译后形成的目标模块以及它们所需要的库函数, ,链接在链接在一起,形成一个装入模块。一起,形成一个装入模块。 (3 3)装入)装入 由装入程序将装入模块装入内存。由装入程序将装入模块装入内存。 下图给出了这样的三步过程。下图给出了这样的三步过程。第四章 存 储 器 管 理 第四章 存 储 器 管 理 4.2.1 程序的装入程序的装入1. 绝对装入方式绝对装入方式(Absolute Loading Mode) 在编译时,如果知道程序将驻留在内存的什么位置,那

6、么,编译程序在编译时,如果知道程序将驻留在内存的什么位置,那么,编译程序将产生绝对地址的目标代码。将产生绝对地址的目标代码。 绝对装入程序按照装入模块中的地址,将程序和数据装入内存。装入模绝对装入程序按照装入模块中的地址,将程序和数据装入内存。装入模块被装入内存后,不须对程序和数据的地址进行修改,程序中所使用的绝对块被装入内存后,不须对程序和数据的地址进行修改,程序中所使用的绝对地址,既可在编译或汇编时给出,地址,既可在编译或汇编时给出, 也可由程序员直接赋予。但在由程序员也可由程序员直接赋予。但在由程序员直接给出绝对地址时,直接给出绝对地址时, 不仅要求程序员熟悉内存的使用情况,而且一旦程不

7、仅要求程序员熟悉内存的使用情况,而且一旦程序或数据被修改后,可能要改变程序中的所有地址。因此,通常是宁可在程序或数据被修改后,可能要改变程序中的所有地址。因此,通常是宁可在程序中采用符号地址,然后在编译或汇编时,再将这些符号地址转换为绝对地序中采用符号地址,然后在编译或汇编时,再将这些符号地址转换为绝对地址。址。 将一个装入模块装入内存时,可采用三种方式:将一个装入模块装入内存时,可采用三种方式:绝对装入方式、可重绝对装入方式、可重定位方式和动态运行时装入方式定位方式和动态运行时装入方式。第四章 存 储 器 管 理 2. 可重定位装入方式可重定位装入方式(Relocation Loading

8、Mode) LOAD 1,2500365LOAD 1,2500365100001100012500150005000250010000作业地址空间内存空间 可重定位装入程序,根据内存当前使用情况,将装入模块装入到内存可重定位装入程序,根据内存当前使用情况,将装入模块装入到内存的某个位置。的某个位置。第四章 存 储 器 管 理 3. 动态运行时装入方式动态运行时装入方式(Denamle Run-time Loading) 动态运行时的装入程序,在把装入模块装入内存后,并不动态运行时的装入程序,在把装入模块装入内存后,并不立即把装入模块中的相对地址转换为绝对地址,而是把这种地立即把装入模块中的相对

9、地址转换为绝对地址,而是把这种地址转换推迟到程序真正要执行时才进行。因此,址转换推迟到程序真正要执行时才进行。因此, 装入内存后装入内存后的所有地址都仍是相对地址。的所有地址都仍是相对地址。 第四章 存 储 器 管 理 根据链接时间的不同,可把链接分成如下三种:(1) 静态链接。在程序运行之前,先将各目标模块及它们所需的库函数,链接成一个完整的装配模块,以后不再拆开以后不再拆开。(2) 装入时动态链接。将用户源程序编译后所得到的一组目标模块,在装入内存时,采用边装入边链接的链接方式在装入内存时,采用边装入边链接的链接方式。(3) 运行时动态链接。对某些目标模块的链接,是在程序在程序执行中需要该

10、模块时,才对它进行的链接执行中需要该模块时,才对它进行的链接。 4.2.2 程序的链接程序的链接 第四章 存 储 器 管 理 1. 静态链接方式静态链接方式(Static Linking) 模块 ACALL B;Return;0L 1模块 BCALL C;Return;0M 1模块 CReturn;0N 10模块 AJSR“L”Return;L 1模块 BJSR“L M”Return;LL M 1L ML M N 1模块 CReturn;(a) 目标模块(b) 装入模块 在将多目标模块装配成一个装入模块时,须解决以下两个问题:在将多目标模块装配成一个装入模块时,须解决以下两个问题: (1) (

11、1) 对相对地址进行修改。对相对地址进行修改。 (2) (2) 变换外部调用符号。变换外部调用符号。 第四章 存 储 器 管 理 2. 装入时动态链接装入时动态链接(Loadtime Dynamic Linking) 用户源程序经编译后所得到的目标模块,是在装入内存时,用户源程序经编译后所得到的目标模块,是在装入内存时,边装入边链接的。即在装入一个目标模块时,若发生一个外部边装入边链接的。即在装入一个目标模块时,若发生一个外部模块调用,将引起装入程序去找出相应的外部目标模块,并将模块调用,将引起装入程序去找出相应的外部目标模块,并将它装入内存,还要按照静态链接方式来修改目标模块中的相对它装入内

12、存,还要按照静态链接方式来修改目标模块中的相对地址。装入时动态链接方式有以下优点:地址。装入时动态链接方式有以下优点: (1) (1) 便于修改和更新便于修改和更新(2) (2) 便于实现对目标模块的共享便于实现对目标模块的共享 OSOS能够将一个目标模块链接到几个应用模块,即实现多个应用程序对能够将一个目标模块链接到几个应用模块,即实现多个应用程序对该模块的共享。该模块的共享。第四章 存 储 器 管 理 3. 运行时动态链接运行时动态链接(Run-time Dynamic Linking) 近几年流行起来的运行时动态链接方式,是对上述在装入近几年流行起来的运行时动态链接方式,是对上述在装入时

13、链接方式的一种改进。这种链接方式是将对某些模块的链接时链接方式的一种改进。这种链接方式是将对某些模块的链接推迟到执行时才执行,亦即,在执行过程中,当发现一个被调推迟到执行时才执行,亦即,在执行过程中,当发现一个被调用模块尚未装入内存时,立即由用模块尚未装入内存时,立即由OSOS去找到该模块并将之装入内去找到该模块并将之装入内存,存, 把它链接到调用者模块上。凡在执行过程中未被用到的目把它链接到调用者模块上。凡在执行过程中未被用到的目标模块,都不会被调入内存和被链接到装入模块上,这样不仅标模块,都不会被调入内存和被链接到装入模块上,这样不仅可加快程序的装入过程,而且可节省大量的内存空间。可加快程

14、序的装入过程,而且可节省大量的内存空间。 第四章 存 储 器 管 理 4.3 连续分配方式连续分配方式4.3.1 单一连续分配单一连续分配 这是最简单的一种存储管理方式,但只能用于单用户、单这是最简单的一种存储管理方式,但只能用于单用户、单任务的操作系统中。采用这种存储管理方式时,可把内存分为任务的操作系统中。采用这种存储管理方式时,可把内存分为系统区系统区和和用户区用户区两部分,系统区仅提供给两部分,系统区仅提供给OSOS使用,由于中断向使用,由于中断向量通常驻留在低地址部分,故量通常驻留在低地址部分,故OSOS通常是放在内存的低址部分;通常是放在内存的低址部分;用户区是指除系统区以外的全部

15、内存空间,提供给用户使用。用户区是指除系统区以外的全部内存空间,提供给用户使用。 第四章 存 储 器 管 理 单一连续区分配采用静态分配和静态重定位方式,亦即作业或进程一旦进入主存,就一直等到它运行结束后才能释放主存。如右图所示的主存分配与回收法。并且由装入程序检查其绝对地址是否超越界限地址界限地址,即可达到保护系统的目的。 工作流程工作流程缺点:缺点: 不支持多道程序设计 主存利用率不高 程序的运行受主存容量限制 优点:优点: 方法简单,易于实现 第四章 存 储 器 管 理 4.3.2 固定分区分配固定分区分配 1. 划分分区的方法划分分区的方法 (1) 分区大小相等, 即使所有的内存分区大

16、小相等。 (2) 分区大小不等。 2. 内存分配内存分配 为了便于内存分配,通常将这些分区根据它们的大小进行排队,为了便于内存分配,通常将这些分区根据它们的大小进行排队,并为之建立一张分区使用表。如下表所示。并为之建立一张分区使用表。如下表所示。分区号分区号大小大小(KB)始址始址(KB)状态状态12516已分配已分配23840已分配已分配357110未分配未分配第四章 存 储 器 管 理 一旦分好,则每个分区的大小固定不再变化,且分区的个数也不再改变。一个分区只能容纳一道作业。 分配算法分配算法 分配算法如图所示 回收算法回收算法 只需将分区说明表中相应的分区的占有标志位置成“0”即可。 优

17、缺点优缺点 优点:优点:内存分配、回收算法简单,容易实现。缺点:缺点:主存空间利用率不高,容易造成内零头。第四章 存 储 器 管 理 4.3.3 动态分区分配动态分区分配 1. 分区分配中的数据结构分区分配中的数据结构 (1) 空闲分区表空闲分区表 序号序号分区大小(分区大小(KB )分区始址(分区始址(KB)状态状态16444可用可用224132可用可用340210可用可用430270可用可用5第四章 存 储 器 管 理 (2) 空闲分区链空闲分区链前向指针N20N个字节可用后向指针N20第四章 存 储 器 管 理 2. 2. 分区分配算法分区分配算法 按空闲块链接的方式不同,可以有以下三种

18、算法: 最佳适应法最佳适应法 为作业选择分区时总是寻找其大小最接近于作业所要求的存储区域。设作业序列: A:12K B:3K C:10K 第四章 存 储 器 管 理 最坏适应法最坏适应法 与最佳适应法相反,它在作业选择存储块时,总是寻找最大的空白区。作业序列: A:12K B:3K C:10K 第四章 存 储 器 管 理 最先适应法最先适应法( (首次适应)首次适应) 为作业选择分区时总是按地址从低到高搜索从低到高搜索,只要找到可以容纳该作业的空白块,就把该空白块分配给该作业。 作业序列: A:12K B:10K C:3K 第四章 存 储 器 管 理 3. 分区分配与回收分区分配与回收 1)

19、分配内存分配内存 从头开始查表检索完否?m.sizeu.size?m.sizeu.sizesize?从该分区中划出u.size大小的分区将该分区分配给请求者修改有关数据结构返回返回继续检索下一个表项将该分区从链中移出YNNYYNu.Size是请求分区大小是请求分区大小m.Size是空闲分区大小是空闲分区大小Size事先规定的不再分割事先规定的不再分割的剩余分区大小的剩余分区大小第四章 存 储 器 管 理 2) 回收情况回收情况 设R:回收区; F1:上邻空白块; F2:下邻空白块 1回收区R与上邻 空白块F1邻接 2回收区R与下邻 空白块F2邻接 12回收区R与上下邻 空白块邻接 回收区R不与

20、 空白块邻接 第四章 存 储 器 管 理 释放一个分区的流程第四章 存 储 器 管 理 4.3.4 可重定位分区分配可重定位分区分配 1. 紧凑紧凑 (a a)紧凑前)紧凑前 (b b)紧凑后)紧凑后 为了消除外零头,进一步提高主为了消除外零头,进一步提高主存的利用率,定时地(或者在主存空存的利用率,定时地(或者在主存空间紧张时)把主存中的作业间紧张时)把主存中的作业“搬家搬家”集中在主存的一端。另一端就产生了集中在主存的一端。另一端就产生了一个大的空闲区。这种技术称为存储一个大的空闲区。这种技术称为存储器的器的“紧凑紧凑”。可重定位分区的优缺点:可重定位分区的优缺点: 解决了可变分区分配所引

21、入的解决了可变分区分配所引入的“外零头外零头”问题。(优点)问题。(优点) 消除内存碎片,提高内存利用率。消除内存碎片,提高内存利用率。(优点)(优点) 提高硬件成本,紧凑时花费提高硬件成本,紧凑时花费CPUCPU时间。(缺点)时间。(缺点) 用用“紧凑紧凑”技术解决技术解决“外零头外零头” 第四章 存 储 器 管 理 2. 动态重定位动态重定位 LOAD1,25003650100250050002500相对地址10000重定位寄存器LOAD1,250036510000101001250015000作业J处理机一侧 存储器一侧主存 动态运行时装入方式将程序中的相对地址转换为物理地址的工作,被推

22、动态运行时装入方式将程序中的相对地址转换为物理地址的工作,被推迟到程序指令真正要执行时进行。因此,允许作业在运行过程中在内存中移迟到程序指令真正要执行时进行。因此,允许作业在运行过程中在内存中移动的技术,必须获得硬件地址变换机构的支持。即在系统中增加一个重定位动的技术,必须获得硬件地址变换机构的支持。即在系统中增加一个重定位寄存器,用它来装入程序在内存中的起始地址。程序在执行时,真正访问的寄存器,用它来装入程序在内存中的起始地址。程序在执行时,真正访问的内存地址是相对地址与重定位寄存器中的地址相加而形成。地址变换过程是内存地址是相对地址与重定位寄存器中的地址相加而形成。地址变换过程是在程序执行

23、期间,随着对每条指令和数据的访问而自动进行的,故称为动态在程序执行期间,随着对每条指令和数据的访问而自动进行的,故称为动态重定位。重定位。第四章 存 储 器 管 理 3. 动态重定位分区分配算法动态重定位分区分配算法 该算法与动态分区分配算法基本相同,差别在于:增加了该算法与动态分区分配算法基本相同,差别在于:增加了“紧凑紧凑”功能,功能,通常是在找不到足够大的空闲分区来满足用户需要时,进行紧凑。其算法如通常是在找不到足够大的空闲分区来满足用户需要时,进行紧凑。其算法如下图所示。下图所示。第四章 存 储 器 管 理 4.3.5 对换对换(Swapping) 1. 1. 对换的引入对换的引入 所

24、谓所谓 “对换对换” ,是指把内存中暂时不能运行的进程或者暂时不用的,是指把内存中暂时不能运行的进程或者暂时不用的程序和数据,调出到外存上,以便腾出足够的内存空间,再把已具备运行程序和数据,调出到外存上,以便腾出足够的内存空间,再把已具备运行条件的进程或进程所需要的程序和数据,调入内存。对换是提高内存利用条件的进程或进程所需要的程序和数据,调入内存。对换是提高内存利用率的有效措施。率的有效措施。 如果对换是以整个进程为单位,便称之为如果对换是以整个进程为单位,便称之为“整体对换整体对换”或或“进程对进程对换换”,这种对换被广泛地应用于分时系统中,其目的是用以解决内存紧张,这种对换被广泛地应用于

25、分时系统中,其目的是用以解决内存紧张问题,并可进一步提高内存的利用率;如果以问题,并可进一步提高内存的利用率;如果以“页页”或或“段段”为单位进行,为单位进行,则分别称为则分别称为“页面对换页面对换”或或“分段对换分段对换”,也称为,也称为“部分对换部分对换”。 为了实现进程对换,系统必须能实现以下三方面的功能:为了实现进程对换,系统必须能实现以下三方面的功能:对对换空对对换空间的管理;进程的换出;进程的换入。间的管理;进程的换出;进程的换入。 第四章 存 储 器 管 理 2. 2. 对换空间的管理对换空间的管理 在具有对换功能的在具有对换功能的OSOS中,通常把外存分为文件区和中,通常把外存

26、分为文件区和对换区对换区。对换区主要。对换区主要用于存放从内存换出的进程,由于这些进程在对换区中驻留的时间是短暂的,用于存放从内存换出的进程,由于这些进程在对换区中驻留的时间是短暂的,而对换操作又较频繁,故对对换空间管理的主要目标,则是提高进程的换入、而对换操作又较频繁,故对对换空间管理的主要目标,则是提高进程的换入、换出速度,因此,一般采用换出速度,因此,一般采用连续分配方式连续分配方式。 为了能对对换区中的空闲盘块进行管理,在系统中应配置相应的数据结为了能对对换区中的空闲盘块进行管理,在系统中应配置相应的数据结构,以记录外存的使用情况。其形式与内存在动态分区分配方式中所用数据构,以记录外存

27、的使用情况。其形式与内存在动态分区分配方式中所用数据结构相似,即同样可以用空闲分区表或空闲分区链。在空闲分区表中的每个结构相似,即同样可以用空闲分区表或空闲分区链。在空闲分区表中的每个表目中应包含两项,即对换区的首址及其大小,它们的单位是盘块号和盘块表目中应包含两项,即对换区的首址及其大小,它们的单位是盘块号和盘块数。数。 由于对对换区的分配,是采用连续分配方式,因而对对换区空间的分配由于对对换区的分配,是采用连续分配方式,因而对对换区空间的分配和回收,与动态分区分配和回收相同。和回收,与动态分区分配和回收相同。第四章 存 储 器 管 理 3. 3. 进程的换出与换入进程的换出与换入 (1)

28、进程的换出进程的换出 每当一进程由于创建子进程而需要更多的内存空间,但又无足够每当一进程由于创建子进程而需要更多的内存空间,但又无足够的内存空间等情况发生时,系统应将某进程换出。其过程是:系统首的内存空间等情况发生时,系统应将某进程换出。其过程是:系统首先选择处于阻塞状态且优先级最低的进程作为换出进程,然后启动磁先选择处于阻塞状态且优先级最低的进程作为换出进程,然后启动磁盘,将该进程的程序和数据传送到磁盘的对换区上。若传送过程未出盘,将该进程的程序和数据传送到磁盘的对换区上。若传送过程未出现错误,便可回收该进程所占用的内存空间,并对该进程的进程控制现错误,便可回收该进程所占用的内存空间,并对该

29、进程的进程控制块做相应的修改。块做相应的修改。 (2) 进程的换入进程的换入 系统应定时地查看所有进程的状态,从中找出系统应定时地查看所有进程的状态,从中找出“就绪就绪”状态但已状态但已换出的进程,将其中换出时间换出的进程,将其中换出时间( (换出到磁盘上换出到磁盘上) )最久的进程作为换入进最久的进程作为换入进程,将之换入,直至已无可换入的进程或无可换出的进程为止。程,将之换入,直至已无可换入的进程或无可换出的进程为止。 第四章 存 储 器 管 理 4.4 基本分页存储管理方式基本分页存储管理方式 在动态分区的存储空间中,常常引入了“零头零头”问题。尽管采用“紧凑紧凑”技术可以解决这个问题,

30、但要为移动大量信息花去不少的处理机时间,代价较高。分页存储管理系统分页存储管理系统的思想被提出了。 如果允许将一个进程直接分散地分配到许多不相邻的分区中,就不必再进行“紧凑”。基于这一思想而产生了离散分配方式。根据离散分配时所用基本单位的不同,又可把离散分配方式分为以下三种:分页存储管理、分段存储管理、段页式存储管理。第四章 存 储 器 管 理 4.4.1 页面与页表页面与页表 1. 页面页面 1) 页面和物理块页面和物理块 分页存储管理,是将一个进程的逻辑地址空间分成若干个分页存储管理,是将一个进程的逻辑地址空间分成若干个大小相等的片,称为页面或页,并为各页加以编号,从大小相等的片,称为页面

31、或页,并为各页加以编号,从0 0开始,开始,如第如第0 0页、第页、第1 1页等。相应地,也把内存空间分成与页面相同大页等。相应地,也把内存空间分成与页面相同大小的若干个存储块,称为小的若干个存储块,称为( (物理物理) )块或页框块或页框(frame)(frame),也同样为,也同样为它们加以编号,如它们加以编号,如0 0块、块、1 1块等等。在为进程分配内存时,块等等。在为进程分配内存时,以块为单位将进程中的若干个页分别装入到多个可以不相邻接以块为单位将进程中的若干个页分别装入到多个可以不相邻接的物理块中。由于进程的最后一页经常装不满一块而形成了不的物理块中。由于进程的最后一页经常装不满一

32、块而形成了不可利用的碎片,称之为可利用的碎片,称之为“页内碎片页内碎片”。 第四章 存 储 器 管 理 2) 页面大小页面大小 在分页系统中页面的大小是由机器的地址结构所决定的,在分页系统中页面的大小是由机器的地址结构所决定的,亦即由硬件决定。亦即由硬件决定。 在分页系统中的页面其大小应适中。页面若太小,一方面在分页系统中的页面其大小应适中。页面若太小,一方面虽然可使内存碎片减小,从而减少了内存碎片的总空间,虽然可使内存碎片减小,从而减少了内存碎片的总空间, 有有利于提高内存利用率,但另一方面也会使每个进程占用较多的利于提高内存利用率,但另一方面也会使每个进程占用较多的页面,从而导致进程的页表

33、过长,占用大量内存;此外,还会页面,从而导致进程的页表过长,占用大量内存;此外,还会降低页面换进换出的效率。然而,如果选择的页面较大,虽然降低页面换进换出的效率。然而,如果选择的页面较大,虽然可以减少页表的长度,提高页面换进换出的速度,但却又会使可以减少页表的长度,提高页面换进换出的速度,但却又会使页内碎片增大。因此,页面的大小应选择得适中,且页面大小页内碎片增大。因此,页面的大小应选择得适中,且页面大小应是应是2 2的幂,通常为的幂,通常为512B-8KB512B-8KB。 第四章 存 储 器 管 理 2. 地址结构地址结构 分页地址中的地址结构如下:分页地址中的地址结构如下: 页号P位移量

34、W(页内地址)3112110 对某特定机器,其地址结构是一定的。若给定一个逻辑地对某特定机器,其地址结构是一定的。若给定一个逻辑地址空间中的地址为址空间中的地址为A A,页面的大小为,页面的大小为L L,则页号,则页号P P和页内地址和页内地址d d可可按下式求得:按下式求得: d=A mod L第四章 存 储 器 管 理 3. 页表页表 用户程序0 页1 页2 页3 页4 页5 页n 页页表页号块号02132638495内存012345678910 在分页系统中,允许将进程的每一页离散地存储在内存的任一物理块中,在分页系统中,允许将进程的每一页离散地存储在内存的任一物理块中,但系统应能保证进

35、程的正确运行,即能在内存中找到每个页面所对应的物理但系统应能保证进程的正确运行,即能在内存中找到每个页面所对应的物理块。为此,系统又为每个进程建立一张页面映射表,简称块。为此,系统又为每个进程建立一张页面映射表,简称页表页表。页表的作用。页表的作用是实现从页号到物理块号的地址映射。是实现从页号到物理块号的地址映射。第四章 存 储 器 管 理 页表页表列出了作业的逻辑地址与其在主存中的物理地址间的对应关系。一个页表中包含若干个表目表目,表目的自然序号对应于用户程序中的页号,表目中的最基本内容是该页对应的物理块号。 页表的每一个表目除了包含指向物理块的指针外,还包括一个存取控制字段。这个表目也称为

36、页描述子页描述子。 页号页号块号块号存储控制存储控制0 02 21 13 32 28 8第四章 存 储 器 管 理 作业登记表作业登记表 页表长度页表起址作业编号作业编号大小大小页表起址页表起址J1J13 310001000J2J24 420002000J3J38 880008000 作业被调度放进内存时,分页系统把该作业分成3 3页,建立页表,并把页表起址10001000以及页数3 3写进系统的作业登记表作业登记表中。系统调度J1J1执行,从系统的作业登记表作业登记表中读取页表起址(1000)和页数(3)写到页面变换地址寄存器。这样,J1的页表位置就确定了。第四章 存 储 器 管 理 4.4

37、.2 地址变换机构地址变换机构 1. 基本的地址变换机构基本的地址变换机构 分页系统的地址变换机构分页系统的地址变换机构 页表寄存器页表始址页表长度页号(3)页内地址逻辑地址L越界中断1块号b页表页号012物理地址3 现代计算机的页表都很大,页表大多驻留在内存中。在系统中设置一现代计算机的页表都很大,页表大多驻留在内存中。在系统中设置一个页表个页表寄存器寄存器PTR,其中存放页表在内存的始址和页表的长度。平时,进,其中存放页表在内存的始址和页表的长度。平时,进程未执行时,页表的始址和长度是存放在本进程的程未执行时,页表的始址和长度是存放在本进程的PCB中,当调度程序调中,当调度程序调度到某进程

38、时,才将它们装入到页面寄存器中。度到某进程时,才将它们装入到页面寄存器中。第四章 存 储 器 管 理 4.4.2 地址变换机构地址变换机构 1. 基本的地址变换机构基本的地址变换机构 第四章 存 储 器 管 理 2. 具有快表的地址变换机构具有快表的地址变换机构 具有快表的地址变换机构具有快表的地址变换机构 页表寄存器页表始址页表长度页号页内地址逻辑地址L越界中断块号b页表页号页号输入寄存器块号bb快表d物理地址 为了提高地址变换速度,可在地址变换机构中,增设一个具有并行查寻为了提高地址变换速度,可在地址变换机构中,增设一个具有并行查寻能力的特殊高速缓冲存储器,又称为能力的特殊高速缓冲存储器,

39、又称为“联想存储器联想存储器”或或“快表快表”,用以存放,用以存放当前访问的那些页表项当前访问的那些页表项第四章 存 储 器 管 理 2. 具有快表的地址变换机构具有快表的地址变换机构 第四章 存 储 器 管 理 4.4.3 两级和多级页表两级和多级页表 现代的大多数计算机系统,都支持非常大的逻辑地址空间现代的大多数计算机系统,都支持非常大的逻辑地址空间(2(23232- -2 26464) )。在这样的环境下,页表就变得非常大,要占用相当大的内存空。在这样的环境下,页表就变得非常大,要占用相当大的内存空间。例如,对于一个具有间。例如,对于一个具有3232位逻辑地址空间的分页系统,规定页面大位

40、逻辑地址空间的分页系统,规定页面大小为小为4KB4KB即即2 21212B B,则在每个进程页表中的页表项可达,则在每个进程页表中的页表项可达1 1兆个之多。又因兆个之多。又因为每个页表项占用一个字节,故每个进程仅仅其页表就要占用为每个页表项占用一个字节,故每个进程仅仅其页表就要占用4KB4KB的的内存空间,而且还要求是连续的。可以采用这样两个方法来解决这一内存空间,而且还要求是连续的。可以采用这样两个方法来解决这一问题:问题: 采用离散分配方式来解决难以找到一块连续的大内存空间的问采用离散分配方式来解决难以找到一块连续的大内存空间的问题;题; 只将当前需要的部分页表项调入内存,只将当前需要的

41、部分页表项调入内存, 其余的页表项仍驻留其余的页表项仍驻留在磁盘上,需要时再调入。在磁盘上,需要时再调入。 第四章 存 储 器 管 理 1. 两级页表两级页表(Two-Level Page Table) 逻辑地址结构可描述如下: 第四章 存 储 器 管 理 两级页表结构两级页表结构 101110780121742n第0页页表1460121023第1页页表114115011023外部页表012345671141151468第n页页存空间第四章 存 储 器 管 理 具有两级页表的地址变换机构具有两级页表的地址变换机构 外部页号P1P2外部页内地址页内地址d逻辑地址外部页表

42、寄存器外部页表db页表页表物理地址 为了地址变换实现上方便起见,在地址机构中同样需要设置一个外层为了地址变换实现上方便起见,在地址机构中同样需要设置一个外层页表寄存器,用于存放外层页表的始址,并利用逻辑地址中的外层页号,页表寄存器,用于存放外层页表的始址,并利用逻辑地址中的外层页号,作为外层页表的索引,从中找到指定页表分页的首址,再利用作为外层页表的索引,从中找到指定页表分页的首址,再利用P2作为指定作为指定页表分页的索引,找到指定的页表项。其中即含有该页在内存的物理块号,页表分页的索引,找到指定的页表项。其中即含有该页在内存的物理块号,用该块号和页内地址即可构成访问内存的物理地址。如下所示用

43、该块号和页内地址即可构成访问内存的物理地址。如下所示第四章 存 储 器 管 理 2. 多级页表多级页表 对于对于3232位的机器,采用两级页表结构是合适的;但对于位的机器,采用两级页表结构是合适的;但对于6464位的机器,如果页面大小仍采用位的机器,如果页面大小仍采用4KB4KB即即2 21212B B,那么还剩下,那么还剩下5252位,位, 假定仍按物理块的大小假定仍按物理块的大小(2(21212位位) )来划分页表,则将余下的来划分页表,则将余下的4242位用位用于外层页号。此时在外层页表中可能有于外层页号。此时在外层页表中可能有4096G4096G个页表项,要占用个页表项,要占用1638

44、4GB16384GB的连续内存空间。必须采用多级页表,将外层页表再进的连续内存空间。必须采用多级页表,将外层页表再进行分页,也是将各分页离散地装入到不相邻接的物理块中,再利行分页,也是将各分页离散地装入到不相邻接的物理块中,再利用第用第2 2级的外层页表来映射它们之间的关系。级的外层页表来映射它们之间的关系。 对于对于6464位的计算机,如果要求它能支持位的计算机,如果要求它能支持2 2(=1844744TB)(=1844744TB)规规模的物理存储空间,则即使是采用三级页表结构也是难以办到的;模的物理存储空间,则即使是采用三级页表结构也是难以办到的;而在当前的实际应用中也无此必要。而在当前的

45、实际应用中也无此必要。第四章 存 储 器 管 理 4.5 基本分段存储管理方式基本分段存储管理方式 如果说,推动存储管理方式从固定分区到动态分区,进而如果说,推动存储管理方式从固定分区到动态分区,进而又发展到分页存储管理方式的主要动力,是提高内存利用率;又发展到分页存储管理方式的主要动力,是提高内存利用率;那么,分段存储管理方式的引入,则主要是为了满足用户在编那么,分段存储管理方式的引入,则主要是为了满足用户在编程和使用上多方面的要求,其中有些要求是其它几种存储管理程和使用上多方面的要求,其中有些要求是其它几种存储管理方式所难于满足的。正因如此,这种存储管理方式已成为当今方式所难于满足的。正因

46、如此,这种存储管理方式已成为当今所有存储管理方式的基础,许多高级语言的编译程序,也都支所有存储管理方式的基础,许多高级语言的编译程序,也都支持分段存储管理方式。持分段存储管理方式。第四章 存 储 器 管 理 4.5 基本分段存储管理方式基本分段存储管理方式 在分页存储系统中,作业的地址空间是一维线性的,这破在分页存储系统中,作业的地址空间是一维线性的,这破坏了程序内部天然的逻辑结构。这样常常会把逻辑相关部分划坏了程序内部天然的逻辑结构。这样常常会把逻辑相关部分划到不同的页面,造成共享、保护的困难。加之,程序员常常用到不同的页面,造成共享、保护的困难。加之,程序员常常用二维地址描述自己的程序,于

47、是产生了二维地址描述自己的程序,于是产生了分段分段的思想,如下图:的思想,如下图: CALL XECALL YFCALL A116主程序段主程序段M子程序段子程序段XXE子程序段子程序段FFF数组数组AA116 12345工作段工作段BB第四章 存 储 器 管 理 4.5.1 分段存储管理方式的引入分段存储管理方式的引入 引入分段存储管理方式,主要是为了满足用户和程序员的下述一系列需引入分段存储管理方式,主要是为了满足用户和程序员的下述一系列需要:要: 1) 1) 方便编程方便编程 通常,一个作业是由若干个自然段组成。因而,用户希望能把自己的作通常,一个作业是由若干个自然段组成。因而,用户希望

48、能把自己的作业按照逻辑关系划分为若干个段;每个段都有自己的名字和长度;要访问的业按照逻辑关系划分为若干个段;每个段都有自己的名字和长度;要访问的逻辑地址是由段名(段号)和段内偏移量(段内地址)决定;每个段都从逻辑地址是由段名(段号)和段内偏移量(段内地址)决定;每个段都从0 0开始编址。开始编址。 2) 2) 分段共享分段共享 通常,在实现程序和数据的共享时,都是以信息的逻辑单位为基础的。通常,在实现程序和数据的共享时,都是以信息的逻辑单位为基础的。而在分页系统中的每一页都只是存放信息的物理单位,其本身并无完整的意而在分页系统中的每一页都只是存放信息的物理单位,其本身并无完整的意义,因而不便于

49、实现信息共享;然而段却是信息的逻辑单位。由此可知,为义,因而不便于实现信息共享;然而段却是信息的逻辑单位。由此可知,为了实现段的共享,也希望存储管理能与用户程序分段的组织方式相适应。了实现段的共享,也希望存储管理能与用户程序分段的组织方式相适应。 第四章 存 储 器 管 理 3) 3) 信息保护信息保护 对内存中信息的保护,同样是对信息的逻辑单位进行保护。因此,采用对内存中信息的保护,同样是对信息的逻辑单位进行保护。因此,采用分段的组织和管理方式,对于实现保护功能,将是更有效和方便的。分段的组织和管理方式,对于实现保护功能,将是更有效和方便的。 5) 5) 动态链接动态链接 通常,用户源程序经

50、过编译后所形成的若干个目标程序,还须再经过链通常,用户源程序经过编译后所形成的若干个目标程序,还须再经过链接以形成可执行程序后,方能执行。这种在装入时进行的链接称为静态链接。接以形成可执行程序后,方能执行。这种在装入时进行的链接称为静态链接。动态链接是指在作业运行之前,并不把几个目标程序链接起来。作业要运行动态链接是指在作业运行之前,并不把几个目标程序链接起来。作业要运行之前先将主程序所对应的目标程序装入内存并启动运行,当运行过程中又需之前先将主程序所对应的目标程序装入内存并启动运行,当运行过程中又需要调用某段时,才将该段(目标程序)调入内存并进行链接。可见,动态链要调用某段时,才将该段(目标

51、程序)调入内存并进行链接。可见,动态链接也要求以段作为管理的单位。接也要求以段作为管理的单位。 4) 4) 动态增长动态增长 在实际使用中,往往有些段特别是数据段,会不断地增长,而事先又无在实际使用中,往往有些段特别是数据段,会不断地增长,而事先又无法确切地知道数据段会增长到多大。这种动态增长的情况是其它几种存储管法确切地知道数据段会增长到多大。这种动态增长的情况是其它几种存储管理方式都难于应付的;而分段存储管理方式却能较好地解决这一问题。理方式都难于应付的;而分段存储管理方式却能较好地解决这一问题。 第四章 存 储 器 管 理 4.5.2 分段系统的基本原理分段系统的基本原理 1. 分段分段

52、 分段地址中的地址具有如下结构:分段地址中的地址具有如下结构: 段号段内地址31 16 15 02. 段表段表 在分段存储管理方式中,作业的地址空间被划分为若干个段,在分段存储管理方式中,作业的地址空间被划分为若干个段,每个段定义了一组逻辑信息。每个段都有自己的名字,通常用一个每个段定义了一组逻辑信息。每个段都有自己的名字,通常用一个段号来代替段名,每个段都从段号来代替段名,每个段都从0开始编址,并采用一段连续的地址开始编址,并采用一段连续的地址空间。空间。第四章 存 储 器 管 理 利用段表实现地址映射利用段表实现地址映射 作业空间(MAIN)0030K(X)1020K(D)2015K(S)

53、3010K30K20K15K10K40K80K120K150K段长基址段号(MAIN)030K(X)120K(D)215K(S)310K040K80K120K150K段表内存空间01232. 段表段表 第四章 存 储 器 管 理 控制寄存器段表始址段表长度2100段号S越界1 K段长600段号01236 K4 K5002008 K9200基址位移量W82928K82928692主存物理地址有效地址分段系统的地址变换过程分段系统的地址变换过程 3. 地址变换机构地址变换机构 第四章 存 储 器 管 理 4. 分页和分段的主要区别分页和分段的主要区别 (1) (1) 页是信息的物理单位,分页是为实

54、现离散分配方式,以消减页是信息的物理单位,分页是为实现离散分配方式,以消减内存的外零头,提高内存的利用率。或者说,分页仅仅是由于系统管内存的外零头,提高内存的利用率。或者说,分页仅仅是由于系统管理的需要而不是用户的需要。段则是信息的逻辑单位,它含有一组其理的需要而不是用户的需要。段则是信息的逻辑单位,它含有一组其意义相对完整的信息。分段的目的是为了能更好地满足用户的需要。意义相对完整的信息。分段的目的是为了能更好地满足用户的需要。 (2) (2) 页的大小固定且由系统决定,由系统把逻辑地址划分为页号页的大小固定且由系统决定,由系统把逻辑地址划分为页号和页内地址两部分,是由机器硬件实现的,因而在

55、系统中只能有一种和页内地址两部分,是由机器硬件实现的,因而在系统中只能有一种大小的页面;而段的长度却不固定,决定于用户所编写的程序,通常大小的页面;而段的长度却不固定,决定于用户所编写的程序,通常由编译程序在对源程序进行编译时,根据信息的性质来划分。由编译程序在对源程序进行编译时,根据信息的性质来划分。 (3) (3) 分页的作业地址空间是一维的,即单一的线性地址空间,程分页的作业地址空间是一维的,即单一的线性地址空间,程序员只需利用一个记忆符,即可表示一个地址;而分段的作业地址空序员只需利用一个记忆符,即可表示一个地址;而分段的作业地址空间则是二维的,程序员在标识一个地址时,既需给出段名,又

56、需给出间则是二维的,程序员在标识一个地址时,既需给出段名,又需给出段内地址。段内地址。第四章 存 储 器 管 理 4.5.3 信息共享信息共享 ed 1ed 2ed 40data 1data 10进程12122606170页表ed 1ed 2ed 40data 1data 10进程22122607180ed 1ed 2ed 40data 1data 10data 1data 10主存021226061707180页表分页系统中共享分页系统中共享editoreditor的示意图的示意图可重入代码可重入代码(纯代码纯代码):允许多个进程同时访问的:允许多个进程同时访问的代码。不允许在执行中有任何改

57、变。代码。不允许在执行中有任何改变。第四章 存 储 器 管 理 分段系统中共享分段系统中共享editoreditor的示意图的示意图 editor进程1data 1进程2editordata 2段表段长基址16080402401608040380editordata 1data 280240280380420第四章 存 储 器 管 理 4.5.4 段页式存储管理方式段页式存储管理方式 1. 基本原理基本原理 作业地址空间和地址结构作业地址空间和地址结构 04K8K12K15K16K子程序段04K8K数据段04K8K10K12K(a)段号(S)段内页号(P)段内地址(W)(b)主程序段第四章 存

58、 储 器 管 理 利用段表和页表实现地址映射利用段表和页表实现地址映射 段号 状态 页表大小 页表始址0111213041页号 状态存储块#0111213041操作系统主存页表段表段表大小 段表始址段表寄存器第四章 存 储 器 管 理 2. 地址变换过程地址变换过程 段页式系统中的地址变换机构段页式系统中的地址变换机构 段表寄存器段表始址段表长度段号S页号P段超长段表0123页内地址页表0123b块号 b块内地址页表始址页表长度在段页式系统中,为了获得一条指令或数据,须三次访问内存。在段页式系统中,为了获得一条指令或数据,须三次访问内存。第四章 存 储 器 管 理 4.6 虚拟存储器的基本概念

59、虚拟存储器的基本概念 4.6.1 虚拟存储器的引入虚拟存储器的引入 1. 常规存储器管理方式的特征常规存储器管理方式的特征 (1) (1) 一次性一次性 是指在作业运行前,将作业全部装入内存,但实际上有许多作业在每是指在作业运行前,将作业全部装入内存,但实际上有许多作业在每次运行时,并非用到其全部程序,因此,那种将作业次运行时,并非用到其全部程序,因此,那种将作业“一次性一次性”地全部装地全部装入的方法,显然是一种对内存空间的浪费。入的方法,显然是一种对内存空间的浪费。(2) (2) 驻留性驻留性 是指作业装入内存后,便一直驻留在内存直至作业运行结束。是指作业装入内存后,便一直驻留在内存直至作

60、业运行结束。第四章 存 储 器 管 理 2. 局部性原理局部性原理 (1) (1) 程序执行时,除了少部分的转移和过程调用指令外,在大多程序执行时,除了少部分的转移和过程调用指令外,在大多数情况下仍是顺序执行的。数情况下仍是顺序执行的。 (2) (2) 过程调用将会使程序的执行轨迹由一部分区域转至另一部分过程调用将会使程序的执行轨迹由一部分区域转至另一部分区域,但经研究表明,过程调用的深度在大多数情况下都不超过区域,但经研究表明,过程调用的深度在大多数情况下都不超过5 5。也就是说,程序将会在一段时间内,都局限在这些过程的范围内运行。也就是说,程序将会在一段时间内,都局限在这些过程的范围内运行

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论