【精品】主存(可编辑).ppt
《【精品】主存(可编辑).ppt》由会员分享,可在线阅读,更多相关《【精品】主存(可编辑).ppt(118页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、主存管理教学内容教学内容5.4.1 存储器管理概述5.4.2 连续分配存储管理方式5.4.3 分页存储管理方式5.4.4 分段存储管理方式5.4.5 虚拟存储器的基本概念5.4.6 请求分页5.4.7 请求分段存储管理5.4.8 LINUX系统的内存管理方法 本章小结24.1 存储器管理概述存储器管理概述 4.1.1 存储器的层次存储器的层次图4.1所示就是存储器的体系结构。高速缓冲存储器高速缓冲存储器主存储器主存储器辅助存储器辅助存储器存存储储容容量量递递增增存存取取速速度度递递增增图图4.1 多级存储器体系示意图多级存储器体系示意图34.1.2 用户程序的处理过程用户程序的处理过程用户程序
2、处理分以下几个阶段:(1)编译。由编译程序将用户源代码编译成若干个目标模块。(2)链接。有链接程序将编译后形成的目标代码以及它们所需的库函数,链接在一起,形成一个装入模块。(3)装入。有装入程序将装入模块装入内存。处理过程示意图见4.24编编译译程程序序产产生生的目标模块的目标模块库函数库函数目标模目标模块块1目标目标模块模块2链接程序链接程序装入模块装入模块装入程序装入程序图图.2 对用户程序的处理过程对用户程序的处理过程5(2)可重定位装入方式)可重定位装入方式 又称静态重定位静态重定位。是在程序执行之前,由操作系统的重定位装入程序完成。一般用于多道程序环境中,编译程序不能预知所编译的目标
3、模块在内存什么地方。重定位程序根据装入程序的内存起始地址,直接修改所涉及到的逻辑地址,将内存的起始地址加上逻辑地址得到正确的内存地址。8100001200013500360Load 1,350015000内存空间020003500360Load 1,35005000作业地址空间图图4.3 作业装入内存时的情况作业装入内存时的情况9(3)动态运行时的装入方式)动态运行时的装入方式 又称动态重定位动态重定位。是在程序执行期间进行的。一般说来,这种转换有专门的硬件机构来完成,通常采用一个重定位寄存器,每次进行存储访问时,对取出的逻辑地址加上重定位寄存器的内容,形成正确的内存地址。如图4.4所示.10
4、100001200013500360Load 1,350015000内存空间物理地址10000350013500+图图4.4 采用动态重定位时内存空间及地址重定位示意图采用动态重定位时内存空间及地址重定位示意图114目标程序链接目标程序链接 链接程序的功能,是将经过编译或汇编后得到的一组目标模块以及它们所需要的库函数,装配成一个完整的装入模块。实现链接的方法有三种:静态链接、装入时动态链接和运行时动态链接。(1)静态链接)静态链接 设编译后得到的三个目标模块A、B、C,它们的长度分别为L、M和N。程序链接示意图如图4.5所示。需要完成的工作是对相对地址进行修改,同时变换外部调用符号,将每个CA
5、LL语句改为跳转到某个相对地址,从而形成一个完整的装入模块,又称可执行文件可执行文件。通常不再拆开,运行时可直接装入内存。这种事先进行链接,以后不再拆开的方式称为静态链接。120L-1模块模块ACALL BReturn;模块模块BCALL CReturn;模块模块CReturn;0M-1N-10目标模块目标模块装入模块装入模块0L-1模块模块AJSR“L”Return;模块模块BJSR”L+M”Return模块模块CReturnLL+M-1L+ML+M+N-1图图4.5 程序链接示意图程序链接示意图13(2)装入时动态链接)装入时动态链接 用户源程序经编译后得到目标模块,是在装入内存时边装入边
6、链接的。即在装入一个目标模块时,若发生一个外部模块调用时,将引起装入程序去找相应的外部目标模块,并将它装入内存。(3)运行时动态链接)运行时动态链接 装入时进行的链接虽然可以将整个模块装入到内存的任何地方,但装入模块的结构是静态的。在程序执行期间装入模块是不可改变的,因为无法预知本次要运行哪个模块,只能将所有可能要运行的模块,在装入时全部链接在一起,使得每次执行的模块都相同。这样效率很低,因此采用运行时动态链接。在这种链接方式中,可将某些目标模块的链接,推迟到执行时才进行。即在执行过程中,若发现一个被调用模块尚未装入内存时,由OS去找该模块,将它装入内存,并把它链接到调用模块上。144.2连续
7、分配存储管理方式连续分配存储管理方式 连续分配是指为一个用户程序分配一个连续的内存空间,连续分配有两种:单道程序的连续分配和多道程序的连续分配。多道程序的连续分配又称为分区分配方分区分配方式式,它包括固定分区、动态分区和动态重定位分区三种。下面就是对各种连续存储管理的研究。154.2.1 单道程序的连续分配单道程序的连续分配 这是一种最简单的存储方式,只能用于单用户、单任务的操作系统。在这种存储方式中,内存分为两个分区:系统区和用户区。1系统区。仅供操作系统使用,一般驻留在低址部分,其中包括中断向量。162用户区用户区 操作系统以外的全部空间。其结构图如图4.6所示。操作系统操作系统用户程序用
8、户程序0a+1na图图4.6所示所示17 为了避免用户程序执行时访问了操作系统所占空间,应将用户程序的执行严格控制在用户区域。称之为存储保护存储保护,保护措施主要是由硬件实现。硬件提供界地址寄存器和越界检查机构。将操作系统所在空间的下界a存放在界地址寄存器中,用户程序执行时,每访问一次主存,越界检查机构便将访问主存的地址和界地址寄存器的值进行比较,若出界则报地址错。18界限寄存器界限寄存器重定位寄存器重定位寄存器CPU+逻逻 辑辑 地地址址物物 理理 地地址址地地 址址错错内存内存图图4.7 地址映射和地址保护地址映射和地址保护194.2.2 固定分区分配方式固定分区分配方式 固定分区管理比较
9、简单,本节仅以举例的方式说明其原理。设一个容量为32k的实际内存,分割成如下若干区域,如图所示。操作系统10k小作业4k中等作业区6k大作业区12k 这种分区分配方式在整个系统运行期间是不变的。在这种分区分配方式在整个系统运行期间是不变的。在这种情况下,当为一个作业分配空间时,应该先判定它分这种情况下,当为一个作业分配空间时,应该先判定它分在哪个区域比较合适,然后再进行分配。在哪个区域比较合适,然后再进行分配。204.2.3 动态分区分配动态分区分配动态分区分配需要解决的问题有三个:(1)分区分配中所用的数据结构。(2)分区的分配算法。(3)分区的分配与回收操作。1分区分配中的数据结构。要实现
10、分区分配,系统必须配置相应的数据结构,用来记录内存的使用情况。为分配提供依据。常用的数据结构有两种:21(1)空闲分区表)空闲分区表其表的结构表所示:其表的结构表所示:序号序号分区大小分区大小(kb)分区始址分区始址(k)状状态态16444可用可用224132可用可用340210可用可用430270可用可用522(2)空闲分区链)空闲分区链 为了实现对空闲分区的分配与链接,在每个分区的起始部分,设置一些用于控制分区分配的信息,以及用于链接各分区的前向指针:在分区尾部则设置一后向指针;然后形成一个双向链。其结构如图4.8所示。如图4.8 空闲链结构23二、分区分配算法二、分区分配算法 为把一个新
11、作业装入内存,须按照一定的分配算法,从空闲区表或空闲分区链中,选一个分区分配给该作业,目前常用以下三种分配算法:1首次适应算法 此算法可以在上述两种数据结构上实施,但通常要求自由块按始地址从小到大的顺序排序。当须分配空间时,总是从头开始查找,直到找到一个符合要求的自由块从头开始查找,直到找到一个符合要求的自由块。242最佳适应法最佳适应法 可以在上述两种数据结构上实施,但要求按自由块从小到大的顺序排序。分配从头开始查找,即从小端到大端的方向查找。直到找到第一个满足要求的自由块。显然,所能找到的自由块能满足要求的最小块。3最坏适应算法最坏适应算法 数据结构和排序方法如上。当分配空间时不是从小往大
12、查,而是从大往小查,因此,所找到的自由块是所有自由块中最大者。25三、分区分配和回收三、分区分配和回收在动态分区存储管理方式中,主要操作是分配和回收内存。1分配内存 首先,系统利用某钟算法,从空闲区表中找到所需的分区。设请求的分区的大小为u.size,表中每个分区的大小可表示为m.size。若m.size-u.sizesize(size是事先规定的不再切割的剩余分区的大小),说明多余部分太小,可不再切割,将整个分区分给请求者;否则,从该分区中划分出与请求的大小相等的内存空间分配出去,余下的部分仍留在空闲分区链或空闲分区表中。最后,将分配的首地址返回给调用者。262回收内存回收内存 回收分区的主
13、要工作是:首先检查是否有临接的空闲区是否有临接的空闲区,如有则合并,使之成为一个连续的空闲区,而不是许多零散的小的部分;之后,修改有关的分区描述信息。一个回收分区邻接空闲区的情况有四种:如图4.9所示。第一种情况第一种情况是回收分区r上邻的一个空闲区,此时应合并成为一个连续的空闲区,其始址为r上邻的空闲区始址,而大小为二者之和。第二种情况第二种情况与r下面的空闲区相邻。直接合并。第三种情况第三种情况是与上下空闲区相邻。将三个区域合并成一个连续的空闲区。第四种情况第四种情况不和任何空闲区相邻,应建立一个新的空闲区,并加到自由主存队列中。27fr作业1作业2rf2f1rf2作业1r作业2回收分区r
14、上邻的空闲区回收分区r下邻的空闲区回收分区r上、下邻的空闲区回收分区r单独为空闲区图图4.9内存回收内存回收时时的情况的情况284.2.4 可重定位分区可重定位分区1紧凑 在连续分配方式中,必须把一个系统程序或用户程序,装入到连续的内存空间中,如果在系统中若干个小的分区,其总容量大于要装入的程序,但由于它们不相连接,使该程序不能装入内存。例如图4.9(a)所示.,紧凑后如图4.9(b)所示。29操作系统用户程序1用户程序3用户程序610kB30kB用户程序914kB26kB操作系统用户程序1用户程序3用户程序6用户程序9a紧凑前b紧凑后图4.9 紧凑的示意3080KB2动态重定位动态重定位 在
15、该方式中,将程序中的相对地址转换为物理地址的工作被推迟到程序指令真正要执行时进行。因此,允许作业在运行过程中移动的技术,必须获得硬件地址变换机构的支持。即在系统增加一个重定位寄存器,用它来装入程序在内存中的起始地址。程序在执行时,真正访问的内存地址是相对地址与重定位寄存器中地址相加而形成的。31Load1,2500365010025005000100002500Load1,250036510000101001250015000+作业J相对地址重定位寄存器处理机一侧主存存储器一侧图图 4-10 动态重定位示意动态重定位示意323动态重定位分区分配算法动态重定位分区分配算法 动态重定位分区分配算法
16、,与动态分区分配算法基本相同;差别仅在于:在这种分配算法中,增加了增加了“紧凑紧凑”功能,通常是找不到足够大的空闲区来满足用户的需要,进行“紧凑”。然后寻找合适的内存空间。334.3 分页存储管理方式分页存储管理方式 4.3.1页式系统应解决的问题页式系统应解决的问题 采用“紧凑”技术解决按区分配中存在的碎片问题,是以花费CPU时间为代价换来的。为了寻找解决碎片问题的新途径,人们很容易想到让程序不连续存放,例如,有一个作业要求投入运行,其程序的地址空间是3KB,而主存当前只有两个各为1KB和2KB的空闲区。显然各空闲区的大小比该程序的地址空间小,而总和却相同。这样就考虑将程序分开存放。放在不相
17、邻的两个区域中。这正是分页的思想分页的思想。在分页存储管理中,主存被分成一系列的块,程序的地址空间被分成一系列的页面。然后将页面存放在主存块中。为了便于实现动态地址变换,一般主存主存的块和页面大小相等并为的块和页面大小相等并为2的幂次的幂次。344.3.2分页存储管理的基本方法分页存储管理的基本方法一、页面和物理块一、页面和物理块 在分页存储管理中,将一个进程的逻辑地址空间分成若干个相等的片。称为页面或页页面或页。相应的,内存空间也分成与页相同的大小的若干个存储块,或称为物理块或页框物理块或页框。为它们从0开始依次编号。如图4.11所示。为进程分配内存时,以块为单位将进程中若干页分别装入不相接
18、的块中。由于进程的最后一页经常装不满一块,而形成不可利用的碎片称为“页内页内碎片碎片”。二、页表二、页表 在分页系统中,允许进程的每一页离散地存储在内存的任一物理块中,但系统应能保证进程的正确运行。即能在内存中找到每个页面所对应的物理块。为此系统又为每个进程建立一张页面映象表,简称页表页表。在进程地址空间的所有页内(0n),依次在页表中有一页表项,其中记录了相应页在内存中对应的物理块。见图的中间部分。可见页表的作用实现了从页号到物理块号的地址映象。即使在简单的分页系统中,也常在页表的表项中设置一存取控制字。用于对存储块中内容进行保护。35用户程序0页1页2页3页4页5页n页页号0页1页2页3页
19、4页5页n页2页3页6页8页9页页号块号内存图4-11页表36三、虚地址结构三、虚地址结构 如何利用页表进行地址变换,这和计算机所采用的地址结构有关。而地址结构又与所选择的页面尺寸有关。比如,当CPU给出的虚地址长度为32位,页面的大小为4kb时,在分区系统中的地址格式如图4.12所示。页号页内偏移量如图4-12虚地址结构页号页内偏移量37四、页式地址变换四、页式地址变换 下面图4.12所示作业2程序中的一条指令的执行过程,来说明页式系统中的地址变换过程。程序的地址空间中第100号单元处有一条指令为“mov r1,2500”。这条指令在主存中的实际位置为2148号单元(第2块块100号单元),
20、而这条指令要取的数123在程序的地址空间中位于2500号单元(第2页页的452号单元)处。它在主存中存于7620号单元(第7块块452号单元)。假设页面大小为1kb,机器的地址长度为16位。381KB2KB3KB-10mov 1,2500123mov 1,2500作业2的进程在CPU上运行 0000100111000100091015mov 1,2500123页号p页内偏移量02KB4KB7KB256KB-1+页表始址寄存器0001110111000100091015p=2w=452页内偏移量页号p012247页号块号图4.12 页式系统地址变换结构39 当作业2的相应进程在CPU上运行时,操
21、作系统负责把该作业的页表在主存中的起始地址(a)送到页表起始地址寄存器中。以便在进程运行中进行地址变换时由它控制找到该作业的页表。当作业2的程序执行到指令“mov r1,2500”时,CPU给出的操作数地址为2500,首先由分页机构自动把它分成两部分,得到页号p=2,页内相对位移w=452。然后,根据页表始址寄存器指示的页表始地址,以页号为索引,找到第2页所对应的块号7。然后,将块号7和页内位移量w拼接在一起,就形成了访问主存的物理地址7620。这正是所取数123所在主存的实际位置。40五、快表五、快表 有一些系统将部分页表放在快速存储器中,其余仍放在主存中。存放页表部分内容的快速存储器快速存
22、储器称相联存储器,也称为联想存储器联想存储器。联想存储器中存放的部分页表称为“快表快表”。它的格式如图4.13所示。这样的联想存储器一般由8个16个单元组成。它们用来存放正在运行进程的当前最常用的页号和它相应的块号,并具有进行查找的能力,和通常的执行过程一样,只要访问一次主存,就可以取出指令或存取数据。如果所需要查的页号和联想存储器中所有的页号不匹配,则地址变换过程还得通过主存中的页表进行。采用联想存储器和主存中页表相结合的分页地址变换过程如图4.13所示。41页表始址寄存器a+ba+pa块号联想存储器不匹配时所有页表在主存中PWpbbw分页机构物理地址联想存储器图图4-13 带带有快表的分有
23、快表的分页页地址地址变换变换424.3.3 两级和多级页表两级和多级页表一、两级页表 针对难以找到大的存储空间以存放页表的问题,可利用页表进行分页的办法,使每个页面的大小与内存物理块的大小相同,并为它们编号。可以离散地将各个页面分别放在不同的物理块中,同样为每个离散的页面建立一张页表,称为外层页表外层页表。在每个页表项中记录物理块号。如图4.14所示。4310230121640121141151023第0页表第1页表第n页表012n101110781742外部页表01214681023012345671141151468内存空间图图4-14 带带有快表的分有快表的分页页地址地址变换变换44 由
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 精品 主存 编辑
限制150内