Threads e Escalonamento de CPU: Resumo com Tipos e Algoritmos
Resumo
O documento apresenta os conceitos de threads, suas vantagens e os tipos existentes (espaço usuário e espaço núcleo). Em seguida, trata do escalonamento de CPU, incluindo o papel do escalonador e do dispatcher, os critérios de escalonamento e os principais algoritmos, como SJF, prioridade, Round Robin e filas múltiplas.
Pontos-chave
- Threads são miniprocessos que compartilham o espaço de endereçamento, são mais rápidos de criar e destruir e permitem comunicação por memória compartilhada.
- Threads no espaço usuário são rápidas e não exigem o núcleo, mas o bloqueio de uma thread bloqueia todo o processo.
- Threads no espaço núcleo permitem multiprocessamento real e o bloqueio de uma thread não bloqueia o processo, porém têm maior overhead por mudança de modo.
- O escalonador de CPU seleciona um processo pronto para execução e decide quando ocorrem as trocas entre estados de execução, espera, pronto e término.
- Escalonamento preemptivo permite interromper o processo, enquanto o não-preemptivo não o interrompe.
- O algoritmo SJF escalona o processo com menor tempo de surto; a prioridade pode causar starvation, resolvido com aging.
- Round Robin atribui um time quantum a cada processo e, ao fim dele, o processo vai para o fim da fila.
Threads
- Divisão dos processos em partes menores.
- Execução concorrente.
- Estruturas de dados similares ao bloco de controle do processo.
- Miniprocessos menos complexos.
- Podem ser definidos no código do programa.
Uso dos Threads
- Compartilhamento de espaço de endereçamento.
- Ideia de processos paralelos.
- Maior exploração do paralelismo por máquinas multiprocessadores.
- Mais fáceis e rápidos de serem criados e executados:
- Aumento do número de atividades executadas.
- Diminuição do tempo de resposta.
- Associação de threads a dispositivos de entrada e saída.
- Sobreposição de operações de I/O e computação.
- Vantagens:
- Tempo de criação e destruição de threads é inferior ao de um processo.
- Chaveamento de contexto entre threads é mais rápido.
- Permite comunicação por memória compartilhada sem interação com o núcleo.
Tipos de Threads
- Threads no espaço usuário: Suportados pela aplicação (bibliotecas), mais rápidos, dispensam o núcleo e evitam mudança de modo. O bloqueio de uma thread bloqueia o processo.
- Threads no espaço núcleo: Suportados pelo S.O., permitem multiprocessamento real. O bloqueio de uma thread não bloqueia o processo, porém possuem maior overhead devido à mudança de modo.
Escalonamento de CPU
A utilização máxima da CPU é obtida através da multiprogramação. A execução de um processo consiste na alternância entre um ciclo de execução de CPU e um ciclo de espera de I/O.
Escalonador de CPU
Seleciona um processo na memória pronto para execução. Decisões ocorrem quando um processo:
- Passa de execução para espera.
- Passa de execução para pronto.
- Passa de espera para pronto.
- Termina.
- Não-preemptivos: O processo não é interrompido (ex: Windows 3.x).
- Preemptivos: O processo pode ser interrompido (ex: Unix).
Dispatcher
Módulo que dá o controle da CPU ao processo selecionado. Envolve mudança de contexto, mudança para modo usuário e reinício do programa. A latência de dispatch é o tempo necessário para essa troca.
Critérios de Escalonamento
- Utilização de CPU;
- Throughput (processos por unidade de tempo);
- Tempo de retorno;
- Tempo de espera;
- Tempo de resposta.
Algoritmos de Escalonamento
- SJF (Shortest Job First): Escalona o processo com o menor tempo de surto. Pode ser preemptivo (SRTF) ou não-preemptivo.
- Por Prioridade: CPU alocada para o processo com maior prioridade. Problema: Starvation. Solução: Aging (envelhecimento).
- Round Robin (RR): Cada processo recebe um time quantum. Após o tempo, vai para o fim da fila.
- Filas Múltiplas: Particiona a fila de prontos (ex: interativo vs. batch) com algoritmos distintos para cada uma.
- Filas Múltiplas com Realimentação: Permite que processos transitem entre filas, facilitando a implementação de prioridades dinâmicas e envelhecimento.
Baixar
PDF Word HTMLPerguntas frequentes
Qual a diferença entre threads no espaço usuário e no espaço núcleo?
Threads no espaço usuário são suportadas por bibliotecas da aplicação, são mais rápidas e não usam o núcleo, mas o bloqueio de uma thread bloqueia o processo. Threads no espaço núcleo são suportadas pelo S.O., permitem multiprocessamento real e o bloqueio de uma não bloqueia o processo, mas têm maior overhead.
O que é starvation no escalonamento por prioridade e como resolver?
Starvation ocorre quando um processo de baixa prioridade nunca recebe a CPU. A solução apontada no texto é o aging (envelhecimento), que aumenta gradualmente a prioridade dos processos que esperam.
O que é o Round Robin?
No Round Robin, cada processo recebe um time quantum de CPU. Quando esse tempo termina, o processo vai para o fim da fila de prontos.
Teste-se
Cartões de revisão
Clique em um cartão para ver a resposta.
Teste
Perguntas geradas com IA a partir do documento: verifique as respostas com o texto.