操作系统教程Linux实例分析孟庆昌第4章存储器.ppt
《操作系统教程Linux实例分析孟庆昌第4章存储器.ppt》由会员分享,可在线阅读,更多相关《操作系统教程Linux实例分析孟庆昌第4章存储器.ppt(176页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第第4 4章章 存储器管理存储器管理 第第4章章 存储器管理存储器管理 4.1 引言引言 4.2 基本的内存管理技术基本的内存管理技术 4.3 对换技术对换技术 4.4 分页技术分页技术 4.5 分段技术分段技术 4.6 虚拟存储器虚拟存储器 4.7 请求分页技术请求分页技术 第第4 4章章 存储器管理存储器管理 4.8 页面置换算法页面置换算法 4.9 内存块分配算法和抖动问题内存块分配算法和抖动问题 4.10 段式虚拟存储器段式虚拟存储器 4.11 段页式结合系统段页式结合系统 4.12 Linux系统的存储管理系统的存储管理 习题习题 第第4 4章章 存储器管理存储器管理 4.1 引引
2、言言 内 存(Main Memory或 Primary Memory或 Real Memory)也称主存,是指CPU能直接存取指令和数据的存储器。磁盘、磁鼓和磁带等存储器,一般称为外存或辅存(Secondary Storage)。内存是现代计算机系统进行操作的中心,如图4-1所示,CPU和I/O系统都要和内存打交道。第第4 4章章 存储器管理存储器管理 图4-1 内存在计算机系统中的地位 第第4 4章章 存储器管理存储器管理 4.1.1 用户程序的主要处理阶段 我们用高级语言编程解决某个特定的任务时,通常先对它进行数学抽象,确定相应的数据结构和算法,然后用高级程序设计语言(如PASCAL、C语
3、言等)或者汇编语言进行程序设计。这种用高级语言或汇编语言编写的程序就称为源程序。从用户的源程序进入系统到相应程序在机器上运行,要经历一系列步骤,主要处理阶段有:编辑、编译、连接、装入和运行。如图4-2所示。第第4 4章章 存储器管理存储器管理 图4-2 用户程序的主要处理阶段 第第4 4章章 存储器管理存储器管理 1.编辑阶段 用户键入编辑命令,如vi,进入编辑方式。在编辑方式下用户将所编写的源程序输入到机器内,存放在相应的文件(如filel.c)中。这种存放源程序的文件叫做源文件。2.编译阶段 源程序并不能直接在机器上运行,因为CPU不能识别源程序,它仅仅认识由规定范围内的一系列二进制代码所
4、组成的指令和数据,并按预定含义执行一系列动作。第第4 4章章 存储器管理存储器管理 3.连接阶段 用户程序可以分别进行编译,从而得到不同的目标模块。而且用户程序中往往要调用系统库程序和应用程序,这些程序是预先就编译好的。这些目标代码不能简单地合并在一起,因为各自分配的内存地址可能有冲突,并且调用者还不知道被调用模块放在什么地方,仅知道它的符号名称。第第4 4章章 存储器管理存储器管理 4.装入阶段 程序必须装到内存才能运行。这就需要装入程序根据内存的使用情况和分配策略,将上述装入模块放入分到的内存区中。第第4 4章章 存储器管理存储器管理 5.运行阶段 为了运行装入内存中的程序,需要键入运行命
5、令。在UNIX/Linux环境中,可直接键入可执行文件的名称。此时,终端进程创建一个子进程。当这个进程被调度程序选中后,CPU就去执行该进程的可执行代码。就是说,该用户程序被执行了。第第4 4章章 存储器管理存储器管理 4.1.2 重定位 由于内存地址是从统一的一个基址0开始按序编号的,就像是一个大数组那样,因此,内存空间是一维的线性空间。用户程序和数据装入内存时,需要进行重定位。例如,图4-3表示程序A装入内存前后的情况。在地址空间100号单元处有一条指令“LOAD 1,500”,它实现把500号单元中的数据12345装到寄存器1中去。第第4 4章章 存储器管理存储器管理 图4-3 程序装入
6、内存时的情况 第第4 4章章 存储器管理存储器管理 1.静态重定位 静态重定位是在目标程序装入内存时,由装入程序对目标程序中的指令和数据的地址进行修改,即把程序的逻辑地址都改成实际的内存地址。对每个程序来说,这种地址变换只是在装入时一次完成,在程序运行期间不再进行重定位。按照静态重定位方式,图4-3所示的程序A装入内存时的情况就变成如图4-4所示的样子。第第4 4章章 存储器管理存储器管理 图4-4 静态重定位示意图 第第4 4章章 存储器管理存储器管理 它的主要缺点是:(1)程序的存储空间只能是连续的一片区域,而且在重定位之后就不能再移动。这不利于内存空间的有效使用。(2)各个用户进程很难共
7、享内存中的同一程序的副本。第第4 4章章 存储器管理存储器管理 2.动态重定位 动态重定位是在程序执行期间每次访问内存之前进行重定位。这种变换是靠硬件地址变换机构实现的。通常采用一个重定位寄存器,其中放有当前正在执行的程序在内存空间中的起始地址,而地址空间中的代码在装入过程中不发生变化。动态重定位的过程如图4-5所示。第第4 4章章 存储器管理存储器管理 图4-5 动态重定位示意图 第第4 4章章 存储器管理存储器管理 如果用(BR)表示重定位寄存器中的内容,用addr表示操作对象的相对地址,则操作对象的绝对地址就是(BR)+addr的值。动态重定位的主要优点是:(1)程序占用的内存空间动态可
8、变,不必连续存放在一处。(2)比较容易实现几个进程对同一程序副本的共享使用。第第4 4章章 存储器管理存储器管理 4.2 基本的内存管理技术基本的内存管理技术 内存的一部分是固定分配给操作系统的,可以位于内存最低端的RAM(随机存取存储器)中,如图4-6(a)所示;也可位于内存最高端的ROM(只读存储器)中,如图4-6(b)所示;还可以让设备驱动程序位于内存高端的ROM中,而让操作系统的其他部分位于低端的RAM中,如图4-6(c)中所示。第第4 4章章 存储器管理存储器管理 图4-6 单一连续分配 第第4 4章章 存储器管理存储器管理 4.2.2 分区法 分区分配是为支持多道程序开发、运行的一
9、种最简单的存储管理方式。在这种方式下,要把内存划分成若干分区,每个分区里容纳一个作业。按照分区的划分方式,可归纳为两种常见的分配方法:固定分区法和可变分区法。第第4 4章章 存储器管理存储器管理 图4-7 固定分区第第4 4章章 存储器管理存储器管理 1.固定分区法 “固定”包含两个意思:一个是内存中分区的个数固定,不能随机变动;另一个是各分区的大小固定。当然各个分区的大小可以不同。但是,一旦在系统启动时把内存的分区划分好,以后在使用过程中就不能更改了。所以,固定分区法是对内存的静态划分。固定分区的管理方法如图4-7所示。第第4 4章章 存储器管理存储器管理 图4-8 分区说明表 第第4 4章
10、章 存储器管理存储器管理 2.可变分区法 由于用户作业大小不可能预先规定好,作业到来的分布也无法确定,所以分区的大小不会总与作业大小相符。为了解决内存浪费问题,可以把分区大小改成可变的,就是说,各个分区是在相应作业处理过程中建立的,使其大小恰好适应作业的大小。这种技术称为可变分区法。IBM的OS/360 MVT(具有可变任务数的多道程序设计)操作系统就是采用这种技术:操作系统掌管一个表格,登记每个空闲区和已分配区,指出其大小、位置和对各个区的存取限制等。图4-9表示了MVT的内存分配和作业调度示例。第第4 4章章 存储器管理存储器管理 图4-9 MVT的内存分配和作业调度(a)内存初始情况和作
11、业队列;(b)内存分配和作业调度第第4 4章章 存储器管理存储器管理 图4-9 MVT的内存分配和作业调度(a)内存初始情况和作业队列;(b)内存分配和作业调度第第4 4章章 存储器管理存储器管理 1)最先适应算法 最先适应算法也称为首次适配算法。在这种算法中,空闲表是按位置排列的(即空闲块地址小的,在表中的序号也小)。2)循环适应算法 循环适应算法也称作下次适配算法。它是对最先适应算法的修改:当每次找到合适的空闲块时,就同时记下当时的位置,下次查找空闭块时就从下一个空闲分区开始查找,而不是每次都从头开始查找。第第4 4章章 存储器管理存储器管理 3)最佳适应算法 最佳适应算法是在满足需要的前
12、提下分配最小的那块。这种算法的空闲表是以空闲块的大小为序、按增量形式排列的,即小块在前,大块在后。这种算法的优点是:产生的剩余块是最小的,平均而言,只要查一半空闲表就能找到最佳适应的空闲块。但是其缺点是:不便于释放内存时与邻接区的合并,而且分割后所剩余的空闲区往往很小,几乎无法使用。第第4 4章章 存储器管理存储器管理 4)最坏适应算法 最坏适应算法是最佳适应算法的“逆”,即空闲表是以空闲块的大小为序,但大块在前、小块在后。第第4 4章章 存储器管理存储器管理 3.硬件支持 采用分区技术需要有硬件保护机构。通常用一对寄存器分别表示用户程序在内存中的上界地址值和下界地址值,如图4-10所示。第第
13、4 4章章 存储器管理存储器管理 图4-10 分区的硬件保护第第4 4章章 存储器管理存储器管理 这一对寄存器也可用另一种方式设置值,一个表示用户程序的最小物理地址,称为基址寄存器;另一个表示用户程序逻辑地址的范围,称为限长寄存器。虽然这两种方式都用一对寄存器进行保护,但两者的重定位方式是不同的。前者采用静态重定位,在汇编或装入时进行,程序中的每个有效地址必须大于或等于下界值而小于上界值。而后者需采用动态重定位,每个有效地址必须小于限长寄存器值,而相应物理地址是有效地址加上基址寄存器的值,如图4-11所示。CDC 6600及其以后的机器都用这种方式。第第4 4章章 存储器管理存储器管理 图4-
14、11 基址/限长寄存器的使用 第第4 4章章 存储器管理存储器管理 4.分区分配的优点和缺点 总体来说,分区分配的优点主要是:有利于多道程序设计;所需硬件支持很少;管理算法简单,易于实现。但分区分配也存在很多缺点,主要有:碎片问题严重,有些作业序列可能使内存的利用率低于10%;不利于大作业运行,当空闲块只有一个,但装不下后面的作业时,内存仍造成浪费;为容纳多个作业,需要的内存容量更大;已被占用的分区中可能包括从未使用过的信息,且作业分区大小受到内存总量的限制。第第4 4章章 存储器管理存储器管理 虽然可变分区比固定分区的内存利用率要高一些,但是二者都存在碎片问题。怎样使这些分散的、较小的空闲区
15、得到合理使用呢?最简单的办法是定时或在分配内存时把所有的碎片合并为一个连续区,如图4-12所示。第第4 4章章 存储器管理存储器管理 图4-12 可重定位分区的紧缩(a)初始状态;(b)移动之后;(c)分配作业5之后第第4 4章章 存储器管理存储器管理 图4-13“占两头、空中间”的分区方式第第4 4章章 存储器管理存储器管理 4.3 对对 换换 技技 术术 4.3.1 早期对换技术 对换技术是在早期分时系统中(如CTSS和Q-32)采用的基本内存管理方式。它的实现思想是:除操作系统空间之外剩余的全部内存都分给当前正在执行的用户进程使用,当调度转向下一个用户进程时,当前进程内存区中的内容要写到
16、外存(如磁盘)中去,被选中用户进程的信息读到内存中来,如图4-14所示。第第4 4章章 存储器管理存储器管理 图4-14 利用磁盘对换两个进程 第第4 4章章 存储器管理存储器管理 4.3.2 多道程序环境下的对换 图4-15示出多道程序环境下对换系统的工作情况。最初只有进程A在内存,随后创建进程B和C(或者二者从盘上换入内存)。在图4-15(d)中A换出。然后,D换入,B完成,最后A再次换入。由于A现在的位置不同于先前,因此必须重定位或者在换入时由软件完成,或者在程序执行时由硬件实现(这是常用方式)。第第4 4章章 存储器管理存储器管理 图4-15 进程对换时内存分配情况 第第4 4章章 存
17、储器管理存储器管理 4.4 分分 页页 技技 术术 4.4.1 分页存储管理的基本概念 分页存储管理的基本方法是:(1)逻辑空间分页:将一个进程的逻辑地址空间划分成若干个大小相等的部分,每一部分称为页面或页。每页都有一个编号,叫做页号,页号从0开始依次编排,如0,1,2,。第第4 4章章 存储器管理存储器管理 (2)内存空间分块:把内存也划分成与页面相同大小的若干个存储块,称为内存块或页框。(3)逻辑地址表示:在分页存储管理方式中,表示地址的结构如图4-16所示。第第4 4章章 存储器管理存储器管理 图4-16 分页技术的地址结构 页号p页内地址d31 12 11 0第第4 4章章 存储器管理
18、存储器管理 它由两个部分组成:前一部分表示该地址所在页面的页号p;后一部分表示页内位移d,即页内地址。图4-16中所示两部分构成的地址长度为32位。其中011为页内地址,即每页的大小为4 KB;1231位为页号,表示地址空间中最多可容纳1 MB个页面。第第4 4章章 存储器管理存储器管理 对于特定机器来说,其地址结构是一定的。如果给定的逻辑地址是A,页面的大小为L,则页号p和页内地址d可按下式求得:p=INTA/L d=A MOD L 第第4 4章章 存储器管理存储器管理 (4)内存分配原则:在分页情况下,系统以块为单位把内存分给进程,并且一个进程的若干页可分别装入物理上不相邻的内存块中。进程
19、的每个页面对应一个内存块,如图4-17所示。第第4 4章章 存储器管理存储器管理 图4-17 分页存储管理系统 第第4 4章章 存储器管理存储器管理 (5)页表:在分页系统中允许将进程的各页面离散地装入内存的任何空闲块中,这样一来就出现进程的页号连续、而块号不连续的情况。怎样找到每个页面在内存中对应的物理块呢?为此,系统又为每个进程设立一张页面映像表,简称页表。如图4-17中所示。从图4-17中的页表可知,页号3对应内存的10#块。(6)内存块表:操作系统管理整个内存,它必须知道物理存储的情况,即哪些块已经分出去了,哪些块还是空闲的,总共有多少块,等等。第第4 4章章 存储器管理存储器管理 4
20、.4.2 分页系统中的地址映射 通常,页表都放在内存中。当进程要访问某个逻辑地址中的数据时,分页地址映像硬件自动按页面大小将CPU得到的有效地址(相对地址)分成两部分:页号和页内地址(p,d)。如图4-16所示。分页系统的地址转换机构如图4-18所示。第第4 4章章 存储器管理存储器管理 图4-18 分页中的地址转换过程 第第4 4章章 存储器管理存储器管理 4.4.3 快表和页表构造 1.快表 在内存中放置页表也带来存取速度下降的矛盾。因为存取一个数据(或一条指令)至少要访问两次内存:一次是访问页表,确定存取对象的物理地址;另一次是根据这个物理地址存取数据(或指令)。第第4 4章章 存储器管
21、理存储器管理 解决这个问题的常用办法是使用专用的、高速小容量的联想存储器(TLB,Translation Lookaside Buffer),每个联想存储器包括两个部分:键号和值,键号是当前进程正在使用的某个页面号,值是该页面所对应的物理块号。图4-19示出带有快表的分页系统中地址转换过程。第第4 4章章 存储器管理存储器管理 图4-19 利用快表实现地址转换 第第4 4章章 存储器管理存储器管理 2.页表构造 1)多级页表 在上面介绍中每个进程只用一个页表来实现从逻辑地址到物理地址的转换。在逻辑地址空间较小的情况下这是可行的。但现代大多数计算机系统都支持非常大的地址空间,如232264,此时
22、若只用一级页表的话,就使得页表很大。两级页表方式下逻辑地址结构如图4-20所示。第第4 4章章 存储器管理存储器管理 图4-20 两级页表的地址结构 第第4 4章章 存储器管理存储器管理 具有两级页表结构的系统中地址转换的方法是:利用外层页号p1检索外层页表,从中找到相应内层页表的基址;再利用p2作为该内层页表的索引,找到该页面在内存的块号;用该块号和页内地址d拼接起来就形成访问内存的物理地址了,如图4-21所示。第第4 4章章 存储器管理存储器管理 图4-21 具有两级页表的地址转换机构 第第4 4章章 存储器管理存储器管理 外层页表要有242项,即244字节。为此,把外层页表再分页,于是得
23、到三级页表结构。三级页表的地址结构如图4-22所示。第第4 4章章 存储器管理存储器管理 图4-22 三级页表的地址结构 第第4 4章章 存储器管理存储器管理 2)倒置页表 上述进程的页表都是以页号为索引去搜索页表,即页表是按虚拟地址排序的。随着64位虚拟地址空间在处理器上的应用,使得内存空间显得很小。在此情况下,按逻辑页号为序构造页表,则页表会非常大。为了减少页表占用过多内存空间,可以采用倒置页表(Inverted Page Table)。倒置页表的构造恰与普通页表相反,它是按内存块号排序,每个内存块占有一个表项。每个表项包括存放在该内存块中页面的虚拟页号和拥有该页面的进程标识符。这样,系统
24、中只有一个页表,每个内存块对应惟一的表项。图4-23示出倒置页表的操作过程。第第4 4章章 存储器管理存储器管理 图4-23 倒置页表第第4 4章章 存储器管理存储器管理 4.4.4 页的共享和保护 在多道程序系统中,数据共享很重要。尤其在一个大型分时系统中,往往有若干用户同时运行相同的程序(如编辑程序、编译程序)。很显然,更有效的办法是共享页面,避免同时在内存中有同一页面的两个副本。共享的方法是使这些相关进程的逻辑空间中的页面指向相同的内存块(该块中放有共享程序或数据)。图4-24示出了三个进程共享5#内存块中文本数据的情况。第第4 4章章 存储器管理存储器管理 图4-24 页面的共享 第第
25、4 4章章 存储器管理存储器管理 4.5 分分 段段 技技 术术 4.5.1 分段存储管理的基本概念 1.分段 通常,一个用户程序是由若干相对独立的部分组成的,各自完成不同的功能。如上所述,为了编程和使用的方便,我们希望把自己的程序按照逻辑关系加以组织,即划分成若干段,并按照这些段来分配内存。所以,段是一组逻辑信息的集合。例如,有主程序段MAIN、子程序段P、数据段D和栈段S等。如图4-25所示。第第4 4章章 存储器管理存储器管理 图4-25 分段地址空间 第第4 4章章 存储器管理存储器管理 2.程序的地址结构 由于整个作业的地址空间分成多个段,所以,逻辑地址要用两个成分来表示:段号s和段
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 操作系统 教程 Linux 实例 分析 孟庆昌第 存储器
限制150内