4.3 分页式存储管理 4.3.1 分页式存储管理的基本原理 4.3.2 相联存储器和快表 4.3.3 分页式存储空间的分配和去配 4.3.4 分页式存储空间的页面共享和保护 4.3.5 多级页表 4.3.6 反置页表
4.3.1 分页式存储管理 基本原理(1) •为什么要引进分页技术? •基本原理 (1)页框 (2)页面 (3) 逻辑地址形式 (4) 页表和地址转换
分页式存储管理基本原理(2) •页表是操作系统为每个用户作业建立的,用来记录程序页面和主存对应页框的对照表 •动态重定位技术,让程序的指令执行时动态地进行地址变换,给每个页面设立重定位寄存器,重定位寄存器的集合便称页表(page table)。 •页表是操作系统为每个用户作业建立的,用来记录程序页面和主存对应页框的对照表
分页式存储管理基本原理(3) B A XXX XX 作业表 页表和作业表的一般格式 页表 块号1 块号 第0页 第1页 页号 作业名 … 块号2 块号 第0页 第1页 页号 作业名 B A 页表始址 XXX 页表长度 XX 作业表 页表 页表和作业表的一般格式
页式存储管理的地址转换 和存储保护 页表 块号 地址越界 作业表 页表始址 页表长度 A xxxxxx 50 比较 页号 页内地址 作业名 … A xxxxxx 50 作业表 块号 比较 页号 页内地址 页表 页表控制寄存器 绝对地址 逻辑地址 地址越界
4.3.2 相联存储器和快表 相联存储器 快表的格式 采用相联存储器后地址转换
采用相联存储器的地址转换 假定访问主存时间为100毫微秒,访问相联存储器时间为20毫微秒,相联存储器为32个单元时快表命中率可达90%,按逻辑地址存取的平均时间为: (100+20)×90%+(100+100+20)×(1-90%)=130毫微秒 比两次访问主存的时间100毫微秒×2+20=220毫微秒下降了四成多。
4.3.3分页式存储空间的分配和去配 位示图法 链表方法 分配算法
4.3.4分页存储管理能实现多作业共享程序和数据 数据共享 程序共享 共享信息的保护问题 标志位保护方法 键保护方法
4.3.5 多级页表 多级页表的概念 多级页表的具体做法 逻辑地址结构 逻辑地址到物理地址转换过程
多级页表的概念(1) 页表存储开销太大 CPU具有32位地址时 ,使用232逻辑地址空间的分页系统,规定页面4KB时,每个进程页表的表项有1兆(220)个,若表项占用4个字节,则每个进程需要占用4KB连续内存空间存放页表。
多级页表的概念(2) 多级页表概念:页表和页面一样也进行分页,内存仅存放当前使用的页表,暂时不用部分放在磁盘上,待用到时再行调进。 具体做法:把整个页表进行分页,分成一张张小页表(称为页表页) ,小页表的大小与页框相同,为进行索引查找,应该为这些小页表建一张页目录表,其表项指出小页表所在页框号及相关信息。
多级页表的概念(3) 系统为每个进程建一张页目录表,它的每个表项对应一个页表页,而页表页的每个表项给出了页面和页框的对应关系,页目录表是一级页表,页表页是二级页表。 逻辑地址结构有三部分组成:页目录、页表页和位移。
多级页表地址转换过程 进程一级页表 进程二级页表 物理地址 逻辑地址 页目录表 控制寄存器 B F B offset dir page offset B F 进程一级页表 进程二级页表 物理地址 逻辑地址 页目录表 控制寄存器
解决页表页占用内存空间的问题 进程运行涉及页面的页表页应放在主存,其他页表页使用时再调入, 在页目录表中增加特征位,指示对应的页表页是否已调入内存, 地址转换机构根据逻辑地址中的dir,去查页目录表对应表项,如未调入,应产生一个”缺页表页”中断信号,请求操作系统将页表页调入主存。
SUN SPARC计算机三级分页结构 上下文号 索引1(8) 索引2(6) 索引3(6) 偏移(12) 页表 上下文表 第一级 第二级 索引1(8) 索引2(6) 索引3(6) 偏移(12) 上下文表 第一级 第二级 第三级 4K页面 4095 页表
多级页表结构的本质 多级不连续导致多级索引。 以二级页表为例,用户程序的页面不连续存放,要有页面地址索引,该索引是进程页表;进程页表又是不连续存放的多个页表页,故页表页也要页表页地址索引,该索引就是页目录。 页目录项是页表页的索引,而页表页项是进程程序的页面索引。
4.3.5反置页表(1) 反置页表及其地址转换 反置页表 物理地址 逻辑地址 哈希 函数 哈希表 进程标识 页号 位移 索引 页框号 位移 进程标识 页号 位移 进程标识 页号 特征位 链指针 索引 反置页表 物理地址 逻辑地址 · 哈希 函数 哈希表 反置页表及其地址转换
反置页表(2) IPT是为内存中的每一个物理块建立一个页表并按照块号排序, 该表每个表项包含正在访问该页框的进程标识、页号及特征位,用来完成主存页框到访问进程的页号、即物理地址到逻辑地址的转换。
反置页表(3) 地址转换过程如下: 逻辑地址给出进程标识和页号,用它们去比较IPT,若整个反置页表中未能找到匹配的页表项,说明该页不在主存,产生请页中断,请求操作系统调入;否则,该表项的序号便是页框号,块号加上位移,便形成物理地址。
4.4.1 程序的分段结构 分段存储管理引入的主要原因 模块化程序设计的分段结构 分页存储管理---一维地址结构 分段存储管理---二维地址结构
模块化程序设计的分段结构 子程序段X 数组段A ┇ call [X]∣<E> (调用X段的入口E) call [Y]∣<F> (调用Y段的入口F) load 1,[A]∣<G> (调用数组段A[G]) 主程序段 E:┅┅┅┅┅┅ F:┅┅┅┅┅┅ 子程序段Y G:┅┅┅┅┅┅ 工作区段
4.4.2 分段式存储管理的基本原理(1) •两维逻辑地址 段号:段内地址 •作业表和段表 •段式存储管理的地址转换和存储保护 XXX 始址 … 始址 第0段 第1段 段号 作业名 B A 段表始址 表段长度 XX 作业表 段表 长度 第2段
分段式存储管理的基本原理(2) 段控制寄存器 段表始址 段表长度 段号s 位移d 段长 基址 物理地址 越界? 段表
4.4.3段的共享 多对基址/限长寄存器 段的共享,是通过不同作业段表中的项指向同一个段基址来实现。 几道作业共享的例行程序就可放在一个段中,只要让各道作业的共享部分有相同的基址/限长值。 对共享段的信息必须进行保护。
分段和分页的比较(1) 分段是信息的逻辑单位,由源程序的逻辑结构所决定,用户可见, 段长可根据用户需要来规定,段起始地址可从任何主存地址开始。 分段方式中,源程序(段号,段内位移)经连结装配后地址仍保持二维结构。
分段和分页的比较(2) 分页是信息的物理单位,与源程序的逻辑结构无关,用户不可见, 页长由系统确定,页面只能以页大小的整倍数地址开始。 分页方式中,源程序(页号,页内位移)经连结装配后地址变成了一维结构。