【精品】主存(可编辑).ppt

上传人:豆**** 文档编号:62817222 上传时间:2022-11-22 格式:PPT 页数:118 大小:966.50KB
返回 下载 相关 举报
【精品】主存(可编辑).ppt_第1页
第1页 / 共118页
【精品】主存(可编辑).ppt_第2页
第2页 / 共118页
点击查看更多>>
资源描述

《【精品】主存(可编辑).ppt》由会员分享,可在线阅读,更多相关《【精品】主存(可编辑).ppt(118页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

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 由

24、图可以看出,在页表的每个表项中存放的是进程的某页在内存中的物理块号,如第0#页存放在1号物理块中,1#页存放在4#物理块中。而在外层页表的每个页表项中,所存放的是某页表分页的首址。如0#页表存放在第1011#物理块中。我们可以利用外层页表和页表这两级页表,来实现从进程的逻辑地址到内存地址的变换。45外部页表寄存器外部页号外部页内地址页内地址p1p2d+bd外部页表 页表 物理地址 图4-15 具有两级页表的地址变换机构46 为了地址变换实现,在地址机构中同样需要设置一个外层页表寄存器,用于存放外层页表的始址。并利用逻辑地址的外层页号,作为外层页表的索引。从中找到指定页表分页的首址。再利用P2作

25、为指定页表分页的索引,找到指定的页表项。其中即含有该页在内存中的物理块号。用该块号和页内地址d即可构成访问内存的物理地址。图4.16即为两级页表的地址变换机构。47二、多级页表结构二、多级页表结构 对于32位的机器,采用两级页表的结构是合适的。但对于64位的机器,对于二级页表是否合适,需要简单的分析。如果页面大小仍采用4KB即212B,那么还剩52位,假定仍按物理块的大小(210位)来划分页表,则将所有剩余的42位用于外层页号。此时在外层页表中可能有4096G个页表项,即使按220位来划分页表。此时,每个页表分页将达1MB;外层页表仍有4G个页表项。要占用16GB的连续内存空间。可见,不论怎样

26、划分,其结果都是不能接受的。484.4 分段存储管理方式4.4.1分段系统的基本原理一、分段 在分段存储管理方式中,段是一组逻辑信息集合段是一组逻辑信息集合。例如,把作业按逻辑关系加以组织,划分成若干段,并按这些段来分配内存。这些段是主程序段MAIN,子程序段,数据段,和堆栈段等。每个段都有自己的名字和长度,为了实现简单,通常用一个段号来代替段名。每个段从0开始编号,并采用一段连续的地址空间,各段长度不同。49 分段系统中的逻辑地址逻辑地址由段号s和段内偏移量w组成。其地址结构如图所示。段号s段内偏移量w0151632图4-16分段系统中的地址结构50二、分页和分段的主要区别二、分页和分段的主

27、要区别分页和分段存储管理系统虽然有很多地方相似,(1)页是信息的物理单位页是信息的物理单位,分页是为了实现离散分配,提高内存利用率,便于系统管理;而段是信息的逻辑单位段是信息的逻辑单位,每一段在逻辑上是相对完整的一组信息,如一个函数,一个过程,一个数组,分段是为了满足用户的需要。(2)分页式存储管理的作业的地址空间是一维的一维的,地址从0开始编号一直到末尾,而分段式存储管理作业地址空间是二维的二维的,要识别一个地址,除给了段内地址外,还必须给出段号。(3)页的长度由系统决定,是等长的等长的。而段的长度是由具有由具有相对完整意义上的信息长度决定相对完整意义上的信息长度决定。51三、基本原理三、基

28、本原理 所谓分段管理分段管理,就是管理由若干段组成的作业,并且按分段来进行存储分配,由于分段的作业地址空间是二维的,所以分段的关键在于如何把分段的地址空间变成一维的地址空间。和分页管理一样,可以采用动态重定位技术进行地址转换。起初系统作业建立一张段表,每个表目至少有4个数据:段号,段长,内存始址和存取控制。其中,段长指明段的大小,内存始址指明该段在内存中的位置,存取控制说明对该段访问的限制(RWX)。段地址转换和分页地址转换的过程基本相同,其大致过程如图4.17所示:52LBsd+d+页表长度页表始址0123段表b0213块号b块内地址页 表段表寄存器图4-21 段页式系统中的地址转换机构64

29、段页式系统中的地址转换过程大致如下:(1)首先利用段号s,将它与段长TL进行比较,若s页表长度?CPU检索快表 页表项在快表中?访问页表页在内存?N缺页中段Y修改快表修改访问位和修改位形成物理地址地址变换结束YNYN越界中断图4-23 请求分页系统的地址变换过程824.6.2.页面置换算法页面置换算法1先进先出页面置换算法(先进先出页面置换算法(FIFO)FIFO,即先进先出算法,这是一种最简单的置换算法。当需要置换一个页面时,总是置换最老即进入内存时间最长的那个页面。FIFO算法有可能产生异常现象。所谓异常异常,是指在,是指在相同的页面走向下当分给某一进程的页面数增多时,页面相同的页面走向下

30、当分给某一进程的页面数增多时,页面失效不但不降,反而增加这种情况失效不但不降,反而增加这种情况。在一个请求分页存储管理系统中,一个作业的页面走向为4、3、2、1、4、3、5、4、3、2、1、5,当分配给该作业的物理块数分别为3时,试计算采用FIFO算法时的缺页率(假设开始执行时主存中没有页面),并将所得结果填表。831先进先出页面置换算法(先进先出页面置换算法(FIFO)走向432143543215块14444555222块2333344411块322223335缺页缺 缺 缺 缺缺 缺 缺 缺 缺 缺1先进先出页面置换算法(先进先出页面置换算法(FIFO)走走向向432143543215块块

31、14444555511块块2333344445块块322223333块块41111222缺缺页页缺缺缺缺缺缺缺缺缺缺缺缺缺缺缺缺缺缺缺缺2最近最久未使用页面置换算法(最近最久未使用页面置换算法(LRU)算法)算法该算法在出现缺页中断时,总是选择最近一段时间内,最长时间没有被访问过的页面,将它唤出外存。862.最近最久未使用页面置换算法(最近最久未使用页面置换算法(LRU)算法)算法走向432143543215块14441115222块2333444411块322233335缺页缺 缺 缺 缺 缺 缺 缺缺 缺 缺3最佳置换算法(最佳置换算法(OPT)最佳置换算法是一种理论上的理想算法。采用最佳

32、置最佳置换算法是一种理论上的理想算法。采用最佳置换算法可以保证最低的缺页率。换算法可以保证最低的缺页率。883最佳置换算法(最佳置换算法(OPT)走向432143543215块14444422块2333331块321555缺页缺 缺 缺 缺 缺 缺 缺缺 缺4.7 请求分段存储管理请求分段存储管理4.7.1请求分段的实现请求分段的实现 1段表机制段表机制 请求分段式管理中,用的主要数据结构是段表。段表结构如下:段名段长段的基址存取方式访问字段A修改字段M存在位P增补位外存起址90 在段表项中,除了段名,段长,段在内存的起始地址外,还增加了以下几项:(1)存取方式。用于标识本分段的存取属性是执行

33、、只读还是可读可写。(2)访问字段A。其含义与请求分段的相应字段相同。用于记录被访问段的频率。(3)修改位M。表示该页进入内存后是否被修改过。(4)存在位P。指示本段是否已调入内存。(5)增补位。表示该段在运行过程中是否动态增长。(6)外存始址。指示本段在外存中的起始地址,即起始盘块号。913缺段中断机构 在请求分段系统中,采用的是请求调段策略。每当进程要访问的段不在内存时,就产生缺页中断。缺段中断的处理:(1)判断虚段S不在内存(2)让请求进程处于阻塞状态(3)判断一下内存中是否有空闲区域(4)若有空闲区域,则从外存读入段S,修改段表和空闲区域表,唤醒请求进程,结束。(5)若没有空闲区域,判

34、总的空闲区是否满足,若满足,则空闲区合并,调入段S,修改段表。若总的空闲区不够,则淘汰一个或几个段,形成一个合适的空闲区,再调入段S。缺段中断流程图如4.35所示:92形成合适的空区虚段s不在内存阻塞请求进程 从内存读入段S容量满足吗?内存有空闲区吗?修改段表及内存空区链唤醒请求进程返回YNYN淘汰合适的段形成空区4-35 缺段中断流程图933地址变换机构 请求分段系统的地址变换机构,是在分段系统地址变换的基础上形成的。当所要访问的段不在内存时。将所缺的段调入内存,并修改段表,再利用段表进行地址变换。变换过程如下:(1)有一个访问地址格式为S|w,其中S为段,w为偏移量。(2)若w的值大于段长

35、,则进行越界中断处理。(3)若w的值小于段长,则检查是否是合法的存取方式,不是,则进行分段保护中断处理。(4)若其它两种情况合法,就判断S是否在主存,在,则修改访问位,形成主存的地址段的始址加上偏移量。94地址变换机构流程图如下所示地址变换机构流程图如下所示:Yw小于等于段长?NY访问s|w符合存取方式?分段越界中断处理N分段保护中断处理段 S在主存?YN缺段中段处理修改访问字位,如写访问,置1形成访问主存地址返回图4-35请求分段系统的地址变换过程954.7.2共享与保护 分段存储管理便于实现分段的共享和保护。也简单的介绍了实现分段共享的方法。分段共享采用以下几种方法。1段表段表 为了实现分

36、段共享,可在系统中配置一张段表,所有的共享段在段表中占一项。段表项的结构如图4-24所示。96段名段长内存始址状态外存始址共享进程计数COUNT状态进程名进程号段号存储控制图 4-24 共享段表97(1)共享进程计熟count 共享段仅为一个进程所需要。当进程不再需要该段时,可释放该段。并收回该段所占居的内存空间。为了记录有多少个进程需要共享该分段,特设置了一个整型变量count。(2)存取控制字段 对于一个共享段,应给不同的进程以不同的存取权限。例如,对于文件主,通常允许它读和写;而对其它进程,只允许读或执行。(3)段号 对于同一个共享段,不同的进程可以使用不同的段号去共享该段。982共享段

37、的分配与回收(1)共享段的分配 由于共享段是供多个进程共享,因此,对共享段的内存分配方式和非共享段的内存分配方式是一样的。在分配共享段时,对第一个使用该段的进程,系统将该共享段调入内存,为共享段加一表项,填写有关表项,把 count加1.当其它的段想共享该段时,不再需要调入内存,只须加一表项,填入该共享段的物理地址;在共享段的段表中,填上进程名,存取控制,再执行count=count+1 操作,表明正有两个进程共享该段。(2)共享段的回收 当共享此段的某进程不再需要它时,该将该段释放。包括取消在该进程段表中共享该段所对应的表项。以及执行count:=count-1操作。若减1结果为0,则有该系

38、统收回该共享段的物理地址。993分段保护 在分段系统中,由于每个分段是独立的,因此比较容易实现信息保护。目前,采用以下几种方式保护信息。(1)越界检查 在段表寄存器中,存放段表长度信息;同样,在段表中也为每个段表设置段长字段,将逻辑地址空间的段号和段表长度进行比较,若等于或大于段表长度,则发出越界中断信号,其次还要检查段内地址是否等于或大于段长。若大于段长,将产生越界中断信号,从而保证进程有自己的地址空间。100(2)存取控制检查 在段表的每个表项中,设置一个存取控制字段,通常的访问方式有(a)只读。只允许程序对该段中的程序和数据进行访问。(b)只执行。只允许执行,但不允许读写。(c)读/写。

39、允许程序对该段进行读写控制。不同的访问对象,赋予不同的权限。101(3)环保护机构 它是一种较完善的保护机构。在该机制中规定:低编号的环具有较高的优先权。OS居于0环内;某些重要的系统软件占据中间环。而一般的应用程序位于外环。程序访问和调用的规则遵循:(a)一个程序可以访问驻留在相同环或较低环中的数据。(b)一个程序可以调用驻留在相同环或高特权环中的服务。1024.8 Linux系统的内存管理方法4.8.1 Linux的分页管理机制 在Linux中,每个用户进程都可以访问4GB的线性虚拟内存空间。其中从0到 3GB的虚拟地址空间是用户空间,用户进程可以直接对其进行访问。从3GB到4GB的虚拟内

40、存地址空间为内核态空间,存放仅供内核态访问的代码和数据,用户态进程不可访问。所有的进程从3GB到4GB 的虚拟空间是一样的,有同样的页目录项,同样的页表,对应同样的物理内存段。Linux以此方式让内核态进程共享代码段和数据段。103内核态虚拟空间从3GB到3GB+4MB的一段,被映射到物理空间0到4MB。Linux 采用“按需调页”技术管理虚拟内存。标准Linux的虚存页表应为三级页表,依次为页目录(Pgd,page Directory)、中间页目录(PMD,page Middlie Directory)和页表(PTE,PageTable)。1044.8.2虚存段的组织与管理虚存段的组织与管理

41、 用户进程实际可申请的虚存空间为0至3GB。在用户进程创建时,已由系统调用fork()的执行函数do_fork()将内核的代码段和数据段映射到3GB以后的虚存空间,供内核态进程访问。所有进程的3GB到4GB的虚存空间的映象都是相同的。以此方式共享代码段和数据段。1054.8.3内存的共享和保护Linux中内存共享以页表的形式实现,共享该页的各进程的页表表项直接指向共享页。这种结构不需要设立共享页表,节约内存的占用,但效率较低。当共享页状态发生变化时,共享该页的各进程的页表均需要修改,要多次访问页表。1064.8.4物理空间管理物理空间管理 尽管Linux采用虚拟存储管理策略,有些申请仍然需要直

42、接分配物理空间。例如,为刚创建的进程分配页目录,为装入进程的代码段分配空间,为I/O操作准备缓冲区等等。物理内存以页帧为单位,页帧的长度固定,等于页长,对于INTEL CPU缺省为4KB字节。Linux对物理内存的管理通过mem_map表描述。mem_map在系统初始化时,由free_area_init()函数创建。1074.8.5空闲物理内存管理空闲物理内存管理 在物理内存低端,紧跟mem_map表的bitmap表以位示图方式记录了所有物理内存的空闲情况。与men_map一样,bitmap表在系统初始化时有free_area_init()函数创建。1084.8.64.8.6态内内核存的申请与

43、释放态内内核存的申请与释放 内核态内存是用来存放Linux内核系统数据结构的内存区域,处于进程虚拟空间的3GB至4GB范围内。内核态内存的分配和释放以块为单位。4.8.7 用户态内存的申请和释放用户态内存的申请和释放 Linux用kmalloc()函数和kfree()函数提供内核内存申请、释放的接口。它还实现另一种虚拟空间的申请、释放界面,就是vmalloc()和vfree()。由vmalloc()分配的存储空间在进程的虚拟空间时连续的,但物理页帧不是连续的。1104.8.8 4.8.8 交换空间交换空间当内存太小时,操作系统采用交换的方式。Linux采用两种方式保存换出的页面。一种是整个块设

44、备,如磁盘的一个分区,称做交换设备。另一种用文件系统的固定长度的文件,称做交换文件,它们统称为交换空间。尽管交换空间有两种不同的方式,但它们的内部格式是一致的。一个交换空间最多可容纳32687个页面。1114.8.9 页交换进程和页面换出页交换进程和页面换出 当物理页面不够时,Linux存储管理系统必须释放部分物理页面,将它们的内容写到交换空间。实现此功能的是内核态交换程序kswapd。kswapd.属于一种特殊的进程,称为内核态进程。1124.8.10 缺页中断和页面换入缺页中断和页面换入 磁盘中的可执行文件映像(imag)一旦被映射到一个进程的虚拟空间,它就可以开始执行。1134.8.11

45、 存储管理系统的缓冲机制存储管理系统的缓冲机制1swap cache如果以前被调出到交换空间的页面由于进程再次被访问而调入物理内存,只要该页调入后没有被修改过,那么它的内容与交换空间中的内容是一样的。在这种情况下,交换空间中的备份还是有效的。因此在该页再度换出时,就没有必要执行写操作。Linux采用swap_cache表描述的swap cache来实现这种思想。Swap cache实质上是关于页表项的一个列表,swap_cache表位于men_map表之前。1142Page CacheLinux的page cache的作用是加快对磁盘的访问速度.文件被映射到内存中,每次读取一页.而这些页就保存

46、于page cache中。每当需要读取文件的一页时,总是首先通过page cache读取。如果所需页面在page cache中,就返回指向表示该页面的mem-map-t的指针。否则必须从文件系统中调入。接着,Linux申请一物理页,将该页从磁盘文件中调入内存。115本章小结本章小结 存储管理在操作系统中占重要的地位,存储管理的目的是为了方便用户和提高内存利用率。存储管理的基本任务是管理内存空间;进行虚拟地址到物理地址的转换;实现内存的逻辑扩充;完成内存的共享和保护。随着计算机技术的逐步发展,存储器的种类越来越多,按照其容量、存取速度以及在操作系统中的作用。可分为3级存储器:高速缓存、内存和外存

47、。116存储管理技术各具特点,在存储分配方式上有静态和动态、连续和非连续之分。静态重定位是指在目标程序运行之前就完成了存储分配;在将逻辑地址转换成物理地址时,固定分区采用的是静态重定位,其它采用的是动态重定位。静态重定位是由专门设计的重定位装配程序来完成,而动态重定位是硬件地址转换机构来实现的。117虚拟存储技术是通过请求调入和置换功能,在逻辑上为用户提供了比实际内存容量大的多的存储器。在完成信息共享和保护方面,分区和分页管理均不能实现共享。和段页式管理就能容易实现共享。在进程运行过程中需要进行页面置换时,可采用的页面置换算法有:FIFO算法、OPT算法、LRU算法等。FIFO算法是最容易实现的,但页面置换率较高;OPT仅具有理论价值;LRU是OPT的近似算法,但是实现时要有硬件的支持和软件开销。多数页面置换算法,如最近最久未使用置换算法等是LRU的近似算法。118

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 小学资料

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁