一、进程的含义
进程是一个程序执行的过程,在这个过程中会分配内存资源并接受 CPU 的调度。进程的相关信息通过 PCB(Process Control Block)结构体进行管理,例如进程标识符(PID)、父进程 ID 号(PPID)、当前工作路径、umask、进程打开的文件列表、信号相关设置、用户 ID 和组 ID 以及进程资源的上限等。
二、进程和程序的区别
- 程序是静态的,是存储在硬盘中代码和数据的集合;而进程是动态的,是程序执行的过程,包括进程的创建、调度和消亡。
- 程序是永存的,而进程是暂时的。
- 进程存在状态变化,程序则没有。
- 进程可以并发执行,程序无并发特性。
- 进程之间会竞争计算机资源,而程序不会。
- 一个程序可以运行多次从而产生多个进程。
三、进程的作用
进程的主要作用是实现并发,例如在无人机的控制中,可以同时进行上下左右移动和发送视频等操作。
四、进程的状态
在基本操作系统中,进程有 3 个状态:就绪态、执行态和阻塞态。而在 Linux 中,进程的状态更为丰富,包括运行态(R)、睡眠态(可唤醒等待态 S 和不可唤醒等待态 D)、僵尸态(Z)、暂停态(T)和结束态。
五、进程的调度
进程调度是内核的主要功能之一,宏观上表现为并行,微观上则是串行。
六、查询进程相关命令
ps aux | grep 进程名
:查看进程相关信息,包括就绪态和运行态(R)、睡眠态(可唤醒等待态 S 和不可唤醒等待态 D)、停止态(T)、僵尸态(Z)和结束态。top
:根据 CPU 占用率查看进程相关信息。kill
和killall
:用于发送信号来控制进程。kill PID
发送信号给指定 PID 对应的进程,默认接收者关闭。kill -9 进程 PID 号
强制关闭进程。kill -l
查看信号列表。killall -9 进程名
发送信号关闭进程名对应的所有进程。