王道计算机考研 操作系统 —— 课程链接
3.1.内存管理概念
3.1_1_内存的基础知识
内存的概念与作用
平常,各种软件都存放在外存
(或附存)里,如电脑中的硬盘,但硬盘是一种慢速设备,CPU是一种超快速设备,所以如果CPU要处理的程序数据直接从外存中存取,CPU会花费大量的时间等待外存的存取操作的完成。所以显然,CPU直接与慢速的外存进行数据交互是会有速度的矛盾的,因此,我们引入了内存
这种部件,它是一种更快速的存放数据的硬件,来缓和外存与CPU的速度矛盾。
进程运行的基本原理
逻辑地址、物理地址
从逻辑地址到物理地址的转换,应该是“装入”这一步需要解决的问题
如果内存地址也是从0开始,那么逻辑地址和物理地址就是相同的
装入模块中的指令地址指的是“相对地址”,即相对于开始地址而言的地址(又称逻辑地址)
装入模块装入内存时,需要对指令中的地址进行处理,将它转换为物理地址
装入的三种方式
绝对装入
使用绝对装入,需要保证在编译时就能知道装入模块最终会被放在内存中的什么位置
绝对装入只适用于单道程序环境,因为在单道程序环境中,内存中同一时刻下只会有一个程序正在运行,每个程序要从什么位置开始存放可以在一开始就预定好。
绝对装入是由编译器
完成的(单道程序阶段还没有产生操作系统)
静态重定位(可重定位装入)
在装入时对地址进行“重定位”,可根据内存的当前情况,将装入模块装入到内存的适当位置。
静态重定位的特点是在一个作业装入内存时,必须分配其要求的全部内存空间,如果没有足够的内存,就不能装入该作业。
作业一旦进入内存后,在运行期间就不能再移动,也不能再申请内存空间。
动态重定位(动态运行时装入)
现代操作系统一般都使用动态重定位
装入程序把装入模块装入内存后,并不会立即把逻辑地址转换为物理地址,而是把地址转换推迟到程序真正要执行时(指令运行时)才进行。
如果要移动程序再内存中的位置,只需要改变重定位寄存器的值,不会影响之后的访存操作
优点:
- 可将程序分配到不连续的存储区中(分页存储、分段存储);
- 在程序运行前只需装入它的部分代码即可投入运行,然后在程序运行期间,根据需要动态申请分配内存;
- 便于程序段的共享,可以向用户提供一个比存储空间大得多的地址空间
链接的三种方式
静态链接
在链接的过程中,需要将各个目标模块独立的逻辑地址合并为一个完整的逻辑地址
动态链接
运行时动态链接
3.1_2_内存管理的概念
内存保护,是指保证各进程在各自存储空间内运行,互不干扰
3.1.7 基本地址变换机构
3.1.11 段页式管理
分段必须连续地存放,因此可能会产生许多难以利用的内存碎片
段式管理的地址结构是二维的,分页管理的地址结构是一维的
各个段的长度不相等,因此需要检查页号是否越界