✨ 不可中断状态与僵尸进程
This commit is contained in:
parent
ab8361a155
commit
20d3582222
@ -2,7 +2,22 @@
|
||||
|
||||
当 iowait 升高时,进程很可能因为得不到硬件的响应,而长时间处于不可中断状态。从 ps 或者 top 命令的输出中,可以发现它们都处于 D 状态,也就是不可中断状态 (Uninterruptible Sleep)。
|
||||
|
||||
不可中断状态,表示进程正在跟硬件交互,为了保护进程数据和硬件的一致性,系统不 允许其他进程或中断打断这个进程。进程长时间处于不可中断状态,通常表示系统有 I/O 性能问题。
|
||||
不可中断状态,表示进程正在跟硬件交互,为了保护进程数据和硬件的一致性,系统不允许其他进程或中断打断这个进程。进程长时间处于不可中断状态,通常表示系统有 I/O 性能问题。
|
||||
|
||||
中断其实是一种异步的事件处理机制,可以提高系统的并发处理 能力。
|
||||
|
||||
由于中断处理程序会打断其他进程的运行,所以,为了减少对正常进程运行调度的影响,中断处理程序就需要尽可能快地运行。如果中断本身要做的事情不多,那么处理起来也不 会有太大问题;但如果中断要处理的事情很多,中断服务程序就有可能要运行很长时间。
|
||||
|
||||
特别是,中断处理程序在响应中断时,还会临时关闭中断。这就会导致上一次中断处理完成之前,其他中断都不能响应,也就是说中断有可能会丢失。
|
||||
|
||||
Linux 将中断处理过程分成了两个阶段,也就是上半部和下半部:
|
||||
|
||||
- 上半部直接处理硬件请求,也就是我们常说的硬中断,特点是快速执行;
|
||||
|
||||
- 而下半部则是由内核触发,也就是我们常说的软中断,特点是延迟执行。
|
||||
|
||||
Linux 中的软中断包括网络收发、定时、调度、RCU 锁等各种类型,可以通过查看 /proc/softirqs 来观察软中断的运行情况。
|
||||
|
||||
|
||||
## 什么是僵死(僵尸)进程
|
||||
|
||||
@ -61,4 +76,4 @@ root 12913 0.0 0.0 12944 928 pts/1 S+ 21:55 0:00 grep --color=au
|
||||
|
||||
进程组和会话。它们用来管理一组相互关联的进程,进程组表示一组相互关联的进程,比如每个子进程都是父进程所在组的成员;而会话是指共享同一个控制终端的一个或多个进程组。
|
||||
|
||||
比如,我们通过 SSH 登录服务器,就会打开一个控制终端(TTY),这个控制终端就对应 一个会话。而我们在终端中运行的命令以及它们的子进程,就构成了一个个的进程组,其 中,在后台运行的命令,构成后台进程组;在前台运行的命令,构成前台进程组。
|
||||
比如,我们通过 SSH 登录服务器,就会打开一个控制终端(TTY),这个控制终端就对应 一个会话。而我们在终端中运行的命令以及它们的子进程,就构成了一个个的进程组,其中,在后台运行的命令,构成后台进程组;在前台运行的命令,构成前台进程组。
|
Loading…
x
Reference in New Issue
Block a user