【问题标题】:OS and Hardware role during a LD instructionLD 指令期间的操作系统和硬件角色
【发布时间】:2012-12-12 09:37:42
【问题描述】:

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

例如, 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 中加载了什么

【问题讨论】:

  • 您应该提及您对哪种硬件架构感兴趣。x86?
  • 是的,但我的意思是一般地问这些问题,不一定是特定于架构的。只是需要在硬件和操作系统中发生的一些一般事件序列
  • 但实际发生的情况取决于架构。在 AVR 微控制器上,这样的指令只会将这个内存地址的值加载到那个寄存器中——就是这样。没有虚拟内存,什么都没有。在更大的架构上,这可能要复杂得多。

标签: memory-management operating-system virtualization


【解决方案1】:

这里:

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

【讨论】:

  • 感谢您的回答,正是我想问的。你是什​​么意思“主管仅限页面”?因此,一旦它查找页表,它基本上会检查页表中是否存在该页码,对,然后执行适当的操作,无论是页错误还是页出?
  • @ARegisteredUser:“主管”是特权内核代码的另一个术语。感谢您的接受。
猜你喜欢
  • 2019-03-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-05-15
  • 1970-01-01
  • 1970-01-01
  • 2020-04-21
相关资源
最近更新 更多