1.进程的基本知识
2.进程的生命周期
3.进程的状态指标
一、进程的基本知识
1.什么是进程
进程(Process)是计算机中的程序关于某数据集合上的一次运行活动,是系统进行资源分配和调度的基本单位,是操作系统结构的基础。简单来说,进程就是正在运行的程序,用户下达运行程序的命令后,就会产生进程。同一程序可产生多个进程(是一对多的关系)。进程有以下组成部分:
• 已分配内存的地址空间;
• 安全属性,包括所有权凭据和特权;
• 程序代码的一个或多个执行线程;
• 进程状态
2.进程与程序的区别
程序 | 进程 |
---|---|
二进制文件,静态的 (如:/bin/date等) | 是程序运行的过程,动态的 |
指令的集合,本身无“运动”的含义 | 有生命周期及运行状态 |
一个程序可以对多个进程,是一对多的关系 | 一个进程只能对一个程序,是一对一的关系 |
二、进程的生命周期
父进程与子进程的概念
父进程复制自己的地址空间(fork)传建一个新的(子)进程结构。每个新进程分配一个唯一的进程ID(PID),满足跟踪安全性之需,PID和父进程(PPID)是子进程环境的元素,任何进程都可以创建子进程,所有进程都是第一个系统进程的后代。
子进程继承父进程的安全性身份、过去和当前的文件描述符,端口和资源特权,环境变量,以及程序代码。随后,子进程可能exec自己的程序代码,通常,父进程在子进程运行期间处于睡眠(sleeping)状态,当子进程完成时发出(exit)信号请求,在退出时,子进程已经关闭或丢弃了其资源环境,剩余的部分称为僵停(僵尸Zombie)。父进程在子进程退出时收到信号而被唤醒,清理剩余的结构,然后继续执行其自己的程序代码
进程生命周期示意图
三、进程的状态指标
1.使用ps命令查看当前的进程状态(静态)
经常使用ps -aux组合查看进程、用户、PID、占用CPU百分比、占用内存百分比、状态、执行命令等
ps -aux查看进程
[root@wyw-10 ~]# ps -aux
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
状态 | 描述 |
---|---|
USER | 启动进程的用户 |
PID | 进程运行的ID号 |
%CPU | 进程占用的百分比 |
%MEM | 进程占用内存百分比 |
VSZ | 进程占用虚拟内存大小(单位KB) |
RSS | 进程占用物理内存实际大小(单位KB) |
TTY | 进程由哪个终端运行的tty1、pts/0等,表示内核程序与终端无关 |
STAT | 进程运行的状态 man ps (/SATE) |
START | 进程的启动时间 |
TIME | 进程占用CPU的总时间(为0表示还没超过秒) |
COMMAND | 程序的运行指令,"[ ]"属于内核态的进程。没有"[ ]"的是用户态的进程 |
2.STAT状态的S 、Ss、S+、R等的意思
SATA状态
SATA基本状态 | 描述 | SATA状态+符号 | 描述 |
---|---|---|---|
R | 进程运行 | s | 进程是控制进程, Ss进程的领导者,父进程 |
S | 可中断睡眠 | < | 进程运行在高优先级上,S<优先级较高的进程 |
T | 进程被暂停 | N | 进程运行在低优先级上,SN优先级较低的进程 |
D | 不可中断睡眠 | + | 当前进程运行在前台,R+该表示进程在前台运行 |
Z | 僵尸进程 | l | 进程是多线程的,Sl表示进程是以线程方式运行 |
-
举例1、PS命令查看进程状态切换
#1.在终端1上运行vim 1.txt
[root@wyw-10 ~]# vim 1.txt
#2.在终端2上运行ps aux命令查看状态
[root@wyw-10 ~]# ps aux |grep 1.txt #S表示睡眠模式,+表示前台运行
root 23532 0.7 0.5 151564 5296 pts/0 S+ 16:36 0:00 vim 1.txt
root 23534 0.0 0.0 112708 984 pts/1 R+ 16:36 0:00 grep --color=auto 1.txt
#3.在终端1上挂起vim命令,按下ctrl+z
[root@wyw-10 ~]# vim 1.txt
[1]+ Stopped vim 1.txt
#4.回到终端2再次运行ps命令查看状态
[root@wyw-10 ~]# ps aux |grep 1.txt
root 23538 0.3 0.5 151564 5304 pts/0 T 16:45 0:00 vim 1.txt #T表示停止状态
root 23540 0.0 0.0 112708 984 pts/1 R+ 16:45 0:00 grep --color=auto 1.txt
-
举例2、PS命令查看不可终端状态进程
#1.使用tar打包文件时,可以通过终端不断查看状态,由S+,R+变为D+
[root@wyw-10 ~]# tar -czf etc.tar.gz /etc/ /usr/ /var/ /tmp/ /opt/ /home/
PS查看不可中断状态进程
-
举例3、使用top命令查看当前的进程状态(动态)
top命令查看当前的进程状态
任务 | 含义 |
---|---|
Tasks: 91total | 进程的总数 |
3 running | 正在运行的进程数 |
87 sleeping | 睡眠的进程数 |
1 stopped | 停止的进程数 |
0 zombie | 僵尸进程数 |
%Cpu(s): 0.0 us | 系统用户进程使用CPU百分比 |
0.3 sy | 内核中的进程占用CPU百分比,通常内核是于硬件进行交互 |
99.7 id | 空闲CPU的百分比 |
0.0 wa | CPU等待IO完成的时间 |
0.0 hi | 硬中断,占的CPU百分比 |
0.0 si | 软中断,占的CPU百分比 |
0.0 st | 比如虚拟机占用物理CPU的时间 |
PS:top常见指令
字母 | 含义 |
---|---|
h | 查看帮助 |
1 | 数字1,显示所有CPU核心的负载 |
z | 以高亮显示数据 |
b | 高亮显示处于R状态的进程 |
M | 按内存使用百分比排序输出 |
P | 按CPU使用百分比排序输出 |
q | 退出top |
总结
今天主要学了Linux的进程管理,了解了进程是正在运行的程序以及进程与程序之间的区别。
进程的生命周期和进程的运行状态。
通过对进程管理的学习,加深了对Linux的了解,以及进程运行时系统的流畅度,进程运行的少,系统的运行速度就快,进程运行的多,系统的运行速度就慢。
网友评论