O que é Mudança de Contexto no Sistema Operacional?
No Sistema Operacional, há casos em que você tem que trazer de volta o processo que está no estado de execução para algum outro estado como estado pronto ou estado de espera/bloqueio. Se o processo em execução quiser realizar alguma operação de E/S, então você tem que remover o processo do estado em execução e depois colocar o processo na fila de E/S. Algumas vezes, o processo pode estar usando um algoritmo de agendamento de round-robin onde após cada quantum de tempo fixo, o processo tem que voltar para o estado pronto do estado de execução. Portanto, essas mudanças de processo são feitas com a ajuda da Mudança de Contexto. Neste blog, vamos aprender sobre o conceito de Context Switching no Sistema Operacional e também vamos aprender sobre as vantagens e desvantagens do Context Switching. Então, vamos começar.
O que é Mudança de Contexto?
A mudança de contexto é um processo que envolve a mudança da CPU de um processo ou tarefa para outro. Neste fenômeno, a execução do processo que está presente no estado de execução é suspensa pelo kernel e outro processo que está presente no estado pronto é executado pela CPU.
É uma das características essenciais do sistema operacional multitarefa. Os processos são trocados tão rapidamente que dá uma ilusão ao usuário que todos os processos estão sendo executados ao mesmo tempo.
Mas o processo de troca de contexto envolveu uma série de passos que precisam ser seguidos. Você não pode mudar diretamente um processo do estado de execução para o estado de pronto. Você tem que salvar o contexto desse processo. Se você não estiver salvando o contexto de nenhum processo P, então após algum tempo, quando o processo P vier na CPU para execução novamente, então o processo começará a ser executado a partir do início. Mas na realidade, ele deve continuar a partir daquele ponto em que deixou a CPU em sua execução anterior. Assim, o contexto do processo deve ser salvo antes de colocar qualquer outro processo em execução.
Um contexto é o conteúdo dos registros de uma CPU e contador de programas em qualquer ponto do tempo. A mudança de contexto pode acontecer devido às seguintes razões:
- Quando um processo de alta prioridade vem no estado de pronto. Neste caso, a execução do processo em execução deve ser interrompida e o processo de maior prioridade deve receber a CPU para execução.
- Quando ocorre uma interrupção, então o processo no estado de execução deve ser interrompido e a CPU deve lidar com a interrupção antes de fazer algo mais.
- Quando uma transição entre o modo usuário e o modo kernel é necessária então você tem que executar a mudança de contexto.
Passos envolvidos na mudança de contexto
O processo de mudança de contexto envolve uma série de passos. O diagrama seguinte descreve o processo de mudança de contexto entre os dois processos P1 e P2.
Na figura acima, você pode ver que inicialmente, o processo P1 está no estado de execução e o processo P2 está no estado pronto. Agora, quando ocorre alguma interrupção, então você tem que mudar o processo P1 de execução para o estado pronto após salvar o contexto e o processo P2 do estado pronto para execução. Os seguintes passos serão executados:
- Primeiro, o contexto do processo P1, ou seja, o processo presente no estado de execução será salvo no bloco de controle do processo P1, ou seja, PCB1.
- Agora, você tem que mover a PCB1 para a fila i relevante.e. fila pronta, fila E/S, fila de espera, etc.
- Do estado pronto, selecione o novo processo a ser executado, ou seja, o processo P2.
- Agora, atualize o Bloco de Controle de Processo do processo P2, ou seja, PCB2, configurando o estado do processo para execução. Se o processo P2 foi executado anteriormente pela CPU, então você pode obter a posição da última instrução executada para que você possa retomar a execução de P2.
- Simplesmente, se você quiser executar o processo P1 novamente, então você tem que seguir os mesmos passos como mencionado acima(do passo 1 ao 4).
Para que a mudança de contexto aconteça, são necessários pelo menos dois processos em geral, e no caso do algoritmo round-robin, você pode executar a mudança de contexto com a ajuda de um único processo.
O tempo envolvido na mudança de contexto de um processo por outro chama-se Tempo de Mudança de Contexto.
Vantagem da Mudança de Contexto
A mudança de contexto é usada para realizar multitarefas, ou seja, multiprogramação com time-sharing(saiba mais sobre multitarefas aqui). Multitarefa dá uma ilusão aos usuários de que mais de um processo está sendo executado ao mesmo tempo. Mas na realidade, apenas uma tarefa está a ser executada num determinado instante de tempo por um processador. Aqui, a mudança de contexto é tão rápida que o usuário sente que a CPU está executando mais de uma tarefa ao mesmo tempo.
A desvantagem da mudança de contexto
A desvantagem da mudança de contexto é que ela requer algum tempo para a mudança de contexto, ou seja, o tempo de mudança de contexto. O tempo é necessário para salvar o contexto de um processo que está no estado de execução e depois obter o contexto de outro processo que está prestes a entrar no estado de execução. Durante esse tempo, não há nenhum trabalho útil feito pela CPU do ponto de vista do usuário. Então, a mudança de contexto é pura sobrecarga nesta condição.
É isso para este blog. Espero que tenha gostado deste blog.