Блокировка звонков и планировщик Linux - PullRequest
2 голосов
/ 23 ноября 2011

Передает ли планировщик Linux управление другим процессом, в то время как текущий ожидает в select (), poll () или других операциях сокета в синхронном (блокирующем) режиме?Каково состояние процесса, пока он ждет?Как именно он проснулся?

есть версия, в которой процесс находится в «спящем» состоянии, он активируется активацией ядра с помощью WCHAN, и да, операционная система будет планировать запуск других процессов, пока один из них заблокирован на IO.этот вариант правильный?Знаете, что я должен / могу прочитать?

1 Ответ

1 голос
/ 23 ноября 2011

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

...