Linux中的分页机制和虚拟机中的EPT机制
来源:互联网 发布:网易足球数据库 编辑:程序博客网 时间:2024/06/06 19:11
分页单元被用来将线性地址转化成物理地址。
32位线性地址被分割为以下三块:
页目录(10位) | 页表(10位) | 偏移量(12位)
页目录的物理地址被存放在控制寄存器cr3中。线性地址中的页目录域决定了页目录中指向正确的页表的那一项的位置,相应的页表域则决定了指向包含物理地址的页框的那一项在页表中的位置。偏移量则决定了在页框中的相对位置。
四级页表:
懒得翻译了。。。直接看图就好
线性地址中的第一部分称为“全局页目录”,PGD用于索引进程中的一个数组,这个数组也就是所谓的全局页目录,而这个数组中的项则指向下一级数组的起始地址,这些数组则被成为"上层页目录“及"中间页目录"。
通过PGD中的项找到PUD再找到PMD之后,则用其中的项来索引下一级数组,这一级数组被称为页表或页目录。
下一个部分称为PTE,用作页表的索引。虚拟内存页和页框之间的映射就此完成,因为页表的数组项都是指向页框的。
最后一个部分被称为偏移量,他指向了页内部的一个字节,所以归根结底,每个线性地址都指向内存中的一个字节。
相应的,linux页表相关的变量有以下几个:pte_t, pmd_t, pud_t, pgd_t分别对应Page Table, Page middle directory, Page upper directory, Page global directory.
下图是虚拟地址转换的过程,虚拟地址先转换成线性地址然后再转换成物理地址:
EPT地址转换分析:
0 0
- Linux中的分页机制和虚拟机中的EPT机制
- X86中的分页机制
- Mysql和Oracle中的分页机制
- 内存寻址(二):linux中的分段与分页机制
- linux中的epoll机制
- Linux中的同步机制
- Linux 中的 Workqueue 机制
- Linux中的per_cpu机制
- Linux中的锁机制
- linux中的tasklet机制
- Linux中的同步机制
- linux中的epoll机制
- linux中的信号量机制
- linux中的epoll机制
- Linux中的同步机制
- linux中的mdev机制
- linux中的IDR机制
- linux中的分段机制
- Altium Designer 加LOGO方法
- ios学习笔记——UITextField常用属性及设置
- 【设置】PotPlayer播放完毕后停止
- Leetcode61: Implement Queue using Stacks
- Windows下PyInstaller的使用教程
- Linux中的分页机制和虚拟机中的EPT机制
- 核心Javascript教程(二)
- JAVA 常用API String 对象 学习笔记
- python K-近邻分类器
- Linux xargs命令的使用
- 9.17 first day 注意事项
- C/C++结构体和类中的内存对齐
- SpringMVC Controller 介绍
- Nginx+tomcat搭建高性能web服务器集群