一.内存的基础知识

存储器管理|操作系统
编译:由编译程序将用户源代码编译成若干目标模块(编译就是把高级语言翻译成机器语言).c->.o
链接:由链接程序将编译后形成的一组目标模块,以及所需要的函数链接在一起,形成一个完整的装入模块.o->.exe
装入(装载):由装入程序将装入模块装入内存运行。(由逻辑地址变成物理地址)

装入的三种方式

方式 逻辑地址到物理地址的转换
绝对装入 编译时将逻辑地址转换成物理地址
静态重定位 装入时将逻辑地址转换成物理地址
动态重定位 运行时将逻辑地址转换为物理地址,需要设置一个重定位寄存器

装入程序属于操作系统

方式 负责
绝对装入 编译器
静态重定位 操作系统
动态重定位 操作系统

绝对装入

存储器管理|操作系统
所以在.o文件(机器语言)中的地址就已经是物理地址。

缺点

  • 绝对装入只适用于单道程序环境
  • 程序中使用的绝对地址可以在编译或者汇编的时候给出,也可以由程序员直接赋予。

静态重定位

存储器管理|操作系统
存储器管理|操作系统

缺点

  • 一个作业装入内存时,必须分配其要求的全部内存空间。如果没有足够的内存,就不能装入作业。
  • 作业一旦装入内存后,在运行期间就不能移动,也不能再申请内存。

动态重定位

存储器管理|操作系统
在运行时,物理地址是重定位寄存器中的值加上逻辑地址

优点

  • 可以将程序分配到不连续的存储区中
  • 在运行前只需要装入部分代码就可以投入运行
  • 在程序运行期间,根据需要,动态申请分配内存
  • 允许程序在内存中发生移动

装入的三种方式

静态链接

存储器管理|操作系统

装入时动态链接

存储器管理|操作系统

运行时动态链接

存储器管理|操作系统

二、内存管理的概念

存储器管理|操作系统

三、覆盖与交换

存储器管理|操作系统

覆盖 交换
对于同一程序或者进程 不同进程(作业)之间

覆盖技术

思想:将程序分成多个段,常用的段常驻内存,不常用的段在需要时调入内存。

固定区 覆盖区
常驻的内存放在固定区,调入后不再调出 需要用到时调入内存

存储器管理|操作系统
存储器管理|操作系统

交换技术

思想:内存空间紧张时,系统将内存中某些进程暂时换出外存,把外存中某些已经具备运行条件的进程换入内存(中级调度:进程在内存与磁盘间的动态调度)
PCB会常驻内存,不会被换出。

四、连续分配管理方式

存储器管理|操作系统
连续分配:指为一个进程分配的必须是一个连续的内存空间

1.单一连续分配

存储器管理|操作系统
存储器管理|操作系统

2.固定分区分配

存储器管理|操作系统

1)分区大小相等

存储器管理|操作系统

2)分区大小不相等

存储器管理|操作系统

3.动态分区分配

存储器管理|操作系统
存储器管理|操作系统
存储器管理|操作系统
存储器管理|操作系统
存储器管理|操作系统
存储器管理|操作系统
存储器管理|操作系统
每次都分配第一个空前区(第一个最大,都无法满足的话,后面的都没有办法满足)

存储器管理|操作系统

4.碎片

内碎片 外碎片
分配给某进程的内存区域中,有些部分没有用上 内存中的某些空闲分区由于太小而难以利用

四、非连续分配管理方式

存储器管理|操作系统

1.基本分页存储管理

存储器管理|操作系统

1)如何实现地址转换

存储器管理|操作系统
存储器管理|操作系统
存储器管理|操作系统
存储器管理|操作系统
存储器管理|操作系统

存储器管理|操作系统
存储器管理|操作系统

2)基本地址的变换

存储器管理|操作系统
存储器管理|操作系统

3)局部性原理

时间局部性 空间局部性
如果执行了程序的某条指令,那么不久之后这条指令很可能会被再次执行;如果某个数据被访问过,不久之后该数据可能再次被访问。(程序中存在大量循环) 一旦程序访问了某个存储单元,在不久之后,其附近的存储单元也很可能被访问。(很多数据在内存中连续存放)

存储器管理|操作系统

4)快表(TLB)

存储器管理|操作系统

存储器管理|操作系统
存储器管理|操作系统

5)两级页表

存储器管理|操作系统
存储器管理|操作系统

1.基本分段存储管理

方便程序员
存储器管理|操作系统

1)段表

页表 段表
建立各个逻辑页面到实际的页框中的关系 记录各个逻辑段到实际物理内存中的存放位置

存储器管理|操作系统
存储器管理|操作系统
存储器管理|操作系统
存储器管理|操作系统
存储器管理|操作系统
存储器管理|操作系统
存储器管理|操作系统

3.段页式

存储器管理|操作系统
存储器管理|操作系统
存储器管理|操作系统
存储器管理|操作系统
存储器管理|操作系统

相关文章:

  • 2021-04-24
  • 2021-11-23
  • 2021-08-30
  • 2022-12-23
  • 2022-12-23
  • 2021-09-03
  • 2021-11-04
  • 2021-05-17
猜你喜欢
  • 2021-12-07
  • 2021-08-08
  • 2021-09-22
  • 2022-12-23
  • 2021-04-02
相关资源
相似解决方案