任务的内核态栈

任务的内核态栈

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内核设计的艺术