• 连续内存分配的缺点
    • 分配给一个程序的物理内存是连续的
    • 内存利用率较低
    • 有外碎片、内碎片的问题
  • 非连续内存分配的优点
    • 一个程序的物理地址空间是非连续的
    • 更好的内存利用和管理
    • 允许共享代码与数据
    • 支持动态加载和动态链接
  • 非连续内存分配的缺点:
    • 如何建立虚拟地址和物理地址之间的转换(硬件方案、软件方案)
  • 两种硬件方案
    • 分段
      image
      image
    • 分页
      • 划分物理内存至固定大小的帧(frame):大小是2的幂
      • 划分逻辑地址空间至相同大小的页(page):大小是2的幂
        image
      • 分页机制性能问题:
        • 访问一个内存单元需要2次内存访问:一次用于获得页表项,一次用于访问数据
        • 页表可能非常大(如何处理? 缓存 + 间接访问(多级页表))
      • TLB
        • TLB是一种访问速度比内存快很多的高速缓存(TLB不是内存!)。
        • 若快表命中,则直接取出该页对应的帧号,再将帧号和页内偏移组合形成物理地址。(一次访问内存)
        • 若快表未命中,则需要访问内存中的页表,找到对应页表项,获得页表项存放的帧号,再将帧号与页内偏移组合形成物理地址。(两次访问内存)
          image
      • 多级页表
        • 多级页表的访问次数(假设没有快表) --- n级页表访问一个逻辑地址需要n+1次访问内存。
  • 分段与分页内存管理的区别
    • 分段划分的是程序的逻辑地址空间。分段对用户是可见的。
    • 分页划分的是物理内存空间。分页对用户是不可见的。
    • 页的大小固定,且由系统决定。段的长度不固定,决定于用户编写的程序。
    • 分页的用户进程地址空间是一维的。分段的用户进程地址空间是二维的。
    • 分段、分页都需要两次访问内存(分段页可以引入快表)。
posted on 2020-02-05 21:46  xiaobaizzZ  阅读(543)  评论(0编辑  收藏  举报