作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我一直试图了解虚拟内存,但是当我真正了解虚拟内存时,我会感到困惑。我了解(或感觉像我一样)以下事实:虚拟内存是一种让进程“认为”已为其分配了一定数量的内存的方式。虚拟地址空间被划分为相等大小的页面,物理内存被划分为相等大小的帧,并且页面映射到这些帧。
但是就像..什么时候发生?在此图中,CPU正在运行程序P。这意味着P的一部分已经在物理内存中,对吗? (因为cpu只可以访问物理/主内存)。那么,CPU到底指的是什么呢?我看到它是虚拟内存空间中的页面,所以..该页面究竟代表什么?是指示吗?我们是否正在将指令从虚拟内存移动到物理内存,以便更多程序位于物理内存中(直到那时才需要)?我要走吗?谁可以给我解释一下这个?
最佳答案
该图显示了将虚拟地址转换为物理地址的过程。
从Program P
到CPU的粗箭头表示正在“馈入” CPU.1中的程序。
CPU“指向”虚拟地址,该虚拟地址由指令用来寻址程序P
中的存储位置。它分为两个部分:
页面表索引(p
):虚拟地址包含页面表的索引,该索引将页面映射到页面框架(f
)。有关此机制(包括多级分页)的说明,请阅读this。
偏移量(o
):如您所见,偏移量直接添加到物理地址,因为分页的最小可寻址单元是页面,而不是字节
最后,计算出的地址用于寻址物理内存中的存储位置。
1“ fed”表示“从辅助存储器读取(读成红色,读为红色)并按指令执行程序”。
关于memory-management - 有人可以向我解释有关分页(虚拟内存)的图表吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33890445/
我是一名优秀的程序员,十分优秀!