linux 当涉及到资源时,父进程和子进程是如何关联的?

wi3ka0sx  于 2022-12-26  发布在  Linux
关注(0)|答案(1)|浏览(156)

启动系统时,启动的第一个进程是INIT,它的PID为1。此后,所有其他进程都是INIT的子进程(PID:1)并且它们中的每一个都可以具有子进程等等。

我的问题是,当涉及到内存和cpu时,进程是如何关联的?我知道每个进程都可以有多个线程,并且每个进程都有自己的堆。在这种情况下,当涉及到资源时,父进程和子进程是如何关联的?

例如,如果一个进程对它可以使用的CPU数量有一个限制,并且这个限制是由它所在的cgroup设置的,那么这将如何影响子进程?父进程的CPU数量是否会随着其子进程的CPU数量的增加而增加?

nvbavucw

nvbavucw1#

一般而言,进程及其子进程在资源使用方面以下列方式相关:
内存:每个进程都有自己的专用内存空间,其中包括自己的堆和堆栈。这意味着进程不能直接访问其子进程或任何其它进程的内存。但是,进程及其子进程使用的内存总量将计入进程的资源使用量。例如,如果进程对其可以使用的存储器量具有一定限制,并且它创建了使用大量存储器的子进程,则父进程的存储器使用将增加由子进程使用的存储器量。
中央处理器:进程及其子进程的CPU使用量也会计入进程的资源使用量。如果进程对其可以使用的CPU量有限制,则此限制也将应用于其子进程。但是,子进程也可能有各自的cgroup设置的CPU限制。在这种情况下,父进程的CPU使用率不一定随着其子进程的CPU使用率的增加而增加,因为子进程可能受到它们自己的CPU限制的限制。
另外值得注意的是,在某些情况下,进程与其子进程之间的关系可能会更加复杂。例如,一个进程可能会创建多个子进程,而这些子进程又可能创建自己的子进程,从而形成一个树状结构。在这种情况下,树中每个进程的资源使用量都会计入其父进程的资源使用量。

相关问题