最近重新读了《linux内核设计于实现》的进程调度章节,对于时间片的重新计算和多cpu的负载平衡,很受启发:
1,分而治之。对复杂问题,把其分散到各个细小的环节去实现,降低了复杂度,性能上有所提升,也不容易出错。
2,步步为营。这是从load_balance想到的,一步一步的脚踏实地的去完成一个功能。
linux的2.6及其后续的内核,实现了O(1)的调度算法,这种调度算法选取可执行进程的时间恒定,不依赖于系统中的进程数目。实现这种调度的核心是优先级数组的和过期/活动数组的引入,通过简单的指针交换,完成切替,不可谓不奇妙的设计。
不知道内核的早期设计者们花费了多大的努力才做到的...
支持开源,支持linux,希望更多人了解开源思想,加入linux阵营...