Chinaunix

标题: 进程在用户态怎样主动放弃CPU? [打印本页]

作者: 巨人史玉柱    时间: 2010-12-21 19:33
标题: 进程在用户态怎样主动放弃CPU?
1,我们知道进程在内核态可以通过调用schedule()函数来主动放弃cpu,那么在用户态怎样主动放弃cpu呢?调用哪个函数?
2,如果一个进程运行在用户态,这时它想睡眠,应该调用哪个函数呢?

以上多谢!
作者: crspo    时间: 2010-12-21 19:36
1,我们知道进程在内核态可以通过调用schedule()函数来主动放弃cpu,那么在用户态怎样主动放弃cpu呢?调用哪 ...
巨人史玉柱 发表于 2010-12-21 19:33



    1 sched_yield()
    2 什么原因要睡眠?
作者: 巨人史玉柱    时间: 2010-12-21 19:48
回复 2# crspo


    谢谢老大回帖啊!
   1,sched_yield 是库函数吗?它最终调用的是内核里面的哪个系统调用函数呢?
   2,如果想睡眠指定的时间该调用哪个函数呢?如果想睡眠在指定的等待队列上,该调用哪个函数呢?  我指的是用户态哦。
作者: liying_gg    时间: 2010-12-21 19:52
sleep不就完了
作者: 巨人史玉柱    时间: 2010-12-21 22:29
回复 4# liying_gg


    谢谢兄弟的回答,我还想问一下,sleep会导致进程的切换吗?sleep是一个库函数吧,那么她最终会调用内核中的哪个系统调用函数呢? 多谢!
作者: amarant    时间: 2010-12-22 08:15
yield是系统调用
作者: spongeliu    时间: 2010-12-22 14:29
调用Nanosleep
作者: gerryok    时间: 2010-12-22 14:57
yield是系统调用
作者: 巨人史玉柱    时间: 2010-12-22 16:22
回复 8# gerryok


    谢谢兄弟
作者: 巨人史玉柱    时间: 2010-12-22 16:23
回复 7# spongeliu


    谢谢兄弟!
作者: 巨人史玉柱    时间: 2010-12-22 16:24
回复 6# amarant


    谢谢兄弟!
作者: liying_gg    时间: 2010-12-22 20:25
回复 5# 巨人史玉柱


    sleep是会进程切换的,这个你可以查看一下程序状态,不sleep的话ps aux看进程是R+,sleep了的话进程是S+
作者: hackage    时间: 2010-12-23 18:25
glibc中是__sched_yield()
然后weak_alias(__sched_yield, sched_yield)




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2