Processos e tópicos em Sistemas Operacionais (SO) sempre foram alguns dos meus tópicos favoritos em Informática. Eles permitem-lhe compreender, de uma forma muito mais profunda, como o SO gere os programas durante as suas diferentes fases de execução, resolver problemas de memória e garantir uma segurança isolada até ao kernel. É muito interessante!
A ideia básica
Um processo é simplesmente um programa em execução. Um programa tem estritamente um processo associado a ele. Em casos muito raros isto pode nem sempre ser verdade (Google Chrome como exemplo), mas isto é verdade na maioria das vezes.
Um processo pode estar num determinado estado em qualquer altura. Pode ter acabado de ser criado, à espera de ser executado, à espera de acesso a algum dispositivo de E/S, interrompido por algum outro processo, etc. Para garantir a máxima produtividade, o sistema operacional precisa entender o estado de todos esses processos e ser capaz de criar novos processos de forma inteligente, alternar entre eles, pausá-los, suspendê-los, etc., nos momentos certos.
Para fazer isto eficazmente, o sistema operacional mantém o que é conhecido como um Bloco de Controle de Processo para cada processo. Ele contém informações úteis como o estado atual do processo, a próxima instrução a executar e os dispositivos alocados atualmente ao processo.
Isso permite ao sistema operacional gerenciar diferentes processos de forma eficaz, salvando o estado atual na PCB, alternando entre eles e recarregando determinados processos posteriormente.
Como o sistema operacional comuta entre diferentes processos
Comutação de contexto refere-se à atividade específica onde um sistema operacional salva o estado de um processo em execução e o pausa para executar outro processo. Deve fazê-lo de forma a garantir que estes processos não entrem em conflito e que o processo salvo possa ser retomado mais tarde sem problemas. Isto garante uma característica chave nos sistemas operacionais: o multitarefa. O diagrama mostra como o PCB é usado para salvar o estado do processo, executar outro, e depois recarregar e continuar o processo inicial mais tarde.