频道栏目
首页 > 系统 > Linux > 正文

存储器(内存)管理基本概念

2017-03-08 09:12:40         来源:思考思考人生。  
收藏   我要投稿

存储器(内存)管理基本概念,操作系统对内存的划分和动态分配,就是内存管理的概念。
1.内存管理的功能:

内存空间的分配与回收,包括内存的管理与共享;
地址转换,把逻辑地址转换成相应的物理地址;
内存空间的扩充,利用虚拟存储技术或自动覆盖技术,从逻辑上扩充内存;
存储保护,保证各道作业在各自的存储空间内运行,互不干扰;
提高内存利用率,1)使多道程序共享内存(互不干扰,各占一段),2)使多道程序共享某一段内存(代码/数据的共用)

2.存储分配
所谓存储分配,主要讲述的是多道作业之间划分内存空间的问题,由于内存资源的有限,存储分配要解决如何将多个作业放入内存,是全部还是部分,以及放入的时间,地点,而这些问题的解决对用户必须是透明的,常见的有三种方式:
(1)直接指定方式
- 编程或编译之后直接使用实际的存储地址,目前常用于工业实时控制;
- 直接控制方式有:早期的独占;多道作业的分区和覆盖三种。其中覆盖是指把一个作业分为几个部分,每次调用一段运行于同一内存区域。
- 显然,为了直接指定存储地址,必须知道内存的容量和编址规则,对用户的要求比较高,尤其是对稍大点儿软件。目前几乎无人使用。
(2)静态分配
- 编程/编译后的地址空间从零开始,仅当装入内存时才由装配程序确定其运行空间,即存储分配在装入前完成。
- 在运行时,不再进行存储分配,也不能在内存中移动。
(3)动态分配
- 存储分配在装入时完成;
- 在运行时可进行再分配,如增加,减少,移动等;
以上三种方式,其每次分配内存必须是连续的。

3.重定位
1.逻辑地址空间与物理地址空间
存储空间是”实“的,地址空间是”虚“的。

用高级语言编址的程序,其使用的是名字空间。eg:int x=0; 经编译链接后的目标程序,其所使用的是一所限定的地址编号范围,称为地址空间,每个地址编号称为逻辑地址。通常该地址编号的下限为零,然后按字节/字递增,所以这些地址是都相对于起始地址的,因此也称为相对地址。(编译后,每个目标模块都是从0号单元开始编译,称为该目标模块的相对地址(或逻辑地址)。当链接程序将各个模块链接成一个完整的可执行目标程序时,链接程序顺序依次按各个模块的相对地址构成统一的从0号单元开始编译的逻辑地址空间。) 内存中物理的记录单元集合称为存储空间,其单元编号称为物理地址/绝对地址。(物理地址空间是指内存中物理单元的集合,它是地址转换的最终地址,进程在运行时执行指令和访问数据最后都要通过物理地址来存取主存。当装入程序将可执行代码装入主存时,必须通过地址转换将逻辑地址转换成物理地址,这个过程成为地址重定位。)

2.重定位

把作业地址空间中的逻辑地址变换成存储空间的物理地址的变换过程称为地址重定位,或地址映射。 某作业装入物理空间后,取地址【100】(逻辑地址)的值要变换成现在的【1100】(物理地址),而不能再取现在的【100】。

3.重定位的类型

静态重定位:通过重定位装配程序在作业装入时就完成的地址变换过程。
优点:由于地址变换在作业执行前一次集中完成,无需硬件机构参与,简单。
缺点:
A>作业运行期不能移动,内存利用率不高。
B>用户必须事先知道所需内存是否超过存储空间,若超过,则需用户考虑覆盖。
C>作业期间不能共享内存中的同一程序/数据域。

动态重定位:作业执行时,当访问指令和数据时,由硬件地址变换机制实现地址变换的方式。算法是:实际地址=有效地址+重定位寄存器值【RR】
优点:
1)由于指令/数据的实际地址在运行时确定,所以在运行时再进行存储分配是允许的。——–可进行动态存储分配。
2)作业间可共享内存中的某一公共段
3)可向用户提供比物理存储空间大很多的地址空间
缺点:
1)需硬件机构参与
2)事先分配策略的软件比较复杂

4.存储管理的方式
常见的有分区式(静态/动态),分页式(纯/请求式),分段式(纯/请求式),段页式几种。
基本过程包括:
设计数据结构记录内存情况->确定分配算法->实现内存的分配与回收->逻辑地址与物理地址的转换->内存的共享与保护

上一篇:完全卸载 ubuntu 中已安装程序的 命令
下一篇:linux 根目录扩容
相关文章
图文推荐

关于我们 | 联系我们 | 广告服务 | 投资合作 | 版权申明 | 在线帮助 | 网站地图 | 作品发布 | Vip技术培训 | 举报中心

版权所有: 红黑联盟--致力于做实用的IT技术学习网站