《操作系统》5虚拟存储课件.ppt
文本预览下载声明
5.1 请求页式虚拟存储管理基础 5.2 请求页式的替换策略 5.2.1 替换策略综述 5.2.2 请求页式静态替换策略 5.2.3 关于静态替换策略的进一步讨论 5.2.4 请求页式动态替换策略 5.3 请求段式虚拟存储管理 5.4 Linux的存储管理 5.4.1 Linux存储管理的硬件基础 5.4.2 Linux多级页表的地址转换 5.4.3 内存空间的管理 5.4.4 管理虚拟存储空间的数据结构 2. 三级页表的地址转换 Linux提供三级 页表式的分页式结 构,第1 级为页表 索引,第 2 级为页 表中间索引,第3 级是页表。三级页表式的分页式 结构,其地址变换将更为复杂,速度会降低。 . 页表或页帧基址 31 12 11 P R/W U/S 2 1 0 读/写位 存在位 用户/系统位 D 写标志位 6 pmd p d 页目录 页目录基址 页中间目录 虚拟地址: 内存 pgd 页目录 页中间目录 页表 页内位移 页表 1页帧 页目录和页表的表项结构 3. 对于Linux,页目录和页表表项的结构基本相同,如图所示。 . (a) 页表或页帧基址 (b) 存在位(P) (c) 读/写位(R/W) (d) 用户/系统位(U/S) (e) 写标志位(D) 返回目录 在Linux存储管理中,帧是进行存储分配和释放的单位。系统设置一张存储分块表mem_map,它的每一个表项是mem_map_t型结构,对应着一帧,记录该帧的有关信息。 . 为记录内存各帧的使用情况,Linux设置了位示图bitmap,如图(a)所示。某位为1,表示对应帧空闲;为0,表示对应帧正在使用。 1. 管理内存空间的数据结构 . . 但Linux不直接使用bitmap来管理存储的分配和释放,而是通过“空闲帧队列表”:free_area。在空闲帧队列表里,Linux按不同方式,形成最多11个空闲帧队列,如图(b)所示。 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 57 45 37 11 34 26 7 62 54 24 5 1 free_area表 空闲区队列表 1 2 3 (a) bitmap (b) 空闲帧队列表free_area的第1项,维持的是由单个空闲帧形成的双向链表;空闲帧队列表free_area的第2项,维持的是两个连续空闲帧 形成的双向链表;空闲帧队列表free_area的第3项,维 持的是四个连续空闲页帧形成的双向链表。 . * * 第5章 虚拟存储管理 本章目录 5.1 请求页式虚拟存储管理基础 5.1.1 虚拟存储器 5.1.2 请求页式虚拟存储管理 5.2 请求页式的替换策略 5.2.1 替换策略综述 5.2.2 请求页式静态替换策略 5.2.3 关于静态替换策略的进一步讨论 5.2.4 请求页式动态替换策略 5.3 请求段式虚拟存储管理 5.3.1 请求段式虚拟存储管理 5.3.2 段的动态链接 5.4 Linux的存储管理 5.4.1 Linux存储管理的硬件基础 5.4.2 Linux多级页表的地址转换 5.4.3 内存空间的管理 5.4.4 管理虚拟存储空间的数据结构 除分支和调用指令,程序的执行都是顺序的。分支和调用指令在所有程序指令中只占很少一部分。大多数情况下,要读取的下一条指令肯定都是紧跟在已取到的上一条指令之后的。 5.1.1 虚拟存储器 程序执行的“局部性”原理 1. 程序执行的“局部性”原理,是指程序在执行的某一时刻,并不是均匀地访问它的整个地址空间,而往往是集中于某一小部分区域。 . . 程序执行的局部性,具体表现在几个方面 : (1) (2) 程序中很少会出现很长的、一个过程调用接着又一个过程调用的调用序列。在较短的时间内,指令的引用大多局限在很少几个过程中,不会一会儿是这个过程,一会儿是那个过程。 (3) 大多数循环结构都由较少的几条指令重复若干次组成,循环过程中的计算,也多被限制在程序中的一个很小的相邻部分完成。 (4) 许多程序中的计算都涉及到对数组、文件记录之类数据的处理,而对这
显示全部