O que causa a alternância de contexto no Windows?

1

No contexto do Linux, a comutação pode ocorrer porque um aplicativo faz uma chamada ao sistema ou porque o planejador troca os processos da CPU por outro processo.

No Windows, quais são as possíveis causas de uma alternância de contexto? Especificamente, a partir da literatura que li, a alta contagem de threads é a única causa de alta alternância de contexto em que me deparei até agora. Existem outros?

Finalmente, o custo de trocar dois threads do mesmo processo é diferente do custo de trocar dois processos diferentes?

    
por splattne 17.02.2010 / 22:24

4 respostas

5

A capacidade de fazer comutação de contexto é um componente essencial para qualquer sistema operacional multitarefa. O mesmo tipo de coisas que causam mudança de contexto no Linux também causaria mudança de contexto no Windows.

Tudo o que uma alta contagem de threads significa é que a CPU será forçada a alternar contextos com mais frequência para atender aos requisitos de processamento do agendador.

    
por 17.02.2010 / 22:45
3

Finally, is the cost of swapping out two threads of the same process different than the cost of swaping out two different processes?

Sim, é diferente. Dois threads dentro de um processo compartilham o mesmo espaço de endereço virtual, portanto, uma alternância de contexto entre fluxos de dados dentro do mesmo processo não precisa invalidar a conversão de virtual para físico. Uma alternância de contexto entre encadeamentos de processos diferentes deve invalidar o atual mapeamento de conversão VA-para-PA. Esta tradução ocorre no processador registros TLB e, tradicionalmente, um switch de contexto incorreu em um flush TLB, que é caro como o novo processo começará lentamente a reconstruir as entradas do TLB gerando falhas de página suaves. Embora as CPUs modernas tenham estratégias mais inteligentes para lidar com esse problema, consulte o parágrafo Context Switch no link da Wikipedia acima.

    
por 17.02.2010 / 23:56
2

Comutação de contexto é o ato de salvar o estado atual dos encadeamentos em execução, de modo que ele possa restaurar o estado de um encadeamento diferente para que ele possa ser executado no processo. Ocorre a critério do despachante do kernel.

O dispatcher do kernel executa o agendamento de threads e a alternância de contexto. O dispatcher pode chamar switches de thread por vários motivos:

  • O quantum de um thread acabou. Um quantum é a quantidade de tempo selecionada que um encadeamento pode executar antes de ser trocado por um encadeamento com a mesma prioridade.
  • Outro processo de prioridade mais alta pode precisar de acesso ao processador e antecipar o atual
  • A prioridade atual dos tópicos cai por meio da ação do programa ou do sistema operacional
  • A afinidade do processador do encadeamento muda
por 17.02.2010 / 23:43
1

Do livro de internautas do Windows, quinta edição :

context switch The procedure of saving the volatile machine state associated with a running thread, loading another thread's volatile state, and starting the new thread's execution.

process The virtual address space and control information necessary for the execution of a set of thread objects.

thread An entity within a process that Windows schedules for execution. A thread includes the contents of a set of volatile registers representing the state of the processor; two stacks, one for the thread to use while executing in kernel mode and one for executing in user mode; a private storage area for use by subsystems, run-time libraries, and DLLs; and a unique identifier called a thread ID (also internally called a client iD).

Se você quiser mergulhar ainda mais nisso, há um capítulo disponível para download em formato PDF Capítulo 5: Processos, Threads e Jobs .

    
por 17.02.2010 / 23:44