我正在修读操作系统课程。我正在启动jos os到qemu x86 PC模拟器。我读到BIOS找到可引导设备并将引导加载程序从可引导设备的第一个扇区加载到内存中的0x7c00。
引导加载程序中的第一条指令是禁用中断,即cli。
我读到了cli,即它清除了eflags寄存器中的enable interruptts标志。我从维基百科读到,它是为了避免内核代码和中断处理程序之间的竞争条件。请解释一下比赛条件是什么以及这里有什么样的比赛条件。
我仍然不明白为什么要这样做?有人可以详细说明这个吗?
答案 0 :(得分:0)
我正在考虑将JOS用于我的操作系统课程,可能早在2016年冬季学期。然后cli问题虽然很有意思,因为它有什么阻止,但是这个问题比IMO更有趣:
什么时候再次启用中断?
可以使用加载http://pdos.csail.mit.edu/6.828/2014/labs/lab1/中描述的实验室git的说明,然后查看序列的boot和kern目录。