linux虚拟存储管理分析

linux虚拟存储管理分析

ID:14506697

大小:91.00 KB

页数:8页

时间:2018-07-29

linux虚拟存储管理分析_第1页
linux虚拟存储管理分析_第2页
linux虚拟存储管理分析_第3页
linux虚拟存储管理分析_第4页
linux虚拟存储管理分析_第5页
资源描述:

《linux虚拟存储管理分析》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、Linux虚拟存储管理分析摘 要:本文通过解剖Linux操作系统的虚拟存储管理机制,说明了Linux虚拟存储的特点、虚拟存储器的实现方法,并基于LinuxKernelSource1.0,详细分析有关虚拟存诸管理的主要数据结构之间的关系。关键字:Linux操作系统内存管理虚拟存储        Linux操作系统是一种多用户多任务、支持多种平台的开源的类Unix操作系统,其支持多种平台,在服务端可与其它商用类Unix系统媲美,在客户端则向Windows系列发出了强有力的挑战。自Linux诞生以来,发展迅猛,已经受到了全球开源社区和许

2、多商业科技巨头的大力支持以及政府、教育机构、科研单位的重视。本文介绍了Linux虚拟存储技术的特点,并结合操作系统原理和Linux内核源码,通过分析虚拟存储管理所需的主要数据结构及其相互关系,来更深入地了解Linux虚拟存储管理机制。本文所援引的Linux内核源代码版本为1.0。Linux虚拟存储概述虚拟存储器         在实存储器的管理模式中,要求作业在运行前全部装入内存,之后就一直驻留在内存中直到运行结束,其中某些程序并没有一直处于运行状态,却长期占用着内存资源,从而降低了内存的利用率,为此,引入了虚拟存储器。     

3、 虚拟存储器并不以物理的方式存在,而是从逻辑上对内存容量进行扩充,提供了一个比真实内存空间大得多的逻辑地址空间的逻辑存储器。虚拟存储技术把用户地址空间和实际的存储空间区分开,在程序运行时通过动态重定位的地址映射机制将逻辑地址转换为物理地址。      所谓的“动态重定位”是指在目标程序执行过程中,在CPU访问内存之前,由硬件地址映射机构来完成将要访问的指令或数据的逻辑地址向内存的物理地址的转换。由于这种地址转换是在程序执行期间随着每条指令的数据访问自动连续地进行,所以称为“动态重定向”。      在386保护模式下,Linux可

4、以提供的逻辑地址空间为4GB。Linux的全局描述符表定义了如何分配逻辑地址空间:0GB–3GB分配为用户空间,用户进程可以直接访问;3GB–4GB分配为内核空间,用户进程不能访问。段页式存储管理         Linux中的内存管理技术采用的是段页式虚存技术。它将一个进程中的程序、数据、堆栈分成若干“段”来处理,每段有一个8字节的段描述符,指出该段的起始地址、长度和存取权限等信息,这些段描述符的集合构成段描述符表,通过一个寄存器指出该表的起始位置。为了便于段长的动态变化,每段分为若干页,将需要的内容以页面为单位调入内存的物理块

5、中,暂不执行的页面仍留在外存,以保证比实际内存容量需求更大的进程能够正常使用内存。Linux的分段机制Linux的分段机制就是将线性地址空间分段,利用这些段来存储代码和数据,通过对段的保护来提供一种对数据或代码的保护。根据每个段的作用和存储内容的不同,分为三类进程段:代码段、数据段和堆栈段;两类系统段:TSS段(任务状态段)和LDT段(局部描述符表段)。在保护模式下,逻辑地址空间可达4GB。从逻辑地址到线性地址的转换由分段机制管理。段寄存器CS、DS、ES、SS、FS或GS标识一个段。这些段寄存器作为段选择器,用来选择该段的描述符

6、。      进程使用的是48位的逻辑地址,其中高16位是段选择符,低32位是段内的偏移量。通过段选择符在GDT(全局描述符表)或LDT(局部描述符表)中索引相应的段描述符,以得到该段的基地址,再加上偏移量得到逻辑地址对应的线性地址。然后通过分页地址的转换,将线性地址转换为物理地址,最后通过物理地址访问内存。      如图1所示,为分段逻辑地址到线性地址的转换图。图1       分段逻辑地址映射到线性地址Linux的分页机制分页机制是在段机制之后进行的,它进一步将线性地址转换为物理地址。Linux一般使用4K字节大小的页(PA

7、GE_SIZE,include/linux/page.h,通过修改PAGE_SHIFT定义的左移位数来修改页面大小),且每页的起始地址都被4K整除。因此,Linux把4GB的线性地址空间划分为1M个页面,采用了两级表结构。两级表的第一级表称为页目录,存储在一个4K字节的页中,页目录表共有1K个表项,每个表项为4个字节,线性地址最高的10位(22-31位)用来产生第一级表索引,由该索引得到的表项中的内容定位了二级表中的一个表的地址,即下级页表所在的内存块号。第二级表称为页表,存储在一个4K字节页中,它包含了1K字节的表项,每个表项包

8、含了一个页的物理地址。二级页表由线性地址的中间10位(12-21位)进行索引,定位页表表项,获得页的物理地址。页物理地址的高20位与线性地址的低12位形成最后的物理地址。如图2所示,为两级页表的地址转换图。图2       两级页表转换 Linux

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

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

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