linux操作系统存储器管理

linux操作系统存储器管理

ID:35515022

大小:110.50 KB

页数:7页

时间:2019-03-25

linux操作系统存储器管理_第1页
linux操作系统存储器管理_第2页
linux操作系统存储器管理_第3页
linux操作系统存储器管理_第4页
linux操作系统存储器管理_第5页
资源描述:

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

1、Linux是一种自由和开放源码的类Unix操作系统。目前存在着许多不同的Linux,但它们都使用了Linux内核。Linux可安装在各种计算机硬件设备中,从手机、平板电脑、路由器和视频游戏控制台,到台式计算机、大型机和超级计算机。Linux操作系统的诞生1981年IBM公司推出享誉全球的微型计算机IBMPC。Linux实现了基于虚拟页式存储管理的虚拟存储,在i386结构的机器上,每个用户任务的虚拟地址空间都可达到4GB。  Linux的存储管理使用了三层页表来处理逻辑地址到物理地址的转换,分别是PGD(页表目录)、PMD(中间页表目录)和PT(页表)。  Linux将存储

2、管理分为物理内存管理、内核内存管理、虚拟内存管理、内核虚拟内存管理和用户级内存管理。一存储器管理的目的(1).为多道程序设计提供支持(2).提高内存利用率(3).简化内存的使用,为用户开发应用程序提供支持多道次序设计的主要目的是提高微处理器的利用律。而为了实现多道程序的并行运行,存储器管理系统必须能够将内存分为多个部分,每部分都装入一道程序,以便多道程序的并行运行。影响内存利用率的一个重要因素是内存的管理开销。为了便于管理,内存分配有一个最小单位。小于该单位的内存请求,将按此最小单位分配内存,其多余的未使用空间被称为“碎片”。减少碎片的方法,是缩小该基本单位。从内存的分区

3、管理到分段管理再到分页管理和分段分页结合的段页式管理都体现了这一思路。为了方便用户使用,存储器管理应该提供相应的功能,以支持用户的应用程序开发。比如分段机制可以帮助用户按功能组织代码,共享存储器机制可以方便用户高速通信。二存储管理1物理内存管理:物理内存管理以页为单位,记录、分配和回收物理内存,物理内存管理使用Buddy(伙伴)算法。(1)空闲物理内存单元的管理Linux物理内存管理使用Buddy算法实现。其物理页面的信息由mem_map_t结构描述,系统中的所有物理页面由一个mem_map_t类型的数组mem_map来表示。该数组的每一项都代表物理内存的一个页面,该叔祖

4、的大小由实际的物理内存大小决定。mem_map_t结构的定义参考linuxlinux-2.4.xincludelinuxmm.h.Linux内核定义了free_area数组记录系统中的当前空闲物理内存单元。每一项都是一个free_area_struct结构,描述了一组由相同大小的空闲物理页块构成的双向链表。另外,Linux使用全局变量nr_free_pages来跟踪系统中的空闲物理内存页面的总数,该变量的值等于free_area数组中空闲页的总数。使用该变量,Linux可以知道系统物理内存的使用状况,当空闲的物理内存页面树立低于某个指标时,Linux将唤醒内核交换

5、守护进程kswapd,让其尽可能回收一些物理内存。(2)物理页的分配所有物理内存的分配和释放必须针对连续的物理内存。因此,Buddy酸法将内存划分成2的i次方页大小的连续的页块,每一组有相同的i值。并且将同一组的空闲页块链接成一个双向链表然后将所有链表的头节点组成一个数组。分配空间时,首先要在页块大小相应的空闲页块链中找到一块空间来返回给调用者,如果在这个链里没有找到合适的空间分配,则到free_area数组中的下一个元素的空闲链中去查找,直至找到能够分配的空间。(3)物理页的释放内存管理系统,在分配空间时将大页块都划分成了小页块,这使得系统中的页块都越变越小,这对于分配

6、大块内存是不利的。为了避免产生大量的内存碎片,内存管理系统在物理页释放时,应该斤可能地将小页块合并成大页块。(4)物理内存管理评价为了内存对齐,Buddy算法往往会分配一些多余的内存空间给用户,这对提供内存利用率是不利的;但是Buddy算法避免了内存碎片的产生,避免了内存紧抽的开销,效率很高。2内核内存管理:内核内存管理主要负责为各种内核数据结构分配空间,其大小一般较小。如果使用以页为单位的物理内存管理则浪费较大,为此Linux专门提供了使用Slab算法的内核内存管理。3虚拟内存管理:在物理内存管理的基础上,使用请求调页机制和交换机制,为系统中的每个进程都提供高达4GB(

7、i386平台)的虚拟内存空间。(1)页表的管理一个页表入口标识一个物理页,它包含了物理页的大量信息,如该页是否有效、该页的读写权限等。最重要的是页表入口给出了物理页的页框号,根据这个物理页框号就可以找到这个物理页的实际起始物理地址。  为了操作系统的可移植性,Linux使用三级页表来存储虚拟地址转换为物理地址映射关系。一级页表只占用一个页,其中存放了二级页表的入口指针,记为PGD;二级页表中存放了三级页表的入口的指针,记为pmd;在三级页表中每个项都是一个页表入口。在Linux的X86版本中,只使用了两极页表,即第一级和第三级

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

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

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