进程管理的基本概念
1、进程与程序
- 程序:存储在磁盘上的文件,包含可执行指令和数据的静态实体
- 进程: 运行中的程序(一个程序可以执行多次,加载出多个进程)
- 进程就是处于活动状态的计算机程序
2、进程的分类:
- 交互进程(有输入,有输出,用户可以根据自己的情况输入数据,得到想要结果)(一般进程)
- 批处理程序(由脚本加载执行的程序)(Linux下的shell,windows下的bat)
守护进程(总是活跃在后台运行,一般由系统开机时或root用户手动加载)(为其他进程起守护工作)
3、查看进程:
- 简单方式:终端下ps,显示当前用户有终端控制权的进程信息
- 列表形式:ps aux,以列表形式显示详细信息 a是指所有用户控制终端的进程 u是以详细方式显示 x是所有用户无终控制的进程
4、进程的详细信息列表
- USER 进程的用户名
- PID 进程id
- %CPU 进程cpu使用率
- %MEM 内存使用率
- VSZ 占用虚拟内存大小
- RSS 占用物理内存大小
- TTY 终端的次设备号,如果无终端控制则显示?
STAT 进程的状态
- O:就绪态,等待被系统调用
- R:运行态,Linux系统没有就绪态,就绪态用R表示
- S:休眠态,可以被系统中断(信号)唤醒转入运行态
- T:暂停态,是被SIGSTOP信号暂停的,当收到SIGCONT信号时才能再转入运行态
- Z:僵尸态,已经结束停止运行,但父进程还没有回收
< 高优先级进程
N 低优先级进程
l 多线程化的进程
+ 在前台进程组中的进程
s 会话的首进程
START TIME 进程开始时间
COMMAND 进程的程序名(进程的可执行文件)
5、父进程与子进程,孤儿进程与僵尸进程
一个进程A可以创建出另一个进程B,创建者叫父进程,被创建进程叫子进程,父进程启动子进程后,在操作系统的调用下父进程同时执行(同步)
如果子进程先于父进程结束,会向父进程发送SIGCHLD信号,父进程收到信号后,就去回收子进程的相关资源,但在默认情况下,父进程忽略该信号
也就是说,当子进程结束后,父进程没有回收子进程的资源,子进程就变成了僵尸进程,
如果父进程先于子进程结束,子进程就变成了孤儿进程,同时被孤儿院收养(init),然后就变成了init的子进程