IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 系统运维 -> 2021-07-22虚拟内存(三)页表 -> 正文阅读

[系统运维]2021-07-22虚拟内存(三)页表

一、多级页表
问题导入
页表必须能够覆盖物理内存,只用一个页表。表项较多,非常消耗内存空间。

解决方法
1、更大的页
将分页的数量减少,每个页所包括的物理内存空间增大

2、混合方法:段页式存储管理
将内存按照不同的逻辑分段(比如分成代码段,栈段,数据段)。为每个段提供页表。
在虚拟地址中,有几位用于区别不同段的标号。
进行地址转化的时候,先获取分段的标号。
优点:未分配的空间不需要存储页表,节约了空间。
缺点:
1)大而稀疏的堆加大了内存空间的浪费。(不明白)
2)外部内存碎片增多。
(不理解这个,个人觉得内部碎片增多,因为可能一个程序所使用的各个段的长度不一致,对于每个分页也难以填满)
3)页目录大小不一致,寻找空闲空间较为复杂。

3、多级页表
1、设立一个页目录,页目录是很多物理页帧的集合。虚拟地址中有几位为页目录的索引,再有几位为在该索引所指向的页目录的偏移量,偏移量所指向的表项为物理页帧的索引。
1)支持稀疏的地址空间(不明白这个,支持稀疏的地址空间挺浪费的)
2)对于没有分配的页目录,不为其创建页表,这是其节约空间的一个原因。
3)若TLB未命中,对于二级页表,查找页表会有2次内存访问,加上其他的获得指令会有三次内存访问。几级页表会有几级内存访问。

2、二级页表的查找流程
1)查找页目录号
2)检验相应的权限
3)在页目录内检索表项,二级页表的页号即为在一级页表的偏移量
4)找到PTE为相应的物理页号,
5)检验相应的权限

3、当计算机的地址长度增加后,内存大小也会随着增加,页目录表项也可能会大大增加,这会导致页目录的大小变得非常大,为了减小页目录的大小,会使用多级页表。
用时间来换取空间的节约。

4、反向页表
只有一个页表。
保存物理地址到虚拟地址的映射关系,以及正在使用该物理页的进程。

二、磁盘作为虚拟内存的延伸
页表交换到磁盘:页面调度算法
可以将暂时不用的页面存储到磁盘上,为编写程序带来了巨大的遍历。程序所要使用的空间的大小没有那么多的限制。

1、将磁盘的一部分作为页表的交换空间,将暂时没有用到的页面存放在磁盘上。交换空间的大小决定了可以使用的最大页面数。
要解决的问题:
1)在页表中标记那些页面位于磁盘上,那些页面位于操作系统上。
(我不明白的问题,页表是覆盖了物理内存的表项,为什么还会记录转移到了硬盘的表项)

2、存在位
存在位为1,则该页位于物理内存当中。
访问存在位为0的页表,会触发页错误,此时控制权转交给操作系统。

3、处理页错误
1)操作系统向硬盘发起I/O操作,此时程序进入阻塞状态,进行上下文切换,CPU运行另外一个程序。
当I/O操作完成以后,会将对应的页表标记为存在。
下次访问可能为未命中TLB(还未载入到TLB)中,也可能会命中TLB。

4、检查页错误的时候执行的算法
1)检查一下是否有空闲的页面
2)没有程序返回-1,执行页面交换算法
3)此时程序进入阻塞状态,等待I/O响应
4)I/O响应后,更改有效位
5)重新尝试获取下一条指令

5、何时交换页面?
系统会设置高水位线和低水位线来表示物理内存页表的个数,高水位线的时候仍然保留一些空闲的页表,
低水位线的时候后台的交换守护进程会开始运行,换进页面,将页面的个数提升到高水位线。
会将要写入的页面进行合并或分组,能够减少硬盘的寻道开销(不明白)

  系统运维 最新文章
配置小型公司网络WLAN基本业务(AC通过三层
如何在交付运维过程中建立风险底线意识,提
快速传输大文件,怎么通过网络传大文件给对
从游戏服务端角度分析移动同步(状态同步)
MySQL使用MyCat实现分库分表
如何用DWDM射频光纤技术实现200公里外的站点
国内顺畅下载k8s.gcr.io的镜像
自动化测试appium
ctfshow ssrf
Linux操作系统学习之实用指令(Centos7/8均
上一篇文章      下一篇文章      查看所有文章
加:2021-07-23 11:14:16  更:2021-07-23 11:16:31 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/25 16:44:08-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码