进程
-
进程:正在运行的程序就是进程
- 程序成为进程后系统或自动分配内存和运行用户
- 进程运行中,系统会有各种指标来表示当前运行的状态
-
进程和程序:
- 程序是数据和指令的集合,是静态的,可以永久存储在系统中
- 进程是程序运行的过程,是动态的,会随着程序的终止而销毁,不会永久存在系统中
-
进程生命周期:
父进程接收任务调度,通过fock派子进程来处理,子进程会继承父进程属性
子进程在处理任务代码后,会执行推出,然后唤醒父进程来回收进程信息
如果子进程处理任务过程中,父进程退出,子进程会成为僵尸状态
监控进程
-
ps静态查看进程信息:
- 第一列(USER ):启动进程的用户
- 第二列(PID):进程的PID
- 第三列(%CPU):进程占用的CPU百分比
- 第四列(%MEM):进程占用的内存百分比
- 第五列(VSZ):虚拟内存
- 第六列(RSS):实际占用内存
- 第七列(TTY):终端的次要装置号码; ?表示内核进程,与终端无关
- 第八列(STAT):进程状态
- 第九列(START):进程开始的时间
- 第十列(TIME):进程占用CPU的时间
- 第十一列(COMMAND):程序的运行指令;{}表示内核程序
-
top实时查看进程信息:
- 第一行:当前时间、系统已运行时间、当前登录用户的数量、最近1、5、15分钟内的平均负载
- 第二行:任务的总数、运行中(running)的任务、休眠(sleeping)中的任务、停止(stopped)的任务、僵尸状态(zombie)的任务
- 第三行:cpu状态
字段 字段释义 us user: 运行(未调整优先级的) 用户进程的CPU时间 sy system: 运行内核进程的CPU时间 ni niced:运行已调整优先级的用户进程的CPU时间 id idle:空闲时间 wa IO wait: 用于等待IO完成的CPU时间 hi 处理硬件中断的CPU时间 si 处理软件中断的CPU时间 st 虚拟机占用真实CPU的时间 - 第四行:内存
全部可用内存、已使用内存、空闲内存、缓冲内存
- 第五行:swap
全部、已使用、空闲和缓冲交换空间
- 第七行至N行:各进程任务的的状态监控
字段 释义 PID 进程ID,进程的唯一标识符 USER 进程所有者的实际用户名 PR 进程的调度优先级。这个字段的一些值是'rt'。这意味这这些进程运行在实时态。 NI 进程的nice值(优先级)。越小的值意味着越高的优先级。负值表示高优先级,正值表示低优先级 VIRT virtual memory usage 虚拟内存,进程使用的虚拟内存。 RES resident memory usage 常驻内存,驻留内存大小。驻留内存是任务使用的物理内存大小。 SHR SHR:shared memory 共享内存 S 这个是进程的状态。 %CPU 自从上一次更新时到现在任务所使用的CPU时间百分比。%CPU显示的是进程占用一个核的百分比,而不是整个cpu(N核)的百分比,有时候可能大于100,那是因为该进程启用了多线程占用了多个核心,所以有时候我们看该值得时候会超过100%,但不会超过总核数*100 %MEM 进程使用的可用物理内存百分比 TIME+ 任务启动后到现在所使用的全部CPU时间 COMMAND 运行进程所使用的命令。进程名称(命令名/命令行) -
命令:
1:监控每个逻辑CPU的状况
i:忽略闲置和僵死进程。这是一个开关式命令
M:根据驻留内存大小进行排序
-
P:根据CPU使用百分比大小进行排序
-
STAT状态:
基本状态
R:进程运行
S:可中断的睡眠状态
T:进程被暂停
D:不可中断睡眠的状态
Z:僵尸进程
符号状态
s:进程是控制进程,Ss表示父进程
<:表示运行在高优先级上,S<优先级较高的
N:表示进程运行在低优先级上
+:表示进程运行在前台
l:进程是多线程的
中断:中断是系统用来响应硬件设备请求的一种机制,它会打断进程的正常调度和执行,然后调用内核中的中断处理程序来响应设备的请求
Linux软中断与硬中断:
- Linux 中的中断处理程序分为上半部和下半部
- 上半部对应硬件中断,用来快速处理中断
- 下半部对应软中断,用来异步处理上半部未完成的工作