实例研究linux虚拟存储

实例研究linux虚拟存储

ID:27426732

大小:243.00 KB

页数:21页

时间:2018-12-02

实例研究linux虚拟存储_第1页
实例研究linux虚拟存储_第2页
实例研究linux虚拟存储_第3页
实例研究linux虚拟存储_第4页
实例研究linux虚拟存储_第5页
资源描述:

《实例研究linux虚拟存储》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、4.8实例研究:Linux虚拟存储管理4.8.1Linux存储管理概述4.8.2进程的虚拟地址空间4.8.3Linux物理内存空间的管理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计算机上被简化成两

2、层,PGD和PMD合二为一。•每个进程有一个页目录,存储该进程所使用的内存页面4.8.2Linux进程的虚拟地址空间进程虚拟地址空间由许多个连续虚地址区域构成,采用虚存段vma及其链表来表示。一个vma是某个进程的一段连续虚存空间,这段虚存里的所有单元拥有相同特征,如属于同一进程、相同的访问权限、同时被锁定、同时受保护。进程任务结构task_structmm内存管理结构mm_structmmappgd虚存段结构vm_area_structvm_structvm_nextvm_op页目录表pgd页表PTE页表PTE页框PF页框PFvm_a

3、rea_structvm_nextvm_area_struct*open*close*swapout..进程虚存管理数据结构4.8.3Linux物理内存空间的管理物理内存以页框为单位,长度为4KB。对物理内存的管理通过mem_map表描述,mem-map是由mem-map-t组成的数组,每个mem-map-t描述一个物理页框。next0ptevmapnext1ptevmapnext2ptevmap...free_areabitmap每位对应20页每位对应21页每位对应22页。。1页1页2页2页4页4页mem_map_tBitmap与fr

4、ee-area的关系页面分配和回收(1)所有的空闲物理页帧组织成NR_MEM_LISTS的双向链表,存储在free_area数组中。每个链表节点的包括三个数据向:next和prev是链表指针,map指向bitmap表。页面分配和回收(2)采用buddy算法分配空闲块。当请求分配长度为2i个页帧的块时,从free_area数组的第i条链表开始受搜索,如找不到,搜索第i+1条链表,以此类推。如果找到的空闲块正好等于需求,直接把它从来链表中删除,返回首地址。如果找到的空闲块大于需求,则需要把它一分为二,前半部分插入前一条链表,取后半部分。如果

5、还大,则继续对分,取一半留一半,直至相等。同时,bitmap表页必须相应调整页面分配和回收(3)回收空闲块时,根据bitmap表中的对应组,判断回收块的前后是否为空闲块。若是则合并,并调整bitmap表对应位,从free_area的相应空闲链表中取下该空闲块并归还。这是一个递归过程,直到找不到空闲块邻居,将最大的空闲块插入free_area的相应空闲链表。4.8.4用户态内存的申请与释放(1)用户进程使用vmalloc()和vfree()函数申请和释放大块存储空间,分配的存储空间在进程的虚地址空间中是连续的,但它对应的物理页框仍需缺页中

6、断后,由缺页中断处理例程分配,所分配的页框也不是连续的。用户态内存的申请与释放(2)vmalloc()和vfree()函数,其执行如下:申请时需给出申请的长度,调用set-vm-area内部函数向vmlist索取虚存空间。如果申请成功,将会在vmlist中插入一个vm-struct结构,并返回首地址,当申请到虚地址空间后更改页目录和页表。用户态内存的申请与释放(3)释放时需给出虚拟空间首地址,沿着vmlist搜索要释放的区域,找到表示该虚拟内存块的vm-struct结构,并从vmlist表中删除,同时清除与释放虚存空间有关的目录项和页表

7、项。4.8.5内存的共享和保护(1)内存共享以页共享的方式实现,共享该页的各个进程的页表项直接指向共享页,这种共享不需建立共享页表,节省内存,但效率较低。当共享页状态发生变化时,共享该页的各进程页表均需修改,要多次访问页表。内存的共享和保护(2)对进程的虚拟地址加锁或保护,实质是对vma段的vm_flags属性与VM_LOCKED进行或操作。虚存加锁后,对应的物理页框驻留内存,不再被页面置换程序换出。加锁操作有4种:对指定的一段虚拟空间加锁或解锁;对进程所有的虚拟空间加锁或解锁。4.8.6交换空间、页面换出和调入 1、交换空间Linux

8、采用两种方式保存换出页面。一是使用块设备,如硬盘的一个分区,称作交换设备另一种是使用文件系统的一个文件,称作交换文件。两者统称为交换空间。2页交换进程和页面换出(1)当物理页面不够用时,存储管理必须释放部分

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

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

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