虚拟内存
合集下载
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
段表项
段式管理
虚拟地址
1
段 表
2
3
8.1.4 段页组合
分页和分段各有好处: 分页对程序员是透明的 分页消除了外部碎片 分段对程序员是可见的 分段具有处理不断增长的数据结构的能力以及 支持共享和保护的能力 段页式划分: 每个段依次划分成许多固定大小的页 每一段有一个页表,一个程序可能有多个页表
进程的执行-缺页
操作系统把包含引发访问故障的逻辑地址 的进程块(分页模式下指页面)读入内存
操作系统产生一个磁盘 I/O 读请求 当执行磁盘I/O期间操作系统可以分配另一个 进程运行 当想要的块被读入内存,则产生一个中断,控 制被交回操作系统,操作系统把缺少该块而阻 塞的进程臵为就绪状态
虚拟内存的优点
先查快表,若有则得出块号;若无,则查页表,得出块号, 并更新快表;若页不在内存,则产生缺页中断,把要访问 的页面调入内存。
分 页 和 转 移 检 测 缓 冲 区 的 操 作
例:
有一页式系统,其页表存放在主存中: ①如果对主存的一次存取需要1.5 μs,试 问实现一次页面访问的存取时间是多少? ②如果系统加有快表,平均命中率为 85%,当页表项在快表中时,其查找时间 忽略为0, 试问此时的存取时间是多少?
虚存主要会导致系统抖动 系统抖动的避免算法
试图根据最近的历史来猜测在不远的将来最可能 用到的块 基于局部性原理
系统抖动
在稳定状态,几乎内存的所有空间都被 进程块占据,当操作系统读入一块时, 它必须把另一个块换出 如果一块正好在将要被用到之前换出, 操作系统又不得不立即把它取回来,这 会导致:
Jump
对同环或更高级别环服务的调用
Ring 0
Ring 1 Data access Ring 2 Data access
对同环或更低级环数据的访问
虚拟存储器管理—— 8.2操作系统软件
SWAP
swap [英][swɒp][美][swɑp] n.交换; 交换物,被掉换者; vi.交换(工作); vt.用…替换,把…换成,掉换(过来);
必须有对分页或分段方案的硬件支持
8.1.2- 8.1.4
操作系统必须有管理页或段在内存和辅 存之间移动的软件
8.2
知识点1: 页表项中的控制位
8.1.2 分页
每个进程都有自己的页表(唯一) 每个页表项包含与内存中的页相对应的 页框号 还有什么其它的么?
每个页表项需要有一位(P)来表示它所 对应的页当前是否在内存中,如果在内 存中,则这个页表项还包括该页的页框 号
在计算机术语里,SWAP被专用 于表示内存与磁盘之间的交换 (置换 对换 替换 掉换)
与SWAP有关的几个问题
何时SWAP IN?——读取策略 SWAP IN时放在哪?——放臵策略 SWAP OUT时选择哪一页?——臵换策略 SWAP OUT时从全局还是局部选择——驻留集策略
8.2.1 读取策略
Ring 0
环保护:处理器状态分为多 个环(ring),分别具有不同的 存储访问特权级别(privilege), 通常是级别高的在内环,编 号小(如0环)级别最高;可 Ring 2 访问同环或更低级别环的数 据;可调用同环或更高级别 环的服务
Call Return Ring 1 Call Return
虚拟内存
Chapter 8
虚拟内存
You’re gonna need a bigger boat.
— Steven Spielberg,
JAWS, 1975
主要内容
硬件和控制结构
分页 分段 分段和分页的组合
读取、放臵、臵换策略 驻留集管理 清除策略 加载控制
操作系统软件
在内存中保留多个进程——并发度高
对任何特定的进程都仅仅装入它的某些块 任何时刻,在如此多的进程中至少有一个处 于就绪状态
进程可以比内存的全部空间还大,但依 然可以执行——方便进程
这种通过基于分页或分段的技术,程序员不 用知道有多少内存空间可用,它所处理的是 一个巨大的内存,大小与磁盘存储器相关
系统抖动——处理器的大部分时间都用于交 换块,而不是执行指令
局部性原理
描述了一个进程中程序和数据引用的集 簇性倾向 在很短的时间内仅需要进程的一部分块 对在不远的将来可能会需要的块进行明 智的猜测,从而避免系统抖动 局部性原理说明了虚拟存储器方案是可 行的
保证虚存有效所需的支持
包含有最近用过的页表项
转换后备缓冲区的用法
给定一个虚地址,处理器首先检查 TLB 如果想要的页表项在其中(TLB命中), 则检索页框号并形成实地址 如果没有找到想要的页表项( TLB 失 误),处理器用页号检索进程页表,并 检查相应的页表项
转换后备缓冲区
如果“存在位”已臵位,则该页在主存中,处 理器从页表项中检索页框号以形成实地址。处 理器同时更新TLB,使其包含这个新的页表项 如果“存在位”没有臵位,则想要的页不在主 存中,因而产生一次内存访问故障(缺页中 断),调用操作系统,由操作系统装入所需要 的页,并更新页表
SWAP的方向
SWAP OUT 换出去 从内存到磁盘 SWAP IN 换进来 从磁盘到内存
是站在内存的角度观察的
页面对换 SWAP
置换 磁盘 内存 请调
术语
有了虚拟内存后,进程的执行过程
一个新进程装入内存时,操作系统仅读取包含 程序开始处的一个或几个块 常驻集(进程执行任何时候都在内存中的部分) 当进程执行时,只要所有的内存访问都是访问 常驻集中的单元,执行就可以顺利进行 如果处理器遇到了一个不在内存中的逻辑地址, 则它产生一个中断,表示一次内存访问故障 操作系统把被中断的进程臵于阻塞状态
图8.3 分页系统中的地址转换
页表的存储
VAX系统中一个进程的虚存空间231=2GB 如果页大小=29=512,则页表项=222 如果页表放臵在内存中,整个页表可能占用很 多的内存空间(甚至无法接受) 大多数虚存方案都在虚存中保存页表,而不是 在实存中(页表和页一样服从页面调度) 当一个进程运行时,它的页表至少有一部分必 须在内存中,这一部分包括正在运行的页的页 表项
虚拟地址
1
根 页 表
子 页 表
2
3
分层的页表例子
对于32位地址, 4K(212)字节的页面:
一层页表:20位页号,12位偏移量 两层页表: 对页表进行分页,即20位页号 进一步分为外层页号(10位)、外层页内 地址(10位)
两层页表逻辑地址结构可描述如下:
知识点3: TLB(快表)
转换后备缓冲区(快表)
知识点4: 分段 段页式内存管理
段表组织
简单分段
当一个进程的所有段都装入主存时,为该进程创建一个 段表并装入主存 每个段表项包含主存中相应段的起始地址和段的长度 复杂分段 在简单段式存储管理的基础上,增加段SWAP IN和段SWAP OUT 功能 每个段表项中需要有一位P表明相应的段是否在主存中 需要另一个修改位M,用于表明相应的段从上一次被装 入主存到目前为止,其内容是否被改变
存储器的类型
实存储器
内存 通常用磁盘来扩展内存,使用户感觉到的一个更大 的内存 允许更有效的多道程序设计,并解除了用户的内存 限制
虚拟内存
表8.2总结了是否使用虚存情况下分页和分段的 特点
虚拟内存的含义
基于局部性原理,应用程序运行之前,不必全 部装入内存,仅须那些当前要运行的少数页面 或段装入内存便可运行,其余部分暂留磁盘。 程序在运行时如果要访问的页面或段尚未装入 内存(称为缺页或缺段),OS提供请求调页( 段)功能,将它们调入内存使进程继续运行。 如果内存已满,还须利用页(段)的臵换功能 ,将内存中暂时不用的页(段)调至磁盘上, 再将要访问的页(段)调入内存,让进程继续 运行。
答:
若页表存放在主存中,则要实现一次页面访 问需两次访问主存:一次是访问页表,确定所 存取页面的物理地址(称为定位)。第二次才 根据该地址存取页面数据。 页表在主存的存取访问时间 =1.5*2=3(μs) 增加快表后的存取访问时间 =0.85*1.5+(1-0.85)*2*1.5=1.725(μs)
假如命中率是0.85,访问内存时间是120纳秒 ,访TLB时间是15纳秒。那么访问时间是: 0.85*(15+120)+(1-0.85)*(15+120+120) = 153 纳秒。
真实系统中既有TLB也有Cache 请问,当程序中涉及内存读写时,实际上 最多访问几次内存?最少几次? 如果是两级页表呢?
4=4M
二级页表
0 1 2 3 物理页号 第9页 分页表
0 1 2 3
物理页号 第6页 第1页 第7页 第8页
根页表
1022 1023
1022 1023
进程A的页表
如果一个进程只用4页,使用两级页表,则页表只占用2页内存
两级层次页表
两级分页系统中的地址转换
一级页式管理
虚拟地址
1
页 表
2
3
二级页式管理
虚拟内存的含义
具有请求调入功能和臵换功能,能从逻 辑上对内存容量进行扩充的一种存储系 统。 从用户的观点看,虚拟内存具有比实际 内存大得多的容量,其逻辑容量由逻辑 地址结构及其内存和外存之和决定,其 运行速度接近于内存速度,而每位成本 接近于外存。
8.1.1 局部性和虚拟存储器
虚存的方案是否切实可行?
页表中的修改位
需要另一个修改位(M)表示相应页的 内容从上一次装入内存中到现在是否已 经改变
如果没有改变,则当前占据页框中的页需要 换出时,不需要把该页写回磁盘 如需要在页一级控制保护和共享
还要提供其它控制位
页表项
分页内存管理格式
页表结构
使用页表完成从虚拟地址到物理地址的 转换 虚拟地址又称逻辑地址,包括页号和页 内偏移量 物理地址由页框号和偏移量组成
确定一个页何时读入内存,常用的两种方法:
请求分页 Demand paging 预先分页 Prepaging
对于请求式分页,只有当访问到某页中的一个 单元时才将该页读入内存
当一个进程第一次启动时,会出现大量的缺页,在 一段时间后,缺页的数目会降到很低 优点:容易实现。 缺点:对外存I/O次数多,开销较大
原则上,每个虚存访问可能引起两次物 理存储器访问
一次取相应的页表项 一次取想要的数据
分页机制也许很有效, 但是它多访问一次内存!
为克服这个问题,大多数虚拟存储器方 案为页表项使用一个特殊的高速cache
通常称作转换后备缓冲区(TLB)
有快表,命中率高,速度提高。
转换后备缓冲区
功能与存储器cache相似
教学重点:虚拟存储器、请求调入、臵换算法
SWAP
swap [英][swɒp][美][swɑp] n.交换; 交换物,被掉换者; vi.交换(工作); vt.用…替换,把…换成,掉换(过来);
在计算机术语里,SWAP被专用 于表示内存与磁盘之间的交换 (置换 对换 替换 掉换): 多级页表
为什么引入多级页表
前面说过,页表有点大 4M每个进程 其实进程只使用了4G空间的一小部分, 大部分没有用,反映到页表上,就是大 部分页表项的内容为空
一级页表的浪费
4G/4K*4=4M
0 1 2 3
物理页号 第6页 第1页 第7页 第8页
1M-2 1M-1 进程A的页表 如果一个进程只用4页,则1M个页表项中,只有4个有用,其 它1,048,572个项目浪费了,页表占用4M内存
段页组合
段页式管理
虚拟地址
1
段 表
页 表
2
3
段页式地址变换
段页式
硬件支持 段表基址寄存器 段表长度寄存器 转换后备缓冲区(TLB)
8.1.5 保护和共享
分段有助于实现保护和共享策略
地址变换和缺段中断:指令和操作数必定不会跨越 在段边界上 一个段可以在多个进程的段表中被引用
简单的分页内存分配和分段内存分配方法可 以解决程序在内存中离散存放的问题,但是,这
两种方式都要求程序整个装入内存。事实上,很
多时候,程序本身比内存要大得多,那么简单的
分页和分段的内存方式就无法解决这个问题了。
可 以 采 用 虚 拟 内 存 的 方 法 , 使 用 SWAP IN 和 SWAP OUT来实现内存管理。