CFS 调度器

    Linux 内核作为一个通用操作系统,需要兼顾各种各样类型的进程,包括实时进程、交互式进程、批处理进程等。每种类型进程都有其特别的形为特征,总结如下:

  • 交互式进程: 与人机交互的进程,和鼠标、键盘、触摸屏等相关的应用,例如 VIM 编辑器等,它们一直在睡眠同时等待用户召唤它们。这类进程的特点是系统响应时间越快越好,否则用户就会抱怨系统卡顿。
  • 秕处理进程:此类进程默默地工作和付出,可能会占用较多的系统资源,例如编译代码等。
  • 实时进程: 有些应用对整体时延有严格要求。例如VR 设备,从头部转动到视频显示需要控制到19毫秒以内,否则会使人出现眩晕感。

树重计算

内核使用0-139 的数值表示进程的优先级,数值越低, 优先级越高。优先级0-99 给实时进程使用,100-139 给普通进程使用。另外在用户空间有一个传统的变量nice 值映射到普通进程的优先级,即100-139


	int prio, static_prio, normal_prio;
	unsigned int rt_priority;

static_prio 是静态优先级,在进程启动时分配。内核不存储nice 值,取而代之的是static_prio, 内核中宏NICE_TO_PRIO() 实现由nice 值转换成staic_prio. 它之所以被称为静态优先级因为它不随着时间而改变,用户可以通过nice 或sched_setscheduler 等系统调用来修改该值。normal_prio 是基于static_prio 是基于static_prio 和调度策略计算出来的优先级, 在创建进程时会继承你进程的normal_prio. 对于普通进程来说,normal_prio 等同于static_prio. 

猜你喜欢

转载自blog.csdn.net/robinsongsog/article/details/82391710
CFS