Переключение контекста на спящих / ожидающих потоках

Я пытаюсь понять, как операционные системы управляют переключением контекста в разных моделях, чтобы лучше понять, почему производительность NIO лучше в случае больших пиков в количестве запросов. Помимо того факта, что количество потоков может быть ограничено, мне любопытно, как блокирующие операции, выполняемые в таком большом количестве запросов, могут влиять на использование ресурсов.

В модели «один запрос на поток», скажем, веб-приложение на основе сервлета 2.5, если 499 потоков ожидают ввода-вывода базы данных и требуется работа только одного потока, переключается ли контекст ОС между всеми этими 500 потоками, пытаясь найти тот, который требует работы ? Чтобы выполнить переключение контекста, операционная система должна сохранить состояние текущего потока и восстановить состояние следующего потока. После этого ОС обнаружит, что ей не требуется процессорное время, и продолжит переключение контекста, пока не найдет поток, который нуждается в работе. Кроме того, как это выглядит с точки зрения использования сервера? Низок ли процессор, так как он в основном просто связан с затратами на ввод-вывод в обмене контекстами вместо того, чтобы что-то вычислять?

Заранее благодарю за любую помощь. Если вы можете указать мне направление книг, учебников и т. Д., Я был бы очень признателен за это.

Ответы на вопрос(1)

Ваш ответ на вопрос