前言
第二部分主要是关于用户内存管理的内容。
1.进程在内存下的布局
内核空间和用户空间在内存中的布局

单个进程的地址空间布局,分段布局。

在计算机中,每个进程在内核中都有一个进程控制块(PCB)来维护进程相关的信息,Linux内核的进程控制块是task_struct结构体.

虚拟内存的结构

2.页错误的处理
页错误page fault
当出现页错误的时候,在页加载之后,会重新执行指令

段错误
3. 管理区域
虚拟内存区域、页和frame关系。page是逻辑连续的。frame是非连续的

在下图可以看到,物理内存是相互独立的几块区域,而下方的page在逻辑上则是连续的。
heap和stack结构会变大,请求新的空间。linux使用红黑树O(log n)

4. memory 与file
共享文件

读取文件的完整流程:进程给内核发送请求,内核查找所需文件所在的位置,将文件读取到内核中。

参考连接
- TSS和PCB区别 https://uniform64.xyz/archives/236