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