- 5
- 0
- 约3.31千字
- 约 17页
- 2017-05-30 发布于北京
- 举报
Linux内核剖析之进程切换
郭海林
2012.10.20
ATT汇编基础
ATT汇编与Intel汇编比较
GCC内联汇编
进程切换概述
__schedule()
prev = rq-curr;
next = pick_next_task(rq);
if (likely(prev != next))
context_switch(rq, prev, next);
执行进程的切换:
切换页全局目录以安装一个新的地址空间
切换内核态堆栈和硬件上下文
进程切换概述
硬件上下文——共享的CPU寄存器
进程切换时,硬件上下文保存在:
task_struct的类型为thread_struct的thread字段
大部分寄存器,如esp,eip...
内核态堆栈
状态寄存器、通用寄存器,如eax,ebx...
switch_to 宏
pushfl
pushl %%ebp
movl %%esp, %[prev_sp]
movl %[next_sp], %%esp
movl $1f, %[prev_ip]
pushl %[next_ip]
jmp __switch_to
1:
popl %%ebp
popfl
/* output parameters */
: [prev_sp] =m (prev-thread.sp),
[prev
原创力文档

文档评论(0)