Opções de contexto em threads em espera / espera

Estou tentando entender como os sistemas operacionais lidam com a alternância de contexto em diferentes modelos para entender melhor por que o desempenho da NIO é melhor em casos de grandes picos no número de solicitações. Além do fato de que pode haver um limite para o número de threads, estou curioso para saber como as operações de bloqueio que estão sendo executadas nesse grande número de solicitações podem afetar a utilização de recursos.

Em uma solicitação por modelo de encadeamento, digamos que um aplicativo Web baseado em servlet 2.5, se 499 encadeamentos aguardem a E / S do banco de dados e apenas um encadeamento precise de trabalho, o contexto do SO alterna entre todos os 500 encadeamentos que tentam encontrar o que precisa de trabalho ? Para executar uma alternância de contexto, o sistema operacional deve armazenar o estado do encadeamento atual e restaurar o estado do próximo encadeamento. Depois disso, o sistema operacional descobrirá que não precisa de tempo de CPU e manterá a alternância de contexto até encontrar o encadeamento que precisa funcionar. Além disso, como isso se parece em termos de utilização do servidor? A CPU está baixa, pois está limitada ao custo de IO da troca e devolução de contextos, em vez de realmente calcular alguma coisa?

Agradecemos antecipadamente por qualquer ajuda. Se você puder me apontar na direção de livros, livros didáticos, etc., eu realmente apreciaria isso também.

questionAnswers(1)

yourAnswerToTheQuestion