操作系统复习:11.段式,页式以及段页式存储

本文介绍了操作系统中内存管理的三种方式:分段、分页和段页式。分段按照程序逻辑组织,但可能导致内存碎片和交换效率低下;分页解决了这些问题,通过固定大小的页面进行内存分配;段页式结合了两者的优点。多级页表和TLB(转址旁路缓存)进一步优化了地址转换效率。文章总结了内存管理的关键点,包括虚拟地址与物理地址的映射、内存交换和局部性原理的应用。
摘要由CSDN通过智能技术生成

目录

内存

内存分段‘

分段基本概念

内存碎片问题

内存交换效率低问题 

内存分页

分页基本概述

 分页解决分段的内存碎⽚、内存交换效率低的问题

多级页表

TLB

段⻚式内存管理

总结 


内存

内存:用于存放数据的硬件(程序执行前需要先放到内存中才能被CPU处理)

物理地址(绝对地址)与逻辑地址(相对地址)

虚拟内存地址(Virtual Memory Address):我们程序所使⽤的内存地址

物理内存地址(Physical Memory Address):实际存在硬件⾥⾯的空间地址

内存分段‘

分段基本概念

由于程序是由若⼲个逻辑分段组成的,如可由代码分段、数据分段、栈段、堆段组成。不同的段是有不同的属 性的,所以就⽤分段(Segmentation)的形式把这些段分离出来

分段机制下的虚拟地址由段选择⼦段内偏移量组成

(1)段选择子

①保存在段寄存器⾥

②段选择⼦⾥⾯最重要的是段号,⽤作段表的索引

段表⾥⾯保存的是这个段的基地址、段的界限和特权等级

(2)段内偏移量

虚拟地址中的段内偏移量应该位于 0 和段界限之间,如果段内偏移量是合法的,就将段基地址加上段内偏移量得到物理内存地址

虚拟地址是通过段表与物理地址进⾏映射的,分段机制会把程序的虚拟地址分成 4 个段, 每个段在段表中有⼀个项,在这⼀项找到段的基地址,再加上偏移量,于是就能找到物理内存中的地址 ,如下图:

如果要访问段 3 中偏移量 500 的虚拟地址,我们可以计算出物理地址为,段 3 基地址 7000 + 偏移量 500 = 7500

内存分段缺点:

①内存碎片问题

②内存交换率低

内存碎片问题

 假设有 1G 的物理内存,⽤户执⾏了多个程序

游戏占⽤了 512MB 内存

浏览器占⽤了 128MB 内存

⾳乐占⽤了 256 MB 内存

这个时候,如果我们关闭了浏览器,则空闲内存还有 1024 - 512 - 256 = 256MB。

如果这个 256MB 不是连续的,被分成了两段 128 MB 内存,这就会导致没有空间再打开⼀个 200MB 的程序

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Java从跨平台到跨行业

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值