《深入理解linux内核》内存寻址学习心得

《深入理解linux内核》内存寻址学习心得

ID:30376022

大小:84.30 KB

页数:14页

时间:2018-12-29

《深入理解linux内核》内存寻址学习心得_第1页
《深入理解linux内核》内存寻址学习心得_第2页
《深入理解linux内核》内存寻址学习心得_第3页
《深入理解linux内核》内存寻址学习心得_第4页
《深入理解linux内核》内存寻址学习心得_第5页
资源描述:

《《深入理解linux内核》内存寻址学习心得》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库

1、《深入理解Linux内核》内存寻址学习心得1.三种地址:逻辑地址,线性地址,物理地址。三者的详细解释:逻辑地址(logicaladdress):由段(segment)(16位)和偏移量(offset或displacement)(32位)组成。线性地址(linearaddress)(也称虚拟地址virtualaddress):是一个32位无符号整数,用来表示高达4GB的地址。物理地址(physicaladdress):实际地址。分段目的:把逻辑地址转换为线性地址,如下图所示:2.1段标识符和段寄存器段标识符(段选择符)(存放在段寄存器中)字段

2、如下:index用来得到段描述符在GDT或LDT中的偏移(位置)TI指明段描述符是在GDT中(TI=0)或在LDT中(TI=1)RPL请求特权级,由于一个段描述符是8字节,因此它的地址=GDT或LDT内的首地址+(index*8)。能够保存在GDT中的段描述符的最大数目是8191(213-1),其中13是index的位数。不同段的段描述符构成段描述符表,段描述符(8字节)存放在全局描述符表(GDT)或局部描述符表(LDT)中。GDT在主存中的地址和大小存放在gdtr控制寄存器中,当前正被使用的LDT地址和大小存放在ldtr控制寄存器中。2.

3、2段描述符CPL(CurrentPrivilegeLevel)当前特权级DPL(DescriptorPrivilegeLevel)描述符特权级RPL(RequirePrivilegeLevel)请求特权级,Liunx中广泛采用的段描述符类型:代码段描述符、数据段描述符、任务状态段描述符、局部描述符表描述符(代表一个包含LDT的段)。2.3快速访问段描述符:(是由逻辑地址得到段的一个流程)1.4Linux中的分段用户代码段__USER_CS用户数据段__USER_DS内核代码段__KERNEL_CS内核数据段__KERNEL_DS1.5Lin

4、uxGDT每个处理器中只有一个GDT,所以在多处理器系统中有多个GDT。一般的,每个处理器中的都是GDT的一个副本。除了以下的三种情况:1.每个处理器都有自己的TSS段,因此其对应的GDT项不同。2.GDT中只有少数项可能依赖于CPU正在执行的进程。3.在某些情况下,处理器可能临时修改GDT副本中的某个项。所有的GDT存放在cpu_gdt_table数组中,而所有的GDT的地址和它们的大小(初始化gdtr时用)存放在cpu_gdt_descr数组中。这些都在arch/i386/kernel/head.s中定义。如下图所示,一个GDT中包含1

5、8个描述符和14个空的、未使用的、或保留的项。1.6LinuxLDT大多数用户态程序不使用LDT,这样内核就在GDT中定义了一个缺省的LDT来供大多数进程共享。缺省的LDT存放在default_ldt数组中。它含有5个项,内核只使用了两个项:用于iBCS执行文件的调用门和Solaris/x86可执行文件的调用门。调用门是一种机制:用于在调用预定义函数时改变CPU的特权级。如果进程需要创建自己的LDT,则使用modify_ldt()系统调用。用户创建的LDT需要自己的段,此时GDT中的LDT表项相应的就要被修改。2.分页目的:把线性地址转换为

6、物理地址。其中的一个关键任务:比较所请求的访问类型与线性地址的访问权限。如果内存访问无效,则产生一个缺页异常。页:以固定长度为单位的线性地址。页内部的线性地址被映射到连续的物理地址中。(即代表一组数据)页框:RAM被分成固定长度的页框,每一个页框包含一个页。(即主存中的物理地址)页表:把线性地址映射到物理地址的数据结构,它存放在主存中,并在启用分页单元之前由内核进行初始化。所有的80x86都支持分页,它通过设置cr0寄存器的PG标志启用(PG=0)。3.1常规分页32位的线性地址被分为3个域(4KB的页):重要的概率组成页目录页目录项页表页

7、表项线性地址到物理地址的转换如下图所示:3.2扩展分页3.3物理地址扩展(PAE)分页看书p56-573.4硬件保护方案段有三种存取权限(读、写、执行),页只有两种存取权限(读、写)。PAE(PhysicalAddressExtension)物理地址扩展PSE(PageSizeExtension)页大小扩展PGE(PageGlobalEnable)页全局启用3.5硬件高速缓存原因:CPU和RAM之间速度不匹配。原理:基于局部性原理,用小而快的内存来存放最近最常使用的代码。以脉冲突发模式(burstmode)在慢速DRAM和快速片上SRAM之

8、间传送行(一种新单位)。映射关系:直接映射、全相关、N-路相关。硬件高速缓存单元的组成:一个硬件高速缓存内存、一个高速缓存控制器。Cachehit、cachemiss。通写(wr

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。