美文网首页
进程调度

进程调度

作者: KillerManA | 来源:发表于2016-07-07 22:57 被阅读29次

这章的主要内容是进程调度相关知识,下面我们来看本章总结:
多任务操系统分为两类:

  • 非抢占式多任务
  • 抢占式多任务
    Linux同Unix一样,提供了抢占式的多任务模式,这种模式是由调度器来决定什么时候停止一个进程。

Linux的进程调度使用了CFS算法进行调度。
进程的类型一般分为两类:

  • I/O消耗类型(I/O型)
  • 处理器消耗类型(计算密集型)
    调度策略的主要目标:在两个矛盾间寻找平衡点,即进程快速响应和最大系统利用率。

那么CFS调度策略是怎样找到这个平衡点的?
在CFS调度器调度进程时,没有将时间片直接分配给进程,而是将处理器的使用比划分给进程,这样一来,进程执行所获得的处理器时间和系统负载密切相关,这也是Linux的调度策略同其它操作系统不同之处。(CFS算法实现喜欢的童鞋可以再看看,其中CFS使用红黑树来组织进程)

睡眠和唤醒:
睡眠通过等待队列进行处理,等待队列是由某些时间发生的进程组成的简单链表。
唤醒时,会将此进程放入红黑树中,通常哪段代码促使唤醒条件达成,它就负责随后的唤醒操作。

在进程调度中还有两个重要的概念,那就是:抢占和上下文切换
首先,我们先来看上下文切换,就是从一个可执行进程切换到另一个可执行进程,这其中要完成两个步骤的工作:
1.调用switch_mm()函数,该函数作用是将虚拟内存从上一个进程映射切换到新进程中。
2.调用switch_to()函数,该函数将处理器状态进行切换,包括:保存,恢复栈信息,寄存器信息,还有其它关联信息。

下面是抢占,抢占分为用户抢占和内核抢占:
1.用户抢占:内核即将返回用户空间的时候会产生抢占,因为此时内核进程知道自己是安全的,即可以发生抢占。
2.内核抢占:Linux完整的支持内核抢占,只要重新调度是安全的,内核就可以在任何时间抢占正在执行的任务,怎样才算重新调度安全?只要没有持有锁就都是安全的,锁是非抢占区域的表示。我们多线程编程中加锁也是同样道理。

这一章我们了解了内核进程调度的过程和一些概念信息。

相关文章

  • Nuttx Task Schedule

    调度概念 进程调度 按照某种调度算法从就绪队列中选取进程分配CPU,主要是协调对CPU等的资源使用。进程调度目标是...

  • 第三章 处理机调度与死锁

    3.2 作业与作业调度 3.2.3 先来先服务(FCFS)和短作业优先(SJF)调度算法 进程调度 进程调度方式:...

  • 学习之路 | 1 进程调度

    进程调度 多任务 Linux的进程调度 策略 策略决定调度程序在何时让什么进程运行。调度器的策略往往就决定系统的整...

  • 常用调度算法简介

    常用调度算法简介 一、关于调度 进程调度用于多进程或者多线程并发访问资源。 进程调度的需求出现在同时执行多个任务(...

  • 进程调度

    目标 本章将讨论Linux内核是如何进行进程调度的,进程调度程序(也称为调度器)的工作与实现原理。 进程调度程序负...

  • Linux 调度

    调度策略与调度类 进程包括两类: 实时进程(优先级高); 普通进程 两种进程调度策略不同: task_struct...

  • Linux进程调度

    Linux进程调度是通过内核子系统:进程调度程序完成的。进程调度程序决定投入运行的进程、何时运行已经运行时长。从这...

  • Linux内核学习013——进程调度(二)

    Linux内核学习013——进程调度(二) Linux的进程调度 早期版本(1~2.4)的Linux内核中,调度程...

  • 打通Framework与Kernel-谈谈我对进程管理的理解

    Kernel:Linux学习-进程管理与调度(一)-进程描述及其生命周期Linux学习-进程管理与调度(二)-进程...

  • 操作系统-03-操作系统的作业管理

    进程调度 进程调度是指计算机通过决策决定哪一个就绪进程可以获得CPU的使用权。 进程调度一般需要保留旧进程的运行信...

网友评论

      本文标题:进程调度

      本文链接:https://www.haomeiwen.com/subject/pmbljttx.html