- 论坛徽章:
- 0
|
回复 #5 accessory 的帖子
我发现要搞清楚进程和中断这部分的原子性,必须把处理器的行为的搞的很清楚才行,一个动作,哪些是处理做的,哪些程序做的.
>> 一般在中断处理函数里都先把自己的中断关掉.因为开着也没意义.
这里说的开着没意义,我们查看中断执行的每一个细节可以发现,是外部中断产生的情况下,如果IDT是一个中断门,或者是int 指令穿越了一个中断门(是否存在?),则中断标志是处理器自动关闭了,同级这样可以防止同级嵌套,我们假设中断现场由处理器自动保存而不是用指令保存,那么同级嵌套导致前一个中断现场丢失.
当你从ISR里调用IRET返回的时候,就可以返回到上一次的地方,
这个不确切,比如我上面提到的.中断能嵌套在系统调用内 而都用inet返回, 那你一个inet到底是中断的返回还是系统调用的返回,这个问题很大,我觉得一定处理器有个栈做记录了,那么就能正常的嵌套了,还有个值得注意的地方:inet返回的动作是大的,相当于几条汇编指令,那么从哪里返回?现场如果是记录在处理器里,自然不错,不过我怀疑仍然是记录在内存中,而返回也是再次通过idt表对应的中断门找相关信息. |
|