操作系统内存管理详解:装入、链接与地址变换
需积分: 5 187 浏览量
更新于2024-08-03
收藏 22.81MB PDF 举报
操作系统中的内存管理是确保计算机系统高效、稳定运行的关键部分。这一章主要涵盖了将源程序转换成内存中可执行程序的过程,以及多种内存装入和链接方法。此外,还讨论了内存保护机制和不同类型的内存分配策略,以减少碎片并优化资源利用率。
1. 编译与链接:
- 编译:编译器将高级语言源代码转化为机器语言,生成一系列的目标模块。
- 链接:目标模块通过链接器组合成一个完整的装入模块,确定逻辑地址。链接有三种方式:
- 静态链接:在程序运行前完成所有地址计算,生成绝对地址。
- 装入时动态链接:装入过程中形成完整逻辑地址。
- 运行时动态链接:仅在程序运行时,按需链接目标模块。
2. 装入:
- 装入:装入模块进入内存,映射其逻辑地址到物理地址。装入有三种方式:
- 绝对装入:预先知道起始地址,地址变换在编译时完成,适用于单道程序。
- 静态(可)重定位装入:装入时分配连续地址,地址变换在装入时完成。
- 动态重定位(运行时)装入:使用重定位寄存器,地址变换在程序执行时,允许程序在内存中移动。
3. 内存保护:
- 目的是防止进程越界访问,有两种主要方法:
- 设置上下限寄存器:限制进程的访问范围。
- 设置重定位寄存器和界地址寄存器:记录进程起始地址和最大逻辑地址。
4. 内存管理方式:
- 连续分配:系统分配连续的内存空间。
- 单一连续分配:适用于单道程序,有内部碎片,无外部碎片。
- 固定分区分配:支持多道程序,有内部碎片,无外部碎片(除非分区过大或过小)。
- 动态分区分配:根据进程大小动态分配,有外部碎片,可通过紧凑技术解决。
- 非连续分配:内存空间分散分配。
- 基本分页存储管理:将进程分割成页,页可以分散在内存块中,通过页表进行地址映射,减少外部碎片。
5. 地址转换:
- 逻辑地址到物理地址的转换通常依赖于页表,页表记录了页和块的映射。在进程切换时,操作系统会将页表的起始地址和长度加载到处理机状态寄存器。
6. 数据结构:
- 空闲分区表:记录内存中的空闲区域。
- 空闲分区链:链表形式表示内存空闲分区。
内存管理是操作系统的核心功能之一,涉及编译、链接、装入、地址变换、内存保护以及多种内存分配策略,这些机制共同确保了程序的有效执行和内存资源的高效利用。
1757 浏览量
2021-10-08 上传
2023-03-30 上传
2023-09-05 上传
2021-10-08 上传
2023-02-20 上传
2023-03-30 上传
2023-03-30 上传
2021-12-04 上传
橙C美式加糖加冰
- 粉丝: 361
- 资源: 29
最新资源
- 中国项目管理师培训讲义——费用管理
- SWF:一些用于处理SWF文件的python脚本
- 作品集:专为展示我的所有作品而创建的项目
- neural_network_projects:这是一些基本的神经网络
- STSensNet_Android:“ ST BLE StarNet” Android应用程序源代码-Android application source code
- SLIC-ImageSegmentation:基于SLIC图像分割算法实现一个比PS魔棒工具还方便的抠图工具
- yet-another-istanbul-mocha-no-coverage
- 四卡功能
- android 一个杀进程 程序分享,包含源代码-网络攻防文档类资源
- babel_pug_project:通过babel,pug,node,express进行Web服务器教育.....
- 爱普生7710 7720l免芯片固件刷rom附安装说明
- GenericInstsBenchmark
- AK_Lab2
- MADSourceCodes:“使用Android移动应用程序开发”课程源代码-Android application source code
- themeweaver:使用设计标记在浏览器中创建kick-ass IDE主题!
- oo-way-getonboard中的战舰:GitHub Classroom创建的oo-way-getonboard中的战舰