内存储器

存储器
主存管理的主要功能:
    1、主存的分配和回收
    2、地址转换和重定位
    3、存储保护和主存共享
    4、存储器扩充

覆盖:由应用程序覆盖,在内存中将新的程序代码覆盖旧的程序代码
    实现:使用函数库(操作系统不知覆盖),或操作系统支持

交换:由OS控制,将暂时不用执行的程序放入外存中。虚拟存储的请求调入和预调入,

内存的物理组织
    1、物理地址:把内存分成若干个大小相等的存储单元,每个单元一个编号,这个编号称为内存地址(或物理地址、绝对地址、实地址),存储单元占8位,称作字节(bate)
    2、物理地址空间:物理地址的集合称为物理地址空间(主存地址空间),它是一个一维线性空间。
    3、程序地址:用户编程序时所使用的地址(或称逻辑地址、虚地址),基本单位可以与内存基本单位相同,也可以不同.
    4、程序地址空间:程序地址的集合称之为逻辑地址空间,它编址从0开始,是一个一维的线性空间,也可以是多维空间
程序的装入:
    绝对装入方式:在编译时,能将目标模块装入到内存中事先指定的位置,那么,编译程序将产生绝对地址的目标代码,
                 当然绝对地址也可以由程序员赋予。(适用于单批道程序环境)
    可重定位装入方式:根据当前内存的情况,将程序装入到内存适合的位置,地址变换在装入是完成。装入完成后不再改变。
                    属于静态重定位。要求程序的地址空间是连续的。(适用于多道程序环境)
    动态运行时装入方式:动态重定位,程序运行过程中程序的位置可能改变。在程序装入内存后不立即将相对地址转变为绝对地址
                      而是把这种地址转换推迟到程序运行时才进行。

静态连接方式:将几个目标模块装人内存时,需解决两个问题,一是相对地址进行修改,二是变换外部地址调用符号。
装入时动态链接:是在目标模块装入内存时,边装入边链接。即在装入一个目标模块时,若发现一个外部模块调用,
               即引起装入程序去找出相应的外部模块,并将它装入内存以及修改目标模块中的相对地址
运行时动态链接:将某系模块的链接推迟到执行时才执行。即在执行过程中,若发现一个被调用模块尚未装入内存时,
               由OS去找到该模块,将它装入内存,并把它链接到调用者模块上。

内存连续分配管理方式:

    1、固定分区概念
        把主存分为若干个大小固定的存储区,每个分区给一个作业使用,直到作业完成后才将该区归还系统。
        固定是指在各分区的位置和大小固定,通常在系统启动时就确定了
        分区分类:
            分区可分为用户分区和系统分区,用户分区存放用户程序,系统分区存放系统程序和管理信息。
        分区的两种划分方式:
            分区大小相等、分区大小不等
        存储分块表MBT:一般存放在系统分区内占用一个连续的内存空间。通常由存储分配和释放两个模块对他进行操作
            当分区大小不等时系统需要对每个分区的信息进行记录,以便管理。
            记录内容包括:大小、位置、状态。
    2、可变分区多道管理技术:
        定义:指事先未将主存划分为一块块分区,而是在作业进入主存时,按作业大小动态建立分区。
        存储分块表MBT:结构与固定分区的MBT一样,但由于是可变分区,所以便有了表长难确定、查找速度慢的缺点
            查找速度慢:空闲分区在表中没有安排记录,要分配内存给新作业,就慢了些。
            表长难确定:分区个数在变化,所以无法确定
          为了提高查找空闲分区速度主存分区用两张表来管理:已分分区表UBT、空闲分区表FBT
            UBT:存放已经分配使用的分区信息
            FBT:存放空闲、尚未分配的分区信息
         由于以上两种表仍没有解决表长难确定的问题,引入空闲存储块链FBC
          空闲存储块链FBC:采用链指针的方式将空闲分区块链连接在一起。
        存储分配算法:
            最佳适应法:即选择空间浪费最少的存储块,一般要求空闲块从小到大顺序排列
            最先适应法:即选择最先找到的满足空间的存储块,一般要求分区按照地址递增的顺序排列
            最坏适应法:选择满足条件的最大的空间块使用,一般要求存储块大小递增顺序排列
        存储器的紧缩和程序的浮动:
            紧缩和浮动:通过移动程序将碎片集中起来形成一个大的空闲分区。
            程序在内存中移动后地址改变,若要正常运行需要将地址改为新的地址,即重定位,有两种静态(不适用)、动态
            动态重定位:在程序执行过程中,每次访问指令或数据时,都将逻辑地址转变物理地址一次。
    3、多重分区管理:
        1、单对界管理技术:存储保护使用一对界地址寄存器,对存储器使用紧缩技术时,需要硬件支持。
        2、多重分区管理技术:在系统中设置多个界地址寄存器,可以为每个作业分配多个空闲分区。
        界地址寄存器:在CPU中设置一对下限寄存器和上限寄存器,存放用户作业在主存中的下限和上限地址
  页式存储管理:不存在页外碎片,有少量页内碎片,主存利用率高
      特点:等分主存:把主存划分为相同大小的存储块,称之为页架
           用户逻辑地址空间分页:将用户的逻辑地址空间划分为若干个与页架相等的部分,每个部分称之为页
                                同样,按逻辑地址顺序从0开始对页进行编号,记为页号。
           逻辑地址表示:在分页系统中,每个逻辑地址用一个数对表示:(p,d)p代表页号,d表示页内偏移地址。
      主存分配原则:
          以页架为单位进行分配;分配的页架可以连续,也可以不连续;可以将作业的任意一页放入主存的任意一页架中,
          在静态页式存储管理中所有的页一次性装入主存,若主存空间不够,则作业等待。
          在动态页式存储管理中不把作业一次性地全部装入内存,而只装入被认为是经常反复执行和调用的部分。其它部分则在执行过程中动态装入。
      页表PMT:用于存放进程页和页架的映射关系,有两部分页号、块号(页架号)
      页面大小的确定:页面大小由机器的地址结构所决定,大小取2的幂
                    页面较小:可以使页内碎片小,有利于提高主存利用率,但页面会增多,导致页表过长,占用主存。
                    页面较大:可以减少页表程度,但会使页内碎片较大,
      地址转换过程:将逻辑地址转换为物理地址的过程。
  段式存储管理:
      段是一组逻辑信息的集合。引入段的目的是为了满足用户的方便编程和方便数据、程序共享和保护
      方便编程:通常,一个程序是由若干个自然段组成,因而用户希望能够把程序按逻辑关系分成若干个段,每个段有段名和长度。
               用户程序在执行时可按段名和段内地址进行访问。
      共享和保护:在实现程序和数据共享和保护时,都是以信息逻辑单位为基础的。而在分页系统中,每页是存放信息的物理单位,
                 本身没有完整的意义,因而不便于实现信息共享和保护,而段是信息的逻辑单元。
      逻辑地址空间的划分和表示:每个进程的地址空间被划分为若干段,每段有段名;每段都从0开始编址,
                              段的长度由相应的逻辑信息组的长度决定。段间可以不连续编址。
      采用二维地址空间来表示:V=(S,W);其中S是段号,W是段内地址
      主存分配:以段为单位进行主存分配;段内连续存放;每段分配一个连续的主存物理空间;段间可以不连续;
               段与段之间在主存中地址可以是离散的。
      段表:用于记录和管理进程分段信息的数据表称为段表。包含段号、段长、段的起始地址(物理地址)
           每个进程的段表存放在主存的一个连续的地址空间中。
           为实现从进程的逻辑地址到物理地址的变换功能,在系统中设置了————段表寄存器,用于存放段表始址和段表长度
      特点:没有内部碎片,存在外部碎片,段的长度受内存空闲区的限制。
  页式与段式的相同点:都采用离散分配方式,通过地址映射实现地址转换。

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值