Linux:页表中PGD、PUD、PMD等概念介绍
2023-09-27 14:29:05 时间
1、PGD: Page Global Directory
Linux系统中每个进程对应用户空间的pgd是不一样的,但是linux内核 的pgd是一样的。当创建一个新的进程时,都要为新进程创建一个新的页面目录PGD,并从内核的页面目录swapper_pg_dir中复制内核区间页面目录项至新建进程页面目录PGD的相应位置,具体过程如下:do_fork() --> copy_mm() --> mm_init() --> pgd_alloc() --> set_pgd_fast() --> get_pgd_slow() --> memcpy(&PGD + USER_PTRS_PER_PGD, swapper_pg_dir +USER_PTRS_PER_PGD, (PTRS_PER_PGD - USER_PTRS_PER_PGD) * sizeof(pgd_t))
这样一来,每个进程的页面目录就分成了两部分,第一部分为“用户空间”,用来映射其整个进程空间(0x0000 0000-0xBFFF FFFF)即3G字节的虚拟地址;第二部分为“系统空间”,用来映射(0xC000 0000-0xFFFF FFFF)1G字节的虚拟地址。可以看出Linux系统中每个进程的页面目录的第二部分是相同的,所以从进程的角度来看,每个进程有4G字节的虚拟空间,较低的3G字节是自己的用户空间,最高的1G字节则为与所有进程以及内核共享的系统空间。每个进程有它自己的PGD( Page Global Directory),它是一个物理页,并包含一个pgd_t数组。
关键字:
- PTE: 页表项(page table entry)
- PGD(Page Global Directory)
- PUD(Page Upper Directory)
- PMD(Page Middle Directory)
- PT(Page Table)
PGD中包含若干PUD的地址,PUD中包含若干PMD的地址,PMD中又包含若干PT的地址。每一个页表项指向一个页框,页框就是真正的物理内存页。
相关文章
- Linux以下基于TCP多线程聊天室(server)
- linux环境中,如何解压后缀是bz2的压缩包?tar.bz2格式的压缩包,如何进行解压?
- Linux系统编程——进程间通信:共享内存
- Linux下解压命令
- linux crontab(定时任务)
- Linux系统中curl命令用法详解
- Linux之查看目录命令ls、tree、pwd、clear
- Linux Command echo
- Linux内核调试手段
- 一篇文章带你了解——Linux中 文件权限 和 粘滞位的 概念 / 作用 及 实现方法
- Linux常用基础命令:目录和文件的管理命令
- 端口扫描器——ZenmapKail Linux渗透测
- 深入理解Linux内核(一)——Linux操作系统基础概念
- Linux学习之路三:重要概念之Linux系统层次结构
- Linux常用命令
- Linux sudo命令的概念与使用
- Linux常用基本命令:三剑客命令之-awk格式化动作
- Linux基础优化和安全重点小结
- Linux系统概念及命令学习
- 【嵌入式Linux驱动开发】十、总结按键读取方法,初探异步通知概念
- 【正点原子FPGA连载】第二章 安装Ubuntu操作系统 摘自【正点原子】DFZU2EG_4EV MPSoC之嵌入式Linux开发指南
- Linux中遇到的问题
- How I came to find Linux
- 每天一个linux命令(49):ss命令
- Windows和Linux网络安全应急响应基础技能——如何进行系统排查以及检测恶意用户登录和网络流量日志分析
- Linux部署SpringBoot项目
- linux下的程序调试方法汇总
- Linux系统中的管道命令操作符“|”