



免费预览已结束,剩余1页可下载查看
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
Linux 虚拟内存管理论文虚拟存储器技术论文:Linux 虚拟内存管理摘要:一般而言,计算机的内存容量是有限的,而某些进程运行所需的内存空间却有可能超过内存的总容量。这也就意味着存在这样的可能:运行某个进程,机器内存容纳不下该进程所有的代码,数据和堆栈,而是只能容纳其中的一部分。一个占用大量内存的进程在任意一段时间内需要用到的代码,数据等都是总数的一小部分,其余部分在相应时间段内对于维持进程的运行是不起作用的,于是,虚拟存储器技术应运而生。 关键词:内存容量 内存空间 虚拟内存 进程 虚拟存储器技术 Linux能够使用文件系统中的一个常规文件或一个独立的分区作为交换空间。交换分区要快一些,但是很容易改变交换文件的大小。当你知道你需要多大的交换空间时,你应该使用交换分区,但是如果你不能确定的话,你可以首先使用一个交换文件,然后使用一阵子系统,你就可以感觉到要有多大的交换空间,此时,当你能够确信它的大小时就创建一个交换分区。 1、虚拟存储器的思想 一个进程的代码,数据,堆栈的总容量可能超过可用物理内存的容量,操作系统负责吧当前用到的那些部分保留在内存中,而把其他部分保存在磁盘上,当需要用到不再内存的某一个部分时,由操作系统把那部分调入内存,同时把已经在内存中的但是暂时用不到的部分清除出去。这些操作对用户来说都是透明的。 2、Linux支持虚拟内存(virtual memory) 虚拟内存是指使用磁盘当作RAM的扩展,这样可用的内存的大小就相应地增大了。内核会将暂时不用的内存块的内容写到硬盘上,这样一来,这块内存就可用于其它目了。当需要用到原始的内容时,它们被重新读入内存。这些操作对用户来说是完全透明的。当然,读写硬盘要比直接使用真实内存慢得多,所以程序就不会象一直在内存中运行的那样快。用作虚拟内存的硬盘部分被称为交换空间(swap space)。 3、Linux虚拟内存的实现需要6种机制的支持 地址映射机制、内存分配回收机制、缓存和刷新机制、请求页机制、交换机制和内存共享机制。 存管理程序通过映射机制把用户程序的逻辑地址映射到物理地址。当用户程序运行时,如果发现程序中要用的虚地址没有对应的物理内存,就发出了请求页要求。如果有空闲的内存可供分配,就请求分配内存(于是用到了内存的分配和回收),并把正在使用的物理页记录在缓存中(使用了缓存机制)。如果没有足够的内存可供分配,那么就调用交换机制;腾出一部分内存。另外,在地址映射中要通过TLB(翻译后援存储器)来寻找物理页;交换机制中也要用到交换缓存,并且把物理页内容交换到交换文件中,也要修改页表来映射文件地址。 Linux总是假定处理器支持三级页表结构。这三届页表依次为页目录(PGD,Page Directory),中间页目录(PMD,Page Middle Directory)和页表(PTE,Page Table).每一级页表通过虚拟地址的一个域来访问。 4、在INTEL X86TIXI的微机上 Linux的页表结构实际上为两级其中页表目录就是PGD,页表就是PTE,而PMD和PGD实际上是合二为一的。所有有关PMD 的操作实际上是对PGD的操作。所以源代码中过的形如*_pgd_*()和*_pmd_*()的函数所实现的功能是一样的。有关的宏定义如下: /include/asm-i386/pgtable-21level.h (1) #ifndef _I386_PGTABLE_2LEVLE_H (2) #define _I386_PGTABLE_2LEVLE_H (3) /* (4) * traditional i386 two-level paging structure: (5) */ (6) #define PGDIR_SHIFT 22 (7)efine PTRS_PER_PGD 1024 从上面的宏定义可以清楚地看到i386体系结构中PMD实际上是不存在的,PMD(中间页目录)只含有一项(#define PTRS_PER_PMD 1),实际上这一级已经是退化了。页目录PGD和页表PTE都含有1024个项。 5、按需调页分析 我们来看一下2.4.18版的linux kernel按需调页的过程: 首先由缺页中断进入do_page_fault函数,该函数是缺页中断服务的入口函数。该函数先查找出现却也的虚拟存储区的vm_area_struct结构,如果没有找到则说明进程访问了一个非法地址,系统将向进程发送出错信号。若地址是合法的,则接着检查缺页时的访问模式是否合法,若不合法系统将向进程发送存储访问出错的信息。通过上述两步检查之后,可以确定发生的却也情况是正常的,可以进入下一步处理。 /arch/i386/mm/fault.c 147 asmlinkage void do_page_fault (struct pt_regs *regs,unsigned long error_code) 148 149 struct task_struct *tsk; 155 int write; 156 siginfo_t info; do_page_fault()函数入口,asmlinkage指示编译器不要使用寄存器,而是使用堆栈来传递参数。Re
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 可爱的青猎马说课稿-2025-2026学年小学音乐人音版五线谱北京三年级下册-人音版(五线谱)(北京)
- 2024八年级英语下册 Unit 1 Spring Is Coming(Review)说课稿(新版)冀教版
- 2.5有理数的减法说课稿2023-2024学年 北师大版七年级数学上册
- 慢性支气管炎和慢性组赛性肺疾病病人的护理说课稿-2025-2026学年中职专业课-内科护理-医学类-医药卫生大类
- 4.2 基因表达与性状的关系教学设计-2023-2024学年高一下学期生物人教版必修2
- 2025玛纳斯县司法局招聘编制外专职人民调解员人笔试备考题库及答案解析
- 高端酒店集团管理职位劳动合同汇编
- 啤酒广场与体育赛事合作租赁及赞助合同
- 地下室租赁合同范本(含提前终止条款)
- 金融机构与个人间的医疗费用贷款合同
- HY/T 080-2005滨海湿地生态监测技术规程
- GB/T 27689-2011无动力类游乐设施儿童滑梯
- GB/T 20969.1-2021特殊环境条件高原机械第1部分:高原对内燃动力机械的要求
- GB/T 10125-2021人造气氛腐蚀试验盐雾试验
- GB 7231-2003工业管道的基本识别色、识别符号和安全标识
- 医疗机构财政电子票据管理平台建设方案
- 吸附及吸附过程课件
- 食品安全主题班会课件
- 二年级奥数《走迷宫》
- 管道施工安全检查表
- 云南省雨露计划改革试点资金补助申请表
评论
0/150
提交评论