01_用户页表
1.概念
用户页表是为用户进程(也就是运行在用户模式下的进程)管理虚拟内存映射的页表。用户页表包含用户进程的虚拟地址空间与物理地址的映射关系。
2.例子
假设有一个用户进程运行,它的虚拟地址空间如下:
- 代码段(Text Segment):从虚拟地址
0x00400000
到0x004FFFFF
映射到物理地址0x00100000
到0x001FFFFF
- 数据段(Data Segment):从虚拟地址
0x00600000
到0x006FFFFF
映射到物理地址0x00200000
到0x002FFFFF
- 堆(Heap):从
0x00800000
开始分配物理内存
用户页表将虚拟地址0x00400000
映射到物理地址0x00100000
,虚拟地址0x00600000
映射到物理地址0x00200000
。当用户进程尝试访问某个虚拟地址时,CPU会通过用户页表将其转换为对应的物理地址进行访问。
02_内核页表
1.概念
内核页表是操作系统内核用来管理内核空间内存映射的页表。内核页表包含内核空间的虚拟地址映射,但在很多操作系统中,内核页表还包含了所有用户进程共享的内核空间的虚拟地址映射。
2.例子
操作系统内核地址空间可能是这样的:
- 内核代码段:从虚拟地址
0xC0000000
到0xC01FFFFF
映射到物理地址0x00100000
到0x001FFFFF
- 内核数据段:从虚拟地址
0xC0200000
到0xC03FFFFF
映射到物理地址0x00200000
到0x002FFFFF
内核页表会将虚拟地址0xC0000000
映射到物理地址0x00100000
。内核空间的地址范围通常是固定的,并且在不同用户进程之间共享。因此,每个用户进程在访问内核空间时,实际上使用的是相同的内核页表。
03_用户页表和内核页表的区别
1.访问权限不同
- 用户页表:用户进程只能访问自己的页表,不允许访问内核空间。
- 内核页表:内核可以访问整个系统的地址空间,包括所有用户空间和内核空间。
2.地址空间不同
- 用户页表:只管理用户进程的虚拟地址空间,通常在低地址范围(例如,0x00000000到0xBFFFFFFF)。
- 内核页表:管理内核空间,通常在高地址范围(例如,0xC0000000以上)。
3.隔离对象不同
- 用户页表:用户进程之间隔离,防止一个进程访问或修改另一个进程的内存。
- 内核页表:通常所有进程共享一个内核页表,内核可以直接访问用户空间和内核空间。
Comments | NOTHING