深入Linux内核架构—简介和概述(四)

释放双眼,带上耳机,听听看~!

一、页表

用来将虚拟地址空间映射到物理地址空间的数据结构称为页表。实现两个地址空间(
虚拟地址空间、物理地址空间)的关联最容易的方法是使用数组,对虚拟地址空间中的每一页,都分配一个数组项。该数组项指向与之关联的页帧(物理内存页),但有一个问题。例如,IA-32体系结构使用4KB页,在虚拟地址空间为4GB的前提下,则需要包含100万项的数组。在64位体系结构上,情况会更糟糕。每个进程都需要自身的页表,因此系统的所有内存都要用来保存页表,这个方法不切实际。

因为虚拟地址空间的大部分区域都没有使用,因而也没有关联到
页帧(物理内存页),那么就可以使用功能相同但内存用量少得多的模型:多级分页。

为减少页表的大小并容许忽略不需要的区域,计算机体系结构的设计会将虚拟地址划分为多个部分,如图1-7所示。在例子中,将虚拟地址划分为4部分,需要一个三级的页表。大多数体系结构都是这样的做法。但有一些采用了四级的页表,Linux也采用了四级页表。为简化场景,采用三级页表阐述。

深入Linux内核架构—简介和概述(四)

虚拟地址的第一部分称为全局页目录(Page Global Directory,PGD)。

给TA打赏
共{{data.count}}人
人已打赏
安全运维

WordPress网站专用docker容器环境带Waf

2020-7-18 20:04:44

安全运维

运维安全-Gitlab管理员权限安全思考

2021-9-19 9:16:14

个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索