Chinaunix首页 | 论坛 | 博客
  • 博客访问: 357907
  • 博文数量: 73
  • 博客积分: 4096
  • 博客等级: 上校
  • 技术积分: 1102
  • 用 户 组: 普通用户
  • 注册时间: 2007-11-21 14:53
文章分类
文章存档

2009年(3)

2008年(70)

我的朋友
MMU

分类:

2008-09-24 10:45:41

    近期在看bootloader,先是參照CalmArrow的博客,分析了vivi。piaoxiang兄寫的很詳細,作為初學者,再次感謝。
    bootloader涉及到的一個難點是內存映射的問題,這個問題比較玄乎,參考《ARM Architecture Reference Manual》中的MMU章節,理解一下。


   
MMU:Memory Management Unit。存儲器管理單元。是一個可選的配件。
    負責:虛擬地址和物理地址的轉換,提供硬件機制的內存訪問授權。
    多用户多进程的OS,需要MMU,以达到每个用户进程都拥有自己的独立的地址空间的目标。使用MMU,OS划分出一段地址區域,在這塊地址區域中,每個進程看到的內容都不一定一樣。
    打個比方:進程A在地址0x400000映射了可執行文件。進程B也在地址0x400000映射了可執行文件。那么進程A讀取地址0x400000時,讀到的是A的可執行文件映射到RAM的內容。進程B讀取地址0x400000時,讀到的是B的可執行文件映射到RAM的內容。
    這就是MMU進行地址轉換所起的作用。同樣的內存段,實現多用戶、多進程的共享使用。

I。X86系列的MMU
    INTEL的80386CPU及其上的CPU中都集成了MMU。可以提供32BIT,共4G的地址空間。

II。ARM系列的MMU
    ARM中,MMU作為一個協處理器存在。ARM7及其之前的都是沒有MMU的。
MMU也就是編號為15的協處理器。可以提供32BIT,4G的地址空間。



阅读(1163) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~