6存储管理.ppt
- 文档编号:1361755
- 上传时间:2022-10-21
- 格式:PPT
- 页数:49
- 大小:383.50KB
6存储管理.ppt
《6存储管理.ppt》由会员分享,可在线阅读,更多相关《6存储管理.ppt(49页珍藏版)》请在冰豆网上搜索。
存储管理,第6章,存储管理概述存储管理方案虚拟存储管理Linux存储管理,6.1存储管理概述,功能:
内存的分配与回收:
为进程分配、回收内存空间;存储地址变换:
把程序使用的逻辑地址映射成内存空间地址;存储空间保护:
保证内存中的进程互不干扰;存储空间扩充:
提供虚拟存储空间。
内存的分配与回收,内存的分配与回收:
在进程建立时为其分配内存空间;当进程运行结束后回收其占用的内存空间。
内存分配方案的要素:
描述内存分配情况的数据结构内存分配策略,地址的概念,符号地址:
高级语言源程序中由符号代表的地址;逻辑地址:
经编译后的目标程序所用的地址;物理地址:
程序在内存占用的实际地址。
0,n-1,i,96,1024,1120,符号地址空间,逻辑地址空间,物理地址空间,地址变换,地址变换:
当某程序装入内存运行时,根据其所获得的空间位置,将程序的逻辑地址映射成相应的物理地址。
静态地址变换:
程序装入内存前一次性完成地址转换。
特点:
程序在内存中不可移动。
动态地址变换:
在程序执行过程中,由动态地址变换机构实现地址转换。
特点:
程序在内存中可移动、可共享、可不连续存放。
内存的保护,内存访问故障:
越界访问:
程序试图访问超出自己地址范围的地址,导致产生地址越界中断。
越权访问:
当程序访问共享内存时,其权限不符合该共享内存的读写权限,导致产生地址保护中断。
内存保护:
在程序执行中,CPU对程序要访问的地址进行检查,若有访问故障则终止进程的运行。
保护措施:
上下界、保护键、保护模式。
存储器扩充,“扩充”存储器空间的思想是:
程序代码部分进入内存,其余驻留在外存,在需要时调入内存。
实现方法有:
覆盖技术:
由用户编程指定程序块间的覆盖关系。
用户看到的是实际大小的内存。
交换技术:
系统将暂时不能运行的进程换出内存,以容纳更多的进程。
用户看到的也是实际大小的内存。
虚拟存储技术:
程序运行中由系统动态地完成内存与外存之间的交换。
用户看到的是一个比实际内存大得多的“虚拟内存”。
6.2存储管理方案,分区存储管理页式存储管理段式存储管理段页式存储管理,分区存储管理,分区:
把内存空间分割成若干区域,称为分区。
每个分区容纳一个进程的映像。
分区分配:
按进程映像的实际大小动态地划分分区。
操作系统,进程1,320K,进程2,224K,552K,区号大小起址标志116KB20K已分配232KB36K已分配364KB68K已分配4124KB132K未分配(a)分区说明表,0k:
20k:
第1分区(16kb)36k:
第2分区(32kb)(已分配)68k:
第3分区(64kb)(已分配)132k:
第4分区(124kb)(未分配)256k:
(b)内存分配图,在处理作业前,固定划分区域。
每个作业占一个分区,作业连续存放。
固定式分区,可变式分区,动态创建分区:
在装入程序时按其初始要求分配,或在其执行过程中通过系统调用进行分配或改变分区大小。
分区分配的碎片问题,操作系统,进程1,320K,进程2,224K,552K,320K,224K,288K,264K,320K,224K,288K,264K,操作系统,操作系统,进程1,进程1,进程2,进程3,进程3,220K,100K,320K,128K,288K,264K,操作系统,进程1,进程3,96K,进程4,操作系统,进程3,进程4,320K,128K,288K,264K,96K,操作系统,进程5,进程3,进程4,128K,288K,264K,96K,由于碎片,进程6(300K)无法进入系统,可重定位分区管理,解决碎片的方案:
可重定位分区。
技术:
存储紧缩技术:
采用动态地址重定位,使程序代码在内存中可以移动,从而可将碎片合并成一个连续的存储空间。
特点:
解决了碎片问题;存储紧缩花费时间。
地址变换方式,210,1234,+,1024,基址寄存器,1024,1234,是,逻辑地址,绝对地址,内存,3072,地址越界,长度寄存器,否,上界,3072,页式管理,分页的概念将程序的逻辑地址空间分成若干大小相等的页面,同时,把内存空间也按同样大小分为若干块,称为页帧。
对于x86体系结构,页面和页帧的大小都为4KB。
以页帧为单位分配内存,每页帧装一页;一个进程映象的各个页面可分散放在不相邻的页帧中。
用页表记录页号与页帧号的映射关系。
逻辑地址的划分,在页式存储管理系统中,用户的逻辑地址可看成由两部分组成:
页号+页内地址。
例:
设逻辑地址为32位,页面大小为4KB,则逻辑地址011位为页内地址,1231位为页号:
设逻辑地址为5678,则其页号为1,页内地址为1582。
0,11,12,31,逻辑地址,页表,页表:
每个进程一个,用来说明页面号与内存块号的对应关系。
页表寄存器:
每个进程一个,用来存放进程的页表的长度和起始地址。
例:
某进程页表:
页帧号,0,1,2,3,页面号,页表寄存器,页表长,页表地址,页表,页式分配示意图,页式地址变换,页式存储的保护,程序运行时,当CPU访问某逻辑地址时,硬件自动把页号与页表长度进行比较,如果合法,则进行地址转换,否则产生地址越界中断信号。
页式管理的特点,解决了碎片问题,有效利用内存(但仍然有页内碎片);管理简单;简单页式管理不能实现存储扩充,请求页式管理可以实现虚拟存储(页式虚存)。
段式存储管理,用户程序通常由一个主程序、若干个子程序和数据区组成,每一个这样的在逻辑上完整的信息单位称为“段”。
例:
main.obj,sub1.obj,sub2.obj,data,0,0,0,0,n0,n1,n2,n3,0段,1段,2段,3段,段的概念,从段的角度看,程序的逻辑地址空间是一个二维空间:
段与页的区别:
段是信息的逻辑单位,长度不固定,用户可见;页是信息的物理单位,长度固定,用户不可见;,逻辑地址,段式管理思想,段式管理思想:
以段为内存分配单位;用段表描述进程各段在内存的存储位置。
段表中包括段长、段的内存起始地址等。
例:
0,1,2,3,段号段长内存地址,段式分配示意图,地址变换方式,段式管理中的存储共享与保护,段的共享:
多个进程需要共享某段,可以使用不同的段名,在各自的段表中填入共享段的内存起始地址等信息,就可以共享该段。
段的保护:
当CPU访问某逻辑地址时,硬件自动把段号与段表长度进行比较,同时还要将段内地址与段表中该段长度进行比较,如果合法则进行地址转换,否则产生地址越界中断信号。
段式管理特点,便于程序模块化处理,便于分段共享;段长不固定,可能出现碎片;简单段式管理不能实现存储扩充,请求段式管理可以实现虚拟存储(段式虚存)。
6.3虚拟存储管理,虚拟内存的思想:
用外存模拟内存,实现内存空间的扩充。
虚拟存储器的原理:
程序部分代码进入内存,其余驻留在外存交换空间中,在需要时调入内存。
换入和换出完全由系统动态地完成,应用程序看到的是一个比实际内存大得多的“虚拟内存”。
虚拟存储管理方案:
页式虚存(请求页式);段式虚存(请求段式)。
请求页式管理,请求页式管理思想:
最初只将程序的若干页面调入内存,其余的页面保存在外存的交换区中。
当程序运行中访问的地址所在的页面不在内存时,则产生缺页中断,系统响应此中断,将缺页从外存交换区中调入内存。
请求页式页表,在页表中增加一些属性字段,其中状态位表示该页当前是否在内存,修改位表示该页面是否被修改过。
地址变换方式,页帧号,页帧号,地址变换举例,缺页中断的处理,有空闲页帧?
调入页面,修改页表,淘汰一个页面,该页修改过?
写回外存,否,否,是,是,返回,页面淘汰算法,常用页面淘汰算法:
先进先出法(FIFO):
先进入内存的页面先淘汰最近最少使用法(LRU):
淘汰近期访问次数最少的页面最近未使用法(NUR):
淘汰最近未被访问的页面页面调度不当,或实际内存过小,会产生抖动现象,即系统处于频繁的页入页出状态,系统效率降低。
6.4Linux存储管理,Linux系统采用请求页式存储管理方案,存储空间利用率高,可提供4GB的虚拟存储空间。
x86的地址变换:
分段+分页x86上的Linux回避了段式映射,使虚拟地址等同于线性地址(逻辑地址)。
二级分页,4GB逻辑地址空间包含有1M个页面,需要长为1M个表项的页表描述,查表效率低。
x86平台上的Linux系统采用了二级分页机制:
把所有页表项按1K为单位划分为若干个子表,称为页表(最多1K个)。
另用一个页目录表来记录每一个子表的位置。
页表和页目录表都是1K项长(4KB)。
采用二级分页时的逻辑地址划分:
0,11,12,31,21,22,二级分页地址变换示意图,进程的地址空间,进程的地址空间是指进程可以使用的全部线性地址的集合。
每个Linux进程拥有4G地址空间,分为:
内核空间:
最高的1G,供内核代码使用;所有进程通过执行系统调用内核代码而共享此空间。
用户空间:
较低的3G,供进程代码使用。
是进程的私有空间。
地址空间的划分,地址空间的布局结构,进程的映像被划分为不同类型的若干个片段,每个片段占用地址空间中的一个区间。
称为虚存区。
根据映像类型的不同,虚存区分为:
代码区(text)、数据区(data)、BSS区(bss)、堆(heap)和栈(stack)。
地址空间的映射,地址空间的描述,内存的分配与回收,用free_area数组将空闲页块(若干个连续的空闲页帧)按不同的大小(20210个内存页帧)分别描述。
伙伴分配算法:
分配时,根据需要的大小在free_area数组中找到一个足够大的空闲页块,取出分配给进程;回收时将释放的页帧登记到free_area数组中。
每次分配的大小为2k个连续的页帧。
空闲区的描述,页面的交换,Linux使用页面交换实现虚存。
进程建立之初只分配到很少的页帧,其余驻留在外存的交换空间中。
运行中,系统为进程按需动态调页。
Linux系统提供两种外存交换空间。
一种是利用一个特殊格式的(linuxswap)磁盘分区,称为交换区。
另一种是利用文件系统中特殊的文件,称为交换文件。
实际使用中,以交换区为主,以交换文件为辅。
页换入缺页中断处理,进程运行过程中发生缺页中断(即要访问的页当前不在物理内存中)后,当前进程进入等待状态。
CPU转去执行缺页中断处理程序。
缺页中断处理程序从磁盘交换空间中将所需的页装入物理内存,并更新页表项。
所需的页装入了物理内存后,进程进入就绪状态,可以继续执行了。
页换出页帧回收,当系统中内存不足时,必须及时把内存中暂时不会用到的页面淘汰出去,回收页帧。
内存交换调度的任务是管理内存页帧和外部交换空间,保证系统有足够的空闲页帧,使内存分配可以高效地运行。
Linux系统通过内核交换进程kswapd来实现页面淘汰功能。
kswapd是一个高优先级的实时内核进程,它周期性地运行,在内存紧张时进行页面换出。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 存储 管理