Linux中有关内存存放的思维导图,包括进程内核栈等
树图思维导图提供 内存存放思维导图 在线思维导图免费制作,点击“编辑”按钮,可对 内存存放思维导图 进行在线思维导图编辑,本思维导图属于思维导图模板主题,文件编号是:c67aca0768b10fcfbba5703894432fa7
内存存放思维导图思维导图模板大纲
每个进程都有自己的内核栈
当进程从用户态进入内核态时,CPU 就自动地设置该进程的内核栈
CPU 从任务状态段 TSS 中装入内核栈指针 esp
结构与内核栈的优势
内核可以方便而快速地找到这个结构
伪代码
task_struct = (struct task_struct *) STACK_POINTER & 0xffffe000
避免在创建进程时动态分配额外的内存
task_struct 结构的起始地址总是开始于页大小(PAGE_SIZE)的边界
当一个进程在某个 CPU 上正在执行时,内核如何获得指向它的 task_struct 的指针
存储方式为达到这一目的提供了方便
只需检查栈指针的值,而根本无需存取内存,内核就可以导出task_struct 结构的地址
会经常出现 current 宏,在内核代码中也随处可见,可以把它看作全局变量来用
current->pid 返回在 CPU 上正在执行的进程的标识符