CCT-UFCA/Ciência da Computação/Sistemas Operacionais/Gerenciamento de Processos
Aparência
Conceito de Processos e Threads
[editar | editar código]- Processo:
- Um processo é uma instância de um programa em execução. Ele inclui o código executável, os dados necessários (variáveis, pilha) e o contexto do processador (valores dos registradores).
- Cada processo possui seu próprio espaço de memória.
Exemplo: Um navegador da web aberto com várias guias é um processo, onde cada aba pode ser gerida separadamente.
- Thread:
- Threads são divisões de um processo que compartilham o mesmo espaço de memória, mas possuem seu próprio contexto de execução.
- Vantagem: Permitem maior eficiência na execução de tarefas concorrentes dentro de um mesmo processo.
Exemplo: Em um editor de texto, uma thread pode cuidar do salvamento automático enquanto outra gerencia a digitação do usuário.
Estados dos Processos e Transições
[editar | editar código]Os processos podem estar em diferentes estados durante sua execução, dependendo do uso de recursos e do escalonamento.
- Estados Principais:
- Novo (New): O processo foi criado, mas ainda não está pronto para executar.
- Pronto (Ready): O processo está aguardando para ser escalonado e usar a CPU.
- Executando (Running): O processo está atualmente usando a CPU.
- Bloqueado (Blocked): O processo está esperando por um evento (como a conclusão de I/O).
- Encerrado (Terminated): O processo terminou sua execução.
- Transições Entre Estados:
- Pronto → Executando: Quando o escalonador atribui a CPU ao processo.
- Executando → Pronto: Quando ocorre uma interrupção, como a preempção.
- Executando → Bloqueado: Quando o processo solicita I/O.
- Bloqueado → Pronto: Quando o evento esperado ocorre.
Exemplo: Em um sistema multitarefa, um editor de texto (pronto) pode ser colocado em execução ao clicar em salvar e, em seguida, bloqueado enquanto espera pela conclusão do I/O do disco.
Escalonamento de Processos e Algoritmos de Escalonamento
[editar | editar código]O escalonador de processos decide a ordem em que os processos terão acesso à CPU. Diferentes algoritmos são usados para otimizar o desempenho.
- Objetivos do Escalonamento:
- Maximizar a utilização da CPU.
- Garantir justiça na alocação de recursos.
- Reduzir tempos de espera e resposta.
- Principais Algoritmos:
- First-Come, First-Served (FCFS): Processos são atendidos na ordem de chegada.
- Desvantagem: Pode causar altos tempos de espera para processos longos.
- Shortest Job Next (SJN): O processo com menor tempo de execução é atendido primeiro.
- Desvantagem: Pode causar starvation (processos longos nunca executam).
- Round Robin (RR): Cada processo recebe um tempo fixo (quantum) para executar.
- Vantagem: Justo para todos os processos.
- Priority Scheduling: Processos com maior prioridade são executados primeiro.
- Desvantagem: Processos de baixa prioridade podem ficar bloqueados.
- Multilevel Queue: Diferentes filas com prioridades diferentes (ex.: interação com usuário e processos em background).
- First-Come, First-Served (FCFS): Processos são atendidos na ordem de chegada.
Exemplo: Em um sistema Round Robin, se cada processo recebe 10ms de quantum, os processos alternam entre si a cada 10ms, garantindo que nenhum monopolize a CPU.
Sincronização e Comunicação entre Processos
[editar | editar código]Quando processos ou threads precisam trabalhar juntos, o sistema operacional oferece mecanismos para sincronização e comunicação.
- Problema Clássico: Processos podem precisar acessar recursos compartilhados, como uma variável, sem causar conflitos.
- Mecanismos de Sincronização:
- Semáforos: Sinalizam o acesso a recursos, bloqueando ou desbloqueando outros processos.
- Mutexes (Mutual Exclusion): Garante que apenas um processo acesse um recurso por vez.
- Monitores: Abstrações de alto nível que oferecem sincronização interna.
- Comunicação entre Processos (IPC):
- Shared Memory (Memória Compartilhada): Processos acessam uma área comum da memória.
- Message Passing (Passagem de Mensagens): Processos enviam e recebem mensagens, evitando acesso direto à memória.
Exemplo: Ao imprimir um documento, um semáforo pode garantir que apenas um processo acesse a impressora por vez.
Tratamento de Deadlocks
[editar | editar código]Um deadlock ocorre quando dois ou mais processos ficam permanentemente bloqueados, esperando por recursos que nunca serão liberados.
- Condições para Deadlock (Banco de Dados de Coffman):
- Exclusão mútua: Um recurso só pode ser usado por um processo por vez.
- Retenção e espera: Processos mantêm recursos já alocados enquanto esperam por novos.
- Não-preempção: Recursos não podem ser retirados à força de um processo.
- Espera circular: Uma cadeia de processos espera por recursos uns dos outros.
- Tratamento de Deadlocks:
- Prevenção: Evitar ao menos uma das condições para o deadlock.
- Exemplo: Evitar espera circular impondo uma ordem para a alocação de recursos.
- Detecção: Monitorar o sistema para identificar ciclos que indicam deadlocks.
- Recuperação: Eliminar o deadlock ao:
- Finalizar um ou mais processos.
- Revogar recursos alocados.
- Prevenção: Evitar ao menos uma das condições para o deadlock.
Exemplo: Em sistemas de banco de dados, a técnica de timeout pode liberar recursos de um processo que está esperando por muito tempo, evitando deadlocks.
Referências
[editar | editar código]- https://tecnoblog.net/responde/o-que-e-thread-processador/
- https://blog.grancursosonline.com.br/sistemas-operacionais-gerenciamento-de-processos/
- https://www.oficinadanet.com.br/post/12781-sistemas-operacionais-o-que-e-escalonamento-de-processos
- https://pt.slideshare.net/slideshow/sistemas-operacionais-aula-08-sincronizao-e-comunicao-entre-processos-76671505/76671505
- https://www.oficinadanet.com.br/post/12786-sistemas-operacionais-o-que-e-deadlock