当前位置:  技术问答>linux和unix

怎么判断linux内核函数是否会引起休眠?

    来源: 互联网  发布时间:2016-03-14

    本文导语:  还想问的是"函数引起内核线程休眠是一个什么概念?" linux里面线程和进程是不分的,除了线程共享内存管理以外. 因为内核会有多个线程(进程),而休眠一说是针对进程来讲.所以当前的内核线程休眠了,内核调度可以运行...

还想问的是"函数引起内核线程休眠是一个什么概念?"
linux里面线程和进程是不分的,除了线程共享内存管理以外.
因为内核会有多个线程(进程),而休眠一说是针对进程来讲.所以当前的内核线程休眠了,内核调度可以运行其他的内核线程,或者用户进程.

关键我是不清楚,什么样的动作会引起内核线程的休眠,请教各位兄弟姐妹了!


|
什么样的动作会引起内核线程的休眠
------------------
自己sleep,等待IO等。
ps:中断处理程序(上半步)没有进程环境,运行时处于中断上下文中而不处于进程上下文中,谈不上被schedule。

|
还有看你在什么地方使用,要是是编写中断处理就不要用导致休眠的函数,楼上都说了
我再补充几个吧,信号量,wait队列,completion,自己调用schedule,用GFP_KERNEL指定的内存分配kmalloc,get——free——page等函数会睡眠
从代码上分析,如果函数调用了其他函数,追朔回去只要有对scheduled的调用就会睡眠。
从操作系统原理解释就是,当你需要获取资源(硬件资源,内存资源,一个数据结构等),而资源不可得,此时不应该忙等本进程就应该睡眠,直到资源可用。你可以试着分析是否有这种‘请求语境’出现,比如请求内存,而内存可能分配给了其他进程,要分配给你内存就意味着可能从其他进程把內存页调来给你用,请求io,io设备有可能不可得,这些情况下都会带来休眠。

|
楼上的兄弟说了, 会引起睡眠的函数就那么几个。
睡眠 的本质是 该进程 处于一种特殊的不可执行状态,(TASK_INTERRUPTIBLE 和TASK_UNINTERRUPTIBLE)
这样, 调度程序就不会去执行他,而实现睡眠。

进程睡眠的原因, 肯定是为了等待一些事情,从文件 I/O读取数据,或者是某个硬件时间,或者等待一个信号量。

|
你说的内核线程是什么?

如果是kernel_thread创建的话,应该和普通的进程一样具有进程环境,可以被调度到的

如果是中断处理程序这样的,如果调用schedule切换出去,由于没有进程环境,会引起系统崩溃的,halt了,也不是休眠阿

|
没遇到过这种情况.

    
 
 
 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • java 的条件判断函数(类似于别的语言iif函数)
  • 判断文件格式的c库函数
  • 请教:在程序中创建文件夹,应该用什么函数?怎么判断文件夹存不存在呢?
  • 求判断某ip是否联通的函数或类linux c/c++
  • jquery浏览器判断函数代码
  • 如何用函数判断某个守护进程处入运行中
  • 有判断一个int是否是素数的函数吗?
  • js判断是否含有GBK以外的字符的函数
  • java里有判断一个点是否在一个多边形的里面的函数吗?
  • 用正则表达式判断字符串是汉字还是拼音的js函数代码
  • 请问有函数可以判断我的结构体具体是什么类型的吗?
  • 在JSP如何判断str1是否在str2中?是否有相应的函数?
  • PHP多重判断删除文件函数代码
  • T-SQL判断一个日期是否为今天的函数
  • linux中的串口通信判断一帧数据是否传输完整时,用定时器检查前后两帧数据的间隔时间,该用什么定时函数,有详细代码最好,谢谢!
  • sql 判断函数、存储过程是否存在的代码整理
  • 利用MySQL函数实现判断视频扩展名的代码
  • php根据日期判断星座的函数代码
  • JavaScript基于正则表达式的数字判断函数
  • 如何在在一个程序中判断另一个程序是否已运行?是哪个命令或函数?
  • C++ Vectors 成员 empty():判断Vector是否为空(返回true时为空)
  • linux->shell-> if 条件判断,关于软连接的判断!
  • javascript操作html复选框checkbox:如何判断复选框是否被选中
  • shell如何判断文件是否存在,如何判断变量是否为空
  • c语言判断某一年是否为闰年的各种实现程序代码
  • 怎么判断串口已经收到数据,并及时读出?怎么判断串口已经将写入的数据发送完毕?
  • java实现判断字符串是否全是数字的四种方法代码举例
  • 在判断自符是否等于**时,用equals(“**”),那么如果我想判断它的值是否>=2该用什么呢?
  • 我是学pb的,判断闰年的是isdate("2-28"),但在java里怎么判断呢?
  • linux 下的自解压文件是什么格式,如何判断文件是否为自解压c++或者脚本判断均可
  • mysql中如何判断当前是字符 mysql判断字段中有无汉字


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3