




已阅读5页,还剩16页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
4.8实例研究:Linux虚拟存储管理,4.8.1 Linux存储管理概述 4.8.2 进程的虚拟地址空间 4.8.3 Linux物理内存空间的管理 4.8.4 用户态内存的申请与释放 4.8.5 内存的共享和保护 4.8.6 交换空间、页面的换出和调入 4.8.7 缓冲机制,4.8.1Linux虚拟存储管理概述(1),Linux用户进程可访问4GB线性地址空间。从0从3GB的虚拟内存地址是用户空间。 3GB到4GB的虚拟内存地址是内核态空间,存放仅供内核态访问的代码和数据。 页表分为三层: 页目录PGD、中间页目录PMD和页表PTE。 Pentium计算机上被简化成两层,PGD和PMD合二为一。 每个进程有一个页目录,存储该进程所使用的内存页面,482Linux进程的虚拟地址空间,进程虚拟地址空间由许多个连续虚地址区域构成,采用虚存段vma及其链表来表示。 一个vma是某个进程的一段连续虚存空间,这段虚存里的所有单元拥有相同特征,如属于同一进程、相同的访问权限、同时被锁定、同时受保护。,进程虚存管理数据结构,4.8.3Linux物理内存空间的管理,物理内存以页框为单位,长度为4KB。 对物理内存的管理通过mem_map表描述, mem-map是由mem-map-t组成的数组,每个mem-map-t描述一个物理页框。,Bit map与free-area的 关 系,页面分配和回收(1),所有的空闲物理页帧组织成NR_MEM_LISTS的双向链表,存储在free_area数组中。每个链表节点的包括三个数据向:next和prev是链表指针,map指向bitmap表。,页面分配和回收(2),采用buddy算法分配空闲块。当请求分配长度为2i个页帧的块时,从free_area数组的第i条链表开始受搜索,如找不到,搜索第i+1条链表,以此类推。 如果找到的空闲块正好等于需求,直接把它从来链表中删除,返回首地址。如果找到的空闲块大于需求,则需要把它一分为二,前半部分插入前一条链表,取后半部分。如果还大,则继续对分,取一半留一半,直至相等。同时,bitmap表页必须相应调整,页面分配和回收(3),回收空闲块时,根据bitmap表中的对应组,判断回收块的前后是否为空闲块。若是则合并,并调整bitmap表对应位,从free_area的相应空闲链表中取下该空闲块并归还。这是一个递归过程,直到找不到空闲块邻居,将最大的空闲块插入free_area的相应空闲链表。,4.8.4用户态内存的申请与释放(1),用户进程使用vmalloc()和vfree()函数申请和释放大块存储空间,分配的存储空间在进程的虚地址空间中是连续的,但它对应的物理页框仍需缺页中断后,由缺页中断处理例程分配,所分配的页框也不是连续的。,用户态内存的申请与释放(2),vmalloc( )和vfree( )函数,其执行如下:申请时需给出申请的长度,调用set-vm-area内部函数向vmlist索取虚存空间。如果申请成功,将会在vmlist中插入一个vm-struct结构,并返回首地址,当申请到虚地址空间后更改页目录和页表。,用户态内存的申请与释放(3),释放时需给出虚拟空间首地址,沿着vmlist搜索要释放的区域,找到表示该虚拟内存块的vm-struct结构,并从vmlist表中删除,同时清除与释放虚存空间有关的目录项和页表项。,485内存的共享和保护(1),内存共享以页共享的方式实现,共享该页的各个进程的页表项直接指向共享页,这种共享不需建立共享页表,节省内存,但效率较低。当共享页状态发生变化时,共享该页的各进程页表均需修改,要多次访问页表。,内存的共享和保护(2),对进程的虚拟地址加锁或保护,实质是对vma段的vm_flags属性与VM_LOCKED进行或操作。 虚存加锁后,对应的物理页框驻留内存,不再被页面置换程序换出。 加锁操作有4种:对指定的一段虚拟空间加锁或解锁;对进程所有的虚拟空间加锁或解锁。,4.8.6交换空间、页面换出和调入 1、交换空间,Linux采用两种方式保存换出页面。一是使用块设备,如硬盘的一个分区,称作交换设备 另一种是使用文件系统的一个文件,称作交换文件。两者统称为交换空间。,2 页交换进程和页面换出(1),当物理页面不够用时,存储管理必须释放部分物理页面,把它们的内容写到交换空间。内核态交换线程kswapd完成这项功能。 Kswapd不仅能够把页面换出到交换空间,也能保证系统中有足够的空闲页面以保持存储管理系统高效的运行。,页交换进程和页面换出(2),Kswapd在系统初启时由init创建,调用init_swap_timer()函数设定,并转入睡眠。 每隔10ms响应函数swap_tick()被周期性激活,它察看系统中空闲页面是否太少,依次从三条途径缩减物理页面: (1)缩减page cache和buffer cache; (2)换出SYSTEM V共享内存占用页面; (3)换出或丢弃进程占用页面。,3 缺页中断和页面换入(1),当进程访问了一个还没有有效页表项的虚拟地址时,处理器将产生缺页中断,通知操作系统,并把缺页的虚拟地址(保存在CR2寄存器中)和缺页时访问虚存的模式一并传给缺页中断处理程序。,缺页中断和页面换入(2),根据控制寄存器CR2传递的缺页地址,必须找到表示出现缺页的虚拟存储区的vm_area_struct结构,如果没有找到,说明进程访问了非法存储区,系统发出信号告知进程出错。 系统检测缺页时访问模式是否合法,如果进程对该页的访问超越权限,系统也将发出信号,通知进程的存储访问出错。,缺页中断和页面换入(3),通过以上两步检查,可以确定缺页中断是否合法,进而进程进一步通过
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 个人软件账户管理办法
- 街道档案应急管理办法
- 高校公务卡管理办法
- 行政收发快递管理办法
- 车间自购料管理办法
- 跨境收支备案管理办法
- 上海疫情物资管理办法
- 运输证管理办法细则
- 个人外汇管理办法问答
- 资阳区公园管理办法
- 2025年秋期新教材部编人教版三年级上册道德与法治教学计划+进度表
- 2025-2026粤教粤科版(2024)科学三年级上册教学设计(附目录)
- 《建筑基坑工程监测技术标准》(50497-2019)
- GA 1809-2022城市供水系统反恐怖防范要求
- 《发育生物学》课件第八章 胚轴的特化与体轴的建立
- 新沪教牛津版七年级上册英语全册教案
- 《传统与革新──从巴洛克艺术到浪漫主义》教案
- 《石油库设计规范》修订2022-07
- 食品加工机械与设备 教案
- 产品管理讲义
- 计划生育情况审核表_6473
评论
0/150
提交评论