15、调度(上)

进程分为实时进程和普通进程,分别对应实时调度策略和普通调度策略。

普通调度策略主要采用完全公平调度算法(CFS)。这个算法运行逻辑是:
CPU为每一个进程安排一个虚拟运行时间(vruntime)。这样随着运行时间的增长,vruntime也会不断增长,而CPU就会优先去运行vruntime小的进程,这样就做到了基本完全公平。而根据设定的优先级的不同,vruntime+=时间运行时间*NICE_0_LOAD/权重。

想要实现完全公平调度就需要一个调度队列和调度实体。CFS的调度队列排序算法采用的红黑树的数据结构。调度实体叫做sched_entity。


红黑树

CPU调度队列叫做rq,分为rt_rq和cfs_rq,对应实时调度队列和公平调度队列。


调度队列

调度类会优先调用实时调度队列的调度实体,当没有实时调度实体时才会去调用普通调度实体。


调度
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 完全公平调度CFS CFS(Completely Fair Scheduler)试图按照对 CPU 时间的 “最大...
    batbattle阅读 3,516评论 0 5
  • 内存中保存了每个进程的唯一描述信息,并通过若干结构与其他进程连接起来,那么调度器的核心任务就是高效公平的执行各个进...
    淡泊宁静_3652阅读 1,482评论 0 0
  • 进程调度:在可运行态进程之间分配有限处理器时间资源的内核子系统。通俗来说就是,各个进程之间如何有规律的使用CPU。...
    batbattle阅读 3,198评论 0 9
  • 目标 本章将讨论Linux内核是如何进行进程调度的,进程调度程序(也称为调度器)的工作与实现原理。 进程调度程序负...
    ice_593e阅读 1,575评论 0 0
  • [TOC] ## 多任务操作系统的两种形式: 1. 抢占式多任务操作系统 2. 协同式多任务操作系统 ## 进程分...
    不一样的烟火火阅读 1,506评论 0 0