一、Linux进程基础:
Linux程序:系统,用户,固件
程序运行,需要系统调用,然后缓存到内存中,然后被CPU处理。整个过程称为执行任务
程序:
一组指令以及参数集合,按照相应的逻辑控制计算机完成特定的任务。(文件,由一组指定参数集合起来的,完成相应任务。)特点:静态的、封闭的。
程序运行产生多个进程。
进程:
运行的程序,是一个动态的过程。是操作系统的基本单位,有生命周期,有状态的。具有并发性(一个程序对应多个进程),交互性(一个进程可派生多个子进程)。
操作系统以进程为单位分配系统资源。
每一个进程运行是独立的
具有独立的地址空间,运行状态
多个程序同时运行,每一个程序就是一个进程
线程:
一个进程中可有多个线程,每一个线程只能被一个进程所拥有。(线程把整个任务完成之后,才能运行,即任务每一个线程可以被不同的进程运行,但运行结果需要整合到一起才能被使用)
线程不能独立运行,线程的运行由进程决定。
程序运行起来可以对他进行交互操作。(每一个Linux线程或者Linux进程都有一个独立的资源集,资源集中有:CPU资源、内存资源、I/O资源等),入口、序列、出口。
1、进程的生命周期:
等待状态------就绪状态-------运行状态--------阻塞状态------休眠状态-------死亡状态
sleeping:睡眠状态
stopping:停止状态
running:运行状态
zombie:僵死状态
这些状态是实时变化的
[root@localhost ~]# ping 192.168.239.200 > /dev/null 2>&1 &
[1] 8256
[root@localhost ~]# ls
//将ping的结果输出重定向到/dev/null 中,并将其扔至后台,还可以继续执行命令
2、父进程和子进程:
父进程在运行过程中,产生子进程。子进程继承父进程所有资源和权限,并运行自己的程序(通过调用 exec 方法运行)。子进程运行过程中父进程处于休眠状态,只有子进程运行结束,父进程才再次运行。
父进程可以产生多个子进程,当一个子进程完成后父进程进入执行状态,然后再进入休眠状态(只要有一个子进程完成任务,父进程就会苏醒一次)。父进程产生的子进程还可以产生自己的子进程。
3、僵尸进程:
一个父进程产生了一个子进程,子进程A又产生了自己的子进程B,当子进程A运行结束后,父进程从休眠状态进入执行状态,此时子进程A产生的子进程B将会处于僵尸状态,被系统定期清理掉。
【扩充】
1.操作系统:自下而上结构
硬件,内核(内核文件,内核模块,驱动程序),固件(芯片+程序),应用(应用程序)
应用(应用程序)
|
内核(内核文件,内核模块,驱动程序)
| 固件(芯片+程序)
硬件
二、Linux进程管理工具:
pstree:进程树,查看进程间的关系------>父进程、子进程
-p:显示进程号,PID
-u:显示用户
-A:各进程树之间的连接以ASCII码字符来连接
-U:各进程树之间的连接以 utf8 字符来连接,某些终端可能会有错误
注:子进程的端口号大于父进程的端口号。
[root@localhost ~]# yum install psmisc
//CentOS7上没有pstree命令