linux - 当一个物理地址映射到不同的虚拟地址时,后端的 dcache 会发生什么?

标签 linux arm memcached

我对 arm 的缓存问题感到困惑。 在这里,我映射了相同的 block 或物理内存,并在没有 O_SYNC 的情况下获得了两个不同的虚拟地址,这两个都将被缓存: (假设我只访问两者的前 4 个字节)

  1. If i read two address, how many dcache entries would be loaded, one or two?
  2. If i did write operation on one virtual memory, how many dcache entries would be marked dirty, one or two(if have to dcache entries)? what happened at the backends for dcache entries?

谢谢。

最佳答案

最近的 ARM 被指定为像缓存被物理标记一样(例如,缓存行由物理地址标识),因此多个别名虚拟地址(即使在不同的进程中)应该反射(reflect)相同的物理缓存行。

这不是普遍正确的; ARM-v7A 架构之前的旧版 ARM 内核支持虚拟标记缓存。

关于linux - 当一个物理地址映射到不同的虚拟地址时,后端的 dcache 会发生什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43509482/

相关文章:

c++ - Linux下一条命令编译运行C++代码

android - 解决所有硬重置标签问题的 repo 协议(protocol)

ios - Linux ARM ELF 和 iOS ARM ELF 文件有什么区别?

linux - 如何将软件编译成可重新安装的形式?

linux - Docker 容器的文件系统是什么?在此容器内运行的应用程序在哪个文件系统上运行?

ARM 上 C 代码的复杂性

交叉编译shellcode到arm

caching - memcached 与基于数据库的键值表?

ruby - 如何同时读取 Ruby 中的多个缓存键?

memcached - 在中找不到类 'Memcache'