我是靠谱客的博主 顺利板凳,最近开发中收集的这篇文章主要介绍为什么linux需要mmu,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

本教程操作环境:linux7.3系统、Dell G3电脑。

为什么linux需要mmu

因为现代操作系统普遍采用虚拟内存管理(Virtual Memory Management)机制,这需要处理器中的MMU(Memory Management Unit,内存管理单元)提供支持。

MMU(Memory Management Unit) :内存管理单元,它是中央处理器(CPU)中用来管理虚拟存储器、物理存储器的控制线路,同时也负责虚拟地址映射为物理地址,以及提供硬件机制的内存访问授权。

内存管理单元MMU(memory management unit)的主要功能是虚拟地址(virtual memory addresses)到物理地址(physical addresses)的转换。除此之外,它还可以实现内存保护(memory protection)、缓存控制(cache control)、总线仲裁(bus arbitration)以及存储体切换(bank switching)。

工作机制

fb48e71cb4ec8aaa6e59a108136656fc.png

CPU将要请求的虚拟地址传给MMU,然后MMU先在高速缓存TLB(Translation Lookaside Buffer)查找转换关系,如果找到了相应的物理地址则直接访问;如果找不到则在地址转换表(Translation Table)里查找计算。

虚拟地址

现代的内存管理单元是以页的方式来分区虚拟地址空间(the range of addresses used by the processor)的。页的大小是2的n次方,通常为几KB。所以虚拟地址就被分为了两个部分:virtual page number和offset。

f604a7b8c308ef2efe57d53357f6dc0f.png

页表项(page table entry)

上面从虚拟页号在页表里找到的存放物理页表号的条目就是页表项(PTE)。PTE一般占1个字长,里面不仅包含了physical page number,还包含了重写标志位(dirty bit)、访问控制位(accessed bit)、允许读写的进程类型(user/supervisor mode)、是否可以被cached以及映射类型(PTE最后两位)。

映射

映射方式

映射方式有两种,段映射和页映射。段映射只用到一级页表,页映射用到一级页表和二级页表。

映射粒度

段映射的映射粒度有两种,1M section和16M supersection;页映射的映射粒度有4K small page、64K large page和过时的1K tiny page。

07eab516fb83dd7fbe26c4a6a1c8554f.png

推荐学习:Linux视频教程

以上就是为什么linux需要mmu的详细内容,更多请关注靠谱客其它相关文章!

最后

以上就是顺利板凳为你收集整理的为什么linux需要mmu的全部内容,希望文章能够帮你解决为什么linux需要mmu所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(81)

评论列表共有 0 条评论

立即
投稿
返回
顶部