3.1 内存管理基础
内存管理的主要任务是:为多道程序的运行提供良好的环境,方便用户使用存储器,提高存储器的利用率以及从逻辑上扩充存储器。内存管理包括:内存分配,内存保护,地址映射,内存扩充。
---------------------------------------------------------------------------------------------
应用程序的处理一般过程:由相应的语言处理程序将源程序模块对应转换成目标模块->由链接程序将所有相关的目标模块链接到一起,整合成一个可执行程序->由装入程序将程序装入内存后予以执行。今朝泪如雨
重定位的概念:
由于编译程序无法确定目标代码在执行时所对应的地址单元,故一般从0号单元开始为其编址。这样的地址称为相对地址、程序地址或虚拟地址。因此当装入程序将可执行代码装入内存时,必须通过地址转换将逻辑地址转换成内存地址,这个过程称为地址重定位。
重定位分为静态重定位和动态重定位两种,静态重定位在装入时将所有相对地址转换成绝对地址,这种装入方式要求作业在装入时就必须分配其要求的所有空间,整个运行过程中不能在内存中移动,也不能申请新空间;动态重定位是装入时不地址转换,在执行过程中由硬件的地址转换机构转换成绝对地址,这种装入方式可以将程序分配到不连续的存储区中,不必装入所有代码就可以运行,但是需要硬件支持。
在重定位中通常设置一个重定位寄存器,里面放的是程序的基址,物理地址=基址+相对地址
程序链接的方式:
静态链接:在运行前链接
装入时动态链接:边装入边链接
运行时动态链接:运行到需要处才链接,便于修改和更新,便于实现共享
程序装入的方式:
绝对装入方式:在编译时就知道程序要驻留的内存地址(和静态重定位完全不是一回事)
可重定位装入方式:有静态重定位和动态重定位两种
其他方式:和分页和分段相结合
---------------------------------------------------------------------------------------------
交换和覆盖的目的都是扩充逻辑内存
交换技术:把暂时不用的某个程序及数据部分(或全部)从内存中移到外存,或吧指定的程序或数据从外存读到内存。交换技术打破了一个程序一旦进入主存便一直运行到结束的限制。
覆盖技术:(定义略)覆盖技术要求程序员实现把一个程序划分成不同的程序段,并规定好它们的覆盖结构。打破了一个进程必须在全部信息都装入内存后才可运行的限制。
多少次我回回头看看走过的路---------------------------------------------------------------------------------------------
连续分配管理方式:
(1)单一连续分配:把内存空间分为系统区和用户区,每次只装入运行一个程序,存储器利用率极低。
(2)固定分区分配:将内存用户空间划分为若干个固定大小的区域,每个分区只装一道作业,分区大小可以相等也可以不等
优点:可用于多道程序系统最简单的存储分配
缺点:空间利用率较低
(3)动态内存分配:又称可变内存分配,其做法是在作业进入内存时,根据作业的大小动态的建立分区
优点:实现了多道程序共享内存,管理方案相对简单,实现存储保护的手段相对简单
缺点:系统中总有一部分空间得不到利用,无法实现多进程共享存储器的信息,无法实现主存的扩充
动态内存分配算法
首次适应算法:将空闲分区链以地址递增的次序连接,在分配内存时,从链首开始查,知道到一个大小合适的空间区间为止
由于首次适应算法每次都从低址开始,这样容易造成内存各部分使用不均,所以又有了循环首次适应算法
循环首次适应算法:在分配内存空间时,从上次到的空闲分区的下一个空闲分区开始查
循环首次适应算法可以减少查开销,但可能导致较大的空闲分区
最佳适应算法:空闲分区按容量从小到大排列,每次分配时都将能满足要求且最小的空闲分区分配给作业
最佳适应算法产生的碎片小但却多,这是优点也是缺点
最差适应算法:空闲分区按容量从大到小排列,每次分配时都将能满足要求且最大的空闲分区分配给作业
最差适应算法能使每次留下的空闲区较大,便于下次使用,但是大的空间区不易保留
分区的回收:作业执行结束后要回收使用完毕的分区,系统根据回收分区的大小及首地址,在空闲分区表中检查是否有相邻的空闲区,如有则合并成一个大的空闲区,合并时可能出现的情况有三种:上邻接,下邻接和上下都邻接。
拼接(紧凑)技术:解决碎片问题的一种方法是采用拼接技术,所谓拼接是指将移动寄存器中所有已分配内存移到内存的一段,是原本分散的空闲区连成一个大的空闲区。拼接实际一般有两种:在某个分区回收时立刻拼接或在不到合适的空闲区且空闲区的总容量可以满足作业要求时进行拼接。
存储保护:上下界寄存器法和基址限长寄存器法
---------------------------------------------------------------------------------------------
非连续内存分配管理方式
2016北京中考根据分区的大小固定和不固定又分为分页存储管理方式和分段存储管理方式,分页管理方式又分成基本分页存储管理方式和请求分页存储管理方式
基本分页存储管理方式:
实现思想:将作业分成若干个大小相等的区域,称为页,将内存也分成与页相等的区域,称为块。可以将作业中的任意一页放入内存中的任意一个空闲块中。lol更新速度限制在调度作业运行时,必须将它的所有页面一次调入内存,若内存中没有足够的物理块,则作业等待。
逻辑地址结构:前一部分是页号P,后一部分是页内偏移量W,如果逻辑空间时2^m,页面大小为2^n,则逻辑地址的前m-n为时页号,后n位是页内偏移量。
为便于在内存中到进程中每个页面对应的物理块,系统为每个进程建立了一张页面映射表,简称页表,记录页面在内存中对应的物理块号,页表一般放在内存中。页表大小由机器的地址结构决定,一般在512B~8KB之间。
系统设置了一个页表寄存器(PTR),存放页表在内存中的起始地址F和页表的长度M,进程未执行时,页表的的起始地址和长度放在进程控制块中,当进程执行时,在将页表的起始地址和长度存入PTR中。
地址变换过程:假设页表起始地址为F,页表长度为M,页面大小为L,逻辑地址为A,要
计算物理地址E:①计算页号P=(int)A/L,页内偏移量W=A%L。②比较页号和页表长度M,若P>=M,则产生越界中断。③在页表到页号P对应的物理块号b=F[P]。④E=b*L+W
快表:由上面的地址变换过程可知,要想访问一个地址,只有要读取两次内存,这种方法比不用分页慢了一倍。为了加快内存存取速度,可以在高速缓存存储器中增加一个快表,快表中登记了一部分页号和块号的对应关系。根据程序执行局部性的特点,在一段时间内总是经常访问某些页,把这些页放入块表中可以有效提高执行速度
有无页表访问时间比较:设访问内存一次需要时间为t,查快表一次需要时间e,命中率为a。如果没有快表,读取一个地址平均时间为2t,如果有快表,平均时间为ae+(a-1)(e+t)+t=2t+e-ta≈(2-a)t(一般e可忽略不计)
多级页表:当页表所占内存很大,无法用一个物理块装下时,就需要将页表分级。
基本分段存储管理方式:
在分页存储系统中,作业的地址空间是一维线性的,这破坏了程序内部天然的逻辑结构,造成共享、保护的困难。引入分段存储管理方式, 按逻辑地址将作业分段,每段都有自己的
名字,可以根据段名来访问相应的程序段和数据段
有点舍不得 杨幂分段存储管理主要是为了满足用户和程序员的下述需要:1) 方便编程,2) 信息共享,3) 信息保护,4) 动态增长 ,5) 动态链接
段的共享与保护:分段的共享是通过两个作业的段表中相应表项指向被共享分段的同一个物理副本来实现的。在多道程序环境下,必须注意共享段的信息保护问题,当一个作业正从共享段读取数据时,必须防止另一个作业修改共享段的数据。在大多数实现共享的系统中,程序被分成代码区和数据区。不能修改的代码称为纯代码或可重入代码。这样的代码和不能修改的数据时可以共享的,而可修改的代码和数据则不能共享。
分段管理优缺点:优点:便于动态申请内存,管理和使用统一化,便于共享,便于动态链接;缺点:产生碎片
分页和分段的主要区别:(1) 页是信息的物理单位,段则是信息的逻辑单位; (2) 页的大小固定且由系统决定,而段的长度却不固定; (3) 分页的作业地址空间是一维的,即单一的线性地址空间,分段的作业地址空间则是二维的。
段页式存储管理:
基本思想:将作业分段,再将段分页
对主存储器的访问,是 B 。A.随存储器的管理方案不同而异 B.以字节或字为单位
B 存储管理方式提供一维地址结构。A.分段 B.分页 C.段页式
下列 C 存储管理方式能使存储碎片尽可能少,而且是内存利用率较高。A.固定分区 B.可变分区 C.分页管理 D.段页式管理
分页是由硬件完成的
---------------------------------------------------------------------------------------------
3.2 虚拟内存管理
由于常规存储器管理具有一次性(要求将作业全部装入内存才能运行)和驻留性(作业装入内存后,便一直驻留在内存中)的特点,难以满足作业有很大和有大量作业要求运行的
情况。虚拟存储管理是一种借助于外存空间,从而允许一个进程在其运行过程中部分装入内存的技术。2012思想汇报
程序执行的局部性原理:在一较短的时间内,程序的执行仅局限于某个部分,相应的,它所访问的内存空间也局限于某个区域,这就是程序执行的局部性原理,可以分成空间局部性和时间局部性。
虚拟存储器的实质是让程序所在的地址空间与运行时用于存放程序的存储空间区分开,程序员可以在地址空间内编写程序,而完全不用考虑实际内存的大小。
实现虚拟存储技术的硬件支持:相当数量的外存,一定数量的内存,地址变换机构。
常用虚拟存储技术:请求分页存储管理,请求分段时存储管理,请求段页式存储管理
虚拟存储器特征:离散性,多次性,对换性,虚拟性
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论