操作系统复习之内存管理的基本概念

本文详细解读内存管理的核心功能,包括内存空间的分配与回收、内存扩充的虚拟存储与自动覆盖、逻辑地址与物理地址转换、存储保护机制,以及覆盖与交换技术在多道程序中的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

1. 内存管理的功能

2. 程序的编译、链接和装入

3. 逻辑地址与物理地址

4. 内存保护

5. 覆盖与交换


内存管理就是操作系统对内存的划分和动态分配

1. 内存管理的功能

内存空间的分配与回收。由操作系统完成主存储器空间的分配和管理,os通过相应结构来记录内存空间的使用情况,完成内存空间的分配,并及时回收系统或用户释放的内存空间。

内存空间的扩充。利用虚拟存储技术或自动覆盖技术,从逻辑上扩充内存。

地址转换。在多道程序环境下,程序中的逻辑地址与内存中的物理地址不可能一致, 因此需要把逻辑地址转换成相应的物理地址。

存储保护。保证各道作业在各自的存储空间内运行,互不干扰。

2. 程序的编译、链接和装入

程序要运行需要将程序和数据装入内存然后创建进程,将源程序变为一个可在内存中执行的程序需要经过编译、链接和装入:

编译。由编译程序将用户源代码编译成若干目标模块.

链接。由链接程序将目标模块以及它们所需的库函数链接在一起形成一个完整的装入模块

链接的三种方式:

  静态链接:在程序运行之前,先将各目标模块及它们所需们需的库函数链接成一个完整的可执行程序,以后不再拆开。

  装入时动态链接:将用户源程序编译后所得到的一组目标模块,在装入内存时,采用边装入边链接的方式。

  运行时动态链接:对某些目标模块的链接,是在程序执行中需要该目标模块时才进行的。其优点是便于修改和更新,便于实现对目标模块的共享。

装入。由装入程序将装入模块装入内存运行.

装入的三种方式:

  绝对装入:完全按照目标程序中所给定的地址装人内存,即目标程序中使用的是绝对地址。

该绝对地址要么由程序员设计程序时给定,要么程序员编程时采用符号地址,然后由编译程序或汇编程序转换成绝对地址。

  可重定位装入:根由于用户的目标程序地址往往都是从0开始的,而程序中的其他地址也往往用相对地址形式表示,因此只能采用可重定位装入方式。即装人模块中的所有逻辑地址与实际的物理地址是不相同的要使程序能正确执行,就必须进行两种地址之间的转换。

  动态运行装入:装入程序把装入模块装入内存后,并不立即把装入模块中的相对地址转化为绝对地址,而是把这种地址转换推迟到程序真正要执行时才进行

3. 逻辑地址与物理地址

①逻辑地址

源代码经过编译后,目标程序中所用的地址就是逻辑地址.每个目标模块都从0号单元开始编址,其对应的地址范围即逻辑地址空间;不同的进程可以拥有相同的逻辑地址,可以映射到主存的不同位置

②物理地址

 内存中物理单元的集合,地址转换的最终地址,进程执行指令和访问数据最后都要通过物理地址从主存中存取

4. 内存保护

①上、下限寄存器方法

 在CPU中设置一对上下限寄存器,存放用户作业在主存中的下限和上限即结束和开始地址.每当CPU访问一个地址时,和两个寄存器的值比较,判断是否越界

②重定位(基址)寄存器和界地址(限长)寄存器

采用基址和限长寄存器分别存放作业的起始地址及作业的地址空间长度,在作业运行过程中,将逻辑地址与限长寄存器进行比较,若未发生越界,则加上基址寄存器的值后形成物理地址,然后交送给内存单元.

5. 覆盖与交换

 覆盖与交换技术是多道程序环境下用来扩充内存的两种方法

①覆盖

思想:由于程序运行时并非任何时候都要访问程序及数据的各个部分(尤其是大程序),因此可把用户空间分成一个固定区和若干覆盖区.将经常活跃的部分放在生固定区,其余部分按调用关系分段。首先将那些即将要访间的段放入覆盖区,其他段放在外存中,在需要调用前,系统再将其调入覆盖区,替换覆盖区中原有的段。

覆盖技术打破了必须将一个进程的全部信息装入主存后才能运行的限制,但当同时运行程序的代码量大于主存时仍不能运行,此外,内存中能够更新的地方只有覆盖区的段,不在覆盖区中的段会常驻内存。覆盖结构必须由程序员声明,操作系统完成自动覆盖。

缺点:对用户不透明,增加了用户编程负担。覆盖技术只用于早期的操作系统中,现在已成为历史。

②交换

思想: 换出—把处于等待状态或在CPU调度原则下被剥夺运行权利的程序从内存移到辅存,把内存空间腾出来; 换入—把准备好竞争CPU运行的程序从辅存移到内存(即进程在内存与磁盘间动态调度,中级调度采用的就是交换技术)

例如,有一个CPU采用时间片轮转调度算法的多道程序环境。时间片到,内存管理器将刚刚执行过的进程换出,将另一进程换入刚刚释放的内存空间。同时,CPU调度器可以将时间片分配给其他已在内存中的进程。每个进程用完时间片都与另进程交换。在理想情况下,内存管理器的交换过程速度足够快,总有进程在内存中可以执行。

③交换与覆盖的区别:

交换技术主要在不同进程(或作业)之间进行,而覆盖则用于同一个程序或进程中。由于覆盖技术要求给出程序段之间的覆盖结构,使得其对用户和程序员不透明,所以对于主存无法存放户程序的矛盾。现代操作系统是通过虚拟内存技术来解决的,覆盖技术则已成为历史;而交换术在现代操作系统中仍具有较强的生命力

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值