Linux进程状态

S(TASK_INTERRUPTIBLE),可中断的睡眠状态。处于这个状态的进程因为等待事件的发生(比如等待socket连接、等待信号量),而被挂起。这些进程的task_struct结构被放入对应事件的等待队列中。当这些事件发生时(由外部中断触发、或由其他进程触发),对应的等待队列中的一个或多个进程将被唤醒。
D(TASK_UNINTERRUTIBLE),不可中断的睡眠状态。不可中断,指的并不是CPU不响应外部硬件的中断,而是指进程不响应异步信号。
在进程对某些硬件进行操作时(比如进程调用read对某个设备文件进行读操作,而read系统调用最终执行到对应设备驱动的代码,并与对应的物理设备进行交互),可能需要使用TASK_UNINTERRUPTIBLE状态对进程进行保护,以避免进程与设备间的过程被打断,造成设备陷入不可控的状态。
Linux系统中也存在容易捕捉的TASK_UNINTERRUPTIBLE状态。执行vfork系统调用后,父进程将进入TASK_UNINTERRUPTIBLE状态,直到子进程调用exit或exec。
D状态,往往由于I/O资源得不到满足而引发等待。
du – estimate file space usage
du命令会对统计文件逐个调用fstat这个系统调用
df -report file system disk space usage
df命令使用statfs这个系统调用

Leave a Comment

Your email address will not be published. Required fields are marked *

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据