首先我们要明白一个概念:什么是地址?
地址是指向内存区域的一个编号,每一个进程都有4G的进程地址空间。
那么系统到底是如何给进程分配内存的呢?
结论:分页管理+虚拟地址空间
看图进一步理解
如上图是系统给进程分配内存的逻辑图, 操作系统用一个进程控制块的数据结构(进程属性的集合)来描述进程信息,也就是PCB
(process control block),Linux操作系统下的PCB是 task_struct
,程序运行时它会被装载到RAM里来储存进程信息。
如下图是task_struct
结构的具体信息:
如图可看出task_struct
结构中包含mm_struct
,其中task_struct
还包含进程的很多信息,如:进程唯一标识符pid
、进程状态、进程优先级等。
mm_struct
这个结构体描述出了虚拟地址空间,页表记录了虚拟地