2013-03-14 4 views
0

У меня есть вопрос относительно функции сна, объявленной в unistd.hВызов вызова функции сна, к которому относится планировщик?

Предположим, мы используем планировщик CFS.

У нас есть процесс, который готов к запуску (позволяет называть это состояние «ГОТОВО»), он выбирается для запуска и теперь работает (так называемое состояние «RUNNING»).

Во время его выполнения в состоянии RUNNING он встречает оператор сна, скажем, спящий (10), который заставляет его спать в течение 10 секунд или до тех пор, пока сигнал не будет доставлен или в зависимости от того, что наступит раньше.

Теперь, когда выполняется спящий режим (10), выполняется процесс в состоянии READY или он возвращается в исходный приоритет в очереди RUNNING или помещается в очередь WAIT.

Я не в состоянии визуализировать правильную последовательность событий. Один мыслимый процесс предполагает, что он остается в очереди READY, в то время как другая мысль заключается в том, что его помещают в очередь WAIT, ожидая истечения срока действия таймера.

Пожалуйста, дайте мне знать, как это будет работать, или если в моем вопросе что-то не так. Спасибо

+1

Это не вопрос. Вы должны точно знать, что такое планировщик. –

+0

@EricUrban: Предположим, что планировщик, основанный на приоритетах, более конкретный планировщик CFS – Rohit

ответ

1

Я считаю, что это зависит от продолжительности сна, то есть, если ожидание занято, то оно может работать, если ожидание длинное, то оно будет в очереди ожидания. Кроме того, вы должны быть в состоянии подтвердить это, поставив процесс на долгий сон и проверив его состояние.

+0

sleep() или любые варианты (например, usleep()) никогда не ожидают ожидания, по крайней мере, не на каких-либо никах или других общих ОС. Они приостанавливают процесс до состояния ожидания, единственным специальным условием является sleep (0), который более или менее просто перенастраивает процесс (то есть не входит в состояние ожидания) – nos

+0

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

+0

Да, как правило, это то, как оно реализовано. но опять же, все зависит от конкретной реализации. – perreal

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