Skip to content

process schedule

随便看了下进程的调度,没看具体的调度核心代码。主要的代码集中在 sched/core.c 中,核心的函数是 schedule 函数,简单的来看就是根据相关的调度器规则来选出一个下一个被调度的进程,然后进行相关的切换操作。

切换的时候还要注意对进程地址空间的切换,切换的时候这个过程涉及了对内核内存数据结构的读写,可以看到代码中遍布着锁,并在一些地方的读写完成之后会插入屏障。这是保证了在多核的环境下对内核的数据结构的读写对其他核可见,防止其他核访问刚刚被当前核修改的代码的时候出现问题。