2012-04-15 5 views
3

enter image description hereUnix процессов Диаграмма путаницы

Можете ли вы сказать мне, в чем разница между двумя красными стрелками на диаграмме процесса Unix? Почему выгруженный процесс переходит непосредственно к пользователю без перенастройки? Я не совсем понимаю. Почему превентивные и готовые к запуску в Memery связаны с пунктирной линией? Спасибо заранее.

+0

На мой взгляд, это не тема. Этот вопрос пришел мне на ум, изучая перед экзаменом Unix <>. –

ответ

1

Выбранный процесс - это, готовый к запуску в памяти, поэтому на этой диаграмме есть пунктирная линия между состояниями «Принудительная» и «Готов к работе в памяти». Процессор с интенсивным использованием ЦП обычно выполняет работу и использует процессор для всего временного среза, пока таймер не срабатывает на аппаратном уровне и заставляет ядро ​​упредить процесс. Это не делает процесс менее подготовленным к запуску, потому что в процессе вытеснения процесса ядро ​​сохраняет все необходимые ему структуры данных для контекстного коммутатора.

Однако выгруженный процесс не обязательно готов к работе в режиме пользователя.. Вместо этого ядро ​​может вытеснить себя, потому что ядро ​​выполняет некоторую работу при поступлении сетевого пакета или завершении чтения диска или при срабатывании таймера, или какое-то другое событие вызывает приостановку. Если процесс был изначально запущен в пользовательском режиме, когда он был выгружен (ситуация, описанная в первом абзаце), тогда он возвращается в пользовательский режим всякий раз, когда планировщик решает, что он должен запускаться снова. Это самая красная красная стрелка. С другой стороны, если процесс был выгружен во время работы в режиме ядра, он возвращается в режим ядра всякий раз, когда планировщик решает, что он должен запускаться снова. Это другая красная стрелка.

+0

@MaciejZiarko Планировщик управляет процессами * all *, поэтому в обоих случаях планировщик запускается до того, как процесс снова запустится. Однако разница между запуском в пользовательском режиме (через «возврат к пользователю») и запуском в режиме ядра (через «перепланировать»). –

+0

ОК, я понимаю, что вы имеете в виду, и вы действительно помогли мне. Но я думаю, что эта часть диаграммы сбивает с толку. Благодаря! –

+0

Диаграмма предполагает, что запуск пользовательского процесса выгружен через режим ядра (без прямой стрелки до preempetd), но при возвращении к запущенному пользователю он не нуждается в режиме ядра. Это правда? Выполняется ли планировщик в модели ядра? Я думаю так. –

0

ИМХО Диаграмма фиктивная. Должен быть конец зомби-процессам, но нет. В противном случае циклы-зомби будут накапливаться, а они нет.

+0

Все завершенные процессы - это зомби, пока они не получат их родительские процессы. –

+0

Да, но с учетом диаграммы состояния можно было бы вывести ** все состояния **, включая конечные/терминальные состояния, даже если они имеют вид * конца состояния *. – wildplasser

+1

Состояние после того, как процесс уничтожен, не происходит, и это происходит, когда оно было исправлено родителем после его завершения. –

Смежные вопросы