• 操作系统:分页与分段存储管理方式


    • 连续内存分配的缺点
      • 分配给一个程序的物理内存是连续的
      • 内存利用率较低
      • 有外碎片、内碎片的问题
    • 非连续内存分配的优点
      • 一个程序的物理地址空间是非连续的
      • 更好的内存利用和管理
      • 允许共享代码与数据
      • 支持动态加载和动态链接
    • 非连续内存分配的缺点:
      • 如何建立虚拟地址和物理地址之间的转换(硬件方案、软件方案)
    • 两种硬件方案
      • 分段
        image
        image
      • 分页
        • 划分物理内存至固定大小的帧(frame):大小是2的幂
        • 划分逻辑地址空间至相同大小的页(page):大小是2的幂
          image
        • 分页机制性能问题:
          • 访问一个内存单元需要2次内存访问:一次用于获得页表项,一次用于访问数据
          • 页表可能非常大(如何处理? 缓存 + 间接访问(多级页表))
        • TLB
          • TLB是一种访问速度比内存快很多的高速缓存(TLB不是内存!)。
          • 若快表命中,则直接取出该页对应的帧号,再将帧号和页内偏移组合形成物理地址。(一次访问内存)
          • 若快表未命中,则需要访问内存中的页表,找到对应页表项,获得页表项存放的帧号,再将帧号与页内偏移组合形成物理地址。(两次访问内存)
            image
        • 多级页表
          • 多级页表的访问次数(假设没有快表) --- n级页表访问一个逻辑地址需要n+1次访问内存。
    • 分段与分页内存管理的区别
      • 分段划分的是程序的逻辑地址空间。分段对用户是可见的。
      • 分页划分的是物理内存空间。分页对用户是不可见的。
      • 页的大小固定,且由系统决定。段的长度不固定,决定于用户编写的程序。
      • 分页的用户进程地址空间是一维的。分段的用户进程地址空间是二维的。
      • 分段、分页都需要两次访问内存(分段页可以引入快表)。
  • 相关阅读:
    【算法习题】青蛙跳台阶
    【转】从PowerDesigner概念设计模型(CDM)中的3种实体关系说起
    redis常用链接
    读书笔记——《redis入门指南(第2版)》第四章 进阶——4.1-5
    查询linux计算机的出口ip
    读书笔记——《redis入门指南(第2版)》第三章 入门
    vmware中的linux虚拟机配置以nat模式上网,并用xshell连接该虚拟机
    每日代码系列(1)
    第一次尝试自己编写
    原型模式
  • 原文地址:https://www.cnblogs.com/xiaobaizzz/p/12266828.html
Copyright © 2020-2023  润新知