操作系统(王道笔记第三章内存)

内存的基础知识

本节大纲:什么是内存(略)、进程运行的基本原理
(1)什么是内存:略
(2)进程运行的基本原理
指令的工作原理(略)、逻辑地址和物理地址(略)、从写程序到程序运行
①从写程序到程序运行
操作系统(王道笔记第三章内存)
编译生成目标模块即.obj文件,链接生成装入模块即可执行文件.exe
②链接
链接的作用:把多个编译好的起始逻辑地址和终止逻辑地址不同的目标模块链接成一个逻辑起始地址为0的装入模块
链接的三种方式:
1.静态链接:在程序运行之前,先将各目标模块及它们所需的库函数连接成一个完整的可执行文件(装入模块),之后不再拆开。
2.装入时动态链接:将各目标模块装入内存时边装入边链接的链接方式。
3.运行时动态链接:在程序执行需要该目标模块时,才对它进行链接。其优点是便于修改和更新,便于实现对目标模块的共享。
③装入
装入的作用:把程序中的逻辑地址转为物理地址进而让计算机得以识别
三种装入方式:(其中只有绝对装入是编译程序实现,其他是操作系统实现)
1.绝对装入(只适用于单道程序环境):在编译时,如果知道程序将放到内存中的哪个位置编译程序将产生绝对地址的目标代码。装入程序按照装入模块中的地址,将程序和数据装入内存
2.静态重定位(早期多道批处理):又称可重定位装入。编译、链接后的装入模块的地址都是从0开始的,指令中使用的地址、数据存放的地址都是相对于起始地址而言的逻辑地址。可根据内存的当前情况,将装入模块装入到内存的适当位置装入时对地址进行==“重定位”,将逻辑地址变换为物理地址(地址变换是在装入时一次完成的)。
静态重定位的特点
是在一个作业装入内存时,必须分配其要求的全部内存空间,如果没有足够的内存,就不能装入该作业。作业一旦进入内存后,在运行期间就不能再移动,也不能再申请内存空间。
3.动态重定位(现代操作系统):又称动态运行时装入。编译、链接后的装入模块的地址都是从0开始的。装入程序把装入模块装入内存后,并不会立即把逻辑地址转换为物理地址,而是把地址转换推迟到程序真正要执行时才进行。因此装入内存后所有的地址依然是逻辑地址。这种方式需要一个==重定位寄存器(基址寄存器)==的支持。

内存管理的概念

本节大纲:内存管理管什么、存储保护
(1)内存管理管哪几个方面
操作系统(王道笔记第三章内存)
操作系统(王道笔记第三章内存)
(2)内存保护
为什么要进行内存保护:控制各个进程只能访问自己的内存空间
操作系统(王道笔记第三章内存)
内存保护的两个方法:
①上下限寄存器在CPU中设置一对上、下限寄存器, 存放进程的上、下限地址。进程的指令要访问某个地址时CPU检查是否越界
②重定位界地址寄存器采用重定位寄存器(又称基址寄存器)和界地址寄存器(又称限长寄存器)进行越界检查重定位寄存器中存放的是进程的起始物理地址界地址寄存器中存放的是进程的最大逻辑地址(即物理地址长度)

覆盖与交换