【软考学习12】页式存储、段式存储、段页式存储和物理逻辑地址转换

简介: 【软考学习12】页式存储、段式存储、段页式存储和物理逻辑地址转换


本文讲解了操作系统中进程的存储管理内容,学习了页式存储段式存储段页式存储的原理,熟悉逻辑地址和物理地址的转换计算方式。


一、进程存储概论

进程数据存储是操作系统中比较重要的内容。

比如我的计算机有 16G 运行内存,如下图所示。


我将计算机开机后,假设操作系统消耗了 2G 的运行内存,我打开了某开发工具消耗了 5G 运行内存,又打开了某通讯工具消耗了 1G 运行内存,如下图所示。

此时我又需要运行一个软件,消耗 900M 的内存,请问应该如何分配?

目前存在四种分配方法,分别是首次适应法最佳适应法最差适应法循环首次适应法


1.1 首次适应法

首次适应法的原理,就是从上到下寻找第一个能放的内存块,找到后放下,所以会放在如下图所示的位置。

1.2 最佳适应法

最佳适应法的原理,就是遍历所有现有内存块后,找到能满足的最小内存块,如下图所示。

1.3 最差适应法

最差适应法的思路刚刚和最佳适应法相反,遍历所有现有内存块后,找到能满足的最大内存块,如下图所示。

1.4 循环首次适应法

循环首次适应法将当前空闲的内存块从上到下(3G、1G、1G、3G)串成一个圈,如下图所示。

接着每次遍历最先可放的空闲块,遍历到 3G 发现可以放下,所以直接放,如下图所示。

同理,第二次若再找一个 900M 内存块,那就放在 1G 块这里,如下图所示。


但这种内存分配方式总体上存在着缺陷,理论上来说,计算机运行内存总共为 16G,我已经用了 8G,还剩下 8G 内存。

但是此时如果我再运行 5G 的软件,就已经无法运行了,因为没有 5G 的内存块供我使用,所以我们需要使用页式存储


二、页式存储管理

2.1 页式存储原理

高级程序语言在设计时使用逻辑地址,但在运行时需要用物理地址在内存中寻找,这就涉及到逻辑地址和物理地址的转换问题,软考中经常考到。

页式存储是把计算机的存储器划分成大小相等的多个区域,每个区域称为一块,并对它们按照顺序编号。

物理地址 = 块号 X 块长 + 页内地址

而程序的逻辑地址是将内存划分为何块大小相等的页,同样按顺序编号。

在分页式存储模式中,允许将每一页分散存储在物理块中,要求程序能在主存(内存)中找到每个页面所对应的物理块,确保作业的正确运行。物理地址的块是真实存在的,而逻辑地址是人们在编程时拟定的,所以有一个关联表,即页表

总体的结构图如下:

使用了页式存储,比如每一页设定为 4K 大小。

我们运行一个需要 503K 内存的程序,只需要为其分配 126 页即可,剩下浪费的 1K 可以忽略不计,也就是利用率高、碎片小

有了固定页面大小之后,取址计算可通过乘法计算,分配和管理比较简单

但使用页式存储需要实时维护页表,增加了系统开销

根据经验表明,使用页式存储可能会出现倒挂现象,即内存给与越多,缺页率可能反而更改,这个后续章节会讲到。


总的来说,页式存储的流程如下:

  • 将进程虚拟空间划分为长度相等的多个页,并按顺序编号。
  • 将内存空间同样划分为多个存储块(物理块),和页一样大,同样按顺序编号。
  • 为进程分配内存时,以块为单位,根据页表匹配,将若干页分别装入可以不相邻的物理块中。

2.2 逻辑地址和物理地址转换

页式存储地址可分为页号(P)和页内地址(W),如下图所示。

物理地址也可分为块号和页内地址,如下图所示。

由此可得,在进行逻辑地址和物理地址转换时,只需要根据页表,将页号替换为块号(页帧号)即可,而后面的页内地址无需变动

题目:比如进程 P 有 6 个页面,页号分为是 0 到 5,页面大小为 4K,页表如下所示,已知逻辑地址为 5A29H,求十六进制的物理地址。

因为页面大小为 4K,4K = 2 的 12 次方,可得页内地址为 12 位

已知逻辑地址为 5A29H,转换为二进制就是 0101 1010 0010 1001,后面的 12 位(1010 0010 1001)就是页内地址。

可得前面四位 0101 就是页号,查表可得块号为 6,转换二进制为 0110。

所以物理地址的二进制为 0110 1010 0010 1001,转换十六进制为 6A29H


三、段式存储管理

简单来说,段式存储管理是将页式存储组织的页大小设置为不固定

因为程序一般都是由主程序、子程序、堆栈等元素组成,每一段都有自己独立的作用,我们不能去断章取义,所以将一段作为单位存储在内存中,也是一种很好的方式,这就是段式存储

每个作业都由独立段组成,可以给段做个编号,即逻辑地址从 0 开始编号。

段内地址是连续的,段和段之间的地址是不连续的,段式存储的逻辑地址由段号和段内地址组成,如下所示。

段式存储的结构如下所示:

  • 优点:多个程序可共享内存,而且读写互不影响。
  • 缺点:内存利用率低碎片大

四、段页式存储管理

段页式存储管理方式结合了页式存储和段式存储的方法,采用了分段的方式,每一段作业独立编程,再把段分成若干个页面,相当于在段式的基础上再套了一层页式存储算法,存储结构如下所示。

  • 优点:利用率高、物理地址连续存储
  • 缺点:使用段页式存储需要实时维护段页表,增加了系统开销,使得执行速度下降。

五、总结

除了页式存储段式存储段页式存储之外还有一种快表

快表是一种高速缓存(Cache)组成的小容量的存储器,特点是速度快,一般用于存放瞬时访问最多的数据,也是很好的进程存储容器,在本文中不再详细讲解。

本文讲解了操作系统中进程的存储管理内容,学习了页式存储段式存储段页式存储的原理,熟悉逻辑地址和物理地址的转换计算方式。


相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
相关文章
|
存储
逻辑地址和物理地址转换
逻辑地址和物理地址转换
1647 0
|
机器学习/深度学习 数据采集 存储
Nat. Mach. Intell. | 基于神经网络的迁移学习用于单细胞RNA-seq分析中的聚类和细胞类型分类...
Nat. Mach. Intell. | 基于神经网络的迁移学习用于单细胞RNA-seq分析中的聚类和细胞类型分类...
450 0
Nat. Mach. Intell. | 基于神经网络的迁移学习用于单细胞RNA-seq分析中的聚类和细胞类型分类...
|
Linux 定位技术 虚拟化
【OSTEP】多道程序和时分共享 | 虚拟地址空间 | 用户栈vs内核栈 | 进程结构: struct thread | 虚拟vs物理地址空间 | 地址转换方案
【OSTEP】多道程序和时分共享 | 虚拟地址空间 | 用户栈vs内核栈 | 进程结构: struct thread | 虚拟vs物理地址空间 | 地址转换方案
287 0
|
网络虚拟化 数据安全/隐私保护 网络架构
计算机网络学习24:虚拟专用网VPN与网络地址转换NAT
因特网中对目的地址是私有地址的IP数据报一律不进行转发。 并且私有地址只能是本地使用,不可以作为对外的IP地址。 很显然,各部门都需要一个合法的具有IP地址的路由器。 这样,他们各自的专用网才能利用公用的因特网进行通信。
计算机网络学习24:虚拟专用网VPN与网络地址转换NAT
|
数据库 数据安全/隐私保护 索引
【操作系统】第四章:非连续内存分配(Part1:基于分页-分段的物理/逻辑地址转换)
【操作系统】第四章:非连续内存分配(Part1:基于分页-分段的物理/逻辑地址转换)
514 0
|
机器学习/深度学习 数据可视化 算法
Nat. Commun. | 从单细胞转录组数据中学习可解释的细胞和基因签名嵌入
Nat. Commun. | 从单细胞转录组数据中学习可解释的细胞和基因签名嵌入
624 0
Nat. Commun. | 从单细胞转录组数据中学习可解释的细胞和基因签名嵌入
|
机器学习/深度学习 自然语言处理 算法
Nat. Mach. Intell. | 深度神经网络中的捷径学习
Nat. Mach. Intell. | 深度神经网络中的捷径学习
507 0
Nat. Mach. Intell. | 深度神经网络中的捷径学习
|
机器学习/深度学习
Nat. Methods | 学习微生物与代谢产物之间相互作用的神经网络
Nat. Methods | 学习微生物与代谢产物之间相互作用的神经网络
440 0
Nat. Methods | 学习微生物与代谢产物之间相互作用的神经网络
|
机器学习/深度学习 存储 算法
Nat. Commun | 结合二维深度神经网络和迁移学习 预测RNA二级结构
Nat. Commun | 结合二维深度神经网络和迁移学习 预测RNA二级结构
565 0
Nat. Commun | 结合二维深度神经网络和迁移学习 预测RNA二级结构
|
网络协议 测试技术
软件测试面试题:Internet采用哪种网络协议?该协议的主要层次结构?Internet物理地址和IP地址转换采用什么协议?
软件测试面试题:Internet采用哪种网络协议?该协议的主要层次结构?Internet物理地址和IP地址转换采用什么协议?
310 0