关于利用任务状态段TSS进行进程切换的一点说明

来源:互联网 发布:证件p图软件 编辑:程序博客网 时间:2024/05/22 15:50

关于利用任务状态段TSS进行进程切换的一点说明:

由于在时钟中断里进行任务切换,也就是用JMP指令跳转到新的任务中去,这时的时钟中断是屏蔽的,但任务切换是直接进入新任务,没有将时钟中断屏蔽打开,所以造成了任务无法切换的情况,所以在对时钟中断任务切换编程时,不能简单的跳到新任务中去,要将中断屏蔽打开后再跳入新任务,而当任务再次切换回来时,会继续上次中断时的地方继续执行,而此时的时钟中断屏蔽已经打开,不需要再次打开了。另外一种任务切换的方法就是利用中断返回IRETD指令时切换,就是在中断程序过程中将返回的环境变更为新的任务环境,这样中断返回就会直接执行新的任务。不过我不认为第二钟方法有什么好处!

还有就是在使用TSS段进行任务切换时,对中断的编程要注意,不能使用简单的中断重入标志来判断,否则其中一个任务在中断中,这时切换到另一个任务中时也进入中断,会造成已进入中断的误判,中断初使工作跳过去,会造成意想不到的后果。建议在使用TSS段进行任务切换就没有必须进行中断重入的判断。中断重入的工作只适合用进程表进行进程切换,因为TSS任务切换后整个环境全部自动更新了,包括进程栈、系统栈、段寄存器、LDT寄存器、CR3寄存器、Eflage、通过寄存器等。

原创粉丝点击