版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、2020/7/4,1,第四章存储器管理(MemoryManagement),存储器是计算机系统的重要组成部分。近年来,虽然内存容量在不断扩大,但内存仍是宝贵资源。如何提高主存储器利用率,并扩充主存,对主存信息实现有效保护是存储器管理主要任务,也是各种不同存储管理方法的目标。,2020/7/4,2,4.1存储器的层次结构,图4.1存储层次结构,2020/7/4,3,寄存器是CPU内的硬件,存取速度非常快,可与CPU执行速度匹配,但是价格昂贵,容量小。内存用来存放进程运行时程序和数据。CPU的控制部件只能从内存中取得指令和数据,数据能够从内存中读取并将它们装入到寄存器,或者是从寄存器存入内存中。内
2、存数据存取速度也很快很难与CPU速度匹配。,2020/7/4,4,快速缓存:将内存中一些经常被访问的信息存放在缓存中,减少访问内存的次数,可大幅度的提高程序的执行速度。有的计算机设置了两级或者多级缓存。紧靠内存的那一级速度最快而容量小。外存:就是硬盘和移动U盘等。对外存的管理属于设备管理的范畴。,2020/7/4,5,4.2程序的装入和链接,将一个用户源程序变为一个可在内存中执行的程序要经过下面的几个步骤:,图4-2对用户程序的处理步骤,2020/7/4,6,逻辑地址(相对地址):相对用户程序模块,以0地址为起始地址的编址方式。物理地址(绝对地址):相对于内存,每一单元有唯一地址的编址方式。地
3、址重定位(Relocation):把相对地址转换成内存中的绝对地址的过程,也叫地址映射(map)。,2020/7/4,7,4.2.1程序的装入一个源程序经过编译和链接之后,将会形成一个装入模块。将一个装入模块装入内存时,可采用下面的三种方式:1绝对装入方式(AbsoluteLoadingMode)它是将装入模块装入到内存中事先指定的位置。它只适用于单道程序环境,不适用于多道程序(为什么?),它的缺点很明显。2静态重定位装入方式(staticRelocationLoadingMode)在装入时,由装入程序对目标程序中的相对地址进行重定位修改,一次完成,(装入时重定位)。,2020/7/4,8,图
4、4-3作业装入内存时的情况,返回,2020/7/4,9,在程序中需要修改的位置称为重定位项。程序装入内存中的起始地址称为重定位因子。由于地址变换是在装入时一次完成,以后不再改变故也叫做静态重定位。静态重定位虽然有无须硬件支持的优点,容易实现,但是也存在明显的缺点:一是程序重定位以后就不能在内存中移动;二是要求程序的存储空间是连续的,不能把程序存储到若干个不连续的区域中。,2020/7/4,10,3动态重定位装入方式在把装入模块装入内存后,并不立即把装入模块中的相对地址转换为绝对地址,而是把这种地址转换推迟到程序真正要执行时才进行。因此,装入内存后的所有地址都仍是相对地址。动态重定位可使装配模块
5、不加任何修改就装入内存,但是它需要硬件重定位寄存器的支持。如图:,2020/7/4,11,重定位寄存器,2020/7/4,12,程序的目标模块在装入内存时,与地址有关的指令都不必进行修改,如在图中LOAD1,300这条指令中仍保持相对地址300。当该模块被操作系统调度到处理机上执行时,操作系统首先把该模块装入的实际起始地址减去目标模块的相对基地址(图中该模块的基地址为0),然后将其差值装入重定位寄存器。,2020/7/4,13,当CPU取一条访问内存的指令时,地址变换硬件逻辑自动将指令中的相对地址与重定位寄存器中的值相加,再根据和值作为内存的绝对地址去访问该单元的数据。由此可见,动态重定位是在
6、指令执行过程中动态进行,这样可以带来两个好处:目标程序装入内存时无需任何修改,所以装入之后再移动也不会影响其正确运行,程序在执行期间可以换入和换出内存,这样可以缓解内存紧张的矛盾,解决了静态重定位不可移动的问题。,2020/7/4,14,不必给程序分配连续的内存空间,可以较好地利用较小的内存块,这便于存储器用紧缩来解决存储器的碎片问题。动态地址再定位的缺点:需要附加的硬件支持,而且实现存储管理的软件算法比较复杂。,2020/7/4,15,4.3连续分配存储方式,计算机对装入内存的程序有两种分配方式:连续分配和离散分配。连续分配:为一个用户程序分配一个连续的内存空间,主要用于6070年代。它又分
7、为二种:单一连续分配方式和分区式分配方式离散分配:将一个用户程序离散的分配到内存空间中去,它有分页和分段两种分配方式。,2020/7/4,16,4.3.1、单一连续分配这是一种最简单的存储管理方式,在内存中只有一道程序,如在8位和16位微机上MS-DOS操作系统。它将内存分为两个区:系统区:仅供操作系统使用,通常设置在内存的低段;用户区:指除系统区以外的全部内存空间,提供给用户使用。,2020/7/4,17,单一连续分区的优点是:简单,适用于单用户、单任务的操作系统(比如CP/M和DOS操作系统),不需要复杂的硬件支持。单一连续分区的缺点是:一个作业运行时要占用整个内存的地址空间,即使很小的程
8、序也是如此,对内存造成了很大的浪费,内存的利用率很低。,2020/7/4,18,4.3.2固定分区(FixedPartitioning)分配固定式分区是在作业装入之前,内存就被划分成若干个分区。划分工作可以由系统管理员完成,也可以由操作系统实现。然而一旦划分完成,在系统运行期间不再重新划分,即分区的个数不可变,分区的大小不可变,所以,固定式分区又称为静态分区。这种分区方式一般将内存的用户区域划分成大小不等的分区(各个分区也可大小相等),以适应不同大小的作业的需要。系统有一张分区说明表,每个表目说明一个分区的大小、起始地址和是否已分配的使用标志。分区说明表和内存分配图如下所示。,2020/7/4
9、,19,图4-4固定分区使用表,改为20K,2020/7/4,20,如果系统使用尺寸相等的分区,那么当系统欲把一个进程装入内存时,系统只要找到一个可用的分区即可。如果系统使用尺寸不等的分区,那么当系统欲把一个进程装入内存时,系统可选用下述两种方案中的一种:保证所选择的分区既能放得下相关进程同时该分区没有被使用的空间最小;仅仅保证所选择的分区能够放得下相关进程即可。,2020/7/4,21,长处:实现简单;系统开销小。不足:因已分配分区存在内零头(InternalFragment)而使存储利用率不高;因分区尺寸固定而使系统无法运行大程序;因分区数目固定而使活动进程的数目受限。,2020/7/4,
10、22,4.3.3动态式分区分配(DynamicPartitioning)动态式分区是指在作业装入内存时,从可用的内存中划出一块连续的区域分配给它,且分区大小正好等于该作业的大小。动态式分区中分区的大小和分区的个数都是可变的,而且是根据作业的大小和多少动态地划分,因此又称为可变式分区。,2020/7/4,23,可变式分区的分配和释放的基本思想是:在分配时,首先找到一个足够大的空闲分区,即这个空闲区的大小比作业要求的要大,系统则将这个空闲分区分成两部分:一部分成为已分配的分区,剩余的部分仍作为空闲区。在回收一个已经运行完的作业所占领的分区时,要检查回收的分区是否与前后空闲的分区相领接,若是,则加以
11、合并,使之成为一个连续的大空间。,2020/7/4,24,2020/7/4,25,2020/7/4,26,分析:会产生外零头(ExternalFragment)。在上图中,如果这个时候进程3执行完了,则将相邻的空闲分区合并,以得到更大的空闲分区,不相邻则不能合并。和固定分区分配比较起来,内存内的分区数目不定,是动态发生改变的,故称为动态分区分配。如果这个时候有一个100K大小的进程进入内存,则会怎么样?如何解决?,2020/7/4,27,1、可变式分区中用到的数据结构管理空闲内存区的数据结构可采用连续线性表格法和链接法。(1)空闲区表形式在系统中设置一张空闲分区表,用于记录每个空闲分区的情况,
12、包括分区的序号、大小、始址和状态,每个空闲分区作为一个表项。,2020/7/4,28,(2)空闲区链形式为了实现对空闲分区的分配和链接,在每个分区的起始部分,设置一些用于控制分区分配的信息(如分区的大小和状态位),以及用于链接其它分区的前向指针;在分区尾部,则设置了一个后向指针,为了检索方便也设置了控制分区分配的信息。然后,通过前、后向指针将所有的分区链接成一个双向链表。,2020/7/4,29,2、分区分配算法(PartitioningPlacementAlgorithm)(1)首次适应算法(FirstFit):从空闲分区表的第一个表目起查找该表,把最先能够满足要求的空闲区分配给作业,这种方
13、法目的在于减少查找时间。为适应这种算法,空闲分区表(空闲区链)中的空闲分区要按地址由低到高进行排序。,2020/7/4,30,(2)循环首次适应算法(next-fit):该算法是首次适应算法的变种。在分配内存空间时,不再每次从表头(链首)开始查找,而是从上次找到的空闲区的下一个空闲区开始查找,直到找到第一个能满足要求的的空闲区为止,并从中划出一块与请求大小相等的内存空间分配给作业。该算法能使内存中的空闲区分布得比较均匀。,2020/7/4,31,(3)最佳适应算法(BestFit):它从全部空闲区中找出能满足作业要求的、且是最小的空闲分区,这种方法能使碎片尽量小。为适应这种算法,空闲分区表(空
14、闲区链)中的空闲分区要按大小从小到大进行排序,自表头开始查找到第一个满足要求的自由分区分配。,2020/7/4,32,(4))最坏适应算法(worst-first)最坏适应算法的思想与最佳适应算法相反,将所有的空白分区按容量递减的顺序排列,最前面的最大的空闲分区就是找到的分区。该算法是取所有空闲区中最大的一块,把剩余的块再变成一个新小一点的空闲区。算法基本不留下小空闲分区,但较大的空闲分区不会被保留。,2020/7/4,33,最坏适应算法的优点:分配的时候只需查找一次就可以成功,分配的算法很快。最坏适应算法的缺点:最后剩余的分区会越来越小,无法运行大程序。,2020/7/4,34,4.3.4伙
15、伴系统-buddysystem,在伙伴系统中,我们假设整个内存的大小为2U,系统初始启动时整个内存将被视作单一的空闲分区。伙伴系统主要涉及内存的分配与回收两个方面的内容。下面先看一个例题:,2020/7/4,35,2020/7/4,36,从上面的例题可以看出伙伴系统的分配算法如下:当系统欲把一个大小为k的进程装入内存时,如果2i-1k2i,那么系统将使用下面的算法为该进程分配一个尺寸为2i的空闲分区:1、如果i=U+1,那么意味着进程的大小超出了整个内存,故分配失败;2、如果尺寸为2i的空闲分区链表为空,那么意味着当前不存在尺寸为2i的空闲分区,故:设法找到一个尺寸为2i+1的空闲分区,为此把
16、i调整为i+1并再次调用本算法;把找到的尺寸为2i+1的空闲分区分解为两个尺寸为2i的伙伴分区;把两个尺寸为2i的伙伴分区加入到尺寸为2i的空闲分区链表中;3、取尺寸为2i的空闲分区链表中的第一个空闲分区作为本算法的返回结果。,2020/7/4,37,当一个进程释放一个尺寸为2i的分区时,系统将使用下面的算法回收该分区:如果被回收分区其伙伴分区不是空闲的,那么把被回收分区加入到尺寸为2i的空闲分区链表中否则将被回收分区其伙伴分区从尺寸为2i的空闲分区链表中摘除;合并被回收分区及其伙伴分区,从而得到一个尺寸为2i+1的空闲分区;系统再次调用本算法回收上一步得到的尺寸为2i+1的空闲分区。,202
17、0/7/4,38,4.3.6动态重定位分区分配1拼接/紧凑技术当系统欲把一个进程装入内存时,它将为该进程分配一个大小合适的分区。显然,这样做将消除分区内零头,但是,这样做却会产生分区外零头。为了使外零头得到充分利用,系统可以把内存中的所有进程移到内存的某一端;相应地,内存中的所有空闲分区将被移到内存的另一端。这样做将把内存中的所有空闲分区拼接成一个较大的空闲分区。,2020/7/4,39,图4.5可再定位分区分配的紧凑过程,上述解决外零头问题的方法被人们称为紧凑(Compaction)技术。该技术要求系统具有动态重定位的能力(为什么)。,2020/7/4,40,2、动态重定位的实现,图4-6动
18、态重定位示意图,2020/7/4,41,3、动态重定位分区分配算法动态重定位分区管理中何时进行存储器紧缩有二种不同的解决办法在某个分区被释放后立即进行紧缩,系统总是只有一个连续的分区而无碎片,此法很花费机时。当“请求分配模块”找不到足够大的自由分区分给用户时再进行紧缩,这样紧缩的次数比上种方法少得多,但表格管理复杂。采用此法的动态重定位分区分配算法框图如下:,2020/7/4,42,图4-7动态分区分配算法流程图,2020/7/4,43,4.3.7交换(对换)技术(swapping)交换技术最早用在麻省理工学院的兼容分时系统CTSS中,该系统是单用户系统,所有用户都驻留在外存的后备队列中,每次
19、只调入一个作业进入内存运行,此作业的时间的时间片用完时,又将该作业调至外存,再将后备队列中的一个作业调入内存运行一个时间片。这就是早期的交换技术,它采用早期的交换(调进凋出)来满足多个程序共享主存的需要。,2020/7/4,44,1、多道程序环境下的对换在多道程序环境下为了提高内存和CPU的利用率,增加系统吞吐量,系统中增设了对换,把内存中暂不能运行的进程或者暂时不用的数据和程序调出到外存上,以腾出足够的内存空间,把已具备运行条件的进程换入内存。UNIX早期已引入对换功能并一直保留至今,UNIX系统设置一个对换进程完成以上功能。为了实现进程对换,系统必须能实现对交换空间的管理,进程换入和进程换
20、出等三项功能。,2020/7/4,45,2、对换空间的管理外存分为文件区和对换区。文件区用户存放文件,对文件区管理以后再讲;对换区用于存放从内存频繁换出的进程,它的管理目标是提高进程换入换出速度,为此系统采用连续分配方式。它的管理方式和内存在动态分区分配中的方式非常相似,即同样可以采用空闲分区表或者空闲分区链。,2020/7/4,46,3、进程的换出与换入当内核发现内存不足时调用对换进程,对换进程检查驻留在内存的进程,选择处于阻塞和睡眠状态的进程换出,如无则选择优先级低的驻留内存时间长的处于就绪状态的进程换出。而当内存又空时对换进程在对换区中选择换出时间长的处于就绪态的进程调入。,2020/7
21、/4,47,4.4分页存储管理,连续分配方式带来的问题:固定分区分配会出现内零头,动态分区分配会出现外零头,尽管可以用“紧凑”技术来解决,但是会付出很大的系统开销。怎么办?,2020/7/4,48,4.4.1页面与页表1、实现原理每个进程均被系统分割成许多大小相同并被称为页面(Page)的连续片段;物理内存则被系统划分成许多尺寸相等并被称为页架(PageFrame)的连续区域(也叫物理块);任何进程其页面大小均等于物理内存其页架尺寸。,2020/7/4,49,图4-8进程分配给空闲页架,2020/7/4,50,图4-9进程在页架上的换出与装入,2020/7/4,51,当一个进程被装入物理内存时
22、,系统将为该进程的每个页面独立地分配一个页架;同一进程的多个页面不必存放在连续的多个页架中。这样就实现了离散分配,克服了连续分配所带来的问题。由于进程的最后一页经常装不满一个物理块而形成了不可利用的页内碎片。很明显,这时内存中的碎片不会超过一页。这显然提高了内存的利用率。,2020/7/4,52,2.地址结构分页地址中的地址结构如下:它由两部分组成,前一部分是页号P,后一部分为页内偏移量W,即页内地址。图中的地址长度是32位,其中011位是页内地址(每页大小为4K),1231位是页号,共有1M个页面。,2020/7/4,53,对某种特定机型,它的地址结构是确定的。假设现在有一个逻辑地址空间中的
23、地址为A,页面的大小为L,则页号P和页内地址d可以用如下公式求得:,2020/7/4,54,3、页表在将进程的每一页离散地分配到内存的多个物理块中后,系统应能保证能在内存中找到每个页面所对应的物理块(就是对这些页面进行管理)。为此,系统为每个进程建立了一张页面映射表,简称页表(如下图所示)。每个页在页表中占一个表项,记录该页在内存中对应的物理块号。进程在执行时,通过查找页表,就可以找到每页所对应的物理块号。,2020/7/4,55,可见,页表的作用是实现从页号到物理块号的地址映射。,注意:一个进程对应有一个页表,2020/7/4,56,4、页面大小的选择在分页系统中,页面的大小是由机器的地址结
24、构决定的,也即是由硬件决定。某一种机型只能采用一种大小的页面。在分页系统中的页面其大小应适中。页面若太小,一方面虽然可使内存碎片减小,从而减少了内存碎片的总空间,有利于提高内存利用率,但另一方面也会使每个进程占用较多的页面,从而导致进程的页表过长,占用大量内存;此外,还会降低页面换进换出的效率。然而,如果选择的页面较大,虽然可以减少页表的长度,提高页面换进换出的速度,但却又会使页内碎片增大。,2020/7/4,57,4.4.2地址变换机构1、基本的地址变换机构它的任务是实现由逻辑地址到物理地址的转换。由于页内地址和物理块内的物理地址是一一对应的,不需要转换(为什么),所以,它的任务实际上是实现
25、从页号到物理块号的转换。它是用硬件来实现的。地址变换过程如下:为了实现地址变换功能,在系统中设置页表寄存器,用来存放页表的始址和页表的长度。,2020/7/4,58,在进程未执行时,每个进程对应的页表的始址和长度存放在进程的PCB中,当该进程被调度时,就将它们装入页表寄存器。在页面X中出现某个逻辑地址时,将按照下面的步骤来找到它对应的物理地址:在进行地址变换时,系统将页号与页表长度进行比较,如果页号大于页表寄存器中的页表长度,则访问越界,产生越界中断。,2020/7/4,59,如未出现越界,则用页表寄存器中的页表始址页号页表项长度(即一个页表项所占用的字节数)该页表项中在页表中的位置,找到这个
26、表项后查找页表从而可以得到该页的物理块号;将此物理块号装入物理地址寄存器中。与此同时,将有效地址(逻辑地址)寄存器中页内地址直接装入物理地址寄存器的块内地址字段中,这样便完成了从逻辑地址到物理地址的变换。就是:物理地址内存初始地址物理块号页大小块内地址,如下图:,2020/7/4,60,图4-10分页系统的地址变换机构,4,5,2020/7/4,61,例题:某型微机的页面大小是1KB(1024B),现该微机正在执行的进程中有一条指令:loada,2500。请问:在内存的什么位置可以找到该逻辑地址所对应的数据?,2020/7/4,62,计算过程如下:逻辑地址:2500A、页号PINT(逻辑地址/
27、页面大小)INT(2500/1024)=2B、页内地址:d=2500MOD1024=452C、查页表:页号2对应的物理块是块5D、物理地址为:块号页大小页内地址51024452=5572也就是说,应当将5572这个物理地址里面的数据取出来放在a寄存器里。注意:本题的前提条件是块号0的初始物理地址为0,如果不是0,该怎么办?,2020/7/4,63,2020/7/4,64,2、具有快表的地址变换机构由于页表存放在内存中,则每次存取数据时,都要先访问内存中的页表,然后根据所得到的物理地址再访问内存。这样CPU存一个数据必须访问两次内存,从而使计算机的处理速度降低了1/2。为了提高地址变换的速度,在
28、地址变换机构中增设了一个具有并行查询功能的特殊的高速缓冲存储器,称为“联想存储器”或“快表”,用以存放当前访问过的那些页表项。如下图所示:,2020/7/4,65,图4-11具有快表的地址变换机构,2020/7/4,66,此时地址变换过程为:在CPU给出逻辑地址后,地址变换机构自动地将页号送入快表,并将此页号与快表中的所有页号进行比较,确定所需要的页是否在快表中。若在,则直接读出该页所对应的物理块号,送入物理地址寄存器;若不在,则需再访问内存中的页表,找到后,把从页表中读出的页表项存入快表中。如果快表已满,则将按照某种算法淘汰一个旧的页表项。,2020/7/4,67,由于成本的原因,快表不可能
29、做得很大,通常只能存放16512个页表项。例如,在Intel80486中有32个。这对中、小型作业来说,已可能把全部页表项放入快表中;但对于大型作业来说,则只能将一部分页表放入快表中。由于对程序和数据的访问往往带有局部性,所以快表的命中率可以达到80%90%。下面讲一个例子:,2020/7/4,68,假设访问快表的时间为20ns,访问内存的时间为100ns,访问快表的命中率为85%,则有:CPU存取一个数据的平均时间为:T=0.85*(100+20)0.15*(10010020)=135ns如果不引入联想存储器,其访问时间将达200ns。,2020/7/4,69,4.4.3两级页表(Two-L
30、evelPageTable)现代大多数计算机都支持非常大的逻辑地址空间,比如:80386的逻辑地址有232B,如页面大小为4KB(212B),则页表项达1M个,假定每个页表项占用1B,故每个进程的页表占用1MB内存空间,还要求是连续的,显然这是不现实的。在80386中,为了减少页表所占用的连续的内存空间,采用了两级页表机制:基本方法是将页表进行分页,每个页面的大小与内存物理块的大小相同,并为它们进行编,2020/7/4,70,号,可以离散地将各个页面分别存放在不同的物理块中,为此再建立一张页表,称为外层页表(页表目录),即第一级页表,其中的每个表目是存放某个页表分页的首地址。第二级才是页表,其
31、中的每个表目所存放的才是页的物理块号。请看下图,2020/7/4,71,图4-12两级页表结构,2020/7/4,72,两级页表系统将32位地址空间的地址分为三段:其中页表目录(外层页号P1)和页号(外层页内地址P2)两项各占10位,每页的大小为12位(4KB)。此外设置一个外层页表寄存器,用来存放页表目录的起始地址。,图4-13具有两级页表的地址变换机构,2020/7/4,73,分析:用两级页表的方法解决了大页表需要大片连续储存空间的问题,提高了储存空间的利用率(例子),但是计算机访问一个数据却要三次访问内存,花费了时间。问题:如果系统支持64位地址空间,那又怎么办?,2020/7/4,74
32、,分页式存储管理的优点:(1)没有外碎片,每个内碎片不超过页的大小。(2)一个程序不必连续存放。便于改变程序占用空间的大小(主要指随着程序运行而动态生成的数据增多,要求地址空间相应增长,通常由系统调用完成而不是操作系统自动完成)。,2020/7/4,75,分页式存储管理的缺点:(1)程序要全部装入内存。(2)采用动态地址变换机构会增加计算机的成本和降低处理机的速度。(3)各种表格要占用一定的内存空间,而且要花费一定的时间来建立和管理这些表格。(4)存储扩充问题没有得到解决。(5)不易实现共享。(6)不便于动态连接。,2020/7/4,76,4.5分段存储管理,4.5.1分段存储管理方式的引入引
33、入分段存储管理方式,主要是为了满足用户和程序员的下述一系列需要:1、便于编程通常,一个作业是由若干个自然段组成的。因而,用户希望能把自己的作业按照逻辑关系划分为若干个段,每个段都有自己的名字和长度。要访问的逻辑地址是由段名(段号)和段内偏移量(段内地址)决定的,每个段都从0开始编址。这样,用户程序在执行中可用段名和段内地址进行访问。,2020/7/4,77,2、分段共享在实现程序和数据的共享时,常常以信息的逻辑单位为基础,而分页系统中的每一页只是存放信息的物理单位,其本身没有完整的意义,因而不便于实现信息的共享,而段却是信息的逻辑单位,有利于信息的共享。,2020/7/4,78,3、分段保护信
34、息保护是对相对完整意义的逻辑单位(段)进行保护。4、动态增长在实际系统中,往往有些数据段会不断地增长,而事先却无法知道数据段会增长到多大,分段存储管理方式可以较好地解决这个问题。,2020/7/4,79,5、动态连接通常一个源程序经过编译后所形成的若干个目标程序,还需再经过链接,形成可执行代码后才能运行,这种在装入时进行的链接称为静态链接。动态链接是指在作业运行之前,并不把几个目标程序段都链接起来,而是先将主程序对应的目标程序装入内存并启动运行,当运行过程中又需要调用某段时,再将该段(目标程序)调入内存并链接起来。所以,动态链接是以段为基础的。,2020/7/4,80,4.5.2分段系统的基本
35、原理1、分段我们根据程序的模块结构,把作业地址空间划分为大小不同的一些块,我们把这些大小不同的块叫做段。每个程序段都有一个段名,且有一个段号。段号从0开始,每一段也从0开始编址,段内地址是连续的,通常分为主程序段、子程序段、库函数段和数据段等等。同时在物理内存中,也分成一些和这些块一样大的块。如下图所示。,2020/7/4,81,图4-14分段的基本原理,2020/7/4,82,作业在装入的时候是一次性全部装入的,如果不是一次性装入,就叫做请求分段式的管理。将程序的地址空间划分为若干个段(segment),程序加载时,为每个段分配其所需的一个连续内存分区,而进程中的各个段可以不连续地存放在内存
36、的不同分区中。物理内存的管理采用动态分区的思想,即在为某个段分配物理内存时,可以采用最先适应法、下次适应法和最佳适应等方法。,2020/7/4,83,分段系统的地址结构如下图所示,逻辑地址由段号(名)和段内地址两部分组成。在该地址结构中,允许一个作业最多有64K个段,每个段的最大长度为64KB。,2020/7/4,84,2、段表(SegmentTable)在分段式存储管理系统中,为每个段分配一个连续的分区,而进程中的各个段可以离散地分配到内存中不同的分区中。在系统中为每个进程建立一张段映射表,简称为“段表”。每个段在表中占有一表项,在其中记录了该段在内存中的起始地址(又称为“基址”)和段的长度
37、P121。进程在执行中,通过查段表来找到每个段所对应的内存区。可见,段表实现了从逻辑段到物理内存区的映射。,2020/7/4,85,图4-15利用段表实现地址映射,2020/7/4,86,3.地址变换机构,图4-16分段系统的地址变换过程,2020/7/4,87,为了实现从逻辑地址到物理地址的变换功能,系统中设置了段表寄存器,用于存放段表始址和段表长度。在进行地址变换时,系统将逻辑地址中的段号S与段表长度TL进行比较。若STL,表示段号太大,访问越界,于是产生越界中断信号;若未越界,则根据段表的始址和该段的段号,计算出该段对应段表项的位置,从中读出该段在内存中的起始地址,然后再检查段内地址d是否超过该段的段长SL。若超过,即dSL,同样发出越界中断信号;若未越界,则将该段的
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年互联网医疗服务管理制度(3篇)
- (新)影像科重点病例随访与反馈制度2篇
- 职教数学讲解题目及答案
- AI在铁路物流管理中的应用
- 医疗急救管理制度
- 播音员主持人证-首次注册申请表
- 2026年译林版(三起)版(新教材)小学英语四年级下册期末模拟测试卷及答案
- 博尚镇勐准村饲料加工厂建设及配套项目水土保持报告表
- 湖南邵阳绥宁城关110千伏输变电工程水土保持报告表
- 社会保险2026年退休计划协议
- 配料皮带秤培训课件
- DB37T5092-2025 预拌混凝土质量控制技术标准
- 内蒙古乌海市国创数字产业发展有限责任公司招聘笔试题库2026
- 青海省西宁市2025年中考化学试题(教师卷)
- 普外科患者术后下肢深静脉血栓形成的预防和护理
- 租厂房环保责任协议书
- 大型汽车衡工程施工组织设计方案
- 网络拓扑图培训
- 十年(2016-2025)高考数学真题分类汇编08概率统计及数字特征解答题综合(五大考点61题)(解析版)
- 云南省德宏傣族景颇族自治州梁河县2024-2025学年六年级下学期小升初招生数学试卷(含解析)
- 危重症患者早期康复护理
评论
0/150
提交评论