操作系统-存储

内存管理方式

  • 重定位
  • 分段
  • 分页
  • 虚拟存储

连续内存分配

地址生成过程

内存分配方法

  • 最先匹配策略
  • 最佳匹配策略
  • 最差匹配

碎片整理

  • 紧凑
  • 分区兑换

伙伴系统

非连续内存分配

  • 设计目标:提高内存利用效率和管理灵活性
    • 允许一个程序使用非连续物理空间
    • 允许共享代码和数据
    • 支持动态加载和动态链接

非连续内存分配的硬件辅助机制

  • 段式存储:比较大
  • 页是存储:比较小,块

段式存储管理

段地址空间

  • 子代码段
  • 子模块代码段
  • 公用库代码段
  • 堆栈段(stack)
  • 堆数据(heap)
  • 初始化数据段
  • 符号表等

段访问机制

  • 段的概念

    • 访问方式和存储数据等属性相同的一段地址空间
  • 段访问(s,addr)二元组

    • 段号,段内偏移

页式存储管理

  • 页帧(frame)

    • 把物理地址空间划分为基本相同的地址单位
    • (f,o),帧号,帧内偏移
  • 页面(Page)

    • 把逻辑地址空间按相同的大小划分
  • 页面到页帧

    • 逻辑地址到物理地址的转换
    • 页表
    • MMU/TLB
  • 页式访问性能问题

    • 访问一个内存单元需要两次内存访问
      • 第一次访问:获取页表项
      • 第二次访问:获取数据
    • 页表大小可能非常大
    • 处理方法
      • 缓存
      • 间接访问,多级页表

快表和多级页表

  • 快表

    • 把近期访问的页表项缓存到CPU
      • TLB使用关联存储器,具备快速访问性能
      • 如果TLB 命中,物理页表可快速获取
      • 如果TLB未命中,对应的表项更新到TLB
  • 多级页表

    • 通过间接引用将页号分成K级
      • 建立页表“树”

反置页表

  • 页寄存器和反置页表
    • 不让页表与逻辑地址空间的大小相对应
    • 让页表和物理地址空间的大小相对应

页寄存器

  • 每个帧与一个页寄存器关联

    • 使用位:此帧是否被进程占用
    • 占用页号:对应的页号P
    • 保护位:访问方式 W/R
  • 优点

    • 大小相对物理内存很小
    • 与逻辑地址空间大小无关
  • 缺点

    • 页表信息对调后,需要依据帧号找页号
    • 在页寄存器中搜索逻辑地址的页号

反置页表

  • 基于hash映射值查找对应页表中的帧号
    • 进程标识与页号的hash值, 可能存在冲突
    • 页表项中包括保护位,修改位,访问位和存在位

段页式存储

每个段加一级页表

内存共享

通过指向相同的页表基址

虚拟页式存储

在页式存储管理的基础上,增加请求调页和页面置换

  • 思路
    • 当用户程序要装载到内存运行时,只装入部分页面,就启动程序运行
    • 进程在运行时发现有需要的代码或数据不在内存时,向系统发出缺页异常请求
    • 操作系统在处理缺页异常时,将外存中相应的页面调入内存,使进程能够继续执行

地址转换

在这里插入图片描述

缺页异常

在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值