Не могу понять я другой иногда встречающейся ситуации.
Вот программа, и она тормозит - уже довольно долго делает что-то, не требующее вмешательства пользователя. При этом значительную часть времени процессор не загружен (ни даже на четверть ядра, я понимаю что большинство программ до сих пор однопоточные и более одного ядра загрузить не могут), дисковой активности нет или её мало, сетевой активности не предполагается... но _что же она тогда делает_?
Ведь программа может либо "работать" (выполнять код), загружая при этом процессор, либо "ждать" внешнего события (ввода-вывода, освобождения ресурса). Пользователя она не ждёт, дискового ввода-вывода нет, сетевого тоже, если предположить что она ждёт какой-то ресурс - то в этот момент должен работать (занимать процессор или i/o) текущий владелец ресурса... но чего-то же она ждёт. Чего???