中断
中断是什么
中断是操作系统、CPU、CPU与IO设备中的概念,为中断CPU执行。其中涉及的概念都有无限深的概念栈(其实是无限深)我们就从简单的系统层面讲一讲。
前置概念
IRQ:interrupt request,中断请求
ISR:interrupt service routine, 中断服务程序,中断后运行的服务,ISR运行结束才会结束中断
PIC:programmable interrupt contolle,可编程中断控制器(中断控制芯片),与I/O设备直连,可以触发CPU的INTR(中断请求)引脚,发起中断请求
APIC:advanced programmable interrupt contolle,高级编程中断控制器,有两部分,Local APIC 在CPU内部(每个核都有),I/O APIC在主板芯片组内,I/O APIC和LAPIC通过总线连接
硬中断
硬件设备通知CPU就绪中使用,分为:
可屏蔽中断
外设或借口的中断、可以在CPU处理其他紧急操作时忽略或屏蔽
不可屏蔽中断
电源断电、内存错误等,不可通过软件屏蔽,必须响应中断
软中断
软件触发的中断,如定时器、网卡收发包
异常
一般为程序调用CPU的指令错误时产生,console能看到 segmention fault、core dumped等
错误:系统可纠正、纠正成功继续运行(如内存页从磁盘加载)
陷阱:陷阱主要用在调试中。
终止:终止是由系统表中的硬件错误或值不一致而导致的。终止不会报告造成异常的指令的所在位置。这是最严重的中断,终止将会调用系统的终止异常处理程序来结束造成异常的进程。
top命令解析
1 | top - 10:40:48 up 1:04, 1 user, load average: 2.39, 2.22, 2.07 |
第一行分别为:系统时间、系统已运行时间(1h4min)、用户数、平均CPU负载情况(1分钟、5分钟、15分钟)
第二行分别为:当前总任务(进程)数量、运行中的2个、休眠397个、stoped0个,zombie0个
第三为cpu的状态使用情况
名称 | 说明 |
---|---|
5.2 us | 用户空间占用CPU%5.2 |
3.4 sy | 内核空间占用CPU%3.4 |
0.0 ni | 更改过优先级的进程占用CPU%0 |
90.5 id | 90.5%的CPU空闲 |
0.1 wa | IO等待占用CPU百分比 |
0.8 si | 软中断占用CPU%0.8 |
0.0 hi | 硬中断占用 |
0.0 st | steal time,对云主机来说被Hypervisor偷去的CPU所占比例 |
第四行为内存状态分别为:物理总内存total、used使用了的、free空闲的、缓存内存
第五行为swap交换分区状态:total交换分区总量、空闲、使用了的、缓冲的
第六行往下都是每个进程使用情况:
名称 | 说明 |
---|---|
ID | 进程号 |
USER | 用户 |
PR | 进程优先级 |
NI | nice值,正表示低优先值、负表示高 |
VIRT | 进程使用虚拟内存总量,VIRT=SWAP+RES |
RES | 进程使用的、未释放的物理内存,RES=CODE+DATA |
SHR | 共享内存 |
S | 进程状态,D不可中断的睡眠状态 R运行 S睡眠 T跟踪/停止 Z僵尸进程 |
%CPU | CPU占比(对单个CPU的) |
%MEM | 物理内存占比 |
TIME+ | 进程使用的CPU时间总计,单位为us |
COMMAND | 进程名称和命令 |
命令
数字1:查看每个cpu的情况
数字2:查看每个numa的情况
数字3:查看某个numa里每个CPU的情况
字母P:CPU使用排序
字母M:内存使用排序
字母m:改变内存和交换区显示
字母b:高亮运行太进程
字母f:编排显示