A troca de contexto é uma técnica ou método usado pelo sistema operacional para mudar um processo de um estado para outro para executar sua função usando CPUs no sistema. Ao alternar o desempenho no sistema, ele armazena o status do antigo processo em execução na forma de registros e atribui a CPU a um novo processo para executar suas tarefas. Enquanto um novo processo está em execução no sistema, o processo anterior deve aguardar em uma fila de prontidão. A execução do processo antigo começa no ponto onde outro processo o interrompeu. Ele define as características de um sistema operacional multitarefa em que vários processos compartilham a mesma CPU para realizar diversas tarefas sem a necessidade de processadores adicionais no sistema.
A necessidade de mudança de contexto
Uma troca de contexto ajuda a compartilhar uma única CPU entre todos os processos para completar sua execução e armazenar o status das tarefas do sistema. Quando o processo é recarregado no sistema, a execução do processo inicia no mesmo ponto onde há conflito.
A seguir estão os motivos que descrevem a necessidade de troca de contexto no sistema operacional.
- A mudança de um processo para outro não ocorre diretamente no sistema. Uma troca de contexto ajuda o sistema operacional que alterna entre os vários processos a usar os recursos da CPU para realizar suas tarefas e armazenar seu contexto. Podemos retomar o atendimento do processo no mesmo ponto posteriormente. Se não armazenarmos os dados ou contexto do processo em execução no momento, os dados armazenados poderão ser perdidos durante a alternância entre processos.
- Se um processo de alta prioridade cair na fila de prontos, o processo atualmente em execução será encerrado ou interrompido por um processo de alta prioridade para completar suas tarefas no sistema.
- Se algum processo em execução exigir recursos de E/S no sistema, o processo atual será trocado por outro processo para usar as CPUs. E quando o requisito de E/S é atendido, o processo antigo entra em estado pronto para aguardar sua execução na CPU. A troca de contexto armazena o estado do processo para retomar suas tarefas em um sistema operacional. Caso contrário, o processo precisa reiniciar sua execução a partir do nível inicial.
- Se ocorrer alguma interrupção durante a execução de um processo no sistema operacional, o status do processo será salvo como registros usando a alternância de contexto. Após resolver as interrupções, o processo passa do estado de espera para o estado de prontidão para retomar sua execução posteriormente no mesmo ponto onde ocorre a interrupção do sistema operacional.
- Uma troca de contexto permite que uma única CPU lide com várias solicitações de processo simultaneamente, sem a necessidade de processadores adicionais.
Exemplo de mudança de contexto
Suponha que vários processos sejam armazenados em um Bloco de Controle de Processo (PCB). Um processo está em estado de execução para executar sua tarefa com o uso de CPUs. À medida que o processo está em execução, outro processo chega à fila de prontos, que tem alta prioridade de conclusão de sua tarefa utilizando CPU. Aqui usamos a troca de contexto que alterna o processo atual com o novo processo, exigindo que a CPU conclua suas tarefas. Ao mudar o processo, uma mudança de contexto salva o status do processo antigo nos registradores. Quando o processo é recarregado na CPU, ele inicia a execução do processo quando o novo processo interrompe o processo antigo. Se não salvarmos o estado do processo, teremos que iniciar sua execução no nível inicial. Dessa forma, a troca de contexto ajuda o sistema operacional a alternar entre os processos, armazenar ou recarregar o processo quando for necessário executar suas tarefas.
Gatilhos de troca de contexto
A seguir estão os três tipos de gatilhos de troca de contexto, como segue.
- Interrupções
- Multitarefa
- Troca de kernel/usuário
Interrupções : Uma CPU solicita a leitura dos dados de um disco e, se houver alguma interrupção, a troca de contexto alterna automaticamente uma parte do hardware que requer menos tempo para lidar com as interrupções.
Multitarefa : Uma troca de contexto é a característica da multitarefa que permite que o processo seja alternado da CPU para que outro processo possa ser executado. Ao alternar o processo, o estado antigo é salvo para retomar a execução do processo no mesmo ponto do sistema.
Kernel/troca de usuário : É usado nos sistemas operacionais ao alternar entre o modo de usuário e o modo kernel/usuário é executado.
O que é o PCB?
Um PCB (Process Control Block) é uma estrutura de dados usada no sistema operacional para armazenar todas as informações relacionadas aos dados do processo. Por exemplo, quando um processo é criado no sistema operacional, informações atualizadas do processo, trocando informações do processo, processo finalizado no PCB.
Etapas para mudança de contexto
Existem várias etapas envolvidas na mudança de contexto dos processos. O diagrama a seguir representa a comutação de contexto de dois processos, P1 para P2, quando ocorre uma interrupção, necessidade de E/S ou processo baseado em prioridade na fila de prontidão do PCB.
Como podemos ver no diagrama, inicialmente o processo P1 está rodando na CPU para executar sua tarefa e, ao mesmo tempo, outro processo, P2, está no estado pronto. Se ocorreu um erro ou interrupção ou o processo requer entrada/saída, o processo P1 muda seu estado de execução para estado de espera. Antes de alterar o estado do processo P1, a troca de contexto salva o contexto do processo P1 na forma de registradores e o contador do programa no PCB1 . Depois disso, carrega o estado do processo P2 do estado pronto do PCB2 para o estado de execução.
As etapas a seguir são executadas ao alternar o Processo P1 para o Processo 2:
- Primeiro, a troca de contexto precisa salvar o estado do processo P1 na forma do contador de programa e dos registradores no PCB (Program Counter Block), que está no estado de execução.
- Agora atualize o PCB1 para o processo P1 e mova o processo para a fila apropriada, como a fila de prontos, a fila de E/S e a fila de espera.
- Depois disso, outro processo entra no estado de execução, ou podemos selecionar um novo processo do estado pronto, que deve ser executado, ou o processo tem alta prioridade para executar sua tarefa.
- Agora, temos que atualizar o PCB (Process Control Block) para o processo P2 selecionado. Inclui mudar o estado do processo de pronto para estado em execução ou de outro estado como bloqueado, saída ou suspensão.
- Se a CPU já executa o processo P2, precisamos obter o status do processo P2 para retomar sua execução no mesmo momento em que ocorre a interrupção do sistema.
Da mesma forma, o processo P2 é desligado da CPU para que o processo P1 possa retomar a execução. O processo P1 é recarregado do PCB1 para o estado de execução para retomar sua tarefa no mesmo ponto. Caso contrário, a informação é perdida e, quando o processo é executado novamente, ele inicia a execução no nível inicial.