1.进程运行的基本原理
1.1内存管理的功能
- 内存空间的分配与回收
- 地址转换
- 内存空间的扩充
- 存储保护
1.2从写程序到程序运行
- 编辑:编辑源代码文件
- 编译:由源代码文件生产目标模块(高级语言“翻译”为机器语言)
- 链接:由目标模块生成装入模块,链接后形成完整的逻辑地址
- 装入:将装入模块装入内存,装入后形成物理地址
1.3三种链接方式
- 静态链接:装入前链接成一个完整装入模块
- 装入时动态链接:运行前边装入边链接
- 运行时动态链接:运行时需要目标模块才装入并链接
1.4三种装入方式
- 绝对装入:编译时产生绝对地址;绝对装入方式只适用于单道程序环境。(单道程序阶段,无操作系统)
- 可重定位装入:装入时逻辑地址转换为物理地址;一个作业装入内存时,必须给他分配要求的全部内存空间,若没有足够内存,则不能装入该作业。此外,作业一旦进入内存,整个运行期间就不能再内存中移动,也不能再申请内存空间。(早期多道批处理阶段)
- 动态运行时装入:运行时将逻辑地址转换为物理地址,需要设置重定位寄存器。可以将程序分配到不连续的存储区;在程序运行之前可以只装入它的部分代码即可投入运行,然后在程序的运行期间,根据需要动态申请分配内存,便于程序段的共享。(现代操作系统)
2. 逻辑地址 VS 物理地址
编译后,每个目标模块都从0号单元开始编址,这称为该目标模块的相对地址(或逻辑地址)。用户程序和程序员只需知道逻辑地址;不同的进程可以由相同的逻辑地址,这些相同的逻辑地址可以映射到主存的不同位置。
物理地址空间是指内存中物理单元的集合,它是地址转换的最终地址,仅运行时执行指令和访问数据,最后都要通过物理地址从主存中存取。
当装入程序将可执行代码转入内存时,必须通过地址转换将逻辑地址转换为物理地址,这个过程被称为地址重定位。
3.内存空间的扩充
- 覆盖技术
- 交换技术
- 虚拟存储技术
4.存储保护
- 保证各进程在自己的内存空间内运行,不会越界访问
- 两种方式
- 设置上、下限寄存器
- 利用重定位寄存器、界地址寄存器进行判断