Linux 操作系统chap8.ppt
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_05.gif)
《Linux 操作系统chap8.ppt》由会员分享,可在线阅读,更多相关《Linux 操作系统chap8.ppt(52页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、LINUX存储管理/设备管理地址空间地址空间(address space)是一段表示内存位置的地址范围。地址空间有两种:n物理地址空间n逻辑地址空间,也被称为虚拟地址空间在逻辑地址和物理地址之间相互转换的工作是由内核和硬件内存管理单元(MMUmemory management unit)共同完成的。MMU是被集成进现代的CPU里的,它们都是同一块CPU芯片内的一个部分。内核告诉MMU如何为每个进程把某逻辑页面映射到某特定物理页面,而MMU在进程提出内存请求时完成实际的转换工作。Linux操作系统采用请求式分页虚拟存储管理方法。系统为每个进程提供了4GB的虚拟内存空间。各个进程的虚拟内存彼此独立
2、。虚拟内存的抽象模型n内存管理系统是操作系统中最为重要的部分,因为系统的物理内存总是少于系统所需要的内存数量。虚拟内存就是为了克服这个矛盾而采用的策略。系统的虚拟内存通过在各个进程之间共享内存而使系统看起来有多于实际内存的内存容量。虚拟内存可以提供以下的功能:广阔的地址空间。进程的保护。内存映射。公平的物理内存分配。共享虚拟内存(动态库、IPC)。虚拟地址到物理地址映射的抽象模型虚拟地址到物理地址映射的抽象模型 进程虚存空间的管理 n进程运行时能访问的存储空间只是它的虚拟内存空间。对当前该进程而言只有属于它的虚拟内存是可见的。n在进程的虚拟内存包含着进程本身的程序代码和数据。n进程在运行中还必
3、须得到操作系统的支持。进程的虚拟内存中还包含着操作系统内核。nLinux把进程的虚拟内存分成两部分,内核区和用户区。n操作系统内核的代码和数据等被映射到内核区。n进程的可执行映像(代码和数据)映射到虚拟内存的用户区。n进程虚拟内存的内核区的访问权限设置为0级,用户区为3级。n内核访问虚存的权限为0级,而进程的访问权限为3级nLinux的存储管理主要是管理进程虚拟内存的用户区。n进程虚拟内存的用户区分成代码段、数据段、堆栈以及进程运行的环境变量、参数传递区域等虚拟内存的抽象模型n当处理器执行一个程序时,它从内存中读取指令并解码执行。当执行这条指令时,处理器将还会需要在内存的某一个位置读取或存储数
4、据。在一个虚拟内存系统中,所有程序涉及到的内存地址均为虚拟内存地址而不是机器的物理地址。处理器根据操作系统保存的一些信息将虚拟内存地址转换为物理地址。n为了让这种转换更为容易进行,虚拟内存和物理内存都分为大小固定的块,叫做页面。每一个页面有一个唯一的页面号,叫做PFN(page frame number)在这种分页方式下,一个虚拟内存地址由两部分组成:一部分是位移地址,另一部分是PFN。每当处理器遇到一个虚拟内存地址时,它都将会分离出位移地址和PFN地址。然后再将PFN地址翻译成物理地址,以便正确地读取其中的位移地址。处理器利用页面表来完成上述的工作。LINUX的虚拟地址划分每一个用户进程都可
5、以访问4GB的线性虚拟内存空间。从0到3GB的虚拟内存地址是用户空间,用户进程可以直接对其进行访问。从3GB到4GB的虚拟内存地址为核心态空间,存放仅供核心态访问的代码和数据,用户态进程不可访问。所有进程从3GB到4GB的虚拟空间都是一样的,有同样的页目录项,同样的页表,对应到同样的物理内存段。LINUX以此方式让内核态进程共享代码段和数据段。内 核 态 虚 拟 空 间 从 3GB到3GB+4M的一段(也就是进程页目录第768项所管辖的范围),被映射到物理空间0到4M段。因此,进程处于核心态时,只要通过访问虚拟空间3GB到3GB+4M段,偏移地址0到4M,即访问了物理空间0到4M段。Linux
6、的三级分页结构 n页表是从线性地址向物理地址转换中不可缺少的数据结构,而且它使用的频率较高。页表必须存放在物理存储器中。n 虚存空间有4GB,按4KB页面划分页表可以有1M页。n若采用一级页表机制,页表有1M个表项,每个表项4字节,这个页面就要占用4MB的内存空间。n由于系统中每个进程都有自己的页表,如果每个页表占用4MB,对于多个进程而言就要占去大量的物理内存,这是不现实的。n在目前用户的进程不可能需要使用4GB这么庞大的虚存空间,若使用1M个表项的一级页表,势必造成物理内存极大的浪费。为此,Linux采用了三级页表结构,以利于节省物理内存。n三级分页管理把虚拟地址分成四个位段:页目录、页中
7、间目录、页表、页内偏移地址。n系统设置三级页表系列:n 页目录PGD(PaGe Directory)、n 页中间目录PMD(Page Middle Directory)n 页表PTE(Page TablE)。Linux的三级分页结构n三级分页结构是Linux提供的与硬件无关的分页管理方式。n当Linux运行在某种机器上时,需要利用该种机器硬件的存储管理机制来实现分页存储。nLinux内核中对不同的机器配备了不同的分页结构的转换方法。n对x86,提供了把三级分页管理转换成两级分页机制的方法。n其中一个重要的方面就是把PGD与MGD合二为一,使所有关于PMD的操作变为对PGD的操作Linux的三级
8、分页结构虚拟地址转换 PGD PMD PTE Page Frame 页目录索引,页面中间目录、页表索引和偏移量虚拟内存和物理内存都分为大小固定的块,叫做页面。每一个页面有一个唯一的页面号,叫做PFN(page frame number)。X86下的地址转换X86下的地址转换总之,存储器只有一个页目录,有1024个页目录项,每个页目录项又含有1024个页面 项,因 此,存 储 器 一 共 可 以 分 成102410241M个页面。由于每个页面为4K字节,所以,存储器的大小正好(最多)为4GB。n转转 换换 后后 备备 缓缓 存存(Translation Lookaside Buffers:TLB
9、s)n如果简单的执行从逻辑地址到物理地址的转换过程,在跟踪指针链时将会需要几个内存引用。RAM虽然不像磁盘那么慢,但是仍然比CPU要慢的多,这样就容易形成性能的瓶颈。为了减少这种开销,最近被执行过的地址转换结果将被存储在MMU的转换后备缓存(translation lookaside buffers:TLBs)内。虚拟地址转换X86高速缓存Linux的存储管理思想系统调用内存映射模块(mmap)内存管理模块(core)结构特定模块MMU交换控制模块 (swap)负责把磁盘文件或交换空间文件的逻辑地址映射到虚拟地址,以及把虚拟地址映射到物理地址负责控制内存内容的换入和换出。采用交换机制,从主存中
10、淘汰最近没被访问的逻辑页,保存近来访问过的逻辑页负责核心内存管理功能,如页的分配、回收和请求调页处理等功能,这些功能将别的内核子系统(如文件系统)所使用负责给各种硬件平台提供通用接口,主要完成主存初始化工作及对页面故障的处理。这个模块是实现虚拟内存的物理基础物理空间管理n物理空间的组织n空闲物理内存管理空闲内存的组织分配回收物理空间的组织(include/linux/fs.h,struct page)物理内存以页帧(page frame)为单位,页帧的长度固定,等于页长,对INTEL CPU缺省为4K字节。LINUX对物理内存的管理通过mem_map表描述(mm/memory.c)。mem_m
11、ap在系统初始化时由free_area_init()函数创建(mm/page_alloc.c)。它 本 身 是 关 于 struct page mem_map_t(linux/mm.h)的数组,每项mem_map_t对应一个关于核心态、用户态代码和数据等的页帧。物理内存空间管理划分后形成了大小不等的存储块,称为页面块,简称页块。包含1个页面的页块称为1页块,包含2个页面的称为2页块,依此类推。每种页块按前后顺序两两结合成一对Buddy“伙伴”系统按照Buddy关系把具有相同大小的空闲页面块组成页块组,即1页块组、2页块组32页块组。每个页块组用一个双向循环链表进行管理,共有个链表,分别为1、2
12、、4、8、16、32页块链表。分别挂到free_area 数组上。物理内存空间管理位图数组 标记内存页面使用情况,第0组每一位表示单个页面使用情况,1表示使用,0表示空闲,第2组每一位表示比邻的两个页面的使用情况,依次类推。默认为10个数组。当一对Buddy的两个页面块中有一个是空闲的,而另一个全部或部分被占用时,该位置1。两个页面块都是空闲,或都被全部或部分占用时,对应位置0。分配算法 LINUX采用buddy算法分配空闲块,块长可以是2i个(0=i NR_MEM_LISTS)页帧。当分配长度是2i页帧的块时,从free_area数组的第i条链表开始搜索,找不到再搜索第i+1条链表,以此类推
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Linux 操作系统chap8 操作系统 chap8
![提示](https://www.taowenge.com/images/bang_tan.gif)
限制150内