进程在等待某些东西(通常是I / O)时会进入睡眠状态。
当您的进程S
正在执行可能阻止的读取操作时,它将处于状态。在等待信号量或其他同步原语时也可能发生。
您无法“唤醒”-它只会在等待的数据/资源可用时继续进行。
这都是正常现象,并非正常现象。通常,此“程序”在没有文件的命令行上运行:
while (<>) { print; }
会将其大部分时间都用在睡眠状态,这很好-您不希望它在等待用户输入时浪费CPU。
如果您认为这是一个问题,请尝试更改I / O的方式(读取较大的块,以底层设备块大小的整数倍读取,执行内存映射的I / O等)。