超标量处理器设计笔记(5)虚拟存储器、地址转换、page fault
虚拟存储器
- 概述
- 地址转换
- 单级页表
- 多级页表
- 案例
- 最好情况:虚拟地址是连续的
- 最差情况:每个第二级 PT 都装有一项
- 增加级数
- Page Fault
- 程序保护
概述
当程序比物理内存空间更大时,无法全部装在物理内存中,需要对程序进行切片
虚拟存储器优点(需要操作系统调度)
- 将当前使用的部分程序放到物理存储器中,其余部分放在下一级存储器里。不需要切割程序
- 如果同时运行多个程序,不需要限制每个程序在规定的地址空间
- 保护各程序的内容不会互相改写
- 将相同功能的程序可以映射到相同位置
虚拟内存的地址范围
- 32 微处理器 0 ~ 0xFFFF FFFF 4GB
- 64 微处理器 0 ~ 0xFFFF FFFF FFFF FFFF
物理存储器的地址范围
- 32 微处理器 0 ~ 0xFFF FFFF 256MB (通常是 256MB,最大 4GB 和虚拟存储器内存大小一致)
- 64 微处理器 0 ~ 0xFFFF FFFF FFFF FFFF
现在 64 位计算机,既可以用 8GB 、16GB、32GB 内存。
没有使用虚拟存储器的系统:
使用虚拟存储器的系统:
地址转换
虚拟地址空间的划分以 页
为单位,典型大小为 4KB
物理地址的划分以 frame
为单位,典型大小同样为 4KB,
程序开始执行时,每次从硬盘搬运到内存时,搬运单位为页
VA[11:0] 表示页内的位置,page offset
VPN (visual page number):VA 剩余部分用来表示哪个页
PA[11:0] 表示 frame 内的位置,frame offset
PFN (physical frame number):PA 剩余部分用来来表示哪个 Frame
当 页
大小和 frame
大小一样时,page offset 和 frame offset 不需要变化
页面大的优缺点
- 降低页面替换的频率
- 用不到这么大页时,会造成一个页内的很多空间被浪费了
- 替换的速度和成本更高
案例:
16 位处理器,其 Visual Memory Space
为 64K (2^16 = 2^4 * 2^12 = 16 * 4k),16 个页
Physical Memory Space
为 32K (2^3 * 2^12 = 8 * 4K),8 个 Frame
现在有一个程序,大于 32KB,所以其中的 32KB 部分映射到 Physical Memory Space
,剩余部分映射到 Disk
中
例子 1:
Load R2, 5[R1] // 假设R1 = 0
得到的虚拟地址为 R1 + 5= 5,所以在 Visual Memory Space
中是 0~4K,Physical Memory Space
中 12~16K,具体是 12k + 5。
例子 2:
Load R2, 0[R1] // 假设R1 = 32780 32~36K之间
得到的虚拟地址为 R1 = 32780,所以在 Visual Memory Space
中是 32~36K ,Physical Memory Space
中没有,故 MMU 会产生 Page Fault,从 disk 中取出一个 Frame 替代原 Physical Memory Space
最少被使用的。这样就可以取到数据
单级页表
PT (Page Table) 页表:VPN 到 PFN 的转换表
页表存放在物理内存中
- 虚拟地址来寻址,页表寻址的内容是虚拟地址对应的物理地址
- 页表寄存器 (Page table register PTR):指示页表在物理存储器的位置
- 每次操作系统将程序调入到物理存储器时,更新 PRT
通过 VA[31:12] 索引到 Page Table Register 中的对应的项,由此获得 PFN
Page Offset 由于页面大小和 frame 大小一致,所以直接平移
Valid 表示 VPN 对应的内容在物理存储器中
Page Table 只需要 18+1 (valid) = 19 位,但由于物理存储器的数据位宽为 32bits,所以表项也是 32bits,多余的位可以用来表示其他信息,比如说页面的属性信息(可读、可写等)
这样页面大小为 32 bits * 2^20 = 4B * 1M = 4MB,放在物理内存里
程序状态包含:该程序页表、PC、通用寄存器。
该程序通常成为进程,可以保存好信息(页表只需要保存页表对应的 PTR 保存即可,mapping 信息可以用 store 指令完成)后暂停,过段时间再恢复,继续执行。不同进程使用的物理内存不会产生冲突了。
打开一个程序,操作系统会分配物理内存的空间、创建页表和堆栈,。当进程不存在时,物理内存的空间便会得到释放。
[!Note] 程序、进程、线程的关系
进程是操作系统进行资源分配的最小单元,
线程是操作系统进行运算调度的最小单元。
执行一次程序则会产生一个进程,多次多个,一个进程可以包含多个线程。
进程之间不会互相影响,线程之间公用地址空间,会互相干扰和影响。
由于页表空间需要 4MB 的连续地址来存储,一个处理器同时运行上百个进程时,则需要上百个 4MB 的连续地址来存储,非常占用空间。
所以采用多级页表的方式,来减少页表对物理存储空间的占用
多级页表
二级页表需要的空间:
32 位处理器下
- 单级页表:虚拟地址空间为 2^20 * 4B = 4MB
- 二级页表 (如果分成 2^10 等份,则需要 2^10+1 (第二级 pt 个数+第一级 pt) 个连续地址空间,每个空间大小为:2^10 * 4B = 4KB)
- 第一级表项,有 1 项,每项有 2^10 项第二级表项
- 第二级表项,有 2^10 项,每项有 2^10 项
实际上,第一级 PT 不一定填满,第二级 PT 只需要填充足够即可。
有需要时增加第二级 PT,一次增加 2^10 * 4KB = 4MB 的页面
[!Note]
PT 最少也需要 4KB 的连续地址空间,即便只用了其中一项
案例
32 位处理器下,页面大小为 4KB 下,4MB 程序的页表需要占用多大的空间呢?
最好情况:虚拟地址是连续的
一个二级 PT 能存储:2^10 * 4KB = 4MB 的程序
总共需要 1 项一级 PT,1 项二级 PT
页表占用总空间:2 * 4B * 2 ^10 = 8 KB (2 个 PT,每个 PT 占用 4B * 2^10 的空间)
最差情况:每个第二级 PT 都装有一项
一共 2^10 项二级列表,刚好 2^10 * 4KB = 4MB 的空间
页表占用总空间:2^10 * 4B * (2^10+1) = 4MB + 4 KB ( 2^10+1 个 PT,每个 PT 占用 4B * 2^10 = 4KB 的空间)
增加级数
当位数过多时,可以采用增加级数的方式
优点:级数越多,页表对物理空间的占用越少
缺点:需要逐级访问次数越多,时序越紧张
Page Fault
Page fault: 访问 PT 时,valid 位为 0,表示该页面在硬盘里,没有取到内存中
Page fault 通常由操作系统完成
- 发生 Page fault 时,访问硬盘时间很长,即便用软件处理需要几百条指令,但相比访问硬盘时间微乎其微
- 在替换物理内存的 frame 时,软件可以根据实际情况实现灵活替换算法
但是 valid=0 时,此时系统只知道 VA,怎么找对应的硬盘位置呢?
硬盘中会为一个进程的所有页开一个空间,也就是Swap 空间,同时会有一个表格来记录每个页在硬盘的存储位置。
为了处理 Page Fault,处理器在硬件上提供的支持
- 发生 page fault,产生异常,并且跳转到异常处理程序的入口地址
- 写物理地址之后,标记 dirty
- 访问物理地址时,标记 Use,该位会被操作系统周期性清零
程序保护
操作系统需要访问物理内存的所有空间,所以一般不使用页表
物理内存专门有一块给操作系统使用,不允许别的进程访问
比如:
32 位 MIPS 处理器,将 4GB 的虚拟存储空间分为 kseg0\1\2 和 kuseg 四个区域。
Kseg0 区域的属性是 unmapped,不经过页表转换
操作系统的内核指令和数据位于 kseg0 上,用户进程只能使用 kuseg
ARM 处理器会使用二级页表的方法,第二级页表的 PTE 都有一个 AP 部分
Privileged : 可以访问处理器所有资源,操作系统处于该模式下
User: 普通用户程序下
加入程序保护之后的地址转换。第二级页表控制 4KB 的页面权限,第一级控制 4MB 的页面权限
相关文章:
超标量处理器设计笔记(5)虚拟存储器、地址转换、page fault
虚拟存储器 概述地址转换单级页表多级页表案例最好情况:虚拟地址是连续的最差情况:每个第二级 PT 都装有一项 增加级数 Page Fault 程序保护 概述 当程序比物理内存空间更大时,无法全部装在物理内存中,需要对程序进行切片 虚拟…...
SparkSQL 读写数据攻略:从基础到实战
目录 一、输入Source 1)代码演示最普通的文件读取方式: 2) 通过jdbc读取数据库数据 3) 读取table中的数据【hive】 二、输出Sink 实战一:保存普通格式 实战二:保存到数据库中 实战三:将结果保存在h…...
react 使用状态管理调用列表接口渲染列表(包含条件查询,统一使用查询按钮,重置功能),避免重复多次调用接口的方法
react开发调用api接口一般使用useEffect来监听值的变化,通过值的变化与否来进行接口调用。 比如我们要进行一个查询接口 const [pageParams, setPage] useState({name: ,id: ,});const [dataList, setDataList] useState([]);const getList async () > {const…...
Stable Audio Open模型部署教程:用AI打造独家节拍,让声音焕发新活力!
Stable Audio Open 是一个开源的文本到音频模型,允许用户从简单的文本提示中生成长达 47 秒的高质量音频数据。该模型非常适合创建鼓点、乐器即兴演奏、环境声音、拟音录音和其他用于音乐制作和声音设计的音频样本。用户还可以根据他们的自定义音频数据微调模型&…...
加油站-(贪心算法)
题目描述 在一条环路上有 n 个加油站,其中第 i 个加油站有汽油 gas[i] 升。 你有一辆油箱容量无限的的汽车,从第 i 个加油站开往第 i1 个加油站需要消耗汽油 cost[i] 升。你从其中的一个加油站出发,开始时油箱为空。 给定两个整数数组 gas…...
k8s-持久化存储PV与PVC(1)
1、概述 为什么 kubernetes 要持久化存储? 在 kubernetes 中部署应用都是以 Pod 的容器运行的,而 Pod 是有生命周期,一旦 Pod 被删除或重启后,这些数据也会随着丢失,则需要对这些数据进行持久化存储。 PV࿱…...
Linux Red Hat Enterprise
下载 https://developers.redhat.com/products/rhel/download 安装...
《中型 Vue 项目:挑战与成长》
一、引言 在当今的前端开发领域,Vue 作为一款渐进式 JavaScript 框架,以其强大的功能和灵活性备受开发者青睐。对于中型 Vue 项目而言,其重要性不言而喻。中型 Vue 项目通常在功能复杂度和规模上介于小型项目和大型项目之间,既需要…...
配置 DNS over HTTPS阻止DNS污染
概念介绍 DOH简介 DNS(域名系统)的主要功能是将域名解析成IP地址,域名的解析工作由DNS服务器完成。从安全角度来看,域名解析的请求传输时通常不进行任何加密,这导致第三方能够很容易拦截用户的DNS,将用…...
Facebook广告文案流量秘诀
Facebook 广告文案是制作有效 Facebook 广告的关键方面。它侧重于伴随广告视觉元素的文本内容。今天我们的博客将深入探讨成功的 Facebook 广告文案的秘密! 一、广告文案怎么写? 正文:这是帖子的正文,出现在您姓名的正下方。它可…...
22. 五子棋小游戏
文章目录 概要整体架构流程技术名词解释技术细节小结 1. 概要 🔊 JackQiao 对 米粒 说:“今天咱们玩个五子棋小游戏,电脑与你轮流在一个 nn 的网格上放置棋子(X 或 O),网格由你输入的正整数n决定࿰…...
fastadmin框架同时使用 阿里云oss和阿里云点播
背景 项目的实际需求中既要用到阿里云oss产品又用到阿里云点播系统,实现完美的统一。设置两个地址downUrl,thirdCode。分别代表阿里云oss上传路径和阿里云点播系统vId。 实现 默认框架你已经集成好阿里云oss集成工作,前端html页面实现 <…...
Java-JMX 组件架构即详解
JMX架构由三个主要组件构成: MBeans(Managed Beans):代表可管理的资源,是JMX的核心。MBean可以是Java类或接口,提供了管理操作的接口,如获取系统信息、设置参数等。MBeanServer&#x…...
unity打包web,发送post请求,获取地址栏参数,解决TypeError:s.replaceAll is not a function
发送post请求 public string url "http://XXXXXXXXX";// 请求数据public string postData "{\"user_id\": 1}";// Start is called before the first frame updatevoid Start(){// Post();StartCoroutine(PostRequestCoroutine(url, postData…...
java+ssm+mysql校园物品租赁网
项目介绍: 使用javassmmysql开发的校园物品租赁网,系统包含管理员、用户角色,功能如下: 管理员:用户管理;物品管理(物品种类、物品信息、评论信息);订单管理࿱…...
Spring Boot中实现JPA多数据源配置指南
本文还有配套的精品资源,点击获取 简介:本文详细介绍了在Spring Boot项目中配置和使用JPA进行多数据源管理的步骤。从引入依赖开始,到配置数据源、创建DataSource bean、定义实体和Repository,最后到配置事务管理器和使用多数据…...
服务器加固
1.服务器密码复杂度 密码最小长度,密码复杂度策略 vim /etc/pam.d/system-auth --------------- #密码配置 #ucredit:大写字母个数;lcredit:小写字母个数;dcredit:数字个数;ocredit:…...
探索CSS中的背景图片属性,让你的网页更加美观
导语:在网页设计中,背景图片的运用能够丰富页面视觉效果,提升用户体验。本文将详细介绍CSS中背景图片的相关属性,帮助大家更好地掌握这一技能。 一、背景图片基本属性 1、background-image 该属性用于设置元素的背景图片。语法如…...
Oracle的打开游标(OPEN_CURSORS)
一、OPEN_CURSORS 概述 OPEN_CURSORS 指定会话一次可以拥有的打开游标(私有 SQL 区域的句柄)的最大数量。可以使用此参数来防止会话打开过多的游标。 OPEN_CURSORS参数说明 特性 描述 参数类型 Integer 默认值 50 修改方式 ALTER SYSTEM PDB级别…...
数值分析—数值积分
研究背景 积分的数学解法为牛顿莱布尼兹公式,数学表示为 ∫ a b f ( x ) d x F ( b ) − F ( a ) \int_{a}^{b} f(x)dxF(b)-F(a) ∫abf(x)dxF(b)−F(a),但应用该方法有如下困难: 1, f ( x ) f(x) f(x)的原函数有时不能用初等函…...
克服大规模语言模型限制,构建新的应用方法——LangChain
大模型 大模型的出现和落地开启了人工智能(AI)新一轮的信息技术革命,改变了人们的生 活方式、工作方式和思维方式。大模型的落地需要数据、算力和算法三大要素。经过几 年发展,大模型的数据集(包括多模态数据集)制作已经形成了规约,Meta、Go…...
计算机网络 —— HTTPS 协议
前一篇文章:计算机网络 —— HTTP 协议(详解)-CSDN博客 目录 前言 一、HTTPS 协议简介 二、HTTPS 工作过程 1.对称加密 2.非对称加密 3.中间人攻击 4.引入证书 三、HTTPS 常见问题 1.中间人能否篡改证书? 2.中间人能否调…...
React第十七章(useRef)
useRef 当你在React中需要处理DOM元素或需要在组件渲染之间保持持久性数据时,便可以使用useRef。 import { useRef } from react; const refValue useRef(initialValue) refValue.current // 访问ref的值 类似于vue的ref,Vue的ref是.value,其次就是vu…...
React第十五节useReducer使用详解差异
useReducer() 的用法注意事项 1、 概述: useReducer() 常用于管理复杂的状态更新逻辑,特别是在状态更新依赖于多个条件或动作时,useReducer 提供了一种更加结构化和可维护的方式来处理状态。可以将更新函数写在组件外面 它与 useState() 相…...
NanoLog起步笔记-5-客户端简要描述
nonolog起步笔记-5-客户端简要描述 客户端的简要的设计图路notify模式服务端最好分两个核 NanoLog::setLogLevel(NOTICE);从 NANO_LOG 开始NANO_LOGcompiling time的语句getNumNibblesNeeded:得到prompt中,number的数量countFmtParams:得到所…...
Flink:入门介绍
目录 一、Flink简介 2.1 Flink 架构 2.2 Flink 应用程序 运行模式 二、Flink 集群 部署 2.1 本地集群模式 2.1.1 安装JDK编辑 2.1.2 下载、解压 Flink 2.1.3 启动集群 2.1.4 停止集群 2.2 Standalone 模式 2.2.0 集群规划 2.2.1 安装JDK 2.2.2 设置免密登录 2…...
目标跟踪领域经典论文解析
亲爱的小伙伴们😘,在求知的漫漫旅途中,若你对深度学习的奥秘、JAVA 、PYTHON与SAP 的奇妙世界,亦或是读研论文的撰写攻略有所探寻🧐,那不妨给我一个小小的关注吧🥰。我会精心筹备,在…...
网络编程 | TCP套接字通信及编程实现经验教程
1、TCP基础铺垫 TCP/IP协议簇中包含了如TCP、UDP、IP、ICMP、ARP、HTTP等通信协议。TCP协议是TCP/IP协议簇中最为常见且重要的通信方式之一,它为互联网上的数据传输提供了可靠性和连接管理。 TCP(Transmission Control Protocol,传输控制协议…...
SAP导出表结构并保存到Excel 源码程序
SAP导出表结构并保存到Excel,方便写代码时复制粘贴 经常做接口,需要copy表结构,找到了这样一个程程,特别有用。 01. 先看结果...
Linux下redis环境的搭建
1.redis的下载 redis官网下载redis的linux压缩包,官网地址:Redis下载 网盘链接: 通过网盘分享的文件:redis-5.0.4.tar.gz 链接: https://pan.baidu.com/s/1cz3ifYrDcHWZXmT1fNzBrQ?pwdehgj 提取码: ehgj 2.redis安装与配置 将包上传到 /…...
wordpress主题在线汉化插件下载/今日军事新闻头条新闻
待续转载于:https://www.cnblogs.com/abdw/p/7264402.html...
免费动漫软件app下载大全/嘉兴关键词优化报价
租下店面后的第一件事情就是装修了,装修就面临着一大笔钱要出去了,但是你也要面临着种种装修陷阱,下面小编就带大家了解下店面装修大概多少钱,带大家避开装修陷阱,感兴趣的一起来了解吧。店面装修大概多少钱店面装修根…...
wordpress 緩慢/石家庄seo外包公司
SpringBoot项目解决 log4j2 核弹漏洞! 事件情况 北京时间12月9号深夜,Apache Log4j2被曝出一个高危漏洞,攻击者通过jndi注入攻击的形式可以轻松远程执行任何代码。随后官方紧急推出了2.15.0和2.15.0-rc1新版本修复,依然未能完全…...
上海网站建设最好的公司/公司网站的推广方案
Toggle就是开关的意思,ToggleButton就是一个开关按钮组件,在BB10 Cascades中可以在QML中直接加入一个ToggleButton来作为开关,该该控件显示出来是这个样子的: 如果是选中状态,或者说是“打开”状态显示出来是这个样子的…...
安徽网站备案要多少时间/天津天狮网络营销课程
🍇JDBC 1、JDBC基础流程 加载驱动获取连接准备sql封装处理块发送sql数据返回结果处理结果关闭资源 public class Test01 {public static void main(String[] args) throws ClassNotFoundException, SQLException {//加载驱动Class.forName("oracle.jdbc.driv…...
做网站靠广告能赚钱吗/百度关键词推广方案
mod 运算与乘法逆元 %运算 边乘边mod 乘法 除法 mod 希望计算5/2%76 乘法 除法 mod 希望计算5/2%76 两边同时/x 在取mod(p)运算下,a/ba*bp-2 bp-2 1/b bp-2 是b的乘法逆元 6 P3811 P1082 P不为素数 Φ(m)欧拉函数: 1— m中有多少…...