当前位置: 首页 > news >正文

【复习408】操作系统存储器管理浅析

文章目录

  • 1. 存储器管理概述与核心功能
  • 2. 程序装入与链接技术
  • 3. 连续分配管理方式
    • 3.1 单一连续分配与固定分区
    • 3.2 动态分区分配
  • 4. 分页存储管理
    • 4.1 核心机制
    • 4.2 快表(TLB)与多级页表
    • 4.3 页面置换算法
  • 5. 分段存储管理
  • 6. 段页式存储管理
  • 7. 虚拟存储器
    • 7.1 核心特征
    • 7.2 请求分页管理
  • 8. 多级页表的实现细节
    • 8.1 结构与实现
    • 8.2 地址分解过程

1. 存储器管理概述与核心功能

存储器管理是操作系统的核心功能之一,其主要任务包括内存分配与回收、地址变换、内存共享与保护以及内存扩充。现代操作系统采用层次化的存储结构,通过多级存储体系(寄存器、高速缓存、主存、磁盘)实现性能与成本的平衡。
关键原理: 逻辑地址与物理地址的转换是贯穿整个章节的核心线索。操作系统通过地址变换机构(页表、段表、快表等)实现从进程逻辑地址空间到物理内存空间的映射。这一机制不仅支持了内存保护(防止进程间非法访问),也为虚拟内存技术奠定了基础。

2. 程序装入与链接技术

程序的装入与链接是程序执行前的必要准备阶段。重点三种装入方式:绝对装入(编译时绑定)可重定位装入(静态绑定)动态运行时装入(运行时绑定)。其中动态装入配合页式或段式管理,是实现虚拟内存的前提。

链接技术 包括静态链接、装入时动态链接和运行时动态链接。链接过程将编译后的目标模块组合成可执行文件,解决符号引用问题。

3. 连续分配管理方式

连续分配是最早出现的内存管理策略。

3.1 单一连续分配与固定分区

单一连续分配仅支持单道程序,内存利用率极低。固定分区分配将内存划分为固定大小的分区,支持多道程序但存在严重的内部碎片问题。

3.2 动态分区分配

可变分区(动态分区)根据进程实际需求分配内存,消除了内部碎片但引入了外部碎片。为缓解外部碎片,系统可采用**紧凑(Compaction)**技术,通过移动进程占用区合并空闲空间。

核心——分配算法:

  • 首次适应算法(First Fit)‍ :从低地址开始查找第一个满足大小的空闲分区,实现简单但会在低地址留下大量小碎片。
  • 循环首次适应(Next Fit)‍ :从上次查找结束位置继续查找,避免总是从头扫描开销。
  • 最佳适应(Best Fit)‍ :选择能满足需求的最小空闲分区,保留大分区但产生大量难以利用的微小碎片。
  • 最坏适应(Worst Fit)‍ :选择最大空闲分区,减少碎片数量但难以满足大进程需求。

4. 分页存储管理

分页存储管理是现代操作系统的基石,也是408考试的重中之重。

4.1 核心机制

分页系统将逻辑地址空间划分为固定大小的页面(Page),将物理内存划分为同样大小的页框(Frame)。通过页表实现页号到页框号的映射,实现离散分配,彻底消除外部碎片。

地址转换过程: 逻辑地址由页号P和页内偏移量W组成。MMU通过页表基址寄存器找到页表,用P索引页表项获取页框号,再结合W形成物理地址。

4.2 快表(TLB)与多级页表

为解决页表占用内存过大的问题,系统引入**快表(TLB)**缓存近期访问的页表项,将地址转换时间从两次内存访问降至一次。

当逻辑地址空间极大时(如64位系统),页表本身也极为庞大。多级页表通过层次化结构,仅将当前使用的页表保留在内存,极大降低了内存开销。例如,二级页表将逻辑地址分解为页目录索引、页表索引和偏移量三部分。

地址转换示例: 假设32位系统采用二级页表,页大小4KB(偏移量12位),页目录和页表各10位。逻辑地址0x12345678分解为:页目录索引0x48、页表索引0xD6、偏移0x678。MMU先查页目录得页表物理地址,再查页表得页框号,最后合成物理地址。

4.3 页面置换算法

当内存满时,系统需选择页面换出磁盘,这就是页面置换算法,是虚拟内存的核心。

必考算法包括:

  • OPT(最佳置换)‍ :选择未来最久不被访问的页面,理论最优但不可实现,常用于评价其他算法。
  • FIFO(先进先出)‍ :淘汰最早进入的页面,实现简单但可能产生Belady异常(增加页框数反而提高缺页率)。
  • LRU(最近最久未使用)‍ :淘汰最久未访问的页面,性能接近OPT,但实现复杂,需硬件支持(如计数器或栈)。
  • Clock(时钟算法)‍ :LRU的近似实现,利用引用位和修改位,将页面组织成环形队列,扫描选择淘汰页,开销较低。
  • 改进型Clock:考虑修改位,优先淘汰未修改页面,减少I/O开销。

算法复杂度分析:

  • 实现复杂度:OPT > LRU > Clock > FIFO。OPT需预知未来,仅用于理论;LRU需维护访问时间戳,硬件开销大;Clock只需维护引用位,实际系统常用。
  • 时间复杂度:FIFO和LRU在纯软件实现下为O(N*M)(N为页框数,M为访问序列长度),但硬件支持下的LRU可达O(1)
    。Clock算法每次扫描平均O(1),最坏O(N)。
  • 空间复杂度:FIFO需维护队列O(N);LRU需栈或计数器O(N);Clock仅需引用位数组O(N)。

5. 分段存储管理

分段管理从逻辑意义出发,将程序划分为若干(如主程序段、数据段),每段有独立的名字和长度。逻辑地址由段号和段内偏移组成,通过段表实现地址映射。

优点: 符合程序模块化设计,便于共享与保护,无内部碎片。
缺点: 存在外部碎片,内存利用率低于分页。

地址转换: 逻辑地址(S, W),用S检索段表得段基址,与W相加得物理地址。需检查W是否越界。

6. 段页式存储管理

段页式管理结合分段与分页优点:先按逻辑分段,每段内再分页。系统维护段表和页表两级结构,逻辑地址由段号、段内页号、页内偏移组成。

地址转换: 先用段号查段表得页表起始地址,再用页号查页表得页框号,最后合成物理地址。需两次查表,系统开销大,但兼具逻辑清晰与内存利用率高的优势。

7. 虚拟存储器

虚拟存储器是408考试中的核心概念,基于局部性原理(时间局部性与空间局部性),通过请求分页/分段技术,将部分程序装入内存即可运行,其余部分驻留磁盘。

7.1 核心特征

  • 多次性:作业分多次调入内存。
  • 对换性:允许作业在运行中换进换出。
  • 虚拟性:逻辑上扩充内存容量。

7.2 请求分页管理

请求分页在分页基础上增加请求调页和页面置换功能。页表项扩展了状态位(标识页面是否在内存)、访问字段(记录访问频率)、修改位(标识是否被改写)和外存地址

缺页中断处理流程: 当访问页面不在内存时,触发缺页中断。OS保留CPU现场,从外存调入页面,更新页表,可能触发页面置换,最后恢复中断继续执行。整个过程涉及页表更新与TLB刷新,以确保地址转换一致性。

8. 多级页表的实现细节

8.1 结构与实现

多级页表通过树状结构管理页表项,顶级为页目录(Page Directory),次级为页表。32位系统常用二级页表,64位系统常用四级(PML4、PDPT、PD、PT)。

页表项结构: 每个页表项(PTE)存储物理页框号、有效位、权限位等。以x86-64为例,PTE包括:

  • Present位:页面是否在内存。
  • R/W位:读写权限。
  • U/S位:用户/内核访问权限。
  • Accessed位:是否被访问过。
  • Dirty位:是否被修改。
  • NX位:禁止执行(防溢出攻击)。
  • PFN:物理页框号。

8.2 地址分解过程

以32位二级页表为例,4KB页大小对应12位偏移。虚拟地址分解为:

  • 页目录索引:10位(高10位)
  • 页表索引:10位(中10位)
  • 页内偏移:12位(低12位)
    MMU从CR3寄存器获取页目录基址,用页目录索引得页表地址,再用页表索引得页框号,最后加偏移得物理地址。

示例代码逻辑(伪代码):

// 二级页表地址转换
phy_addr translate(addr virt) {pd_index = (virt >> 22) & 0x3FF;      // 页目录索引pt_index = (virt >> 12) & 0x3FF;      // 页表索引offset   = virt & 0xFFF;              // 页内偏移pd_entry = CR3[pd_index];             // 查页目录pt_base  = pd_entry.page_table_base;  // 得页表基址pt_entry = pt_base[pt_index];         // 查页表frame    = pt_entry.frame_number;     // 得页框号return (frame << 12) | offset;        // 合成物理地址
}
http://www.dtcms.com/a/619301.html

相关文章:

  • seata的JacksonUndoLogParser回滚SerialArray类型的序列化和反序列化解析
  • 在线做初中题网站网站设计昆明
  • Python中lambda函数与def函数的区别及应用场景
  • 找工作的一些感悟——前端小菜的成长
  • 注册好了域名怎么开始做网站网站建设 网站推广
  • 晋江企业网站建设在深圳注册一个公司需要多少钱
  • “开源AI智能名片链动2+1模式S2B2C商城小程序”在县级市场的应用与挑战分析
  • 大气网站案例网站制作公司备案
  • 16.触摸屏驱动
  • Q7: 在区块链上创建随机数有哪些挑战?
  • 宿城网站建设大连市网站制作电话
  • 做a视频网站有哪些系统优化的目的和意义
  • 网站开发外快如何优化网站打开速度
  • 城市配送联盟平台技术架构深度解析:赋能小 B 端全场景高效配送
  • 公司网站定制自己做网页怎么赚钱
  • 济南网站建设公司按需定制wordpress赞 踩插件
  • 建外贸网站的wordpress源码书籍
  • 织梦网站源码找一品资源企业网站建设费怎么账务处理
  • 如何在国外建设网站百度站长平台验证网站
  • 考研408--组成原理--day3--数字电路(补)加减乘除
  • 深圳企业网站建设推广服务wordpress extra script
  • Python的自述
  • OceanBase 常见异情况汇总
  • 江门网站建设方案开发wordpress云建站教程
  • 14.3 行业应用案例:金融、医疗、教育领域的定制化实践
  • 开发网站的基本原则做移动网站优化快
  • 人工智能技术- 语音语言- 03 ChatGPT 对话、写诗、写小说
  • 怎么制作网站上传太原建筑公司网站
  • 精密万向节能承受的最大扭矩是多少?
  • 游戏:ar从入门到落地