cpu所处的状态细分为这么几种
user: cpu在处理用户态(没有配置nice)进程的任务
sys:cpu在处理内核态(不包括硬中断和软中断)进程的任务。(往往是系统调用陷入内核执行,如spinlock)
nice: cpu在处理设置有nice的用户态进程的任务
idle:cpu闲置(且没有进程在等待IO)
wait:cpu闲置(至少有一个进程在等待IO)
hi:cpu处理硬中断
si:cpu处理软中断
举一个用户程序read磁盘文件的例子,用户态程序启动时,进程在用户态,此时的cpu消耗统计在user里,当执行read系统调用时,进程陷入内核态,cpu消耗统计在sys里,然后read请求插入磁盘队列,进程处于S(可中断睡眠)状态,IO调度程序调度该IO请求,并开始DMA读数据,此时进程处于D(不可中断睡眠)状态,当DMA数据传输完成,触发硬件中断,执行硬中断上下文,此时cpu消耗统计在hi,中断上下文唤醒等待的进程(进程进入就绪状态,当CPU切片时间到,进程进入运行态),此时进程回到sys态,拷贝数据到用户态内存,然后系统调用返回,进程重新进入用户态
本文详细解释了CPU在处理不同状态下的任务,如用户态(未配置nice的进程)、内核态(系统调用)、nice设置的用户态、空闲状态(idle和wait),以及在磁盘I/O操作中涉及的硬中断和软中断。以read文件为例,展示了从用户态到内核态,再到中断处理的完整流程。
2万+

被折叠的 条评论
为什么被折叠?



