Content #
每个任务(进程)在内核态运行时都有自己的内核态栈。任务的数据结构与其内核态的栈在同一内存页中。
代码路径:linux/kernel/sched.c
union task_union {
struct task_struct task;
char stack[PAGE_SIZE];
};
static union task_union init_task = {INIT_TASK,};
include/linux/sched.h头文件中的INIT_TASK宏会初始化进程0,其中tss中的 esp会被初始化成:
PAGE_SIZE+(long)&init_task
From #
Linux内核设计的艺术