操作系统——存储器管理

存储器的层次结构

程序的装入和链接

用户程序要在系统中运行,必须先将它装入内存,然后将其转变为一个可以执行的程序

  • 编译

  • 链接

    • 静态链接方式

      • 在程序运行之前,将各目标模块及它们所需的库函数链接成一个完整的装配模块,以后不再拆开
    • 装入时动态链接

      • 边装入边链接
      • 便于修改和更新
      • 便于实现对目标模块的共享
    • 运行时动态链接

      • 在运行时进行
      • 即:在执行过程中,发现一个被调用的模块未装入内存,立即由OS找出并装入内存,链接到调用者模块上
  • 装入

    • 绝对装入方式

      • 使用绝对地址,需要提前知道
    • 可重定位装入方式(静态重定位)

      • 程序中的其他地址都是相对于起始地址计算的
    • 动态运行时的装入方式(动态重定位)

      • 在程序真正运行时进行

连续分配存储管理方式

为一个用户程序分配一段连续的内存空间

单一连续分配

  • 用户区仅装有一道用户程序

固定分区分配

  • 分区大小可相等可不等

动态分区分配

  • 数据结构

    • 空闲分区表:在系统中设置一张空闲分区表,用于记录每个空闲分区的情况
    • 空闲分区链:将空闲分区链接成一个双向链
  • 分区分配操作

    • 固定分区法的内存分配与回收

      • 执行完毕后,管理程序将对应的分区状态设为未使用即可
    • 动态分区时的分配

      • u.size 请求分区大小 m.size 空闲分区大小
      • 完成分配后,返回分配区的首地址
      • 内存回收:系统根据回收区的首地址,从空闲区链中找到相应的插入点

动态重定位分区分配

  • 1、紧凑

  • 动态重定位

    • 系统增设一个重定位寄存器,用来存放程序(数据)在内存中的起始地址。
    • 真正的地址= 相对地址 + 寄存器中的地址

对换(Swapping)

定义

  • 把内存中暂时不能运行的进程或暂时不用的程序或数据,调出到外存上
  • 以便腾出足够的内存空间
  • 再把具备运行条件的进程或进程所需要的程序和数据调入内存

两类

  • 整体对换
  • 页面(分段)对换

分页存储管理方式

页面和物理块

  • 页面

    • 将进程的地址空间分若干页,并为每页加以编号,从0开始
    • 内存空间也分为若干块,编号第0#块、第1#块……
    • 进程的最后一页常常装不满一块,形成不可利用的碎片,称为“页内碎片”“内碎片”
  • 页面大小

    • 过小:虽然会减小内部碎片,但是每个进程占用较多的页面,导致页表过长,占用大量内存
    • 一般选2^n 1kb、2kb、4kb

地址结构

页表

  • 为能在内存中找到每一个页面所对应的物理块,系统又为每个进程建立了一张页面映像表,简称页表

地址变换机构

  • 基本的地址变换机构

    • 进程运行期间,需要将用户的逻辑地址变换为内存空间中的物理地址

    • 实际上,地址转换时只需求出块号即可

    • 为了提高地址变换速度,增设一个具有并行查寻能力的高速缓存寄存器,称为“联想寄存器”或“快表”,在IBM系统中也叫作:地址变换高速缓存TLB

      • 运行过程,先在输入寄存器中,快速查找当前页表的页号,如果有匹配的,则读出物理块号b,否则再次访问内存中的页表逐个寻找
  • 访问内存的有效时间EAT

    • EAT = 2*访问一次内存的时间
  • 两级和多级页表

    • 两级页表:针对难于找到大的连续的内存空间来存放页边的问题,可利用将页表进行分页的方法,为离散分配的页表再建立一张页表,称为外层页表,形成了两级页表

      • 为了进行地址映射, 同样需要设置一个外部页表寄存器,存放外层页表的内存起始地址和长度

分段存储管理方式

引入

  • 方便编程:采用 段名(段号) + 段内偏移量(段内地址)
  • 信息共享
  • 信息保护:按允许的方式共享信息
  • 动态增长
  • 动态链接:段式管理是按信息的逻辑意义来划分段,每段对应一个相应的程序模块,因此可用段名+段人口地址来调入相应的段

基本原理

  • 分段

    • 系统为每个进程建立了一张段映射表,简称“段表”
  • 地址结构

  • 地址变换机构

段页式存储管理方法

先将用户程序分成若干个段

再把每个段分成若干个页

并为每一个段赋予一个段名

信息共享

分页系统中对程序和数据的共享

分段系统中对程序和数据的共享

请添加图片描述

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值