linux课件--LINUX存储管理

linux课件--LINUX存储管理

ID:65459948

大小:430.50 KB

页数:40页

时间:2022-01-09

linux课件--LINUX存储管理_第1页
linux课件--LINUX存储管理_第2页
linux课件--LINUX存储管理_第3页
linux课件--LINUX存储管理_第4页
linux课件--LINUX存储管理_第5页
linux课件--LINUX存储管理_第6页
linux课件--LINUX存储管理_第7页
linux课件--LINUX存储管理_第8页
linux课件--LINUX存储管理_第9页
linux课件--LINUX存储管理_第10页
资源描述:

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

1、LINUX存储管理地址空间地址空间(addressspace)是一段表示内存位置的地址范围。地址空间有两种:物理地址空间逻辑地址空间,也被称为虚拟地址空间在逻辑地址和物理地址之间相互转换的工作是由内核和硬件内存管理单元(MMU—memorymanagementunit)共同完成的。MMU是被集成进现代的CPU里的,它们都是同一块CPU芯片内的一个部分。内核告诉MMU如何为每个进程把某逻辑页面映射到某特定物理页面,而MMU在进程提出内存请求时完成实际的转换工作。LINUX的虚拟地址划分每一个用户进程都可以访问4GB的线性虚拟内存空间。从0到3GB的虚拟内存地址是用户空间,用户进程可以直接对其进行

2、访问。从3GB到4GB的虚拟内存地址为核心态空间,存放仅供核心态访问的代码和数据,用户态进程不可访问。所有进程从3GB到4GB的虚拟空间都是一样的,有同样的页目录项,同样的页表,对应到同样的物理内存段。LINUX以此方式让内核态进程共享代码段和数据段。内核态虚拟空间从3GB到3GB+4M的一段(也就是进程页目录第768项所管辖的范围),被映射到物理空间0到4M段。因此,进程处于核心态时,只要通过访问虚拟空间3GB到3GB+4M段,偏移地址0到4M,即访问了物理空间0到4M段。虚拟地址转换PGDPMDPTEPageFrame页目录索引,页面中间目录、页表索引和偏移量虚拟内存和物理内存都分为大小固

3、定的块,叫做页面。每一个页面有一个唯一的页面号,叫做PFN(pageframenumber)。转换后备缓存(TranslationLookasideBuffers:TLBs)如果简单的执行从逻辑地址到物理地址的转换过程,在跟踪指针链时将会需要几个内存引用。RAM虽然不像磁盘那么慢,但是仍然比CPU要慢的多,这样就容易形成性能的瓶颈。为了减少这种开销,最近被执行过的地址转换结果将被存储在MMU的转换后备缓存(translationlookasidebuffers:TLBs)内。虚拟地址转换虚存段(VMA)的组织和管理VMA:vitualmemoryarea一个vma段是某个进程的一段连续的虚存空

4、间;在这段虚存里的所有单元拥有相同的特征。例如:属于同一进程,相同的访问权限,同时被锁定(locked),同时受保护(protected),等等。进程通常占用几个vma段,分别用于代码段、数据段、堆栈段等。属于同一进程的vma段通过vm_next指针连接,组成链表。对于一个给定的进程,两个VMAs决不会重叠,一个地址最多被一个VMA所覆盖;进程从未访问过的的一个地址将不会在任何一个VMA中。structmm_struct结构的成员structvm_area_struct*mmap表示进程的vma链表的表头。当一个进程有多于avl_min_map_count数目的VMA时,内核也会创建一个AVL

5、树来存储它们,此时仍然是使用VMAs自己的指针对该树进行管理。AVL树是一个平衡二叉树结构,因此这种方法在VMA数量巨大时查找效率十分高。虚存段(VMA)的组织和管理AVL树PCB对内存的控制Taskstructmm_struct_vm_area_structvm_mmpgdmmvm_operations_structvm_nextmmapvm_opspgdvm_area_structpteptepagepageframeframevm_next*open物理空间管理物理空间的组织空闲物理内存管理空闲内存的组织分配回收物理空间的组织(include/linux/fs.h,structpage)

6、物理内存以页帧(pageframe)为单位,页帧的长度固定,等于页长,对INTELCPU缺省为4K字节。LINUX对物理内存的管理通过mem_map表描述(mm/memory.c)。mem_map在系统初始化时由free_area_init()函数创建(mm/page_alloc.c)。它本身是关于structpagemem_map_t(linux/mm.h)的数组,每项mem_map_t对应一个关于核心态、用户态代码和数据等的页帧。mem_map在物理空间的位置0X000000(0K)empty_Zero_Page由mem_init初始化0X001000(4K)swapper_pg_dir核

7、心态访问空间的页目录0X002000(8K)pg00X003000(12K)bad_pages0X004000(16K)bad_pg_table0X005000(20K)floppy_track_buffer0X006000(24K)kernel_code+textFREE0X0A0000(640KRESERVED0X100000(1M)pg_tables(4K)swap_cachemem_map

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

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

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