第12章 中断嵌套问题、IOPL问题

本文探讨了80386处理器中的中断嵌套问题,指出时钟中断通过interrupt gate设置避免嵌套,但在特定条件下可能引发嵌套。同时解释了IOPL的概念,它是保护模式下控制I/O权限的关键机制,用于限制用户进程的I/O操作,只有CPL小于等于IOPL时,I/O敏感指令才能执行。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

问题:在80386中,中断是否可以嵌套?

在80386中有两种事件(可以参考我写的《中断与异常》文档):
1、中断事件(异步 interrupts)(一般是硬件中断)
2、异常事件(同步 exceptions)

在IDT中,有三种门描述符(通过设置,可以让中断向量对应不同的门描述符。比如缺页异常可以对应interrupt gate,也可以对应trap gate):
1、Interrupt gate
2、Trap gate
3、Task gate

我们只是用interrupt gate和trap gate。它们之间有一个很重要的区别。
Interrupt gate ISR :
1、保存EFLAGS
2、清除EFLAGS上的 IF、TF、VM、RF、NT标志位
3、恢复EFLAGS

Trap gate ISR:
1、保存EFLAGS
2、清除EFLAGS上的TF、VM、RF、NT标志位
3、恢复EFLAGS

我们为时钟中断设置的是interrupt gate,因此当发生时钟中断时,在调用时钟中断处理函数do_timer()时,IF位是置0的, 也就是被关中断的。这样,就不会发生中断嵌套。假如在do_timer中使用s
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值