课件-第6章.

上传人:我** 文档编号:115307376 上传时间:2019-11-13 格式:PPT 页数:47 大小:547KB
返回 下载 相关 举报
课件-第6章._第1页
第1页 / 共47页
课件-第6章._第2页
第2页 / 共47页
课件-第6章._第3页
第3页 / 共47页
课件-第6章._第4页
第4页 / 共47页
课件-第6章._第5页
第5页 / 共47页
点击查看更多>>
资源描述

《课件-第6章.》由会员分享,可在线阅读,更多相关《课件-第6章.(47页珍藏版)》请在金锄头文库上搜索。

1、存储管理,第6章,存储管理概述 存储管理方案 虚拟存储管理 Linux存储管理,6.1 存储管理概述,功能: 内存的分配与回收:为进程分配、回收内存空间; 存储地址变换:把程序使用的逻辑地址映射成内存空间地址; 存储空间保护:保证内存中的进程互不干扰; 存储空间扩充:提供虚拟存储空间。,内存的分配与回收,内存的分配与回收:在进程建立时为其分配内存空间;当进程运行结束后回收其占用的内存空间。 内存分配方案的要素: 描述内存分配情况的数据结构 内存分配策略,地址的概念,符号地址:高级语言源程序中由符号代表的地址; 逻辑地址:经编译后的目标程序所用的地址; 物理地址:程序在内存占用的实际地址。,0,

2、n-1,i,96,1024,1120,符号地址空间,逻辑地址空间,物理地址空间,地址变换,地址变换:当某程序装入内存运行时,根据其所获得的空间位置,将程序的逻辑地址映射成相应的物理地址。 静态地址变换:程序装入内存前一次性完成地址转换。特点:程序在内存中不可移动。 动态地址变换:在程序执行过程中,由动态地址变换机构实现地址转换。特点:程序在内存中可移动、可共享、可不连续存放。,内存的保护,内存访问故障: 越界访问:程序试图访问超出自己地址范围的地址,导致产生地址越界中断。 越权访问:当程序访问共享内存时,其权限不符合该共享内存的读写权限,导致产生地址保护中断。 内存保护:在程序执行中,CPU对

3、程序要访问的地址进行检查,若有访问故障则终止进程的运行。 保护措施:上下界、保护键、保护模式。,存储器扩充,“扩充”存储器空间的思想是:程序代码部分进入内存,其余驻留在外存,在需要时调入内存。实现方法有: 覆盖技术:由用户编程指定程序块间的覆盖关系。用户看到的是实际大小的内存。 交换技术:系统将暂时不能运行的进程换出内存,以容纳更多的进程。用户看到的也是实际大小的内存。 虚拟存储技术:程序运行中由系统动态地完成内存与外存之间的交换。用户看到的是一个比实际内存大得多的“虚拟内存”。,6.2 存储管理方案,分区存储管理 页式存储管理 段式存储管理 段页式存储管理,分区存储管理,分区:把内存空间分割

4、成若干区域,称为分区。每个分区容纳一个进程的映像。 分区分配:按进程映像的实际大小动态地划分分区。,操作系统,进程1,320 K,进程2,224 K,552 K,分区分配的碎片问题,操作系统,进程1,320 K,进程2,224 K,552 K,320 K,224 K,288 K,264 K,320 K,224 K,288 K,264 K,操作系统,操作系统,进程1,进程1,进程2,进程3,进程3,220 K,100 K,320 K,128 K,288 K,264 K,操作系统,进程1,进程3,96 K,进程4,操作系统,进程3,进程4,320 K,128 K,288 K,264 K,96 K,

5、操作系统,进程5,进程3,进程4,128 K,288 K,264 K,96 K,由于碎片,进程6(300K)无法进入系统,可重定位分区管理,解决碎片的方案:可重定位分区。 技术:存储紧缩技术: 采用动态地址重定位,使程序代码在内存中可以移动,从而可将碎片合并成一个连续的存储空间。 特点:解决了碎片问题;存储紧缩花费时间。,地址变换方式,210,1234,+,1024,基址寄存器,1024,1234,是,逻辑地址,绝对地址,内存,3072,地址越界,长度寄存器,否,上界,3072,页式管理,分页的概念 将程序的逻辑地址空间分成若干大小相等的页面,同时,把内存空间也按同样大小分为若干块,称为页帧。

6、对于x86体系结构,页面和页帧的大小都为4KB。 以页帧为单位分配内存,每页帧装一页;一个进程映象的各个页面可分散放在不相邻的页帧中。用页表记录页号与页帧号的映射关系。,逻辑地址的划分,在页式存储管理系统中,用户的逻辑地址可看成由两部分组成:页号+页内地址。 例:设逻辑地址为32位,页面大小为4KB,则逻辑地址011位为页内地址,1231位为页号: 设逻辑地址为5678,则其页号为1,页内地址为1582。,0,11,12,31,逻辑地址,页表,页表:每个进程一个,用来说明页面号与内存块号的对应关系。 页表寄存器:每个进程一个,用来存放进程的页表的长度和起始地址。 例:某进程页表:,页帧号,0,

7、1,2,3,页面号,页表寄存器,页表长,页表地址,页表,页式分配示意图,页式地址变换,页式存储的保护,程序运行时,当CPU访问某逻辑地址时,硬件自动把页号与页表长度进行比较,如果合法,则进行地址转换,否则产生地址越界中断信号。,页式管理的特点,解决了碎片问题,有效利用内存(但仍然有页内碎片); 管理简单; 简单页式管理不能实现存储扩充,请求页式管理可以实现虚拟存储(页式虚存) 。,段式存储管理,用户程序通常由一个主程序、若干个子程序和数据区组成,每一个这样的在逻辑上完整的信息单位称为“段”。例:,main.obj,sub1.obj,sub2.obj,data,0,0,0,0,n0,n1,n2,

8、n3,0 段,1 段,2段,3段,段的概念,从段的角度看,程序的逻辑地址空间是一个二维空间: 段与页的区别: 段是信息的逻辑单位,长度不固定,用户可见; 页是信息的物理单位,长度固定,用户不可见;,逻辑地址,段式管理思想,段式管理思想:以段为内存分配单位;用段表描述进程各段在内存的存储位置。 段表中包括段长、段的内存起始地址等。例:,0,1,2,3,段号 段长 内存地址,段式分配示意图,地址变换方式,段式管理中的存储共享与保护,段的共享:多个进程需要共享某段,可以使用不同的段名,在各自的段表中填入共享段的内存起始地址等信息,就可以共享该段。 段的保护:当CPU访问某逻辑地址时,硬件自动把段号与

9、段表长度进行比较,同时还要将段内地址与段表中该段长度进行比较,如果合法则进行地址转换,否则产生地址越界中断信号。,段式管理特点,便于程序模块化处理,便于分段共享; 段长不固定,可能出现碎片; 简单段式管理不能实现存储扩充,请求段式管理可以实现虚拟存储(段式虚存)。,6.3 虚拟存储管理,虚拟内存的思想:用外存模拟内存,实现内存空间的扩充。 虚拟存储器的原理:程序部分代码进入内存,其余驻留在外存交换空间中,在需要时调入内存。换入和换出完全由系统动态地完成,应用程序看到的是一个比实际内存大得多的“虚拟内存”。 虚拟存储管理方案: 页式虚存(请求页式) ; 段式虚存(请求段式) 。,请求页式管理,请

10、求页式管理思想:最初只将程序的若干页面调入内存,其余的页面保存在外存的交换区中。当程序运行中访问的地址所在的页面不在内存时,则产生缺页中断,系统响应此中断,将缺页从外存交换区中调入内存。,请求页式页表,在页表中增加一些属性字段,其中状态位表示该页当前是否在内存,修改位表示该页面是否被修改过。,地址变换方式,页帧号,页帧号,地址变换举例,缺页中断的处理,有空闲页帧?,调入页面,修改页表,淘汰一个页面,该页修改过?,写回外存,否,否,是,是,返回,页面淘汰算法,常用页面淘汰算法: 先进先出法(FIFO):先进入内存的页面先淘汰 最近最少使用法(LRU):淘汰近期访问次数最少的页面 最近未使用法(N

11、UR):淘汰最近未被访问的页面 页面调度不当,或实际内存过小,会产生抖动现象,即系统处于频繁的页入页出状态,系统效率降低。,6.4 Linux存储管理,Linux系统采用请求页式存储管理方案,存储空间利用率高,可提供4GB的虚拟存储空间。 x86的地址变换:分段+分页 x86上的Linux回避了段式映射,使虚拟地址等同于线性地址(逻辑地址)。,二级分页,4GB逻辑地址空间包含有1M个页面,需要长为1M个表项的页表描述,查表效率低。 x86平台上的Linux系统采用了二级分页机制:把所有页表项按1K为单位划分为若干个子表,称为页表(最多1K个)。另用一个页目录表来记录每一个子表的位置。页表和页目

12、录表都是1K项长(4KB)。 采用二级分页时的逻辑地址划分:,0,11,12,31,21,22,二级分页地址变换示意图,进程的地址空间,进程的地址空间是指进程可以使用的全部线性地址的集合。 每个Linux进程拥有4G地址空间,分为: 内核空间:最高的1G ,供内核代码使用;所有进程通过执行系统调用内核代码而共享此空间。 用户空间:较低的3G ,供进程代码使用。是进程的私有空间。,地址空间的划分,地址空间的布局结构,进程的映像被划分为不同类型的若干个片段,每个片段占用地址空间中的一个区间。称为虚存区。 根据映像类型的不同,虚存区分为:代码区(text)、数据区(data)、BSS区(bss)、堆

13、(heap)和栈(stack)。,地址空间的映射,地址空间的描述,内存的分配与回收,用free_area数组将空闲页块(若干个连续的空闲页帧)按不同的大小(20210个内存页帧)分别描述。 伙伴分配算法:分配时,根据需要的大小在free_area数组中找到一个足够大的空闲页块,取出分配给进程;回收时将释放的页帧登记到free_area数组中。每次分配的大小为2k个连续的页帧。,空闲区的描述,页面的交换,Linux使用页面交换实现虚存。进程建立之初只分配到很少的页帧,其余驻留在外存的交换空间中。运行中,系统为进程按需动态调页。 Linux系统提供两种外存交换空间。一种是利用一个特殊格式的(lin

14、ux swap)磁盘分区,称为交换区。另一种是利用文件系统中特殊的文件,称为交换文件。实际使用中,以交换区为主,以交换文件为辅。,页换入缺页中断处理,进程运行过程中发生缺页中断(即要访问的页当前不在物理内存中)后,当前进程进入等待状态。CPU转去执行缺页中断处理程序。 缺页中断处理程序从磁盘交换空间中将所需的页装入物理内存,并更新页表项。 所需的页装入了物理内存后,进程进入就绪状态,可以继续执行了。,页换出页帧回收,当系统中内存不足时,必须及时把内存中暂时不会用到的页面淘汰出去,回收页帧。 内存交换调度的任务是管理内存页帧和外部交换空间,保证系统有足够的空闲页帧,使内存分配可以高效地运行。 Linux系统通过内核交换进程kswapd来实现页面淘汰功能。kswapd是一个高优先级的实时内核进程,它周期性地运行,在内存紧张时进行页面换出。,

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号