Linux 内核 - 通过 pid 查找当前进程(task_struct)

Linux 内核 - 通过 pid 查找当前进程(task_struct)

我读过这个邮政

但我的问题是当前进程,而不是任何进程(使用 pid 查找)。因为除了代码之外我找不到任何文档(即:)关于如何使用提供的函数、预期输入、输出......

编辑:我的意思是,如果我声明task_struct *任务,这是否意味着任务指针已经指向当前进程?

答案1

Linux 内核是多线程的,许多进程同时执行。当您收到当前进程的 PID 时,它可能不再是“当前”进程。

非抢占式内核可能会运行一个进程直至完成,但通常情况下不会。您可以为每个进程设置良好级别。好的级别 -20(不是很好)会将整个系统投入到该过程中,直到它完成,但是以一种智能的方式。

如果进程必须执行磁盘读取,并且系统能够直接读取内存,则内核可能会允许另一个进程使用几百万个 cpu 周期。

但对于桌面系统,没有多少用户进程设置为 -20 的良好级别。它们在 -10 到 10 之间。如果启动,top您可以查看最重要的进程,并且每个进程都会显示良好的级别。

Linux 是按照 UNIX 方式工作的,它使用多线程内核。每个线程可以属于同一个进程,也可以属于不同的进程。通常,桌面系统需要响应用户交互,因此它使用可抢占式内核和快速定时器。

除非内核是不可抢占的,否则服务器很多时候都会遭受严重的性能下降。线程、抢占和锁定的概念相当复杂。但这提供了一些概述:

抢占和线程

相关内容