操作系统内存管理详解:装入、链接与地址变换

需积分: 5 0 下载量 187 浏览量 更新于2024-08-03 收藏 22.81MB PDF 举报
操作系统中的内存管理是确保计算机系统高效、稳定运行的关键部分。这一章主要涵盖了将源程序转换成内存中可执行程序的过程,以及多种内存装入和链接方法。此外,还讨论了内存保护机制和不同类型的内存分配策略,以减少碎片并优化资源利用率。 1. 编译与链接: - 编译:编译器将高级语言源代码转化为机器语言,生成一系列的目标模块。 - 链接:目标模块通过链接器组合成一个完整的装入模块,确定逻辑地址。链接有三种方式: - 静态链接:在程序运行前完成所有地址计算,生成绝对地址。 - 装入时动态链接:装入过程中形成完整逻辑地址。 - 运行时动态链接:仅在程序运行时,按需链接目标模块。 2. 装入: - 装入:装入模块进入内存,映射其逻辑地址到物理地址。装入有三种方式: - 绝对装入:预先知道起始地址,地址变换在编译时完成,适用于单道程序。 - 静态(可)重定位装入:装入时分配连续地址,地址变换在装入时完成。 - 动态重定位(运行时)装入:使用重定位寄存器,地址变换在程序执行时,允许程序在内存中移动。 3. 内存保护: - 目的是防止进程越界访问,有两种主要方法: - 设置上下限寄存器:限制进程的访问范围。 - 设置重定位寄存器和界地址寄存器:记录进程起始地址和最大逻辑地址。 4. 内存管理方式: - 连续分配:系统分配连续的内存空间。 - 单一连续分配:适用于单道程序,有内部碎片,无外部碎片。 - 固定分区分配:支持多道程序,有内部碎片,无外部碎片(除非分区过大或过小)。 - 动态分区分配:根据进程大小动态分配,有外部碎片,可通过紧凑技术解决。 - 非连续分配:内存空间分散分配。 - 基本分页存储管理:将进程分割成页,页可以分散在内存块中,通过页表进行地址映射,减少外部碎片。 5. 地址转换: - 逻辑地址到物理地址的转换通常依赖于页表,页表记录了页和块的映射。在进程切换时,操作系统会将页表的起始地址和长度加载到处理机状态寄存器。 6. 数据结构: - 空闲分区表:记录内存中的空闲区域。 - 空闲分区链:链表形式表示内存空闲分区。 内存管理是操作系统的核心功能之一,涉及编译、链接、装入、地址变换、内存保护以及多种内存分配策略,这些机制共同确保了程序的有效执行和内存资源的高效利用。