详解操作系统内存管理

内存管理

分页式存储管理

分页存储管理是将一个进程的逻辑地址空间分成若干个大小相等的片,称为页面或页,
相应地,也把内存空间分成与页面,相同大小的若干个存储块,称为(物理)块或页框(frame)。
在为进程分配内存时,以块为单位将进程中的若干个页分别装入到多个可以不相邻接的物理块中。
由于进程的最后一页经常装不满一块而形成了不可利用的碎片,称之为“页内碎片” 。

在分页系统中,允许将进程的各个页离散地存储在内存不同的物理块中,但系统应能
保证进程的正确运行,即能在内存中找到每个页面所对应的物理块。为此,系统又为每个
进程建立了一张页面映像表,简称页表。在进程地址空间内的所有页(0~n),依次在页表中
有一页表项,其中记录了相应页在内存中对应的物理块号,

如图。在配置了页表后,进程执行时,通过查找该表,即可找到每页在内存中的物理块号。
可见,页表的作用是实现从页号到物理块号的地址映射。
详解操作系统内存管理_第1张图片

分段式存储管理

在分段存储管理方式中,作业的地址空间被划分为若干个段,每个段定义了一组逻辑
信息。例如,有主程序段 MAIN、子程序段 X、数据段 D 及栈段 S 等。每个段都有一个段号
,每个段都从 0开始编址,并采用一段连续的地址空间。段的长度由相应的逻辑信息组的长度决定,因而各段长度不等。整个作业的地址空间由于是分成多个段,因而是二维的,亦即,其逻辑地址由段号(段名)和段内地址所组成。

详解操作系统内存管理_第2张图片

分段的优点

分段系统的一个突出优点,是易于实现段的共享,即允许若干个进程共享一个或多个
分段,且对段的保护也十分简单易行。在分页系统中,虽然也能实现程序和数据的共享,
但远不如分段系统来得方便

比如,两个进程都运行一个文本编辑程序,文本编辑程序有160KB的代码和40KB的数据区。
其中160KB代码区两个线程共享,如下图分别是分页式存储管理系统和分段式管理系统实现
数据共享的方式。分页式存储管理系统需要建立多个页表项,而分段式管理系统只需要建立
一个段表项

详解操作系统内存管理_第3张图片

详解操作系统内存管理_第4张图片

段页式存储管理

段页式系统的基本原理,是分段和分页原理的结合,即先将用户程序分成若干个段,
再把每个段分成若干个页,并为每一个段赋予一个段名。在段页式系统中,
其地址结构由段号、段内页号及页内地址三部分所组成,如下图是其地址映射过程

详解操作系统内存管理_第5张图片

在段页式系统中,为了便于实现地址变换,须配置一个段表寄存器,其中存放段表始址和段表长 TL。进行地址变换时,首先利用段号 S,将它与段表长 TL 进行比较。若 S

详解操作系统内存管理_第6张图片

虚拟内存

基于局部性原理,应用程序在运行之前,没有必要全部装入内存,仅须将那些当前要
运行的少数页面或段先装入内存便可运行,其余部分暂留在盘上。程序在运行时,如果它
所要访问的页(段)已调入内存,便可继续执行下去;但如果程序所要访问的页(段)尚未调入
内存(称为缺页或缺段),此时程序应利用 OS 所提供的请求调页(段)功能,将它们调入内存,
以使进程能继续执行下去。如果此时内存已满,无法再装入新的页(段),则还须再利用页(段)
的置换功能,将内存中暂时不用的页(段)调至盘上,腾出足够的内存空间后,再将要访问的
页(段)调入内存,使程序继续执行下去。这样,便可使一个大的用户程序能在较小的内存空
间中运行;也可在内存中同时装入更多的进程使它们并发执行。从用户角度看,该系统所
具有的内存容量,将比实际内存容量大得多。但须说明,用户所看到的大容量只是一种感
觉,是虚的,故人们把这样的存储器称为虚拟存储器。

页面置换算法

OPT 页面置换算法(最佳页面置换算法) :最佳(Optimal, OPT)置换算法所选择的被淘汰页面将是以后永不使用的,或者是在最长时间内不再被访问的页面,这样可以保证获得最低的缺页率。但由于人们目前无法预知进程在内存下的若千页面中哪个是未来最长时间内不再被访问的,因而该算法无法实现。一般作为衡量其他置换算法的方法。

FIFO(First In First Out) 页面置换算法(先进先出页面置换算法) : 总是淘汰最先进入内存的页面,即选择在内存中驻留时间最久的页面进行淘汰。

LRU (Least Currently Used)页面置换算法(最近最久未使用页面置换算法) :LRU算法赋予每个页面一个访问字段,用来记录一个页面自上次被访问以来所经历的时间 T,当须淘汰一个页面时,选择现有页面中其 T 值最大的,即最近最久未使用的页面予以淘汰。

法赋予每个页面一个访问字段,用来记录一个页面自上次被访问以来所经历的时间 T,当须淘汰一个页面时,选择现有页面中其 T 值最大的,即最近最久未使用的页面予以淘汰。

LFU (Least Frequently Used)页面置换算法(最少使用页面置换算法) : 该置换算法选择在之前时期使用最少的页面作为淘汰页。

你可能感兴趣的:(Java学习)