假设GDT什么的都是没有问题的,并且使用堆栈来保存现场(不适用TSS结构),使用时钟中断来进行时间片轮转任务切换
------------------ ----------------
task1 eip ret task2
----------------------
timmerInt + taskSwitch
时钟中断到来后进入taskSwitch要花一点时间。
我的问题是,图中eip在taskSwitch阶段要怎么取得?
我的做法是:
.eip:
mov ebx, .eip ; get the current eip
push [eax], ebx ; save the current eip to some where
但是这样做的话,下一次任务切换从some where取出eip以后运行还是在这儿,会陷入死循环?
真正的eip是图中时钟中断的地方,而不是我的做法(在下面一条线的某一个点上),请问这个eip是怎么取得的?
求各位嵌入式、操作系统高手指点迷津~~~