sleep 与 sched_yield() 的区别
Posted ishen
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了sleep 与 sched_yield() 的区别相关的知识,希望对你有一定的参考价值。
概
sleep() 将进程放入等待队列,休眠结束后,进入运行队列获取cpu分配,sched_yield()将进程分配到过期队列,所有进程都运行完成后才会运行
正文
进程调度队列
操作系统的进程调度有三大队列:
三个队列:运行队列,过期队列,等待队列
1.等待队列:休眠(或者阻塞)的进程放在等待队列里面,进程的状态为TASK_INTERRUPTIBLE和TASK_UNINTERRUPTIBLE
2.运行队列:这些进程还没有用完时间片,因此允许它们运行。
3.过期队列:时间片运行完的进程放在这个队列,这里面的进程不能被调度运行,除非所有的进程都运行完了自己的时间片。
sleep 与 sched_yield的区别
sleep将进程放入等待队列,休眠结束后,进入运行队列去争取取cpu分配,sched_yield()将进程分配到过期队列,相当于已经结束了进入运行队列的过程,只有等所有进程都运行完成后才会运行
ref
https://blog.csdn.net/xiaowenmu1/article/details/90552391
以上是关于sleep 与 sched_yield() 的区别的主要内容,如果未能解决你的问题,请参考以下文章