linux进程调度详解(一)

    在详细描写linux进程调度原理之前在这里先明确几个基本概念

抢占:调度程序决定什么时候停止一个进程的运行以便其他进程又能够得到执行的机会,这个强制挂起的动作叫做抢占

时间片:进程在被强占之前预先设置的能够运行的时间。

   从上面的两个概念就可以看出来,调度程序的一个功能就是计算每个进程占用的时间片合理每个进程运行时间,调度程序是采用动态算法计算时间片的,linux内核采用的是O(1)调度算法实现调度的

进程在调度层面上可以分为两种不同类型

I/O消耗型:大部门时间是用来等待I/O请求的,如果响应执行时间很短,但是需要快速响应,比如等待键盘输入

处理器消耗型:这些进程不用等待I/O请求去触发,如果不是抢占的话不管它们,它们会一直运行,而且并不是需要快速的响应速度,对于整个系统而言不应该让他们频繁运行而是减少运行次数增大运行时间,一般这种进程都是无限循环的

    当让这两斤进程的划分并不是绝对的,有可能有的进程既是I/O消耗型也是处理器消耗型,调度算法尽可能的从中寻找平衡

所以有的时候处理器并不保证严格的按照高低优先级去进行调度,因为I/O消耗型更倾向于快速的响应,所以在调度的时候更倾向于I/O消耗型,这点很重要

优先级调度算法,顾名思义就是优先级高的就会先执行并且抢占优先级低的进程,如果想听优先级的话就会轮流执行。

   linux调度算法也是建立在优先级调度算法的基础上实现的,但是这个所谓的优先级并不是人为的设置而是linux内核调度算法根据自己的定义做动态的优先级加减的

   linux内核提供两种优先级体系nice(-20 -~+19)默认值为0值越低优先级越高(不可配置),实时优先级(0 ~ 99)

可配置优先级高于普通进程

   再说一下时间片这里的时间片概念不要和实时性操作系统的时间片概念搞混,实时性操作系统的时间片概念是每一次systick切换时长,而linux的时间片概念如上文所说就是在被切换走之前的运行时间,在单片机做系统中假如时间片为1ms那么不管当前进行的进程优先级为多高,到时间片时都会执行一段调度算法,而linux时间片是只有在这个任务被强占之前执行的时间,每个进程的时间片并不相同

那内核进程什么时候会被抢占呢?只有两种情形,1、像上文提到进程时间片耗尽,唤醒调度程序。2、有一个其他进程秉承运行态与当前执行进程进行优先级比较。

 

 

 

 

 

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值