Estados, Criação e Término de Processos
Classificado em Computação
Escrito em em
português com um tamanho de 3,78 KB
Estados dos Processos
1. Em execução: Realmente usando a CPU naquele momento.
2. Pronto: Executável, temporariamente parada para dar lugar a outro processo.
3. Bloqueado: Incapaz de executar enquanto não ocorre um evento externo.
Casos de Transição de Estado
Caso 1: O sistema operacional descobre que um processo não pode prosseguir.
Casos 2 e 3: Causados pelo escalonador, sem que o sistema saiba:
- Caso 2: O escalonador decide que o processo já teve tempo suficiente de CPU e aloca o tempo de CPU para outro processo.
- Caso 3: Ocorre quando todos os processos já obtiveram o tempo de CPU de maneira justa, e é hora de voltar para o 1º processo.
Caso 4: Evento externo (como chegada de uma entrada). Se nenhum processo estiver executando neste momento, o processo passa para o estado “pronto” e, por sua vez, para “em execução”.
Criação de Processos
Início do sistema: Quando o SO é carregado, inicializam-se vários processos, alguns em primeiro plano e outros em segundo plano (processos usados por vários usuários).
Execução de uma chamada de sistema de criação de processo por um processo em execução. Esse processo é interessante quando a tarefa a ser executada puder ser dividida em vários processos menores, em ambientes multiprocessadores, permitindo que essas tarefas sejam executadas em CPUs diferentes.
Requisição de um usuário para criar novo processo: Em sistemas interativos, o usuário pode solicitar o início de um novo processo, digitando um comando ou clicando duas vezes sobre ele.
Início de tarefa em lote: Um novo processo (filho) é criado através de uma chamada de sistema de um processo já existente (Pai).
Término de Processos
- Saída normal (Voluntária): Processo termina porque acabou seu trabalho.
- Saída por Erro (Voluntária): Usuário digita um comando errado.
- Erro fatal (Involuntário): Erro causado pelo processo (“erro de programa”).
- Cancelamento por outro Processo: Um processo “que tem permissão” solicita, através de uma chamada de sistema, a finalização de outro processo.
Comunicação entre Processos
Como um processo passa informação para o outro e como garantir que os dois processos não entrem em conflito. É necessária uma sequência adequada quando existirem dependências (se A produz dados e B imprime, B deve esperar até que A produza os dados para imprimir).
Condição de Corrida
Uma condição de corrida é uma falha num sistema ou processo em que o resultado do processo é inesperadamente dependente da sequência ou sincronia de outros eventos. Apesar de ser conhecido em português por 'condição de corrida', uma tradução melhor seria 'condição de concorrência', pois o problema está relacionado justamente ao gerenciamento da concorrência entre processos teoricamente simultâneos. O fenômeno pode ocorrer em sistemas eletrônicos, especialmente em circuitos lógicos, e em programas de computador, especialmente no uso de multitarefa ou computação distribuída.
Como Evitar
Quando o processo estiver em uma região crítica, nenhum outro processo poderá entrar nessa região.
Diferença entre Processo e Thread
- Threads compartilham o espaço de memória (threads pertencentes a um mesmo processo).
- Os processos têm espaços de memória independentes e quase sempre não têm acesso ao espaço de outros processos.