Introdução aos Sistemas Operacionais/Gerência de Processos
Introdução
[editar | editar código-fonte]O conceito de processo é a base para a implementação de um sistema
multiprogramável. O processador é projetado apenas para executar
instruções, não se importando com qual programa esteja em execução ou
qual o seu conteúdo. O sistema operacional por sua vez, é o responsável
por gerenciar qual programa está em execução e é, também, o
responsável por controlar o uso concorrente do processador.
A gerência de processos é uma das principais funções do sistema
operacional. Através dos processos, um programa pode alocar recursos,
compartilhar dados, trocar informações, etc. Nos sistemas multiprogramáveis,
os processos são executados concorrentemente, compartilhando o uso do
processador, da memória principal e os dispositivos e Entrada/Saída. Nos
sistemas com múltiplos processadores ou com vários núcleos, além da
execução de processos concorrentemente ocorre também a execução
simultânea de processos nos diversos processadores do sistema
-
Gerenciador de Processos do Windows
Estrutura do Processo - Contexto
[editar | editar código-fonte]Um processo pode ser entendido como um programa que está em
execução. Em sistemas multiusuário, cada usuário é associado a um
processo. O processador executa o programa do usuário em um determinado
intervalo de tempo e, no instante seguinte, poderá executar outro programa, de
outro usuário.
Um processo também pode ser definido como o ambiente onde o
programa é executado. Este ambiente, além das informações importantes a
execução do programa, possui também informações relativas aos recursos que
o programa pode utilizar como espaço de endereçamento, uso do processador,
área em disco, etc. Se um programa necessitar utilizar uma área em disco
superior ao seu limite estipulado, o sistema operacional interrompe a execução
do programa por falta de recursos.
Para que a troca de processos ocorra sem problema, todas as informações do processo interrompido devem ser guardadas. Essas informações são denominadas: Contexto.
Um processo é formado por três partes, que juntas mantêm as informações necessárias à execução de um programa.
Essas três partes são:
– Contexto de hardware
– Contexto de software
– Espaço de endereçamento
Ao lado, uma imagem que ilustra os três contextos de um processo. Vamos falar de cada um deles detalhadamente:
Contexto de Hardware:
O contexto de hardware armazena o conteúdo dos registradores gerais da CPU,
além dos registradores de uso específico, como o program
counter(PC), o stack point(SP) e o registrador de status. Quando um processo
esta em execução, o seu contexto de hardware está armazenado nos
registradores da CPU. No momento em que ocorre a troca de processo, o
sistema salva as informações do contexto de hardware do processo.
Para que a troca de programas ocorra sem problemas, é necessário que
todas as informações do programa interrompido sejam armazenadas para que,
quando o programa retorne a execução possa continuar exatamente de onde
parou. A troca de um processo por outro, comandada pelo sistema operacional,
é denominada mudança de contexto. A mudança de contexto consiste em
salvar o conteúdo dos registradores do processo que esta deixando a CPU
para carregá-los com os valores referentes ao do novo processo que será
executado. Essa operação consiste em trocar um contexto de hardware de um
processo por outro.
Contexto de Software:
No contexto de software são especificados características e limites de
recursos que podem ser alocados pelo processo, como o número máximo de
arquivos abertos simultaneamente, prioridade de execução e tamanho do
buffer. Muitas destas características são determinadas no momento da criação
do processo, enquanto outras podem ser alteradas durante a execução.
O contexto de software é composto por três grupos de informações
sobre o processo: identificação, cotas e privilégios.
Estados do Processo
[editar | editar código-fonte]
Em um sistema multiprogramável, os processos passam por diferentes
estados ao longo do seu processamento, seja em função de eventos gerados
pelo sistema operacional, seja pelo próprio processo. Um processo ativo pode
ter três estados diferentes:
- Execução (running)
Um processo está estado de execução quando está sendo
processado efetivamente pela CPU, ou seja, utilizando o processador. Em
sistemas com um único processador, somente um processo pode estar em
estado de execução em um dado instante. Em sistemas com mais de uma CPU ou com CPU com mais de um núcleo, o número de processos que pode estar
em estado de execução ao mesmo tempo é igual ao número de processadores
existentes. Neste tipo de sistema, também é possível que um mesmo processo
esteja sendo executado em mais de um processador ao mesmo tempo.
- Pronto (ready)
Um processo está no estado de pronto quando aguarda para ser
executado. O sistema operacional é o responsável por determinar a ordem e os
critérios pelos quais os processos em estado de pronto devem fazer uso do GPU
Podem existir diversos processos em estado de pronto aguardando para
serem executados. Estes processos são organizados em uma lista encadeada
e são ordenados pela sua importância, permitindo que os processos com
prioridade mais alta sejam executados primeiro.
- Espera (waiter)
Um processo no estado de espera aguarda por algum evento externo ou
por algum recurso para continuar sua execução, como por exemplo,
aguardando alguma operação de entrada/saída.
Os processos no estado de espera também são organizados em uma
lista encadeada e, assim que o evento esperado aconteça, o processo que
aguardava o evento é então transferido para o estado de pronto.