存储器管理

1.存储器的层次结构

       至少应具有三级:CPU寄存器、主存、辅存。较高档的计算机中还具体细分为寄存器、高速缓存、主存储器、磁盘缓存、固定磁盘、可移动存储介质等6层。寄存器和主存储器又称为可执行存储器,对于存放在其中的信息,与辅存中的信息相比采用的访问机制是不一样的所消耗的时间也是不同的。

       主存储器简称为内存或者主存,用于保存进程运行时的程序和数据。通常,处理机是从主存中取得指令和数据的,并将其所取得的指令放入指令寄存器,数据装入数据寄存器。由于主存储器访问速度远低于CPU执行指令的速度,为了缓和这一矛盾,则引入了寄存器和高速缓存。

       寄存器具有与处理器相同的速度,对寄存器的访问速度最快,完全能与CPU协调工作。

       高速缓存是介于寄存器和存储器之间的存储器,主要用于备份主存中较为常用的数据,以减少处理机对主存储器的访问,高速缓存容量远大于寄存器。

       磁盘缓存主要用于暂时存放一些频繁使用的磁盘数据和信息,减少对磁盘的访问,这是由于磁盘的I/O速度远低于对主存的访问速度,所以设置了磁盘缓存。

2.程序的装入和链接

       用户程序在系统中运行必须先将它装入内存,然后再将其转变成一个可以执行的程序,通常经过以下几个步骤:

              编译:由编译程序对用户源程序进行编译,形成若干个目标模块 。

              链接:由链接程序将编译后形成的目标模块以及它们所需的库函数链接在一起,形成一个完整的装入模块。

              装入:由装入程序将装入模块装入内存。

     程序的装入

              绝对装入方式:当计算机系统很小时,且仅能运行单道程序,完全有可能知道将程序驻留在内存的什么位置。此时可可采用绝对装入方式。装入模块被装入内存后,由于程序的相对地址与实际内存地址完全相同,不需要对程序和数据的地址进行修改。

              可重入定位装入方式:在多道程序环境下,编译程序不可能预知经编译后所得到目标模块应存放在内存的何处。因此,它们的起始地址通常是从0开始的,程序中的其他地址也是相对于初始地址算的。因此,不可能采用绝对装入方式,而应采用可重定位装入方式它可以根据内存的具体情况将装入模块装入内存的适当位置/

              动态运行时的装入方式:可重入定位装入方式可将装入模块装入到内存的任何允许位置,但它并不允许程序允许时在内存中移动位置。而动态运行时装入程序在把装入模块装入内存后,并不立即把装入模块中的逻辑地址转化为物理地址,而是把这种地址转换推迟到程序真正运行时才进行。为使地址转换不影响指令的执行速度,需要一个重定位寄存器的支持。

     程序的链接

              静态链接:在程序运行之前,先将各个目标模块和它们所需的库函数链接成一个完整的装配模块,以后不再拆分。

              装入时动态链接:用户程序编译形成的目标模块在装入内存时采用边装入边链接的方式。

              运行时动态链接:将对某些模块的链接推迟到程序执行时才进行。也就是说凡是在执行过程中未被用到的目标模块,都不会被调入内存和被链接到装入模块上,这样不仅能加快程序的装入过程,而且可节省大量的内存空间。

3.连续分配存储管理方式

       单一连续分配:在单道程序环境下,存储器管理方式把内存分为系统区和用户区,在用户区仅装有一道程序。

       固定分区分配:为了能在内存中装入多道程序且互不干扰,将整个用户空间划分为若干个固定大小的区域,在每个分区可装入一个程序,当有分区空闲则可以将外存的后备队列中选择一个合适的作业调入内存。会产生内存碎片。

       动态分区分配:为了实现动态分区分配,系统中必须配置相应的数据结构,用于描述空闲分区和已分配分区的情况。常用的数据结构有:空闲分区表和空闲分区链。在动态分区管理方式中,主要的操作是分配内存和回收内存。动态分配会产生外部碎片。可以通过“紧凑”技术来解决,就是操作系统不时地对进程进行移动和整理,但是这需要动态重定位寄存器地支持,且相对费时。动态分区的分配策略:首次适应算法、最佳适应算法、最坏适应算法、邻近适应算法,首次适应算法是最好的。

4.覆盖与交换

       覆盖与交换技术是在多道程序环境下用来扩充内存的方法。

       覆盖:将用户空间分为一个固定区和多个覆盖区,固定区放经常活跃的部分放在固定区,其他段放到外存中,在需要时调入内存覆盖区,替换覆盖区原有的段。

       交换:把处于等待状态的程序从内存移到辅存,把内存腾出来,这一过程叫做换出;把准备好竞争CPU运行的程序从辅存移到内存,这一过程叫做换入。

5.非连续分配管理方式

       根据分区大小是否固定分为分页存储管理方式和分段存储管理方式。

       分页存储管理方式中,根据运行作业时是否要把作业都装入内存才能运行分为基本分页存储管理方式和请求分页存储管理方式。

     基本分页存储管理方式

              分页的思想:把主存空间划分为大小相同且固定的块,块相对较小,作为主存的基本单位,每个进程也以块为单位划分。进程在执行时,以块为单位逐个申请主存中的块空间。

              分页进程的几个基本概念:①页面和页面大小,进程中的块称为页,内存中的块称为页框。外存也以同样的单位划分。②地址结构,包含两个部分,前一部分称为页号P,后一部分称为页内偏移量W。地址长度为32位,其中0~11位为页内地址,即每个页面4KB;12~31位为页号,地址最多允许有2^20页。③页表,为了便于在内存中找到进程的每个页面对应的物理块,系统为每个进程建立一张页表,记录页面在内存中对于的物理块号,页表一般存放在内存中。页表由页表项组成,页表项与地址都是由两部分构成第一部分都是页号,而页表项的第二项是物理内存中的块号,而地址第二项则是页内偏移量;页表项的第二项与地址的第二项共同组成了物理地址。

              基本地址变换结构:一个页表寄存器,存放页表在内存的始址F和页表长度。当进程执行时,才将页表始址和长度存入页面寄存器。设页面大小为L,逻辑地址为A到物理地址E的变换①计算页号P=A/L和页内偏移量W=A%L②比较页号P和页面长度M。若P>=M则产生越界中断,否则继续执行。③页表中页号P对应的页表项=页表起始地址F+页号P*页表项长度,取出该页表项内容b。④计算E=b*L+W,用得到的物理地址E访问内存。

              分页管理的两个问题:①每次访存操作都需要进行逻辑地址到物理地址的转换,地址转换必须快,否则访存效率会下降。②每个进程引入页表,用于存储映射机制,页表不能太大,否则内存利用率会下降。

              具有快表的地址变换机构:若页表全部放入内存中,则存取一个数据或一条指令至少要访问两次内存:一次访问页表,第二次才根据地址存取数据和指令。为此,地址变换机制增设了一个具有并行查找能力的高速缓存存储器——快表。在具有快表机制中,地址的变换过程:①CUP给出逻辑地址,由硬件进行地址转换并将页号送入高速缓存寄存器,并将此页与快表进行比较。②如果找到匹配的页号,说明访问的页表项在快表中,则直接从中取出该页对应的页框号,与页内偏移量形成物理地址。这样存取数据仅一次访问便可实现。③如果没有找到,则需要访问主存中的页表,读出页表项,将其存入快表,以便后面可能的再次访问。但快表若满则采用一定的算法对旧的页表项进行替换。

              两级页表:为了压缩页表,对页面映射进行进一步延伸,就得到二级页表。例如:32为逻辑地址空间,页面大小4kb,页表项大小4B,则页内偏移量占12位,页号占20位,采用一级页表则需要2^20*4B/4KB=1024页大大超过了许多进程自身需要的页面,使用二级页表则只需一页就可记录1024个一级页表。

     基本分段存储管理方式

              分段:段式管理方式按照用户进程中的自然段划分逻辑空间。段内要求连续,段间不要求连续。因此整个作业的地址空间是二维的。

              段表:每个进程都有一个逻辑空间与内存空间映射的段表,其中每一个段表项对于一个段,段表项记录该段在内存的起始地址和段的长度

              地址变换机构:①从逻辑地址中取出前几位为段号S,后几位为段内偏移量W。②比较段号S和段表长度M,若S>=M,则产生越界中断,否则继续允许。③段号S对应的段表项地址=段表起始地址F+段号S*段表项长度,取出段表项的前几位为段长C。若段内偏移量>=C则产生越界中断,否则继续允许。④取出段表项中该段的起始地址b,计算E=b+W。

              段的共享:通过两个作业的段表中相应表项指向共享的段的同一物理副本来实现。

     段页式管理方式

              在段页式系统中,作业的地址空间首先被分成若干个逻辑段,每段都有自己的段号,然后再将每一段分成若干个大小固定的页。对内存空间的管理仍然和分页存储管理一样,将其分成若干个和页面大小相同的存储块,对内存的分配以存储块为单位。在段页式系统中,作业的逻辑地址分为三个部分:段号、页号、页内偏移量。在一个进程中,段表只有一个,但页表可有多个。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值