控制进程的三种类型

交互式进程:此类进程在shell环境中启动,可以在前台或后台运行。
可以通过按Ctrl+C或关闭终端来结束该过程。
(1)批处理:与终端无关,发送到作业队列顺序执行(如脚本执行)。
(2)系统守护进程:与终端无关(不占用终端资源),始终在后台运行,与Linux系统一起运行。
init是Linux系统中必不可少的程序之一。
它是由内核启动的用户级进程。
(3)Linux进程状态分为三种:-执行状态(R):进程已获得CPU并正在运行。
在多处理器系统中,多个进程可以同时运行。
-就绪状态:进程已收到除CPU外的所有所需资源。
一旦接收到CPU,就可以立即执行,处于就绪状态。
-阻塞状态(停止状态T):正在运行的进程由于某些事件暂时无法继续,主动让出CPU,进入停止状态。
此时进程处于阻塞状态。
(注:“带头大队”原文应该叫“障碍”,“执行受阻”更准确地描述了阻塞状态。
)进程的定义和组成:-定义:进程是一个分配执行任务的实体。
执行程序时的系统资源。
这些资源包括CPU、内存等,代表一个动态运行的进程。
-组成:一个进程通常由文本段(程序代码)、用户数据段(程序数据)和系统数据段(进程控制块)组成。

容器与pod中的僵尸进程

了解流程管理中各种状态下的流程模型将有助于您更好地控制和优化系统性能。
首先根据进程执行时的各种情况,定义运行时阻塞和大气三种状态。
进程转换的原因主要包括CPU分配、I/O任务和系统调用。
五种状态模型在三种状态模型的基础上添加新状态(NEW)和结束状态(退出),进一步体现流程的生命周期。
在Linux内核中,进程和线程都是由task_struct{}结构表示的基本预留单元。
在Linux进程状态中,当上层进程终止时,由init进程采用相应的子进程来完成状态收集。
由于init进程继续监视和组织这些进程,因此孤儿进程不会损害系统。
然而,僵尸进程完成了,但系统进程表中仍然存在进程控制块,导致资源泄漏,尤其是PID资源。
Linux内核通过PID_MAX参数控制系统PID的最大值。
如果超过该值,系统将无法创建新进程。
组织僵尸进程的方法是通过kill命令向上层进程发送SIGCHLD信号,或者如果上层进程仍然拒绝清理则退出上层进程。
在DOCKER环境中,进程管理利用Linux内核的PID命名空间技术来实现不同容器之间的进程隔离。
每个容器都有独立的PID命名空间,PID1进程是容器的入口点。
当PID1进程终止时,Docker会删除命名空间并组织容器的其他子进程。
Docker优雅的退出机制允许容器在停止命令后组织资源,并且Dockerkill可以发送信号强制终止应用程序。
Docker还使用TINI项目作为PID1进程来支持信令和回收孤儿进程,以确保容器中更高效的进程管理。
在Kubernetes(K8S)环境中,多个容器可以共享同一个LinuxnameSpace。
K8S提供的暂停镜像作为容器的入口,实现命名空间共享。
暂停镜像的主要作用是可以处理孤儿进程的上层进程,并将其设置为PID1,以防止僵尸进程的创建。
临时停止镜像通过SIGREAP()函数处理SIGCHLD信号并及时回收子进程,有效管理K8SPOD中的进程生命周期。
综上所述,可以了解进程状态模型,正确管理孤儿进程和僵尸进程,利用Docker和Kubernets的进程管理特性来有效解决容器的僵尸进程。
本文旨在提供全面的指导,帮助读者解决实际工作中面临的流程管理问题。