linux 调度器学习 转载;

转载:http://www.wowotech.net/process_management/scheduler-history.html

转载:O(n)、O(1)和CFS调度器

任务调度器是操作系统一个很重要的部件,它的主要功能就是把系统中的task调度到各个CPU上去执行满足如下的性能需求:

1、对于time-sharing的进程,调度器必须是公平的

2、快速的进程响应时间

3、系统的throughput要高

4、功耗要小

 

为了达到这些设计目标,调度器必须要考虑某些调度因素,比如说“优先级”、“时间片”等。很多RTOS的调度器都是priority-based的,官大一级压死人,调度器总是选择优先级最高的那个进程执行。而在Linux内核中,优先级就是实时进程调度的主要考虑因素。而对于普通进程,如何细分时间片则是调度器的核心思考点。过大的时间片会严重损伤系统的响应延迟,让用户明显能够感知到延迟,卡顿,从而影响用户体验。较小的时间片虽然有助于减少调度延迟,但是频繁的切换对系统的throughput会造成严重的影响。因为这时候大部分的CPU时间用于进程切换,而忘记了它本来的功能其实就是推动任务的执行。

struct task_struct {

volatile long need_resched;

long counter;

long nice;

unsigned long policy;

int processor;

unsigned long cpus_runnable, cpus_allowed;

struct list_head run_list;

unsigned long rt_priority;

......

};

 

posted @ 2024-03-21 19:05  skyycj  阅读(27)  评论(0)    收藏  举报