0

将虚拟地址的内容加载到特定寄存器时,作为该过程的一部分,硬件和操作系统中需要发生的一些一般事件序列是什么

例如,LD 0xffe4ca32,R1

用于此的地址是虚拟地址吗?它需要先进行一些地址转换才能获得物理地址。

我的第一个问题是,

  When this instruction executes, how is this instruction handled by the Hardware and Operating System?

我的第二个问题是,

  Is the "value" of that virtual address, 0xffe4ca32, the contents of its mapped physical address or is it the physical address itself?

我只是不清楚正在加载到 R1 中的内容

4

1 回答 1

0

这里:

  1. 让我们假设 x86。首先,CPU 要求 MMU(内存管理单元)翻译地址。首先,MMU 检查称为 TLB(翻译后备缓冲区)的东西,其中存储了最近从虚拟到物理的翻译。如果存在,则返回引用的地址。否则,MMU 在页表中查找地址。如果该页面是仅主管页面,或标记为不存在于内存中的页面,则 CPU 将引发保护错误或页面错误。对于保护故障,操作系统通常会终止负责的进程,但它会这样做。对于页面错误,操作系统然后检查它自己的特殊页面结构,以查看该页面是否已被调出,或者它是否不存在。如果它已被分页,则将其读入内存中的某个页面,并且虚拟地址被重新映射到那个新位置。如果找不到空间,则会将另一个页面放在磁盘上以腾出空间(其中很多称为抖动)。如果它没有被调出,操作系统很可能会终止该进程,因为它正在尝试引用一个不存在的页面。
  2. 映射的物理地址的值。从用户空间的角度来看,虚拟内存指针的行为就像物理内存指针一样。在内核空间中,由于需要物理内存访问,因此存在一些复杂性(这通常通过称为身份分页的方式实现,其中前几百页直接映射到其相应的物理内存。
于 2012-12-12T15:18:13.750 回答