内存管理1《第三章》

存储器管理
主要任务:充分利用内存,为并发执行提供存储基础,自动装入用户程序解决程序空间比实际内存大的空间管理问题。
程序装入与链接
(1)创建进程首先将程序和数据装入内存 将用户程序变为可在内存中执行的程序,通常需要经过:编译、链接、装入
静态链接:程序运行之前,先将各模块及他们所需的库函数链接成一个完整的可执行 程序,以后不在拆开。
装入时动态链接:将用户源程序编译后得到一组目标模块,在装入内存时,采用边装入边链 接的链接方式。
运行时动态链接:对某些目标模块的链接,是在程序执行中需要该目标模块时,才对他进行链接。
(2)内存的装入模块在装入内存时,同样有以下三种方式
绝对装入:在编译时,如果知道程序将驻留在内存的某个位置,编译程序将产生绝对地址的 目标代码。绝对装入只适用于单道程序。
可重定位装入(静态重定位):装入时对目标程序中指令和数据的修改称为重定位,地址变 换通常是在装入时一次性完成的。
动态运行时装入(动态重定位):在程序执行期间,每次访问内存之前进行的重定位。
逻辑地址:由程序产生的与段(与页无关,因为只有段对用户是可见的)相关的偏移地址部分
物理地址:出现在CPU外部地址总线上的寻址物理内存的地址信号,是逻辑地址变换后的最终结果地址,物理地址空间是指内存中的物理单元地址集合。
内存保护:界限寄存器方法(上线接寄存器方法,基址和限长寄存器方法),存储保护键方法
连续分配管理方式
连续分配方式可分为 4 类:
1)单一连续分配(最简单),
2)固定分区分配,
3)动态分区分配(可变分区分配),
4)动态可重定位分区分配。
动态分区分配工作原理:内存不是系统预先划分好的,而是当程序装入时,根据程序的实际 需求和内存空间的使用情况来决定是否分配。若有足够的空间,则按需要分割一部分分区给 该进程;否则令其等待内存空间。
固定分区分配工作原理和特点。
工作原理:预先把可分配的主存储器空间分割成若干个连续区域,称为一个分区。每个分区
的大小可以相同也可以不同,但分区大小固定不变。每个分区装一个且只能装一个程序,而
且系统需要建立一张分区使用表。当分配时找到符合的内存大小并且未分配就进行分配。
特点:内存分配简单,但是内存利用率不高。
基于顺序搜索的动态分区分配算法:
首次适应算法(FF):从头开始检索,能安排就安排,不能安排向后检索。
循环首次适应算法(NF):从上次检索的地方开始检索,能安排就安排,不能安排向后检索。 (结束后从头开始)
最佳适应算法(BF):空闲区域从小到大排列,从头检索空闲区域,能安排就安排,不能安 排向后检索。
最坏适应算法(WF):空闲区域从大到小排列,从头检索空闲区域,能安排就安排,不能安 排就不能安排了。
基于索引搜索的动态分区分配算法:快速适应算法,伙伴系统,哈希算法。
动态可重定位分区分配:紧凑,动态重定位,动态重定位分区分配算法。

离散型分配方式分为以下三种:
分页存储管理方式,分段存储管理方式,段页式存储管理方式
分页存储分配单位
在分页存储管理中,逻辑地址分配是按页为单位进行分配
而主存的分配即物理地址分配是以内存块为单位分配的
分页存储管理的原理
1.将用户程序的地址空间分为若干固定大小的区域,成为“页”
2.也将内存空间分为若干与页面相同大小的存储块,称为“块”
3.在进程分配内存时,以块为单位,将进程中的若干页分别装入多个不相邻的物理块中
#由于进程的最后一页经常装不满一块,而形成了不可利用的碎片,称为“页内碎片”
页表:在分页系统中,允许将进程的各个页离散的存储在内存的任一物理块中,为保证进程 仍然能够正确的运行,即能在内存中找到每个页面所对应的物理块,系统又为每个进程建立 了一张页面影响表,简称页表。
段表:在分段存储管理系统中,为每个分段分配一个连续的分区,进程中的每个段,
可以离散的装入内存中的不同的分区中,为保证进程能正常运行,就必须为每个进程建立一张段映射表,简称段表。
地址变换机构:
分段式存储系统的引入,特点:方便编程,信息共享,信息保护,动态增长,动态链接
分页和分段的主要区别:
1)划分原则不同:页是信息的物理单位,段是信息的逻辑单位。
2)存储单位特征不同:页的大小固定且由系统决定,段的长度不固定,决定于用户所编写 的程序。
3)逻辑地址性质不同:分页的用户程序地址空间是一维的,分页完全是系统行为:分段是 用户的行为,分段系统中用户程序的地址空间是二维的。

你可能感兴趣的:(内存管理1《第三章》)