MMU

代操作系普遍采用虚内存管理(Virtual MemoryManagement)机制,需要理器中的MMUMemory Management Unit,内存管理元)提供支持,本节简要介MMU的作用。

首先引入两个概念,虚地址和物理地址。如果理器没有MMU,或者有MMU但没有启用,CPU出的内存地址将直接到芯片引脚上,被内存芯片(以下称物理内存,以便与虚内存区分)接收,物理地址(Physical Address,以下PA),如下所示。

 17.5. 物理地址

 

如果理器启用了MMUCPU出的内存地址将被MMU,从CPUMMU的地址称地址(Virtual Address,以下VA),而MMU个地址翻成另一个地址CPU芯片的外部地址引脚上,也就是将VA映射成PA,如下所示。

 17.6. 地址


 

如 果是32理器,内地址总线32位的,与CPU元相中只是示意性地画了4条地址线),而经过MMU转换之后的外地址总线则不一定是32 位的。也就是,虚地址空和物理地址空是独立的,32理器的虚地址空4GB,而物理地址空既可以大于也可以小于4GB

MMUVA映射到PA是以Page 位的,32理器的尺寸通常是4KB。例如,MMU可以通一个映射VA的一0xb7001000~0xb7001fff映射到PA的一 0x2000~0x2fff,如果CPU元要访问地址0xb7001008则实际访问到的物理地址是0x2008。物理内存中的物理 面或者页帧Page Frame)。虚内存的哪个面映射到物理内存的哪个页帧是通过页表(Page Table)来描述的,表保存在物理内存中,MMU表来确定一个VA应该映射到什PA

操作系MMU这样配合的:

  1. 操作系在初始化或分配、放内存行一些指令在物理内存中填写表,然后用指令MMU,告MMU表在物理内存中的什位置。
  2. 置好之后,CPU访问内存的指令都会自MMU表和地址转换操作,地址转换操作由硬件自完成,不需要用指令控制MMU去做。

在程序中使用的量和函数都有各自的地址,程序被编译后,些地址就成了指令中的地址,指令中的地址被CPU释执行,就成了CPU出的内存 地址,所以在启用MMU的情况下,程序中使用的地址都是虚地址,都会引MMU表和地址转换操作。那设计这么复杂的内存管理机制呢?多了一 VAPA转换到底来了什All problems incomputer science can be solved by another level of indirection.还记话吗?多了一层间接必然是了解决什么问题的,等完了必要的预备之后,将在 5 内存管理讨论内存管理机制的作用。

MMU除了做地址转换之外,提供内存保机制。各体系构都有用模式(User Mode)和特模式(Privileged Mode)之 分,操作系可以在表中个内存面的访问权限,有些面不允许访问,有些面只有在CPU于特模式才允许访问,有些面在用模式和特模 式都可以访问访问权限又分、可写和可行三这样设定好之后,当CPU访问一个VAMMU检查CPU当前于用模式是特模式,访 内存的目的是数据、写数据是取指令,如果和操作系统设定的限相符,就允许访问,把它转换PA,否不允许访问生一个异常 (Exception)。异常的程和中断似,不同的是中断由外部设备产生而异常由CPU内部生,中断生的原因和CPU当前行的指令无,而异常的生就是由于CPU当前行的指令出了问题,例如访问内存的指令被MMU检查错误,除法指令的除数0等都会生异常。

 17.7. 理器模式


 

通 常操作系把虚地址空划分和内核空,例如x86平台的Linux地址空0x00000000~0xffffffff,前 3GB0x00000000~0xbfffffff)是用,后1GB0xc0000000~0xffffffff)是内核空。用程序加到 用,在用模式下行,不能访问内核中的数据,也不能跳到内核代行。这样可以保内核,如果一个访问了非法地址,一个程崩, 而不会影响到内核和整个系定性。CPU生中断或异常会跳到中断或异常服程序,会自模式,从用模式切到特模式,因此从中 断或异常服程序可以跳到内核代行。事上,整个内核就是由各中断和异常理程序成的。总结一下:在正常情况下理器在用模式行用程 序,在中断或异常情况下理器切到特模式行内核程序,理完中断或异常之后再返回用模式继续执行用程序。

错误遇到很多次了,它是这样产生的:

  1. 程序要访问的一个VAMMU检查权访问
  2. MMU生一个异常,CPU从用模式切到特模式,跳到内核代行异常服程序。
  3. 内核把个异常解释为错误,把引异常的止掉。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值