搜索
查看
编辑修改
首页
UNITY
NODEJS
PYTHON
AI
GIT
PHP
GO
CEF3
JAVA
HTML
CSS
搜索
Cpp五条
这个屌丝很懒,什么也没留下!
关注作者
热门标签
jquery
HTML
CSS
PHP
ASP
PYTHON
GO
AI
C
C++
C#
PHOTOSHOP
UNITY
iOS
android
vue
xml
爬虫
SEO
LINUX
WINDOWS
JAVA
MFC
CEF3
CAD
NODEJS
GIT
Pyppeteer
article
热门文章
1
编写程序,将给定的n个整数存入数组中,将数组中的这n个数逆序存放,再按顺序输出数组中的元素。_本题要求编写程序,将给定的n个整数存入数组中,将数组中的这n个数逆序存放,再按顺
2
JAVA新实战1:使用vscode+gradle+openJDK21搭建java springboot3项目开发环境_vscode gradle
3
[时序波动关联]模型CoFLUX论文要点整理
4
python 三维数组,numpy中np.shape的理解_python np.shape
5
Ubuntu16.04.7+Qt15.5.0环境配置(一条龙讲解)_qt ubuntu
6
基于双层蚂蚁算法和区域优化的机器人导航新算法 翻译+总结_mo-fa
7
nested exception is java.lang.NoClassDefFoundError: javax/xml/soap/SOAPElement
8
Flutter 组件化
9
Android Studio模拟器无法联网网页显示forbidden_android forbidden
10
3D高斯泼溅的崛起
当前位置:
article
> 正文
全面解析虚拟内存概念_.虚拟空间64位
作者:Cpp五条 | 2024-03-22 03:22:48
赞
踩
.虚拟空间64位
一个系统中的进程是与其他进程共享CPU和主存资源的。随着对CPU需求的增长,进程以某种合理的平滑的方式慢了下来。
但是如果太多的进程需要太多的内存,那么它们中的一些就根本无法运行。当一个程序中没有空间可以用时,那就是它运气不好了。内存还容易被破坏。如果某个进程不小心写了另一个进程使用的内存,它就可能以某种完全和程序逻辑无关的令人迷惑的方式失败。
为了更加有效的管理内存并且少出错,现代系统提供了一种对主存的抽象的概念,叫做虚拟内存(VM)。虚拟内存时硬件异常、硬件地址翻译、主存、磁盘文件和内核软件的完美交互,它为每一个进程提供一个大的、一致的和私有的地址空间。通过一个很清晰的机制,虚拟内存提供了三个很重要的能力:
它将主存看成是一个存储在磁盘上的地址空间的高速缓存,在主存中只保存活动区域,并根据需要在磁盘和主存之间来回传送数据,通过这种方式,高效的使用了主存。
它为每个进程提供了一致的地址空间,从而简化了内存管理
它保护了每个进程的地址空间不被其他进程破坏。
一。物理和虚拟寻址
计算机系统的主存被组织成一个有M个连续的字节大小的单元组成的数组。每字节都有一个唯一的物理地址(PA)。第一个字节的物理地址为0,接下来的字节地址为2,依次类推。给定这种简单的结构,CPU方位内存的最自然的方式就是使用物理地址。我们把这种方式称为物理寻址(physical addressing)。
早期的PC使用的是物理地址,而且诸如数字信号处理器、嵌入式微控制器以及Cray超级计算机这样的系统仍然还是继续使用这种寻址方式。然而现代的处理器使用的是一种称为虚拟寻址(virtual address)的寻址方式。
使用虚拟地址,CPU通过生成一个虚拟地址(Virtual Address,VA)来访问主存,这个虚拟地址在被送到内存之前先转换成适当的物理地址。将这个虚拟地址转换成物理地址的任务叫做地址翻译(address translation)。就像异常处理一样,地址翻译需要CPU硬件和操作系统的紧密合作。CPU芯片上叫做
内存管理单元
(MMU)的专有硬件,利用存放主存中的查询表来动态的翻译虚拟地址,该表的内容由操作系统来管理。
二。地址空间
地址空间是一个非负整数的有序集合{0,1,2,.......}。如果地址空间中的整数是连续的,那么我们说它是一个线性的连续地址空间。在一个带有虚拟内存的系统中,CPU从一个由N个地址的地址空间中生成虚拟地址,这个地址空间称为虚拟地址空间(virtual address space)。一个地址空间的大小是由表示最大地址所需要的位数来描叙的。现代系统通常支持32位或者64位虚拟地址空间。
一个系统还有一个物理地址空间(physical address space),对应于系统中物理内存的M个字节。地址空间的概念是十分重要的,因为它清楚地区分了数据对象(字节)和它们地属性(地址)。一旦认识到了这种区别,那么我们就可以将其推广了,允许每个数据对象有多个独立地地址空间,其中每个地址都选自一个不同的地址空间。这就是虚拟内存的基本思想。主存中的每字节都有一个选自虚拟空间的虚拟地址和一个选自物理空间的物理地址。
三。虚拟内存作为缓存的工具
概念上而言,虚拟内存被组织为一个由存放在磁盘上的N个连续的字节大小的单元组成的数组。每字节都有一个唯一的虚拟地址,作为到数组的索引。磁盘上数组的内容被缓存到主存中。和存储器层次结构中其他缓存一样,磁盘(较低层)上的数据被分割为块,这些块作为磁盘和主存之间的传输单元。VM系统通过将虚拟内存分割为称为虚拟页(Vitrual Page)的大小固定的块来处理这个问题。每个页面大小为P字节。类似的,物理内存页被分割为物理页(Physical page,PP
),大小也为P字节(物理页面也被称为页帧 Page frame)。
在任何时刻,虚拟页面的集合都分为三个不相交的子集:
未分配:VM系统还未分配(或者创建)的页。未分配的块没有任何数据和它们相关联,因此也就不占用任何磁盘空间。
缓存的:当前已缓存在物理内存中的已分配页。
未缓存的:未缓存在物理内存中的已分配页。
四。页表
同任何缓存一样,虚拟内存系统必须由某种方法来判定一个虚拟页是否缓存在DRAM中的某个地方。如果是,系统还必须确定这个虚拟页存放在哪个物理页面中。如果不命中,系统必须判断这个虚拟页面放在磁盘的哪个位置,在物理内存中选择一个牺牲页,并将虚拟页从磁盘复制到DRAM中,替换这个牺牲页面。
这些功能是软硬件联合提供的,包括操作系统、MMU(内存管理单元)中的地址翻译硬件和一个存放在物理内存中叫作页表(page table)的数据结构,页表将虚拟页映射到物理页面。每次地址翻译硬件将一个虚拟地址转换为物理地址时,都会读取页表。操作系统负责维护页表的内容,以及在磁盘与DRAM之间来回传送页。
下图展示了一个页表的基本组织结构。页表就是一个页表条目(Page Table Entry)的数组。虚拟地址空间中的每个页在页表中都有一个固定的偏移量处都有一个PTE。为了我们的目的,我们假设每个PTE是由一个有效位(valid bit)和一个n位地址字段组成的。有效位表明了该虚拟页面当前是否被缓存在DRAM中。如果设置了有效位,那么地址字段就表示DRAM中相应的物理页的起始位置,这个物理页中缓存了该虚拟页。如果没有设置有效位,那么这个空地址表示这个虚拟页还未被分配。否则,这个地址就会指向该虚拟页在磁盘上的起始位置。
五。地址翻译
声明:
本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:
https://www.wpsshop.cn/w/Cpp五条/article/detail/284964
推荐阅读
article
使用
Docker
部署
Spring
-
Boot
-项目,带劲!
_
add
target
/${
jar
_
file
...
Docker
一次构建、处处运行及快速启停的特性,在微服务架构中有着举足轻重的地位,具体的概念性的东西就不介绍了,不懂的...
赞
踩
article
你还不会零基础
的
uniapp
吗-
uniapp
一周
实战
—
—
第一
、二天
_
uniapp
能
一周
学完
并
上线...
uniapp
商城实战
第一
部分项目搭建配置tabbar获取轮播图数据实现轮播图
的
结构和数据渲染bug:轮播渲染值相关素材包...
赞
踩
article
微
搭
低
代码
官方
模板
解析(一)_微
搭
表单输入进行公式计算...
微
搭
低
代码
目前开放了PC端功能,使用方法是需要在
模板
中心启用
模板
,
模板
创建成功后会自动增加PC端的组件库及创建需要的数据...
赞
踩
article
Vue中
this
.$
router
.
push
传参
方式_
this
.$
router
.
push
传参
...
1.params
传参
:var id =
this
.tableDate[index].id;
this
.$
router
.p...
赞
踩
article
Amazon
S3
文件
上传
工具
(SDK V2)_
software
.
amazon
.
awssdk
...
前段时间接触到公司使用了
Amazon
S3
协议的
文件
管理系统,以前从来没接触过
Amazon
的东西,文档大部分是英文机翻,...
赞
踩
article
跑马灯
实验——
库函数
h...
一、硬件连接LED0PA8LED1PD2选择GPIO输出方式:推挽输出:可以输出强高低电平二、
库函数
介绍组介绍1.组 U...
赞
踩
article
Android
NCNN
TNN
官方例子基本实践_
tnn
example
...
TNN
和
NCNN
官方Demo简单集成_
tnn
example
tnn
example
基础知识 &...
赞
踩
article
已解决
com
.
sun
.
jersey
.
api
.
client
.ClientHandlerExceptio...
已解决
com
.
sun
.
jersey
.
api
.
client
.
ClientHandlerException
配置
服务器
异常的正...
赞
踩
article
Nacos
配置
中心
_
nacos
修改
配置
后
需要
重启服务吗...
Nacos
配置
中心
_
nacos
修改
配置
后
需要
重启服务吗
nacos
修改
配置
后
需要
重启服务吗 ...
赞
踩
article
计算机网络
期末考试
题库
(超级多
的
那种)_
文件传输
协议
是
( )上
的
协议
...
废话不多说,不管
是
应对
期末考试
还
是
考研基础复习,刷题
是
必不可少
的
!!!大家冲就完了!!!!记得给 罡罡同学点关注哦! 后...
赞
踩
article
微信
小程序
getPhoneNumber
获取
手机号
登录
、偶尔会报错的问题
解决办法
、
code
失效问题_g...
微信
小程序
getPhoneNumber
获取
手机号
效果图:(手机
登录
方法
在上一篇文章有写:https://blog.csd...
赞
踩
article
Dubbo
服务
治理无
注册
中心
学习
_
不使用
注册
中心
如何
负载
均衡...
Dubbo
服务
治理节点说明节点角色说明Provider暴露
服务
的
服务
提供方Consumer调用远程
服务
的消费方Regi...
赞
踩
article
一文
说
透低
代码
平台
/
无
代码
平台
...
速度是当前企业数字化及 IT 系统转型中一个非常重要的影响因素。为了提高企业的适应能力,以便迅速有效地满足市场需求,为企...
赞
踩
article
200+篇
Graph4
NLP
文献集:图
深度
学习
在
NLP
任务
的
应用...
大家好,我是kaiyuan刷gayhub发现
的
好东西,当然第一时间分享给朋友们啦!一份图
深度
学习
自然语言处理文献集,详细...
赞
踩
article
SCI一区 |
Matlab
实现
GAF
-
PCNN
-
MSA
格拉姆
角场
和
双通道
PCNN
融合
注意力
机制的多...
SCI一区 |
Matlab
实现
GAF
-
PCNN
-
MSA
格拉姆
角场
和
双通道
PCNN
融合
注意力
机制的多特征分类预测_mat...
赞
踩
article
HTML
无序
列表
...
无_html无序
列表
html无序
列表
1,意义:<ul></ul>表示H...
赞
踩
article
图解
格拉姆
-
施密特
正交
化
和改进的
格拉姆
-
施密特
正交
化
_
matlab
实现
格拉姆
-
施密特
正交
化
...
Gram-Schmidt
正交
化
格莱姆-
施密特
(Gram-Schmidt)
正交
化
常用于求解向量空间的标准
正交
基,同时也是一...
赞
踩
article
stm32
影子
寄存器
、预装载
寄存器
,
TIM
_
OC1PreloadConfig
和
TIM
_ARRPrel...
一直没搞清楚
stm32
定时器的
TIM
_
OC1PreloadConfig
、
TIM
_
ARRPreloadConfig
函数的作...
赞
踩
article
Java
AWS
S3
文件上传实现_
aws
-
java
-
sdk
-s3...
Java
实现Amazon
S3
对象存储的文件上传功能_
aws
-
java
-
sdk
-s3
aws
-
java
-
sdk
-s3 ...
赞
踩
article
将
域名
绑定到
Office
365
上_
office
365
的
域名
onmicrosoft
...
当我们申请
Office
365
网站后,默认
的
登陆名字为user@domain.
onmicrosoft
.com 这样
的
格式比...
赞
踩
相关标签
面试
java
经验分享
uniapp
物联网
微信小程序
微搭低代码
低代码
教程
vue
路由
传参
Amazon
S3协议
单片机
stm32
目标检测
人工智能
计算机视觉
服务器
php
开发语言
spring
Exception
Error