6存储管理.ppt

上传人:wj 文档编号:18699629 上传时间:2023-09-28 格式:PPT 页数:49 大小:383.50KB
下载 相关 举报
6存储管理.ppt_第1页
第1页 / 共49页
6存储管理.ppt_第2页
第2页 / 共49页
6存储管理.ppt_第3页
第3页 / 共49页
6存储管理.ppt_第4页
第4页 / 共49页
6存储管理.ppt_第5页
第5页 / 共49页
6存储管理.ppt_第6页
第6页 / 共49页
6存储管理.ppt_第7页
第7页 / 共49页
6存储管理.ppt_第8页
第8页 / 共49页
6存储管理.ppt_第9页
第9页 / 共49页
6存储管理.ppt_第10页
第10页 / 共49页
6存储管理.ppt_第11页
第11页 / 共49页
6存储管理.ppt_第12页
第12页 / 共49页
6存储管理.ppt_第13页
第13页 / 共49页
6存储管理.ppt_第14页
第14页 / 共49页
6存储管理.ppt_第15页
第15页 / 共49页
6存储管理.ppt_第16页
第16页 / 共49页
6存储管理.ppt_第17页
第17页 / 共49页
6存储管理.ppt_第18页
第18页 / 共49页
6存储管理.ppt_第19页
第19页 / 共49页
6存储管理.ppt_第20页
第20页 / 共49页
亲,该文档总共49页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

6存储管理.ppt

《6存储管理.ppt》由会员分享,可在线阅读,更多相关《6存储管理.ppt(49页珍藏版)》请在冰点文库上搜索。

6存储管理.ppt

存储管理,第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模板 > 商务科技

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2