操作系统学习笔记(一)——存储管理(1)
来源:互联网 发布:数据分析咨询 编辑:程序博客网 时间:2024/05/22 02:20
当装入程序将可执行代码装入内存时,程序的逻辑地址与程序在内存的物理地址一般是不相同的,必须通过地址转换将逻辑地址转换成内存地址,这个过程称为地址重定位,
下图说明了重源程序的名地址到内存中的可执行代码的地址变换过程
一、地址定位方式:
1、固定定位方式
由程序员在编写程序时或由编译连接程序对源程序进行编译连接时,直接指定程序在执行时访问的实际存储器地址的方式称为固定定位方式。
2、静态重定位方式
就是源程序经编译和连接后生成目标代码中的地址是以0为起始地址的相对地址,
当需要执行时,由装入程序运行重定位程序模块,根据作业在本次分配到的内存
起始地址吗,将可执行目标代码装到指定内存地址中,并修改所有有关地址部分
的值,修改的方式是对每一个逻辑地址的值加上内存区首地址(或称基地址)值,
3、动态重定位方式
将程序在装入内存时,不必修改程序的逻辑地址值,程序执行期间在访问内存之前,
在实时地将逻辑地址变换成物理地址,动态重定位要靠硬件地址变换机构实现,
二、基本存储管理方式
1、单一连续区存储管理
只能用于单用户系统,典型的如MS-DOS
2、固定分区存储管理
支持多道程序设计和实现多用户系统,就要将内存划分成多个区,以同时驻留多个运行程序,
典型的系统如IBM的OS/MFT
三、可变分区存储管理
可变分区存储管理法并不预先将内存划分成分区,而是等到作业运行需要内存时就向系统申请,从空闲的内存区中“挖”一块出来,其大小等于作业所需内存大小,这样就不会产生“内零头”。
1、空闲存储区表
管理空闲内存区的数据结构可采用链接法和连续线性表格法,
当有一个作业需调入主存运行,如何为其选择一个可用的存储分区,下面介绍4种分配策略,
(1)、首次适应法
(a)、分配算法
(b)、回收算法
(2)、循环首次适应法
(3)、最佳适应算法
(4)、最差适应法
2、多重分区
可以提高外部碎片的利用率,也便于多个作业共享分区的代码和数据,
应当采用动态重定位技术,
四、内存扩充技术
就是借助大容量的辅存在逻辑上实现内存的扩充,以解决内存容量不足的问题,
1、覆盖
就是将一个大程序按程序的逻辑结构划分成若干个程序(或数据)段,并将不会同时执行,从而就不必同时装入内存的程序段分在一组内,
该组称为覆盖段,这个覆盖段可分配到同一个称为覆盖区的存储区域
2、交换技术
覆盖技术用于一个作业的内部,交换技术用于不同的作业,Windows操作系统中,就是利用交换技术运行多个任务的。
3、虚拟存储器
- 操作系统学习笔记(一)——存储管理(1)
- 操作系统——存储管理(1)
- 存储管理——现代操作系统学习笔记
- 操作系统学习笔记:存储管理
- 操作系统——存储管理(2)
- 操作系统——存储管理(3)
- 操作系统(七)——存储管理
- 操作系统(八)—虚拟存储管理
- 操作系统学习笔记(14) 存储管理-储存管理的任务
- 操作系统学习笔记(一)
- 操作系统学习笔记(一)
- 操作系统—存储管理
- 操作系统原理学习笔记--存储管理
- 操作系统学习笔记(15) 存储管理-内存的划分
- 操作系统学习笔记(16) 存储管理-程序装入内存技术
- 操作系统学习--存储管理
- 操作系统(6)—— 早期存储管理
- 操作系统概论(7)——请求分页存储管理
- Hibernate使用count(*)取得表中记录总数(跨Hibernate3.x版本问题)(转)
- android MediaPlayer 架构介绍
- Python安装MySQLDb模块的种种问题及解决
- LINQ之对象加载
- 还是那个bug,又调了一天,靠!
- 操作系统学习笔记(一)——存储管理(1)
- MS104-SH4 与Toppers/JSP(µItron)嵌入式系统构筑
- 采用Java的反射机制编写的克隆类以及方法的代码
- 对象引用前加const报错:不能将“this”指针从“const a”转换为“a
- RDLC 报表系列(一) 创建一个报表
- 实践-hadoop
- DOI系统助力数字版权保护
- LINQ之运算符转换
- MFC如何高效地绘图