软考高级系统架构设计师备考(九):操作系统—存储管理

在操作系统中,存储管理是非常重要的核心功能之一。操作系统需要对内存进行合理分配和管理,使多个进程能够高效、安全地共享系统资源。

在软考高级系统架构设计师考试中,存储管理是计算机系统基础的重要考点,经常出现在:

  • 综合知识选择题

  • 地址转换计算题

  • 存储结构分析题

常见考察内容包括:

  • 页式存储管理

  • 段式存储管理

  • 段页式存储管理

  • 地址转换过程

  • 快表(TLB)

  • 页面大小与地址结构计算

本文将系统讲解这些知识点,并结合典型例题进行说明。


一、存储管理的基本概念

在计算机系统中,内存是CPU直接访问的存储空间

如果多个程序同时运行,就需要操作系统负责:

  • 内存分配

  • 地址转换

  • 内存保护

  • 内存共享

程序在编译后产生的地址称为:

逻辑地址(Logical Address)

而内存中的真实地址称为:

物理地址(Physical Address)

操作系统需要通过地址映射机制实现:

复制代码
逻辑地址 → 物理地址

为了解决内存利用率低和碎片问题,操作系统提出了多种存储管理方式。

常见的存储管理方式包括:

  • 页式存储

  • 段式存储

  • 段页式存储


二、页式存储管理

1 页式存储的基本思想

**页式存储管理(Paging)**将:

  • 逻辑地址空间划分为固定大小的页(Page)

  • 物理内存划分为相同大小的页框(Frame)

例如:

复制代码
页大小 = 4KB

那么:

  • 程序被划分为多个页

  • 内存被划分为多个页框

每一页可以存放在任意页框中。

因此:

复制代码
页大小 = 页框大小

这样可以避免外部碎片问题


2 页表

为了记录页与页框之间的映射关系,操作系统使用:

页表(Page Table)

页表中记录:

复制代码
页号 → 页框号

例如:

页号 页框号
0 5
1 2
2 8

3 地址结构

在页式存储中,逻辑地址通常由两部分组成:

复制代码
页号 + 页内地址

例如:

假设:

复制代码
页面大小 = 4KB
逻辑地址长度 = 16位

则:

复制代码
页内地址 = 12位
页号 = 4位

因为:

复制代码
2^12 = 4096 = 4KB

4 地址转换过程

地址转换步骤:

  1. 从逻辑地址中取出页号

  2. 根据页号查页表

  3. 找到对应页框号

  4. 页框号 + 页内地址 → 物理地址


三、页式存储计算例题

例题

某系统:

复制代码
页面大小 = 1KB
逻辑地址 = 5000
页表如下:
页号 页框号
0 3
1 6
2 4
3 7
4 2

求物理地址。


解题步骤

第一步:计算页号

复制代码
页号 = 5000 / 1024

页号 = 4

第二步:计算页内地址

复制代码
页内地址 = 5000 % 1024

页内地址 = 904

第三步:查页表

复制代码
页号4 → 页框2

第四步:计算物理地址

复制代码
物理地址 = 页框号 × 页面大小 + 页内地址

= 2 × 1024 + 904
= 2952

因此:

复制代码
物理地址 = 2952

四、快表(TLB)

在页式存储中,每次访问内存都需要:

  1. 查页表

  2. 再访问内存

因此会产生:

复制代码
两次内存访问

为了提高效率,操作系统引入:

快表(TLB:Translation Lookaside Buffer)

快表是一种高速缓存,用于存储最近使用的页表项。

访问流程变为:

复制代码
逻辑地址 → 查TLB
       ↓
    命中
       ↓
  直接得到页框号

如果TLB未命中:

复制代码
查页表 → 更新TLB

快表访问时间例题

例题

已知:

复制代码
TLB命中率 = 90%
TLB访问时间 = 10ns
内存访问时间 = 100ns

求有效访问时间。


计算过程

TLB命中:

复制代码
10 + 100 = 110ns

TLB未命中:

复制代码
10 + 100 + 100 = 210ns

有效访问时间:

复制代码
EAT = 0.9 × 110 + 0.1 × 210

EAT = 99 + 21

EAT = 120ns

五、段式存储管理

1 段式存储思想

**段式存储管理(Segmentation)**按照程序的逻辑结构进行划分。

例如程序可以划分为:

  • 代码段

  • 数据段

  • 栈段

  • 堆段

因此:

复制代码
每个段大小可以不同

这就是段式存储与页式存储的主要区别。


2 地址结构

段式存储逻辑地址结构:

复制代码
段号 + 段内地址

系统使用:

段表(Segment Table)

段表记录:

复制代码
段号 → 段基址 + 段长度

3 地址转换过程

步骤:

  1. 根据段号查段表

  2. 得到段基址

  3. 判断段内地址是否越界

  4. 物理地址 = 段基址 + 段内地址


六、段式存储例题

例题

某系统段表如下:

段号 段基址 段长度
0 200 500
1 800 300
2 1200 400

逻辑地址:

复制代码
(1, 120)

求物理地址。


解题过程

段号:

复制代码
1

查段表:

复制代码
段基址 = 800

判断越界:

复制代码
120 < 300

未越界。

计算物理地址:

复制代码
物理地址 = 800 + 120

= 920

七、段页式存储管理

1 段页式思想

段页式存储是:

复制代码
段式 + 页式

结合两者优点:

  • 段式:符合程序逻辑结构

  • 页式:解决内存碎片问题

结构:

复制代码
程序 → 段
段 → 页
页 → 页框

2 地址结构

逻辑地址:

复制代码
段号 + 页号 + 页内地址

地址转换步骤:

  1. 查段表得到页表地址

  2. 根据页号查页表

  3. 得到页框号

  4. 计算物理地址


八、段页式地址转换例题

例题

某系统:

复制代码
页大小 = 1KB
逻辑地址:(段2,页1,偏移100)

段表:

段号 页表地址
0 PT0
1 PT1
2 PT2

页表 PT2:

页号 页框号
0 3
1 5
2 8

解题过程

第一步:查段表

复制代码
段2 → 页表 PT2

第二步:查页表

复制代码
页1 → 页框5

第三步:计算物理地址

复制代码
物理地址 = 5 × 1024 + 100

= 5120 + 100

= 5220

九、页式与段式的区别

对比 页式存储 段式存储
划分方式 固定大小 不固定
划分依据 系统 程序逻辑
地址结构 页号+页内地址 段号+段内地址
碎片 内部碎片 外部碎片

十、软考高频考点总结

在软考高级系统架构设计师考试中,存储管理重点包括:

页式存储:

  • 页号计算

  • 页内地址计算

  • 页表查找

快表:

  • TLB命中率计算

  • 有效访问时间

段式存储:

  • 段表

  • 段基址计算

段页式:

  • 地址转换流程

十一、总结

存储管理是操作系统的重要组成部分,也是软考高级系统架构设计师考试中的高频考点。

本文重点讲解了:

  • 页式存储管理

  • 段式存储管理

  • 段页式存储管理

  • 快表(TLB)

  • 地址转换计算

相关推荐
池佳齐6 小时前
软考高级系统架构设计师备考(一):完整知识体系与核心考点总结
软考高级架构