文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

想和你聊聊操作系统的内存管理

2024-12-03 08:31

关注

物理地址 VS 虚拟地址

CPU翻译虚拟地址的过程大概如图所示

他们的包含关系如下:cpu包含MMU,MMU包含TLB

平常加载程序的顺序是

  1. 操作系统把程序从磁盘加载到内存中(程序一开始是在磁盘中存放的)
  2. CPU去执行程序的第一条指令但是这个指令现在在物理内存中
  3. cpu取指令取的是该指令的虚拟地址,由MMU翻译为物理地址
  4. 这个读物理地址的请求将通过总线,传送到相应的物理内存中,然后物理内存把该指令发送给CPU

分段

“MMU将虚拟地址翻译为物理地址主要有两种机制 :分段和分页

分段机制

虚拟地址:

“当 cpu 读取指令时,发现指令的地址是虚拟地址,那么CPU中的MMU 首先判断这个段号是否合法,如果合法, 则通过 段表基址寄存器 找到段表的位置,通过虚拟地址中的段号,找到该段的起始地址,再加上段内地址(段内偏移),就可以得到最终的物理地址

在分段机制下,虚拟内存和物理内存都划分成了不同的段

分段缺点

图中装载不进来的就是外部碎片

分页机制

之所以这样构造是因为会使操作系统很方便的为每个应用程序构造页表,即虚拟页和物理页映射关系表

翻译的具体流程就是:

  1. MMU首先解析虚拟地址中的虚拟页号,检查这个虚拟页号是否合法,通过这个虚拟页号取该应用程序的虚拟页表中找到对应条目(页表起始地址放在页表基地址寄存器)
  2. 然后取出该条目中的物理页号
  3. 最后用该物理页号对应的物理起始地址加上虚拟地址中的页内偏移得到最终的物理地址

TLB

首先要说一下局部性原理

所以,能不能弄一个缓存,缓存这些有可能会被经常被访问的数据呢,从而减少访问页表的次数呢?

为了减少地址翻译的访问次数,MMU引入TLB(转址旁路缓存 Translation Lookaside Buffer)

“有了TLB之后,查询就变成了

MMU首先解析虚拟地址中的虚拟页号,检查这个虚拟页号是否合法,如果合法

然后取出该条目中的物理页号

最后用该物理页号对应的物理起始地址加上虚拟地址中的页内偏移得到最终的物理地址

多级页表

拆分后的访问顺序如图所示

换页与缺页异常

换页

“虚拟内存中的换页:当物理内存容量不够的时候,操作系统应当把若干物理页的内容写到磁盘这种大容量的地方,然后回收物理页并继续使用

举例:有个应用程序A,A的虚拟页K对应物理页V,这个时候,操作系统想回收物理页V,要怎么做呢?

以上这两部被称为物理页V的换出

缺页异常

缺页异常是换页机制能够工作的前提,当应用程序访问已经分配但是未映射至物理内存的虚拟页时,就会触发缺页异常

处理完这一切后,cpu回到发生缺页异常的地方继续运行

段页式内存管理

分段管理

分页管理

段页式内存管理

虚拟地址翻译为物理地址的步骤变为

原文链接:https://mp.weixin.qq.com/s/miq1GTn9xn9oKY-fYBiYDQ

来源:java小杰要加油内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯