问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

MMU和虚拟内存的问题7

发布网友 发布时间:2023-10-08 18:11

我来回答

1个回答

热心网友 时间:2024-11-17 23:41

MMU就是干这个的,虚拟内存地址转译。
页面是MMU用来管理内存单元的,x86硬件体系下提供2种页面尺寸,4k和4M,而x64为4k和2M。大页面转译速度快,但缺点是往往把代码和数据放在同一页中,无法起到保护。

进程的4G内存空间是内核创建进程时候给予的,默认情况下2G属于内核空间,直接映射至内核,另外2G为用户空间,这点在32位系统中基本属于惯例,linux/unix某些版本可以支持8GB虚拟内存地址,而windows最多只能开启3GB,即内核压缩至1GB。
默认采用4GB内存地址的原因是32位外部总线最多只能寻址4GB内存,实际可以是任意大小,但会带来空间和速度上的损失,因而4GB对大多数情况而言是最佳选择。
进程创建时系统会为其提供一个页表,这个页表是一个2级数据结构(超过4G则需要3级,/PAE启动选项就会启用3级页表),其中512个页表是内核负责维护,进程无法改变他,进程可以使用的是独立的另512个。你应该已经知道,32位系统的内存寻址是直接使用32位数据的,对于进程而言,这32位的数据并非实际内存地址,其中10位用来表示页分组索引,每个进程都会维护这样一个分组索引;而另10位用来表示页索引,用来在分组中定位页面,最后12位则是相对地址,之所以是12位是因为windows采用了4k的页表,12位可以完全覆盖。
也就是说,内存被分为1024组,每组内1024个页,每页4k,总共4GB。开启PAE后情况稍稍有所变化,内存被分为2048组,每组内512个页,每页4k。系统维护512组,所以用户进程得以获得剩下的1536组共3GB。每个分组项是32位,4字节长,PAE下是8字节,每个页是4字节。所以总共是4M,你在这方面没理解错。不过进程只维护2M,另2M是内核维护的,进程只能去读取而不能修改它。他位于虚拟控件中属于内核的那2G。
整个4GB内存至此就完全分配完毕了,标准情况下,用户进程操作的只有2G,因此对于超过2GB内存的系统来说,进程无法使用全部内存,这也是pae和3gb的由来。

这么分配内存的根本原因是MMU,进程在运行中要用到实际物理页面时候他对此页面的实际地址是一无所知的,每个进程都拥有独立的2GB内存空间和所有进程共享的2GB内核空间,从而最大限度的保护进程内存,防止写其他进程的数据。这个2级的页表结构是MMU可读取的,PAE的第*则是软件的,因此PAE获得了最大128G的内存空间,但牺牲了硬件级的速度。
无论有没有虚拟内存,页表都必须存在,因为cpu会直接读取页表结构来确定内存地址。如果使用了虚拟内存,那么有可能操作一个页面时会发现页面不可用(无虚拟内存时这意味着out of memory,还有很多原因会导致页面错误,这些是系统内核的中断处理去负责),就会触发一个页面错误,这个页面错误属于硬件中断,操作系统提供一个中断处理函数,用来换页,页表的数据会自动被cpu读取,并换入物理内存,这也是为什么没有MMU的系统根本不可能实现虚拟内存的原因,换页是一个硬件中断,软件实现它的代价太过高昂。

关于ARM,没有读过文档,但他的MMU并非一个固定包含的模块,而是编号15的协处理器,你需要查看实际芯片制造商的data sheet来确定是否包含MMU,包含MMU的话(一般支持win ce就肯定有MMU,只有dos这种系统无需MMU),其处理模式应该类似于此,可能页表的格式,或页大小有些区别,但技术上来说是一样的。对于没有MMU的硬件,高级语言的动态内存分配几乎无法实现,因为进程的堆栈在初始化时就固定了,且不可更改。ucLinux利用一个系统维护的内存池实现了动态内存分配,因此一般采用ucLinux的硬件都不带MMU
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
单位高温防护欠缺致员工中暑如何对待 狗狗为什么爱看视频 360浏览器怎么设置倍速播放 ...先讲女主的灵魂飘荡了一段时间,然后重生,请问是那本? 拯救者散热器怎么开 电脑如何一键还原系统电脑一键还原怎么操作 神舟笔记本电脑怎么重新设置神舟战神bios恢复出厂设置 神舟电脑恢复出厂设置神舟战神怎么恢复原厂系统 水泥楼梯如何铺木楼梯 家里面楼梯是水泥的不想铺地毯或者地砖还能铺什么 电高压锅在煮东西的时候会发出很大的声音1 移动合家享套餐是所有人的话费都是一起算的嘛3 中国银行房贷二十万三十年还款每月还多少 - 百度4 隋唐英雄4罗通第几集死的111 请问大家前挡风玻璃里面有油膜,注意是里面,大家想想办法怎么干... 平时自己爱锻炼,做俯卧撑,每天都做可是现在我发现左边的胸肌比... 内存碎片是什么,和操作系统的mmu有什么关系 隋唐英雄4剧集中薛仁贵是多少集死的?79 汽车前挡风玻璃上感觉有油渍油膜怎么去除60 有没有人告诉我,我的真爱在哪里 一首英文歌是这样翻译的 歌名... 专升本考试的英语难度怎么样?难吗8 邢台出租车公司都有哪几家 电话是多少?2 求“保姆”为主题相关的英语作文。120字左右 前挡玻璃上的油膜,有什么办法能自己DIY去除的 增值税发票确认勾选以后发现所属期弄错可以撤回吗55 汽车前挡有层油膜怎么办4 汽车挡风玻璃上有油膜怎么处理1 放假想去丹霞山玩,自助游,从深圳这边出发。16 为什么我只要住在高楼就会想从楼下跳下去的感觉,有时候感觉就要...3 为什么在闲鱼上卖的东西显示交易成功 支付宝账单也有记录 双方...7 听说OPPO办公地点很多,有朋友能说说吗?另外再说下OPPO... 为什么我每次站在高楼上或者桥上都会想像自己跳下去,然后好怕怕... 去丹霞山旅游几天预订韶关那间酒店比较好?6 中国银行房贷48万,20年还 每个月应该还多少? 丹霞山离哪个火车站比较近21 Uboot启动过程中,MMU和CACHE处于什么状态,为什么...2 电高压锅在煮东西的时候会发出很大的声音1 请问外国人也用QQ吗?71 中介说已经把材料递交到法务部但是一个多月都没有出来消息,中途...4 邢台市哪里提供的汽车租赁GPS定位系统最好用啊? 我将到韶关丹霞山游玩,有什么景点好看,附近住宿怎样?15 开网店卖自家产的蜂蜜可以吗 八达岭长城的介绍资料 在“探究杠杆平衡条件”实验中,实验装置如图(支点略偏上).(... 高压锅烧东西时,发出哨子声是怎么回事30 打针时为什么要绑橡皮筋23 “研究杠杆平衡条件”的实验可采用如图所示的装置.(1)实验前...4 壤土的特点9 前挡油膜怎么去 无聊,用英语怎么说2