linux - 处理器和虚拟/物理地址

标签 linux memory memory-management operating-system processor

简而言之,根据我对内存管理的理解,处理器会产生虚拟地址。这些地址由 MMU 使用每个进程的地址表转换为相应的物理地址(在需要时,中间有 TLB 和页面错误)。

我的问题是处理器是否总是产生虚拟地址?在地址空间(用户/内核)、处理器模式(用户/内核)和上下文(进程/系统)方面,处理器何时始终产生物理地址?

最佳答案

内存通常对虚拟地址或段一无所知,这是 CPU 的概念,它只是内存,是可寻址和可读/可写位的集合。处理器使用物理地址与内存通信。许多简单的处理器(尤其是旧处理器或用于特殊嵌入式用途的处理器)没有 MMU、虚拟地址或特权模式。具有 MMU 和虚拟地址的那些通常要么从禁用的开始,要么首先使用固定映射,否则如果根本没有映射,任何事情都无法工作。

因此,物理地址始终在使用中,而虚拟地址则取决于所使用的 CPU 和软件。

关于linux - 处理器和虚拟/物理地址,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32844209/

相关文章:

c++ - 是否需要在原始指针位置调用delete[]

delphi - 在 Delphi 中,将一个对象转换为它的父对象会占用更多的内存吗?

memory - h2o 包 : total cluster memory zero

ios - 是否有必要在 UIView.animateWithDuration(...) 的闭包中使用 [unowned self]?

c++ - 带有 exit(1) 调用的库的 Rcpp

php - 无法使用 Yii::log 在 linux 中写入日志?

linux - 从命名管道收集数据一段时间

linux - 递归地从目录中的文件中删除 '\r' 字符

linux - .net 核心一个代码,用于 Windows/Linux 的服务/守护程序

iOS Viewcontroller 引用 TableView IBOutlet - 弱还是强?