记录DragonOS开发过程中所遇bug及其解决
记录DragonOS开发过程中所遇bug及其解决
1 中断上下文内外死锁问题
2 进程调度问题导致网络IO性能下降
这段代码的作用是检测当前进程是否需要被调度,并在满足条件时进行调度。具体来说:
current_pcb_flags().contains(ProcessFlags::NEED_SCHEDULE)
:检查当前进程控制块(PCB)的标志是否包含 NEED_SCHEDULE标志,表示当前进程需要被调度。
vector == APIC_TIMER_IRQ_NUM.data()
:检查中断向量是否等于 APIC 定时器中断号,表示发生了定时器中断。如果上述两个条件中的任意一个为真,则调用 __schedule(SchedMode::SM_PREEMPT)函数,以抢占模式进行调度。而原本导致需要唤醒的进程无法及时唤醒的原因是需要两个条件都为真的时候触发,这是不正常的。
总结:
This post is licensed under CC BY 4.0 by the author.