目录
[性能优化] - cpu调度原理
second60 20180801
1 背景
linux系统是一个多任务实时操作系统。这里的多任务就CPU调度的任务。
在linux操作系统中,CPU是并不知道进程存在的,进程是以任务task_structure的形式让CPU分时间片一个一个去处理。
问题来了:CPU是怎么做到多任务的切换分时间片的呢?是的,答案就是CPU调度机制。在多任务处理机制下,多个程序共享CPU,它们在CPU上轮流运行。
2 基本概念
任务:CPU执行的一个时间片。内核中会对每个进程task_structure,优先级和阻塞率等,进 行分时间片。
调度机制:对任务进行切换调度的一种机制。
一个单独的CPU,同一时间只能对一个任务进行处理。
3 CPU调度程度
内核使用进程调度程序来确定哪个程序在哪个给定时间点运行。为了工作正常,进程调度程序必须合理调度不同资源。它必须很快确定接下来轮到哪个进程得到CPU。保证各进程得到的CPU时间是公平的,同时允许高优先级的进程得到更大的CPU时间,或抢占较低优先级的进程CPU时间。
三种调度程序
- O(n)调度程序
- O(1)调度程序
- CFS调度程序
3.1 O(n)调度程序
这是内核2.6以前的调度程序,原理是:它必须扫描整个进程列表,根据优先级等条件,以便找到下一个要运行的进程。采用的是轮询的方法。