Articles of 进程

Linux调度程序如何在多核处理器上调度进程?

多核处理器利用线程级并行性,这意味着多个线程并行运行。 假设一个进程只有一个线程,那么在执行这个进程的时候,其他内核是否保持空闲? 在linux系统中,调度程序把进程和线程都视为一个任务。 它在调度过程中并不区分进程和线程。 那么,这是否意味着不同的内核并行执行不同进程的不同线程? 当上下文切换发生时,这是否只发生在一个核心或cpu的所有核心?

进程间通信通过文件

当我在Linux中某些任意位置回显文件时,例如echo > /tmp/file ,一些正在运行的进程会响应。 这个IPC是通过文件pipe道吗? 这是否意味着一个正在运行的进程总是打开要读取的文件? 但是,如何写文件,因为文件stream被自己的进程locking了?

如何获得进程的祖父母身份证

我怎样才能得到当前进程的父进程ID? 一般给一个进程ID我怎么能得到它的父进程ID? 比如os.getpid()可以用来获取父进程的id和os.getppid(),我如何得到祖父母, 我的目标是Linux(Ubuntu的),所以平台的具体答案是好的。

关于僵尸进程和线程的问题

由于我正在阅读关于进程和线程的一些新主题,所以我在脑海中有这些问题。 如果有人能帮助我,我会很高兴。 1)如果一个线程被标记为不可取消,那么进程在关键部分内部被终止会发生什么? 2)我们有一个操作系统已知的程序主线程吗? 我的意思是操作系统给程序的第一个线程一些有益的权利或什么? 3)当我们杀死一个进程,线程不join,他们成为僵尸?

在Linux下自动调整进程优先级

我试图编写一个程序,根据configuration文件自动设置进程优先级(基本上是path优先级对)。 我认为最好的解决scheme是取代execve()系统调用的内核模块。 太糟糕了,系统调用表不会在内核版本> 2.6.0中导出,所以不可能在没有真正丑陋的黑客的情况下replace系统调用。 我不想做以下事情: 用shell脚本replace二进制文件,启动和修改二进制文件。 – 修补/重新编译我的股票Ubuntu内核 – 像阅读内核可执行内存和猜测系统调用表位置丑陋黑客 – 正在运行的过程 我真的想成为: – 能够根据其可执行path和configuration文件控制任何进程的优先级。 规则适用于任何用户。 有没有人有任何想法如何完成这项任务?

如何检查JBoss是否在Unix服务器上运行?

我有一个脚本下面,我想回声“jboss不运行”或“jboss运行”取决于它是否可以在进程列表中findjboss进程。 但是,当我closuresJboss的时候,它仍然执行Else条件,并且说“jboss正在运行”。 如果我手动执行“pgrep -f jboss”,它不会返回任何东西,那么为什么它仍然会进入其他条件? 困惑 #!/bin/bash if [ -z "$(pgrep -f jboss)" ] then echo "jboss is not running" else echo "jboss is running" fi 谢谢你的帮助!

识别内核线程

我想知道如何区分我正在构build的进程扫描程序的用户线程的内核线程。 我很难find这两种types的好定义。 我发现内核线程没有自己的内存,所以/ proc / $ pid / status中没有Vm *值,并且/ proc / $ pid / exe中的统计信息不会返回任何内容。 所以,我想我可以识别内核线程,如果一个进程没有Vm *值和没有inode号码。 我想错了…我的脚本看到php-cgi进程有时被识别为内核进程。 如果发现那些错误识别出来的进程中的大部分是僵尸,那么一秒钟后就会死掉。 所以我执行了一个简单的检查,看看状态是否是“Z”。 如果是这样,请忽略它。 这为我节省了很多误报,但是我仍然收到有关php-cgi内核进程的消息。 任何人都可以告诉我如何以正确的方式区分内核线程和用户线程?

处于睡眠状态的CPU利用率较高

我有一个似乎陷入僵局的过程: # strace -p 5075 Process 5075 attached – interrupt to quit futex(0x419cf9d0, FUTEX_WAIT, 5095, NULL 它坐在“futex”系统调用,似乎是无限期地等待锁。 当“top”运行时,这个过程显示消耗了大量的CPU: # top -b -n 1 top – 23:13:18 up 113 days, 4:19, 1 user, load average: 1.69, 1.74, 1.72 Tasks: 269 total, 1 running, 268 sleeping, 0 stopped, 0 zombie Cpu(s): 8.1%us, 0.1%sy, 0.0%ni, 91.8%id, 0.0%wa, 0.0%hi, […]

无法在64位Linux上运行32位应用程序

我有一个非常小的Ubuntu 8.04 64位安装。 当我尝试运行一些32位程序时,例如我的jhead程序,我得到消息No such file or directory 。 我想这可能是一个图书馆的问题,但是当我这样做的时候: ldd jhead 而不是它需要的库列表,我只是得到消息not a dynamic application 。 对于我使用的另一个旧的32位应用程序也是如此。 所以会出现一些运行32位应用程序的非常重要的组件。 但是我怎么才能确定这些是什么?

在使用C ++的Linux中显示进程

我从C ++开始,阅读一本关于它的好书,我想要构build一个程序,使用C ++向用户显示他正在做的Linux的所有进程。