| _from_sys_call #如果处于VM86模式或者处于用户态,就从ret_from_sys_call入口返回,否则直接返回
jmp restore_all
这是此时唯一可能调用schedule()的地方(通过ret_from_sys_call,见"调度器工作时机"),但普通的核心线程不属于任何一种要求的状态,它能响应中断,但不能导致调度。
这个特点的表现之一就是,高优先级的进程无法打断正在核内执行系统调用(或者中断服务)的低优先级进程,这对于实时系统来说是致命的,但却简化了核心代码。内核中很多地方都利用了这一特点,能够不做过多保护地访问共享数据,而不用担心其他进程的打扰。
上一页 [1] [2] [3] |