[OS]关于各级页表最多一个页面(包括顶级页表)

2023-12-12 13:52

本文主要是介绍[OS]关于各级页表最多一个页面(包括顶级页表),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

 关于各级页表大小不超过一个页面的原因:

①方便一次内存访问就能完成读取,降低开销。

②方便高级页表划分,便于实现散列功能。

多级页表位数(大小)的分配:

上图为例。

10 10 8 的分配 相较于 8 10 10:

碎片会增多:低级页表所占内存块内部碎片更多。

提高效率:低级页表占内存多的情况下,通过缓存不访问高级页表的几率更大 。

综上,只允许顶级页表有内部碎片即可。

顶级页表最多只能有一个页面大小:

(来自知乎用户placeholder的回答)

作者:placeholder
链接:https://www.zhihu.com/question/422716423/answer/1795166483
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
 

1,为什么要对单级页表进行拆分?----> 在不涉及快表,系统按字节寻址,并且采用分页式存储管理的情况下,一个进程对应的单级页表有可能过大,甚至大到占据了内存中的很多很多连续的页框,不仅会给内存分配造成压力,而且与离散分配的存储管理的思想向违背(降低了内存利用率),所以需要拆分页表,人们就让一组页表项刚好占据一个页框,就可以离散存储这些分组,然后建立上层页表来管理底层页表之间的逻辑顺序。

2,顶级页表这有一张这种树状结构是怎么来的?----> 这样的拆分方式就像一棵树一样,每往上建立更高一层的页表,最高层就只有一张页表,也就是只有一个根节点,即专业术语中所说的顶级页目录表;当每往上建立一层页表后,该最高层的页表(即根页表)如果大于一个内存页框的容量,就又会往上进行拆分,建立更高层页目录表。

3,如果顶级页表设计成多张会怎样?----> 如果顶级页表设计成了两张,甚至多张,由于每张页表的页号都是从 0 开始计数,所以需要区分查询的是哪一张顶级页表,这就对系统对从逻辑地址到物理地址的转换额外增加了压力和复杂性,如果不区分查询的是哪一张顶级页表,很显然页号会出现重复,这就是BUG了。

------------

综上所述,顶级页表,甚至每一级的页表,都被设计成了一个内存框可以存下的样子,逻辑上是一个树状结构,符合离散存储的思想,具有内存利用率高的优点;但注意随着拆分层次变多,访存次数也会变多,需要权衡系统整体性能。

这篇关于[OS]关于各级页表最多一个页面(包括顶级页表)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/484875

相关文章

Android WebView无法加载H5页面的常见问题和解决方法

《AndroidWebView无法加载H5页面的常见问题和解决方法》AndroidWebView是一种视图组件,使得Android应用能够显示网页内容,它基于Chromium,具备现代浏览器的许多功... 目录1. WebView 简介2. 常见问题3. 网络权限设置4. 启用 JavaScript5. D

Flutter监听当前页面可见与隐藏状态的代码详解

《Flutter监听当前页面可见与隐藏状态的代码详解》文章介绍了如何在Flutter中使用路由观察者来监听应用进入前台或后台状态以及页面的显示和隐藏,并通过代码示例讲解的非常详细,需要的朋友可以参考下... flutter 可以监听 app 进入前台还是后台状态,也可以监听当http://www.cppcn

MySQL表锁、页面锁和行锁的作用及其优缺点对比分析

《MySQL表锁、页面锁和行锁的作用及其优缺点对比分析》MySQL中的表锁、页面锁和行锁各有特点,适用于不同的场景,表锁锁定整个表,适用于批量操作和MyISAM存储引擎,页面锁锁定数据页,适用于旧版本... 目录1. 表锁(Table Lock)2. 页面锁(Page Lock)3. 行锁(Row Lock

禁止HTML页面滚动的操作方法

《禁止HTML页面滚动的操作方法》:本文主要介绍了三种禁止HTML页面滚动的方法:通过CSS的overflow属性、使用JavaScript的滚动事件监听器以及使用CSS的position:fixed属性,每种方法都有其适用场景和优缺点,详细内容请阅读本文,希望能对你有所帮助... 在前端开发中,禁止htm

龙蜥操作系统Anolis OS-23.x安装配置图解教程(保姆级)

《龙蜥操作系统AnolisOS-23.x安装配置图解教程(保姆级)》:本文主要介绍了安装和配置AnolisOS23.2系统,包括分区、软件选择、设置root密码、网络配置、主机名设置和禁用SELinux的步骤,详细内容请阅读本文,希望能对你有所帮助... ‌AnolisOS‌是由阿里云推出的开源操作系统,旨

python中os.stat().st_size、os.path.getsize()获取文件大小

《python中os.stat().st_size、os.path.getsize()获取文件大小》本文介绍了使用os.stat()和os.path.getsize()函数获取文件大小,文中通过示例代... 目录一、os.stat().st_size二、os.path.getsize()三、函数封装一、os

使用JavaScript将PDF页面中的标注扁平化的操作指南

《使用JavaScript将PDF页面中的标注扁平化的操作指南》扁平化(flatten)操作可以将标注作为矢量图形包含在PDF页面的内容中,使其不可编辑,DynamsoftDocumentViewer... 目录使用Dynamsoft Document Viewer打开一个PDF文件并启用标注添加功能扁平化

SpringBoot如何访问jsp页面

《SpringBoot如何访问jsp页面》本文介绍了如何在SpringBoot项目中进行Web开发,包括创建项目、配置文件、添加依赖、控制层修改、测试效果以及在IDEA中进行配置的详细步骤... 目录SpringBoot如何访问JSP页python面简介实现步骤1. 首先创建的项目一定要是web项目2. 在

如何在页面调用utility bar并传递参数至lwc组件

1.在app的utility item中添加lwc组件: 2.调用utility bar api的方式有两种: 方法一,通过lwc调用: import {LightningElement,api ,wire } from 'lwc';import { publish, MessageContext } from 'lightning/messageService';import Ca

Weex入门教程之3,使用 Vue 开发 Weex 页面

环境安装 在这里简略地介绍下,详细看官方教程 Node.js 环境 Node.js官网 通常,安装了 Node.js 环境,npm 包管理工具也随之安装了。因此,直接使用 npm 来安装 weex-toolkit。 npm 是一个 JavaScript 包管理工具,它可以让开发者轻松共享和重用代码。Weex 很多依赖来自社区,同样,Weex 也将很多工具发布到社区方便开发者使用。