Linux 页表初探

如题所述

在虚拟内存中,页表是一个映射表概念,用于从进程理解的线性地址映射到存储器上的物理地址。当进程在 CPU 上运行时,CPU 并不是直接访问物理内存地址,而是通过虚拟地址空间间接访问物理内存。CPU 使用的地址都是虚拟地址,而数据存放在物理内存中,此时需要将虚拟地址转换为实际的物理地址,然后根据物理地址从物理内存中获取数据。

操作系统中的虚拟地址转换通过主存管理单元(MMU)硬件提供,MMU 通过页表进行查找以转换成物理地址。本文将对32位逻辑地址空间的二级页表进行分析。

二级页表通过将32位虚拟地址空间分为3个部分来实现。页目录表占用一个标志的4k页,每个页目录项占用4个字节,共有1024个表目录项(PDE)。页目录表中的每个页目录项记录一个页表的物理页地址。每个页表中有1024个页表项(PTE),每个页表项也包含一个物理页地址。12位的偏移量用于寻址该物理页中的具体存储单元。

页表项保存的是一个物理页框的物理地址,物理地址的低12位总是0,因此表项的低12位可挪作他用。存在位(P)确定页表项是否可用,P=1表示可用。当目录表项或第二级表项的P=0时,则该表项无效,不能用于地址转换。此时,处理器不对这些位进行测试。当CPU试图使用无效页表项进行地址转换时,会发出页异常信号。缺页中断异常处理程序将请求的页面映射并加入到物理内存中,异常指令被重新执行。

已访问(A)和已修改(D)比特位提供有关页使用的信息。除了页目录项中的已修改位,这些比特位由硬件置位,但不复位。页目录项和页表项的主要区别在于页表项有一个已写位D(Dirty),而页目录项没有。

在对一页内存进行读或写操作之前,CPU将设置相关的目录和二级页表项的已访问位。在向二级页表项所涵盖的地址进行写操作之前,处理器将设置该二级页表项的已修改位。内存管理程序需负责检测和复位这些位。当内存不足时,页面换入和换出功能用于将暂时不用的物理内存替换出去,保存到磁盘(交换设备)中,为其他急用信息腾出空间。

每个进程均有一个页表,保存在进程的pgd字段中。页目录表和页表都存在于物理内存中,每个表中项保存的地址均为物理地址。页目录表和页表占用的内存示意图如下。每个进程的页表保存在进程的pgd字段中。

页面换入和换出机制允许操作系统在物理内存不足时,将暂时不用的页面替换出去,保存到磁盘(交换设备),为其他急用信息腾出空间。当需要时,可以从磁盘读取页面。页面换入和换出是操作系统管理物理内存的重要功能。
温馨提示:内容为网友见解,仅供参考
无其他回答

Linux 页表初探
在对一页内存进行读或写操作之前,CPU将设置相关的目录和二级页表项的已访问位。在向二级页表项所涵盖的地址进行写操作之前,处理器将设置该二级页表项的已修改位。内存管理程序需负责检测和复位这些位。当内存不足时,页面换入和换出功能用于将暂时不用的物理内存替换出去,保存到磁盘(交换设备)中,...

初探--Redis持久化之RDB
深入探讨bgsave操作,它是异步非阻塞的持久化方式,通过fork主进程创建子进程执行持久化操作,同时阻塞主进程,使得子进程能够快速生成RDB文件,不影响业务处理。此过程依赖操作系统虚拟内存管理和页表技术,实现高效数据共享与操作。异步持久化操作存在数据同步问题,主进程在执行写操作时,通过copy-on-write技术...

范铸法的历史背景
【5】周卫荣:《中国古代钱币合金成分研究·秦汉》第30页表222-1秦半两的合金成分,中华书局2004年4月。【6】王金华、李秀辉、周卫荣:《西汉石范铸钱原因初探》,《中国钱币》2003年1期第25页。【7】周卫荣:《中国古代钱币合金成分研究·新莽钱》第40页表 222-4新莽钱的合金成分,中华书局2004年4月。【8】《史记...

中国清朝有多少钱啊?
表1 清代前期财政收入规模简表(注:何本书:《清代户部诸关初探》,载《南开学报》1984年第3期;《清史稿》卷一二五,食货六。) 年代 岁入总额(万两) 顺治九年(1652) 2,428 康熙二十四年(1685) 3,123 雍正三年(1725) 3,585 乾隆十八年(1753) 4,069 乾隆三十一年(1766) 4,858 乾隆五十六年(1791) 4,35...

相似回答
大家正在搜