linux中线程的切换
系统中有线程A,B在运行:(1) 假设A运行在内核(2) 时钟中断发生,在中断例程中保存所有的通用寄存器以及EFLAG,CS和EIP到A的内核的堆栈中。发现A的时间片用完了,进行调度。更新TSS以及ESP(假设这里是线程B的)(3) B的时间片用完后,类似(2)保存B的现场。切换到A的系统堆栈中,执行一系列的push,恢复A以前的各个通用寄存器,以及eip等。
·
系统中有线程A,B在运行:
(1) 假设A运行在内核
(2) 时钟中断发生,在中断例程中保存所有的通用寄存器以及EFLAG,CS和EIP到A的内核的堆栈中。发现A的时间片用完了,进行调度。更新TSS以及ESP(假设这里是线程B的)
(3) B的时间片用完后,类似(2)保存B的现场。切换到A的系统堆栈中,执行一系列的push,恢复A以前的各个通用寄存器,以及eip等。
更多推荐
已为社区贡献1条内容
所有评论(0)