首页 > 其他 > 详细

sleep 与 sched_yield() 的区别

时间:2020-04-14 00:14:53      阅读:163      评论:0      收藏:0      [点我收藏+]

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() 的区别

原文:https://www.cnblogs.com/ishen/p/12695114.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!