当前位置:  开发笔记 > 编程语言 > 正文

什么是__kernel_vsyscall?

如何解决《什么是__kernel_vsyscall?》经验,为你挑选了2个好方法。

我得到的核心与我通常得到的核心非常不同 - 大多数线程都在__kernel_vsyscall()中:

  9 process 11334  0xffffe410 in __kernel_vsyscall ()
  8 process 11453  0xffffe410 in __kernel_vsyscall ()
  7 process 11454  0xffffe410 in __kernel_vsyscall ()
  6 process 11455  0xffffe410 in __kernel_vsyscall ()
  5 process 11474  0xffffe410 in __kernel_vsyscall ()
  4 process 11475  0xffffe410 in __kernel_vsyscall ()
  3 process 11476  0xffffe410 in __kernel_vsyscall ()
  2 process 11477  0xffffe410 in __kernel_vsyscall ()
  1 process 11323  0x08220782 in MyClass::myfunc ()

那是什么意思?

编辑:特别是,我经常在"pthread_cond_wait"和"___newselect_nocancel"中看到很多线程,现在这些线程在每个线程的第二帧 - 为什么这个核心不同?



1> coppro..:

__kernel_vsyscal是linux-gate.so(Linux内核的一部分)使用最快可用方法(最好是sysenter指令)进行系统调用的方法.Johan Petersson正确地解释了这个问题.


链接中的文章不见了:(

2> Stefan Mai..:

当你进行系统调用(比如从文件读取,与硬件通信,写入套接字)时,你实际上是在创建一个中断.然后系统在内核模式下处理中断,并且您的调用将返回结果.大多数情况下,除非你正在进行阻塞调用,否则在syscall中拥有大量线程是很不寻常的,在这种情况下它是预期的.

更具体地说,它意味着线程正在等待内核级系统调用.但是(不幸的是我的观点)已经在名称中:)

推荐阅读
保佑欣疼你的芯疼
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有