一 程序的概念
是一组计算机能识别和执行的指令,运行于电子计算机上,满足人们某种需求的信息化工具
用于描述进程要完成的功能,是控制进程执行的指令集
保存在硬盘、光盘等介质中的可执行代码和数据
静态保存的代码
二 进程的概念
运行中的程序的一个副本,是被载入内存的一个指令集合,是资源分配的单位
在CPU及内存中运行的程序代码
动态执行的代码
进程ID(Process ID,PID)号码被用来标记各个进程
UID、GID、和SELinux语境决定对文件系统的存取和访问权限
通常从执行进程的用户来继承
存在生命周期
都由其父进程创建
父进程与子进程
父进程复制自己的地址空间(fork派生)创建一个新的(子)进程结构
每个进程分配一个唯一的进程ID(PID),满足跟踪安全性之需
任何进程都可以创建子进程
所有进程都是第一个系统进程的后代
进程具有的特征
动态性:进程是程序的一次执行过程,是临时的,有生命期的,是动态产生,动态消亡的;
并发性:任何进程都可以同其他进程一起并发执行;
独立性:进程是系统进行资源分配和调度的一个独立单位;
结构性:进程由程序、数据和进程控制块三部分组成
僵尸进程
僵尸进程是当子进程比父进程先结束,而父进程又没有回收子进程,释放子进程占用的资源,此时子进程将成为一个僵尸进程。如果父进程先退出 ,子进程被init接管,子进程退出后init会回收其占用的相关资源。
三 线程的概念
线程(英语:thread)是操作系统能够进行运算调度的最小单位。它被包含在进程之中,是进程中的实际运作单位。一条线程指的是进程中一个单一顺序的控制流,一个进程中可以并发多个线程,每条线程并行执行不同的任务。
查看进程有几个线程,可以使用 "cat /proc/PID/status"查看
四 查看进程
4.1 ps命令——静态查看进程 (Process Status)
ps [option]...
a:显示当前终端下的所有进程信息,包括其他用户的进程。与“x”选项结合时将示系统中所有的进程信息。
u:使用以用户为主的格式输出进程信息。
x:显示当前用户在所有终端下的进程信息。
-e:显示系统内的所有进程信息。
-l:使用长(Long)格式显示进程信息。
-f:使用完整的(Full)格式显示进程信
k|--sort 属性:对属性排序,属性前加 - 表示降序排列。
举例说明:
"ps aux" 可以查看系统中所有的进程;
"ps -le" 可以查看系统中所有的进程,而且还能看到进程的父进程的 PID 和进程优先级;
"ps -l" 只能看到当前 Shell 产生的进程
4.1.1 ps aux
表头(列名) 含义
USER 该进程是由哪个用户产生的
PID 进程的 ID
%CPU 该进程占用 CPU 资源的百分比
%MEM 该进程占用物理内存的百分比
VSZ 该进程占用虚拟内存的大小,单位为 KB
RSS 该进程占用实际物理内存的大小,单位为 KB
TTY
该进程是在哪个终端运行的 tty1~tty6 是本地的字符界面终端,tty7 是图形终端
pts/0 ~ 255 代表虚拟终端,一般是远程连接的终端
STAT 进程状态
START 该进程的启动时间
TIME 该进程占用 CPU 的运算时间
COMMAND 产生此进程的命令名。
STAT进程状态 描述
-D 不可被唤醒的睡眠状态,通常用于 I/O 情况
-R 该进程正在运行
-S 该进程处于睡眠状态,可被唤醒
-T 停止状态,可能是在后台暂停或进程处于除错状态
-W 内存交互状态
-X 死掉的进程(应该不会出现)
-Z 僵尸进程。进程已经中止,但是还是占用硬件资源
-< 高优先级
-N 低优先级
-L 被锁入内
-s 包含子进程
-l 多线程(小写 L)
-+ 进程位于后台
4.1.2 ps -lef 命令查看进程信息
表头(列名) 含义
F 程标志,说明进程的权限,常见的标志有两个: 1:进程可以被复制,但是不能被执行; 4:进程使用超级用户权限
S 进程状态
UID 运行此进程的用户的 ID
PID 进程的 ID
PPID 父进程的 ID
C 该进程的 CPU 使用率,单位是百分比
PRI 进程的优先级,数