搜索

调度算法的linux进程调度算法

gecimao 发表于 2019-07-22 20:50 | 查看: | 回复:

  可选中1个或多个下面的关键词,搜索相关资料。也可直接点“搜索资料”搜索整个问题。

  实时进程将得到优先调用,实时进程根据实时优先级决定调度权值,分时进程则通过nice和counter值决

  定权值,nice越小,counter越大,被调度的概率越大,也就是曾经使用了cpu最少的进程将会得到优先调

  当采用SHCED_RR策略的进程的时间片用完,系统将重新分配时间片,并置于就绪队列尾。放在队列

  SCHED_FIFO一旦占用cpu则一直运行。一直运行直到有更高优先级任务到达或自己放弃。

  如果有相同优先级的实时进程(根据优先级计算的调度权值是一样的)已经准备好,FIFO时必须等待该

  进程主动放弃后才可以运行这个优先级相同的任务。而RR可以让每个任务都执行一段时间。

  1. 创建任务指定采用分时调度策略,并指定优先级nice值(-20~19)。

  4. 调度程序遍历就绪队列中的任务,通过对每个任务动态优先级的计算(counter+20-nice)结果,选择

  计算结果最大的一个去运行,当这 个时间片用完后(counter减至0)或者主动放弃cpu时,该任务将被放在

  6. 当调度程序发现所有就绪任务计算所得的权值都为不大于0时,重复第2步。

  3. 调度程序遍历就绪队列,根据实时优先级计算调度权值(1000+rt_priority),选择权值最高的任务使用

  cpu,该FIFO任务将一直占有cpu直到有优先级更高的任务就绪(即使优先级相同也不行)或者主动放弃(等

  4. 调度程序发现有优先级更高的任务到达(高优先级任务可能被中断或定时器任务唤醒,再或被当前运行

  的任务唤醒,等等),则调度程序立即在当前任务 堆栈中保存当前cpu寄存器的所有数据,重新从高优先级

  任务的堆栈中加载寄存器数据到cpu,此时高优先级的任务开始运行。重复第3步。

  5. 如果当前任务因等待资源而主动放弃cpu使用权,则该任务将从就绪队列中删除,加入等待队列,此时

  1. 创建任务时指定调度参数为RR,并设置任务的实时优先级和nice值(nice值将会转换为该任务的时间片

  3. 调度程序遍历就绪队列,根据实时优先级计算调度权值(1000+rt_priority),选择权值最高的任务使用

  4. 如果就绪队列中的RR任务时间片为0,则会根据nice值设置该任务的时间片,同时将该任务放入就绪队

  5. 当前任务由于等待资源而主动退出cpu,则其加入等待队列中。重复步骤3。

  1. RR调度和FIFO调度的进程属于实时进程,以分时调度的进程是非实时进程。

  2. 当实时进程准备就绪后,如果当前cpu正在运行非实时进程,则实时进程立即抢占非实时进程。

  3. RR进程和FIFO进程都采用实时优先级做为调度的权值标准,RR是FIFO的一个延伸。FIFO时,如果两

  个进程的优先级一样,则这两个优先 级一样的进程具体执行哪一个是由其在队列中的未知决定的,这样导

  致一些不公正性(优先级是一样的,为什么要让你一直运行?),如果将两个优先级一样的任务 的调度策略都

本文链接:http://olivierlutaud.net/diaodusuanfa/834.html
随机为您推荐歌词

联系我们 | 关于我们 | 网友投稿 | 版权声明 | 广告服务 | 站点统计 | 网站地图

版权声明:本站资源均来自互联网,如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

Copyright @ 2012-2013 织梦猫 版权所有  Powered by Dedecms 5.7
渝ICP备10013703号  

回顶部