问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

页式存储、段式存储、段页式存储和物理逻辑地址转换

创作时间:
作者:
@小白创作中心

页式存储、段式存储、段页式存储和物理逻辑地址转换

引用
CSDN
1.
https://blog.csdn.net/sadfasdfsafadsa/article/details/144943690

二、页式存储管理

2.1 页式存储原理

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

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

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

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

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

总体的结构图如下:

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  • 题目:某页式存储系统页面大小为 4KB,逻辑地址为 32 位。求页内偏移量的位数和页号的位数。
  • 答案:因为页面大小为 4KB = 2^{12} B,所以页内偏移量的位数为 12 位。逻辑地址总共 32 位,页号的位数 = 32 - 12 = 20 位。
  • 解析:根据页面大小计算页内偏移量的位数,用逻辑地址的总位数减去页内偏移量的位数就得到页号的位数。

三、段式存储管理

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

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

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

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

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

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

段页式存储分段的段长

  1. 段长的特点
  • 在段页式存储管理中,段的长度是可变的。这是因为段是按照程序的逻辑结构划分的,不同的程序逻辑单元(如主程序段、子程序段、数据段等)有不同的功能和大小要求。
  • 例如,一个大型数据库应用程序的数据段可能包含海量的数据记录,长度可能达到数 GB,而一个简单的计算程序中的某个代码段可能只有几 KB。
  1. 与页长的对比
  • 与段长不同,页的长度是固定的。页是物理内存划分的基本单位,通常是由操作系统预先设定好的,比如在常见的操作系统中,页大小可能是 4KB、8KB 等。
  • 段内分页是为了结合段式和页式存储管理的优点。将可变长的段划分为固定长度的页,可以更方便地进行内存的分配和管理。当段被划分成页后,每一段中的页可以离散地存储在内存的不同物理页面中。
  1. 段长的限制因素
  • 虽然段长可变,但也受到一定的限制。它受到内存空间的大小和系统资源的限制。如果一个段过长,可能会导致内存中难以找到连续的足够空间来存放整个段,即使该段内部的页可以离散存储,但在分配段空间时还是需要考虑一定的连续空间要求。
  • 同时,段长也受到地址结构的限制。在段页式存储管理中,逻辑地址由段号、段内页号和页内偏移量组成。段长的大小决定了段内页号和页内偏移量的取值范围。如果段长过大,可能会超出地址结构所能表示的范围。

以下关于计算机内存管理的描述中,()属于段页式存储管理的描述。

A. 一个程序就是一段,使用基址极限对来进行管理
B. 一个程序分为许多固定大小的页面,使用页表来进行管理
C. 程序按逻辑分为多段,每一段内又进行分页,使用段页表来进行管理
D. 程序按逻辑分为多段,用一组基址极限对来进行管理,基址极限对存放在段表里

答案是 C。段页式存储管理方式即先将用户程序分成若干个段,再把每个段分成若干

  • 题目:段式存储方式中,段的大小是()。A. 固定不变的;B. 动态可变的;C. 根据操作系统规定;D. 与页大小相同。

  • 答案:B。

  • 解析:段式存储中,段是按程序的逻辑结构划分的,如代码段、数据段等,其大小根据程序逻辑不同而不同,是动态可变的。例如一个程序的数据段大小可能随着程序运行中数据的增加而改变。

  • 题目:在段式存储管理系统中,若段表如下:

    段号
    基址
    长度
    0
    219
    600
    1
    2300
    14
    2
    90
    100
    3
    1327
    580
  • 当访问段号为 2,段内偏移量为 80 的逻辑地址时,对应的物理地址是多少?

  • 答案:首先找到段号为 2 的基址是 90,段内偏移量为 80,根据物理地址 = 基址 + 段内偏移量,可得物理地址 = 90 + 80 = 170。

  • 解析:段式存储管理中,段表记录了每个段的基址和长度。对于给定的逻辑地址(段号,段内偏移量),通过段号在段表中查找基址,然后计算物理地址。需要注意的是,在计算之前要检查段内偏移量是否超过了段的长度,本题段内偏移量 80 小于段长度 100,所以计算有效。

  • 题目:段式存储管理的主要优点是()

  • A. 可以实现虚拟存储

  • B. 便于多道程序共享内存

  • C. 段的大小可以动态改变,更符合程序逻辑

  • D. 内存分配最合理

  • 答案:C

  • 解析:段式存储管理是按照程序的逻辑结构来划分段的,比如代码段、数据段等。段的大小不是固定的,会根据程序的实际逻辑动态改变。A 选项,实现虚拟存储不是段式存储管理特有的主要优点;B 选项,多道程序共享内存不是段式存储的主要优势所在;D 选项,说内存分配最合理太绝对,段式存储有它自己的内存分配特点,但不是最合理的分配方式。

  • 题目:段式存储管理系统中,关于段的描述,错误的是()

  • A. 段的划分是按照程序的逻辑功能进行的

  • B. 不同段的存储位置可以是不连续的

  • C. 段的长度在程序运行过程中不能改变

  • D. 段表用于记录各段的基址和长度等信息

  • 答案:C

  • 解析:段式存储管理中,段是按照程序的逻辑功能划分的,A 选项正确;不同段在内存中的存储位置可以不连续,B 选项正确;段的长度是可以动态改变的,不是固定的,C 选项错误;段表用于记录各段的基址、长度等信息,D 选项正确。

  • 题目:某操作系统页式存储管理中,页面大小为 8KB。若某进程的逻辑地址空间为 128KB,该进程的页表长度是多少?

  • 答案:因为页面大小为 8KB = 2^{13} B,逻辑地址空间为 128KB = 2^{17} B。页号占的位数为 17 - 13 = 4 位,所以页表长度为 2^{4} = 16 个页表项。

  • 解析:要先确定页面大小和逻辑地址空间的关系。根据页面大小确定页内偏移量的位数,从而确定页号的位数。页表长度等于页号的取值范围,即 2 的页号位数次方。

  • 题目:在段式存储管理系统中,某程序分为 4 个段,段表如下:

    段号
    基址
    长度
    0
    200
    500
    1
    1000
    300
    2
    1500
    400
    3
    2000
    200
  • 若访问段号为 2,段内偏移量为 300 的逻辑地址,其对应的物理地址是多少?

  • 答案:首先找到段号为 2 的基址是 1500,段内偏移量为 300,物理地址 = 基址 + 段内偏移量,所以物理地址为 1500+300 = 1800。

  • 解析:段式存储管理通过段表来查找物理地址。段表中记录了每个段的基址和长度,当给定逻辑地址(段号和段内偏移量)时,先根据段号在段表中找到基址,然后加上段内偏移量得到物理地址,同时要注意检查段内偏移量是否在段长度范围内。

  • 真题二

  • 题目:以下关于段式存储管理的说法,错误的是()

  • A. 段式存储按程序的逻辑模块划分段

  • B. 段的大小可以动态变化

  • C. 段式存储便于程序和数据的共享

  • D. 各段在内存中的存储位置必须连续

  • 答案:D

  • 解析:段式存储是按程序的逻辑模块划分段,A 选项正确;段的大小可以根据程序的运行情况动态变化,B 选项正确;段式存储便于程序和数据的共享,因为可以以段为单位进行共享,C 选项正确;各段在内存中的存储位置可以不连续,D 选项错误

  • 题目:以下关于段式存储管理的说法,错误的是()
    A. 段的划分是基于程序的逻辑模块
    B. 段的长度可以动态增长
    C. 段式存储管理的地址空间是一维的
    D. 不同段可以存放在不连续的内存区域

  • 答案:C

  • 解析:段式存储管理的地址空间是二维的,由段号和段内偏移量组成。A 选项,段是按照程序的逻辑模块划分的,如代码段、数据段等;B 选项,段的长度可以根据程序运行情况动态增长,例如动态分配内存给某个段;D 选项,不同段可以存放在不连续的内存区域,这是段式存储的特点之一。

四、段页式存储管理

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

  • 优点:利用率高、物理地址连续存储

  • 缺点:使用段页式存储需要实时维护段页表,增加了系统开销,使得执行速度下降。

  • 题目:以下关于计算机内存管理的描述中,属于段式管理的是()。A. 一个程序就是一段,使用基址极限对来进行管理;B. 一个程序分为许多固定大小的页面,使用页表进行管理;C. 程序按逻辑分为多段,每一段内又进行分页,使用段页表来进行管理;D. 程序按逻辑分成多段,用一组基址极限对来进行管理,基址极限对存放在段表里2。

  • 答案:D。

  • 解析:A 选项描述的是早期简单的分区式管理;B 选项是页式存储管理的特点;C 选项是段页式存储管理的方式;D 选项准确描述了段式存储管理,程序按逻辑分为多段,用基址极限对来管理段,基址极限对存于段表。

  • 题目:以下关于计算机内存管理的描述中,属于段式管理的是()。A. 一个程序就是一段,使用基址极限对来进行管理;B. 一个程序分为许多固定大小的页面,使用页表进行管理;C. 程序按逻辑分为多段,每一段内又进行分页,使用段页表来进行管理;D. 程序按逻辑分成多段,用一组基址极限对来进行管理,基址极限对存放在段表里2。

  • 答案:D。

  • 解析:A 选项描述的是早期简单的分区式管理;B 选项是页式存储管理的特点;C 选项是段页式存储管理的方式;D 选项准确描述了段式存储管理,程序按逻辑分为多段,用基址极限对来管理段,基址极限对存于段表。

© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号