MMU

简介:   MMU 是内存管理单元,在现代的处理器中扮演重要角色,它是CPU用来管理虚拟存储器、物理存储器的控制路线,先举个例子来说明一下MMU的相关概念:             ---地址范围、虚拟地址映射为物理地址以及分页机制        地址范围是一个计算机上的一个程序能够产生地址的集合,这...

  MMU 是内存管理单元,在现代的处理器中扮演重要角色,它是CPU用来管理虚拟存储器、物理存储器的控制路线,先举个例子来说明一下MMU的相关概念:

            ---地址范围、虚拟地址映射为物理地址以及分页机制

 

     地址范围是一个计算机上的一个程序能够产生地址的集合,这个范围的大小由CPU的位数决定,例如一个32位的CPU,它的地址范围是0~0xFFFFFFFF (4G),而对于一个64位的CPU,它的地址范围为0~0xFFFFFFFFFFFFFFFF (16E).这个范围就是我们的程序能够产生的地址范围,我们把这个地址范围称为虚拟地址空间,该空间中的某一个地址我们称之为虚拟地址。与虚拟地址空间和虚拟地址相对应的则是物理地址空间和物理地址,大多数时候我们的系统所具备的物理地址空间只是虚拟地址空间的一个子集。

  在没有使用虚拟存储器的机器上,虚拟地址被直接送到内存总线上,使具有相同地址的物理存储器被读写;而在使用了虚拟存储器的情况下,虚拟地址不是被直接送到内存地址总线上,而是送到存储器管理单元MMU,把虚拟地址映射为物理地址。

  大多数使用虚拟存储器的系统都使用一种称为分页(paging)机制。虚拟地址空间划分成称为页(page)的单位,而相应的物理地址空间也被进行划分,单位是页帧(frame).页和页帧的大小必须相同。在这个例子中我们有一台可以生成32位地址的机器,它的虚拟地址范围从0~0xFFFFFFFF(4G),而这台机器只有256M的物理地址,因此他可以运行4G的程序,但该程序不能一次性调入内存运行。这台机器必须有一个达到可以存放4G程序的外部存储器(例如磁盘或是FLASH),以保证程序片段在需要时可以被调用。在这个例子中,页的大小为4K,页帧大小与页相同——这点是必须保证的,因为内存和外围存储器之间的传输总是以页为单位的。对应4G的虚拟地址和256M的物理存储器,他们分别包含了1M个页和64K个页帧。

       MMU有一下功能:

1, 虚拟内存:通过虚拟地址来实现,它可以在处理器上运行比实际物理内存大 的应用程序,使用虚拟地址,操作系统通常要设置一个交换分区,通过将不活跃的内存中的数据放到交换分区,操作系统可以有空间来为其它的程序服务。

2, 内存保护:对特定的内存区域的访问进行保护。

3,完成了从虚拟地址到物理地址的转换。

   

相关文章
|
4月前
|
存储 安全
什么是内存管理单元(MMU)?
【8月更文挑战第23天】
124 0
|
7月前
|
存储 安全 内存技术
地址映射
地址映射
192 0
|
7月前
|
缓存 安全
什么是TLB
什么是TLB
549 0
|
7月前
|
存储 C语言 内存技术
SRAM
SRAM
142 4
|
存储
物理地址和逻辑地址的
最近一直在学8086!对于问题“8086 CPU 能提供20位的地址信息,可直接对1M个存储单元进行访问,而CPU内部可用来提供地址信息的寄存器都是16位,那怎样用16位寄存器来实现20位地址寻址呢"明白了不少。
115 0
|
存储 芯片 内存技术
浅析DMA
DMA全程Direct Memory Access,即直接存储器访问。简单来讲,它的功能是把数据从一个地址搬运到另一个地址。通常有三个传输方向,分别是内存到内存,内存到外设和外设到内存。DMA是开发过程中常用到的,但从个人角度来讲,觉得DMA不是很好学。倒不是说他有多难,只是有些寄存器位的含义可能初学时了解的不深刻,很容易出现问题,这里仅代表个人看法。有的DMA也有一些特殊的传输方式,比如回绕传输,这个在第3小节会有详细介绍。
379 0
|
存储
存储器-虚拟内存
存储器-虚拟内存
81 0
|
存储
逻辑地址转物理地址
若在一分页存储管理系统中,某作业的页表如表所示。已知页面大小为1024字节,试将逻辑地址1011,2148,3000,4000转换为相应的物理地址。
385 0
逻辑地址转物理地址
|
vr&ar
8086 寻址方式(一)CPU和主存中的寻址方式
     通常,一条带有操作数的指令要指明两个问题:一是进行什么操作,二是用什么方式寻找操作数的存放地址。我们将寻找操作数存放的地址的方式成为寻址方式。当一条指令带中有多个操作数时,每个操作数的寻址方式可能不同,因此,寻址方式是针对指令中指定的操作数(源操作数或者是目的操作数)而言的。
1713 0
|
存储 缓存 算法
从 MMU 看内存管理
在计算机早期的时候,计算机是无法将大于内存大小的应用装入内存的,因为计算机读写应用数据是直接通过总线来对内存进行直接操作,对于写操作来说,计算机会直接将地址写入内存;对于读操作来说,计算机会直接读取内存的数据。
从 MMU 看内存管理