内存是用于存放数据的硬件。程序执行前需要先放到内存中才能被CPU处理。 内存中每个单位就是:存储单元。 每个地址对应一个存储单元 按字节编址 每个存储单元大小为1字节 按字编址 每个存储单元大小为1个字:每个字大小为16个二进制位
物理地址(绝对地址) 逻辑地址(相对地址)
起始地址(基址)+相对地址=物理地址
逻辑地址到物理地址的转换: 1.绝对装入:只适用于单道程序环境 2.(可重定位装入)静态重定位:必须分配其要求的全部内存空间 ,在运行期间就不能再移动 3.(动态运行时装入)动态重定位:需要一个重定位寄存器(存放装入起始地址)+目标逻辑地址 允许程序在内存中发生移动。
链接的三种方式
- 静态链接
- 装入时动态链接
- 运行时动态链接
从写程序到程序运行:编辑源代码文件,编译,链接,装入
操作系统的虚拟性 内存管理:
- 操作系统负责内存空间的分配与回收
- 操作系统需要提供某种技术从逻辑对内存空间进行扩充
- 操作系统需要提供地址转换功能,负责程序的逻辑地址与物理地址的转换
- 操作系统需要提供内存保护功能,保证各进程在各自存储空间内运行,互不干扰。
内存保护:
- 设置一对上、下限寄存器
- 采用重定位寄存器(又称基址寄存器)界地址寄存器(限长寄存器)进行判断
覆盖与交换 覆盖技术:将程序分为多个段(内存中分为一个固定区 和 若干个覆盖区) 必须由程序员声明覆盖结构,操作系统完成自动覆盖,缺点对用户不透明。 覆盖技术只适用于早期的操作系统,现在已经成为历史。
交换技术:换出,换入 暂时换出外存等待的进程状态为挂起状态(挂起态又可以细分就绪挂起、阻塞挂起两种状态)
对换区:采用连续分配的方式 文件区:采用离散分配方式,可以提高存储空间的利用率
PCB会常驻内存,不会被换出外存。 覆盖与交换的区别:覆盖是在同一个程序或进程中的,交换是在不同进程(或作业)之间的。
|