欢迎来到天天文库
浏览记录
ID:27233324
大小:751.01 KB
页数:84页
时间:2018-12-01
《内存管理之linux内存》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、张惠娟副教授hjzhang@sei.ecnu.edu.cnLinux内存管理1内容i386存储管理单元Linux存储管理思想物理内存空间管理进程虚拟空间管理请页机制交换空间管理缓冲机制2MMU分段机制i386的存储管理单元3i386的存储管理单元MMUMMU由一个或一组芯片组成,其功能是把虚地址映射为物理地址,即地址转换。80386以两级方式实现地址转换:第一级使用段机制,第二级使用分页机制。在80386上,分页机制是支持虚拟存储器的最佳选择。段机制使用可变大小的块,使段机制较适合处理复杂系统的逻辑分区。4i386的存储管理单元5分段机制段描述符描述了段的基
2、地址、界限及保护属性,是一个8字节的数据结构,存放在段描述符表中。i386的存储管理单元67上图说明从图中可以看出,一个段描述符指出了段的32位基地址和20位段界限(即段长)。第6个字节的G位是粒度位,当G=0时,段长的表示格式为字节长度,即一个段最长可达1M字节。当G=1时,段长表示段以4K字节为一页的页数目,即一个段最长可达1M*4K=4G字节。D表示缺省操作数大小,D=0,操作数为16位,如果D=1,操作数为32位。i386的存储管理单元8描述符表在分段机制中,系统维护三种段表,称为描述符表,即全局描述符表、局部描述符表和中断描述符表。描述符表本身占据
3、的字节数为8的倍数,空间大小在8个字节(至少含一个描述符)到64K字节(至多含8K个描述符)之间。i386的存储管理单元9全局描述符表(GDT)全局描述符表包含着系统中所有任务都可用的那些描述符。局部描述符表(LDT)局部描述符表LDT包含了与一个给定任务有关的描述符,每一个任务都有一个各自LDT。i386的存储管理单元10选择器实模式下,段寄存器存储的是真实段地址保护模式下,16位段寄存器无法访问32位段地址,因此,被称为选择器,即段寄存器是用来选择描述符的。i386的存储管理单元11索引TI特权级别15321013位索引段选择器结构12上图说明:TI是选
4、择域,TI=1,从局部描述符表中选择相应描述符,TI=0,从全局描述符表中选择描述符。索引域给出该选择符在GDT或LDT中的入口偏移量,选择符高14位将虚拟地址空间分为16K个独立段,其中8K个全局段和8K个局部段。第1、0位是特权级,表示选择器特权级,称为请求者特权级RPL。只有请求者特权级RPL高于或等于相应描述符特权级DPL,描述符才能被存取,可以实现一定程度的保护。i386的存储管理单元13描述符寄存器全局描述符表寄存器GDTR是一个48位的寄存器。低16位保持全局描述符表GDT大小,最大为64K字节,高32位保持GDT的段基地址。局部描述符表寄存器
5、LDTR可见部分(即程序员可以操作的部分)只有16位,不可见部分有48位,放置局部描述符表的段基地址和界限。i386的存储管理单元14分段方式下,寻址过程如下:在段选择器中装入16位数,同时给出32位地址偏移量(比如在ESI、EDI中等等)。根据段选择器中的索引值、TI及RPL值,再根据相应描述符表寄存器中的段基地址和段界限,进行一系列合法性检查(如特权级检查、界限检查)若无异常,取出相应描述符放入段描述符高速缓冲寄存器中。将描述符中的32位段基地址和放在ESI、EDI等中的32位有效地址相加,就形成了32位物理地址。i386的存储管理单元15i386的存储
6、管理单元16linux分段机制linux分页机制Linux内存管理实现Linux的存储管理思想17Linux分段机制linux只定义了四种段寄存器的取值内核代码段0x10内核数据段0x18用户代码段0x23用户数据段0x28Linux的存储管理思想18Linux的存储管理思想19将上表和段选择寄存器对比可知:表明:使用的都是GDT表运行级别分为两级:0和3Linux的存储管理思想20GDT初始化信息在arch/i386/kernel/head.S中Linux的存储管理思想21对照段描述符的含义,可以得出结论:四个段描述符内容下列内容基本相同结论:所有段都是从
7、0地址开始的4G虚空间,虚拟地址到线性地址的映射是取值不变。Linux的存储管理思想22有区别的地方仅仅是下列部分结论:经过如上段映射,之后需要开始进行线性地址映射。Linux的存储管理思想23Linux分页机制控制寄存器CR0、CR3用CR0的PG位用来控制分页机制:1,启用分页;0,禁止分页。CR3用于指示页目录表的起始物理地址。Linux的存储管理思想24两级页表结构Linux的存储管理思想25页目录项页目录项表最多可包含1024个页目录项,每个页目录项为4字节,结构如图所示。Linux的存储管理思想26Linux的存储管理思想上图说明:第0位是存在位
8、,P=1,表示页表地址指向的页在内存中,如果P=0,
此文档下载收益归作者所有