当前位置: 首页 > news >正文

操作系统(day11)--快表,两级页表

具有快表的地址变换机构

在这里插入图片描述

时间局限性:会有大量连续的指令需要访问同一个内存块的数据的情况(程序中的循环)
空间局限性:一旦程序访问了某个存储单元,在不久之后,其附近的存储单元也很有可能被访问。(因为很多数据在内存中都是连续存放的;比如数组

引入快表后,地址的变换过程
在这里插入图片描述
快表中存储了访问频率很高的页表项,访问速度极快(容量很小,只能存储部分页表项)

两级页表

在这里插入图片描述

在这里插入图片描述
为什么要引入两级页表呢,单级页表的问题

一个支持32位逻辑地址空间的进程(这个进程的理论最大为4G),页表项大小为4B(连续的时候刚好可以填满一个内存块), 页面大小为4KB。

页面大小4KB(2的12次方),说明32位要拿出12位(就是4KB)来记录页面内的偏移地址,剩余20位用来表示页号/块号(即最大能记录页号为2的20次方的页号),那么单级页表就需要有2的20次方个页表项来记录每个页号对应的块号, 而每个页表项大小又为4B(即2的2次方),那么这个单级页表就需要 2的20次方 × 2的2次方 的内存大小去存放它(4MB),而每个内存块(即页面大小)的大小是2的12次方(即4KB),那么就需要 2的22次方 除以 2的12次方 等于 2的十次方个内存块(页框)去存放它(一个4G的进程的单级页表

注意:上述问题中,如果进程需要4GB的内存,那么就需要4MB的连续内存来存放该进程的单级页表(单级页表需要连续才能比较便捷的计算)。这里引入两级页表不是为了解决4MB很大的问题,而是要解决需要连续4MB内存的问题,引入两级页表后,4GB的内存依然需要4MB的内存空间去存放页表项,只不过是可以分散放在不同的内存块(页框)中了
在这里插入图片描述
在这里插入图片描述

两级页表甚至多级页表的思想,先根据页面大小4KB(2^12)确定逻辑地址40,要拿12位来它在内存块中的地址,剩下的28位,为什么不能超过10位,因为一个内存块4KB,最多装入2^10个 4B的页表项,而各级页表的大小不能超过一个页面

http://www.lryc.cn/news/10802.html

相关文章:

  • 预告| 亮点抢先看!第四届OpenI/O启智开发者大会主论坛24日启幕!
  • 猪齿鱼(Choerodon UI )的通用提交的封装 —— 两种方案,A.使用dataSet的自身的submit,B.使用axios.post来提交
  • CISCN(Web Ezpentest)GC、序列化、case when
  • OSG三维渲染引擎编程学习之五十七:“第六章:OSG场景工作机制” 之 “6.1 OSG访问器”
  • Python3 输入和输出实例及演示
  • 召回-回忆录(持续更新)
  • 1243. 糖果/状态压缩dp【AcWing】
  • 【Spring Cloud Alibaba】001-单体架构与微服务架构
  • Renderer 使用材质分析:materials、sharedMaterials 及 MaterialPropertyBlock
  • java学习----网络编程
  • 这些「误区」99%的研发都踩过
  • Bi系统跟数据中台的区别是什么?
  • 微信小程序反编译方法分享
  • 有了这些接口测试用例+工具,测试效率想不提升都难
  • 麒麟 arm架构安装nginx
  • logrotate失效的排查---selinux开启状态拦截问题及解决方法
  • Allegro使用总结-查看Layout基本操作:
  • cmd del命令笔记
  • apifox持续集成+java+企微机器人+xxljob定时推送
  • 盘点Linux内核网络知识100道题,这篇就够了
  • 数据库敏感字段脱敏
  • skynet 游戏服务器探索(1)--熟悉skynet(网络)
  • select、poll、epoll
  • rollup的基本使用 基本配置与处理各种文件
  • ubuntu-debian系-redhat系
  • Altium Designer 18中原理图DRC编译和PCB DRC检查-AD DRC
  • zipfile — 访问 ZIP 压缩文件
  • 检查nmos管是否损坏
  • 第七章 - 聚合函数(count,avg,sum,max,min)和一些数学函数
  • Typescript的原始据类型和Any类型