O que é Comutação de Contexto no Sistema Operacional?

Context Switching envolve o armazenamento do contexto ou estado de um processo para que ele possa ser recarregado quando necessário e a execução possa ser retomada a partir do mesmo ponto que anteriormente. Esta é uma característica de um sistema operacional multitarefa e permite que uma única CPU seja compartilhada por múltiplos processos.

Um diagrama que demonstra a mudança de contexto é o seguinte –

No diagrama acima, inicialmente o Processo 1 está em execução. O Processo 1 é comutado e o Processo 2 é comutado por causa de uma interrupção ou de uma chamada de sistema. A comutação de contexto envolve salvar o estado do Processo 1 em PCB1 e carregar o estado do Processo 2 a partir da PCB2. Após algum tempo ocorre novamente uma comutação de contexto e o Processo 2 é comutado para fora e o Processo 1 é comutado para dentro novamente. Isto envolve salvar o estado do Processo 2 na PCB2 e carregar o estado do Processo 1 da PCB1.

Acionadores de Comutação de Contexto

Existem três grandes gatilhos para a comutação de contexto. Estes são dados da seguinte forma –

  • Multitasking: Em um ambiente multitarefa, um processo é trocado para fora da CPU para que outro processo possa ser executado. O estado do processo antigo é salvo e o estado do novo processo é carregado. Em um sistema preemptivo, os processos podem ser trocados pelo agendador.

  • Interrupt Handling: O hardware muda uma parte do contexto quando ocorre uma interrupção. Isto acontece automaticamente. Apenas parte do contexto é alterada para minimizar o tempo necessário para lidar com a interrupção.

  • Comutação de Modo de Usuário e Modo do Kernel: Uma mudança de contexto pode ocorrer quando uma transição entre o modo de usuário e o modo do kernel é necessária no sistema operacional.

Passos da troca de contexto

Os passos envolvidos na troca de contexto são os seguintes –

  • Guardar o contexto do processo que está actualmente em execução na CPU. Atualizar o bloco de controle do processo e outros campos importantes.
  • Mover o bloco de controle do processo acima na fila relevante, como a fila pronta, fila de E/S etc.
  • Selecionar um novo processo para execução.
  • Atualizar o bloco de controle do processo do processo selecionado. Isto inclui atualizar o estado do processo para execução.
  • Atualizar as estruturas de dados de gerenciamento de memória como requerido.
  • Restaurar o contexto do processo que estava sendo executado anteriormente quando é carregado novamente no processador. Isto é feito carregando os valores anteriores do bloco de controle do processo e registros.

Context Switching Cost

Context Switching leva a um custo indireto por causa dos fluxos de TLB, compartilhando o cache entre múltiplas tarefas, executando o agendador de tarefas, etc. A mudança de contexto entre dois threads do mesmo processo é mais rápida do que entre dois processos diferentes, pois os threads têm os mesmos mapas de memória virtual. Devido a esta descarga da TLB não é necessário.

raja

Publicado em 28-Set-2018 15:31:15

Advertisements

Leave a Reply