内存 可存放数据。程序执行之前 必须先放到内存中才能被CPU处理 ——缓和CPU与硬盘之间的速度矛盾。
内存中就是一系列的存储单元,如果计算机 “按字节存储” ,则每个存储单元的大小为一个字节,即 1B , 8个二进制位 。如果计算机是 “按字编址” ,则每个存储单元的大小根据每个 字长 来确定。
补充:
210 = 1K (千) 220 = 1M (兆,百万) 230 = 1G(十亿,千兆)
连续分配管理方法 :为一个用户程序分配一个 连续 的内存空间。
以上的 动态分区分配 中,当内存中有多个足够大的空闲块时,操作系统必须确定分配哪个内存块给进程使用,这就是 动态分区的分配策略 ,有以下这些算法。
非连续分配管理方式 根据分区大小是否固定,分为 分页存储管理方式 和 分段存储管理方式 。
分页存储一些词的表示,如下图
注意 :页号 是不需要占存储空间的,就像顺序表的索引页不需要占用存储空间, 块号 是需要占用存储空间的,块号 只表示 页框号 ,并不是 内存块的起始地址 , 块号 的大小需要根据 有多少个页框 来确定。如下举个例子
物理内存大小4GB,页面大小为4KB,求每个页表项至少应该为多少个字节?
页框大小=页面大小=4KB= 2^12 B
4GB内存会被分为 232 / 212 = 220 个页框
页框号范围 0 ~ 220 - 1 ,至少要 20bit 来表示,所以每个页表项至少要 3B 来存储 (3*8=24bit)
基本分页存储管理 中,从 逻辑地址 转换到 内存中的物理地址 ,地址变换是基于 页表 实现的,这就是 地址变换机构 。
以上 地址变换 过程中,若 页表 全部放在内存中,则存取一个数据或一条指令 至少需要访问两次内存 : 第一次访问页表 ,确定存取的数据或指令的物理地址; 第二次是根据该地址存取数据或指令 。显然这种方法比通常执行指令的速度慢了一半。
地址变换机构中增设一个具有并行查找能力的高速缓冲存储器——快表,由称相联存储器(TLB)。
当一个进程的页表需要耗费巨大的连续内存来存储时,这不切合实际。所以,为了压缩页表,我们可得到 二级分页 。
建立多级页表的目的在于建立索引,以便于不用浪费主存空间去存储无用的页表项,也不用盲目的顺序式的查找页表项
传统存储管理方式 的两个特征: 1. 一次性 :作业必须一次性全部装入内存后,才能开始运行。(这可能导致两种情况:作业太大而不能全部装入内存时使作业无法运行;当大量作业要求运行时由于内存不足以容纳所有作业,只能使少数作业先运行,导致 多道程序度的下降 ) 2. 驻留性 :作业数据在整个运行期间都会常驻内存。
高速缓存技术 :使用频繁的数据放到更高速的存储器中(快表、页高速缓存及虚拟内存技术从广义上讲,都属于高速缓存技术)(依赖原理为 局部性原理 )
请求分页存储管理 与 基本分页存储管理 的主要区别:在程序执行的过程中,当所 访问的信息不在内存时,由操作系统负责将所有信息从外存调入内存 ,然后继续执行程序;若空间不够,由操作系统负责 将内存中暂时用不到的信息换出到外存 。
更具体的地址变换流程如下图
请求分页存储管理 与 基本分页存储管理 其中的一点区别就在于内存空间不够时,操作系统需要将暂时用不到的信息换出到外存,选择调出页面的算法就称为 页面置换算法 。(算法的英文缩写要记住)
驻留集 :指请求分页存储管理中 给一个进程分配的物理页框的集合 就是这个进程的驻留集
外存中分为 对换区 和 文件区 ,对换区采用连续存储方式,速度更快 ,文件区采用离散存储方式,速度更慢 。因为两个区的不同,所以有 从何处调入页面 的问题。
抖动(颠簸) 现象:页面频繁的换入换出,主要原因时因为 分配给进程的物理块不够
工作集 是指再某段时间间隔内,进程要访问的页面集合。(驻留集大小要大于工作集大小)