memory - 如何从虚拟内存中加载内存?
问题描述
我知道操作系统通常会将Page Tables
一块虚拟内存映射到一块物理内存。
我的问题是,CPU 在加载给定字节时会加载整个块吗?
假设我有:
ld %r0, 0x4(%r1)
假设我的页面大小是4 KB
,CPU 是一次加载所有 4KB 还是设法在给定偏移量的情况下仅加载一个字节?
是page size
硬件强制还是软件和操作系统可配置?
编辑:
认为这page size
是硬件要求的:
可用的页面大小取决于指令集架构、处理器类型和操作(寻址)模式。操作系统从架构支持的大小中选择一种或多种大小
解决方案
您的问题涉及许多级别的 cpu/内存架构......不知道您想到的确切 cpu 架构/内存架构/版本:虽然 cpu-command 仅针对一个字节,但它会触发内存控制器找到整个物理页面并将那个(至少,预取可能启动)完全加载到二级/一级缓存。您的数据在填充缓存后传输。
推荐阅读
- r - 如何在 Rtsne 图中对我的样本进行颜色编码
- c# - 设置数据上下文时如何使用用户控件依赖属性?
- java - Java 8 Streams:为什么 mapToInt 需要 Integer::parseInt 作为参数?
- java - 此代码中的继承错误是什么?
- python - Python-Django [SSL: WRONG_VERSION_NUMBER] 错误
- ios - 删除 TableView 中的单个分隔符
- design-patterns - 微服务 CQRS 分离构建(写入)查询模型和读取模型
- javascript - 如何在javascript中展平数组?
- ruby - 如何始终将类方法附加到链式方法调用
- javascript - mocha 似乎无法识别文件系统