资讯动态 news

客服


调度系统设计精要

发布于:2020-10-31 01:58 编辑:admin  

CFS 的调度进程与调度器非常类似,当时调度器与前者的差异仅仅增加了可选的作业盗取机制并改变了底层的数据结构。

CFS 中的调度类是比较风趣的概念,调度类可以决议进程的调度战略。每个调度类都包括一组担任调度的函数,调度类由如下所示的 sched_class 结构体表明:

struct sched_class {
 struct sched_class *next;
 void  ;
 void  ;
 void  ;
 void  ;
 struct task_struct *  ;
 void  ;
 unsigned long  ;
 void  ;
 void  ;
 void  ;

调度类中包括使命的初始化、入队和出队等函数,这儿的规划与面向对象中的规划略微有些类似。内核中包括 SCHED_NORMAL 、 SCHED_BATCH 、 SCHED_IDLE 、 SCHED_FIFO 和 SCHED_RR 调度类,这些不同的调度类别离完结了 sched_class 中的函数以供给不同的调度行为。

本节介绍了操作体系调度器的规划原理以及演进的前史,从 2007 年合入 CFS 到现在现已过去了很长时刻,现在的调度器[^12]也变得愈加杂乱,社区也在不断改进进程调度器。

咱们可以从 Linux 调度器的演进的进程看到干流体系架构的改变,开始几十行代码的调度器就能完结根本的调度功用,而现在要运用几万行代码来完结杂乱的调度,确保体系的低延时和高吞吐量。

因为篇幅有限,咱们很难对操作体系的调度器进行八面玲珑的剖析,你可以在 这儿 找到作者运用的 Linux 源代码,亲自动手剖析不同版别的进程调度器。

What is long term scheduler, short term scheduler and mid term term scheduler in OS?

A brief history of the Linux Kernel's process scheduler: The very first scheduler, v0.01

Understanding the Linux 2.6.8.1 CPU Scheduler

CFS Scheduler

Inside the Linux 2.6 Completely Fair Scheduler

The Linux desktop may soon be a lot faster

Modular Scheduler Core and Completely Fair Scheduler

The Linux Scheduler: A Decade of Wasted Cores

Go 言语是诞生自 2009 年的编程言语,信任很多人对 Go 言语的形象都是语法简略,可以支撑高并发的服务。语法简略是编程言语的顶层规划哲学,而言语的高并发支撑依托的是运行时的调度器,这也是本节即将研讨的内容。

对 Go 言语略微有了解的人都知道,通讯顺序进程[^13]影响着 Go 言语的并发模型,其间的 Goroutine 和 Channel 别离表明实体和用于通讯的前言。