内存管理的概念 - wolai 笔记

1.进程运行的基本原理

1.1内存管理的功能

  • 内存空间的分配与回收
  • 地址转换
  • 内存空间的扩充
  • 存储保护

1.2从写程序到程序运行

  • 编辑:编辑源代码文件
  • 编译:由源代码文件生产目标模块(高级语言“翻译”为机器语言)
  • 链接:由目标模块生成装入模块,链接后形成完整的逻辑地址
  • 装入:将装入模块装入内存,装入后形成物理地址

1.3三种链接方式

  • 静态链接:装入前链接成一个完整装入模块
  • 装入时动态链接:运行前边装入边链接
  • 运行时动态链接:运行时需要目标模块才装入并链接

1.4三种装入方式

  • 绝对装入:编译时产生绝对地址;绝对装入方式只适用于单道程序环境。(单道程序阶段,无操作系统)
  • 可重定位装入:装入时逻辑地址转换为物理地址;一个作业装入内存时,必须给他分配要求的全部内存空间,若没有足够内存,则不能装入该作业。此外,作业一旦进入内存,整个运行期间就不能再内存中移动,也不能再申请内存空间。(早期多道批处理阶段)
  • 动态运行时装入:运行时将逻辑地址转换为物理地址,需要设置重定位寄存器。可以将程序分配到不连续的存储区;在程序运行之前可以只装入它的部分代码即可投入运行,然后在程序的运行期间,根据需要动态申请分配内存,便于程序段的共享。(现代操作系统)

2. 逻辑地址 VS 物理地址

编译后,每个目标模块都从0号单元开始编址,这称为该目标模块的相对地址(或逻辑地址)。用户程序和程序员只需知道逻辑地址;不同的进程可以由相同的逻辑地址,这些相同的逻辑地址可以映射到主存的不同位置。
物理地址空间是指内存中物理单元的集合,它是地址转换的最终地址,仅运行时执行指令和访问数据,最后都要通过物理地址从主存中存取。
当装入程序将可执行代码转入内存时,必须通过地址转换将逻辑地址转换为物理地址,这个过程被称为地址重定位。

3.内存空间的扩充

  • 覆盖技术
  • 交换技术
  • 虚拟存储技术

4.存储保护

  • 保证各进程在自己的内存空间内运行,不会越界访问
  • 两种方式
    • 设置上、下限寄存器
    • 利用重定位寄存器、界地址寄存器进行判断

Comment