下面所述以Linux 0.1.1源码为例(Linux初期版本源码1w多行,推荐阅读源码,或看相关书籍 Linux内核(v0.1.2)注释 )
相关部件:
Linux OS
CPU:有自己的频率,通常很高(如笔者当前机器的CPU频率为1.3GHZ,即其寄存器的操作延迟为0.8ns左右),因此可以在1秒内做非常多的事。
可编程定时器/计数器Timer:有自己的频率,Linux源码中定为100,即 10ms 触发一次。OS内的很多时间计数以此为单位,如OS滴答数的单位、进程调度的时间片的单位都是Timer的周期。
背景:
进程是OS资源分配的基本单位、线程是CPU调度的基本单位。但在Linux内核中实际上没有线程概念,我们所说的线程在Linux内核中是轻量级进程LWP,其数据就结构表示与进程一样,从这角度看,内核中就是进程(或称任务)调度。
struct task_struct { long state; long counter; long priority; struct tss_struct tss; };