【发布时间】:2018-10-21 11:16:36
【问题描述】:
为特定进程分配逻辑内存空间后,通过使用基址寄存器和限制寄存器来强制保护该空间。为了防止访问为进程分配的内存空间之外的内存,CPU 硬件将每个请求的内存地址与这些寄存器进行比较。如果以下两个条件之一成立,则会发生操作系统陷阱:
- 目标地址小于基址寄存器。
- 目标地址大于等于限制寄存器。
这个逻辑可以在下面的图7.2中直观地观察到。
上面解释了它们是如何发生的,例如
任何以用户模式执行的程序访问操作系统内存或其他用户内存的尝试都会导致操作系统陷入陷阱。
但是,当请求的地址实际上超出程序分配的内存空间时,有哪些示例?会导致这种情况?
[图片和引用来源:操作系统要点,第 2 版。 - 亚伯拉罕·西尔伯沙茨]
【问题讨论】:
-
您的问题或文本中未提及 DMA。
-
你的问题确实不清楚。
-
是的,DMA 上的维基页面解释了类似的事情。它只在内部内核相关,而不是在用户空间。
-
我认为您的问题不清楚。它没有提到用户空间与内核空间,后者是 DMA 的核心。图片仅对用户空间有意义(根据定义,内核代码不能陷入操作系统,因为它实现操作系统抽象)。 DMA 仅在内核模式下发生,而用户模式看不到它。内核无法捕获到操作系统监视器,因为它是操作系统监视器
-
再一次,在内核内部捕获到操作系统监视器(操作系统内核的另一个名称)没有任何意义。只有在用户模式下才有意义
标签: memory operating-system cpu-registers hardware-traps