作者热门文章
- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
据我了解,要从物理内存访问页面,CPU 会为请求的页面生成 PageNumber 和 PageOffset。逻辑 PageNumber 内容随后被页表条目中的物理 PageNumber 内容替换。因此,请求页面的物理位置是PageNumber+PageOffset。那么,CPU 是如何获得 Offset 值的信息的呢?
另外,在分配新页面时,CPU如何确定要分配的页面的偏移值?
最佳答案
当完成从虚拟内存到物理内存的转换时,并不是地址中的所有位都被替换。虚拟内存的高位确实被物理地址位代替了,但是一定数量的低位被保留了下来,它们对应着偏移量。标识页面偏移量的位数因架构而异。
看看这张图:
图例:
请注意,在地址转换期间偏移量不会改变。因此,当 CPU 检索内存时,不需要计算 - 偏移量不变。
对于你的第二个问题:分配内存时,分配了一个整个页面,CPU 不关心页面中的偏移量。仅当从 CPU 请求特定内存地址(其偏移量不变)时,偏移量才有意义。
关于linux - 什么逻辑 CPU 适用于生成正确的 PageNumber 和 PageOffset?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25154069/
据我了解,要从物理内存访问页面,CPU 会为请求的页面生成 PageNumber 和 PageOffset。逻辑 PageNumber 内容随后被页表条目中的物理 PageNumber 内容替换。因此
我是一名优秀的程序员,十分优秀!