内存管理2

内核中的内存管理

Posted by BY beta on February 25, 2021

前言

第二部分主要是关于用户内存管理的内容。

1.进程在内存下的布局

内核空间和用户空间在内存中的布局

image-20210225154650424

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

image-20210225155541471

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

image-20210225160704593

虚拟内存的结构

image-20210225162058963

2.页错误的处理

页错误page fault

当出现页错误的时候,在页加载之后,会重新执行指令

image-20210225162410564

段错误

3. 管理区域

虚拟内存区域、页和frame关系。page是逻辑连续的。frame是非连续的

image-20210225162946621

在下图可以看到,物理内存是相互独立的几块区域,而下方的page在逻辑上则是连续的。

heap和stack结构会变大,请求新的空间。linux使用红黑树O(log n)

image-20210225163229696

4. memory 与file

共享文件

image-20210225165024778

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

image-20210225165713133

参考连接

  1. TSS和PCB区别 https://uniform64.xyz/archives/236