Processos:
- Papel crucial em SD.
- Embora processos sejam blocos fundamentais em SDs, threads, com granularidade mais fina, são frequentemente utilizadas para melhorar o desempenho.
Modelos de Implementação:
|
Espaço do Usuário (M:1) |
Espaço do Kernel (1:1) |
Modelo Híbrido (M:N) |
Definição |
Múltiplas threads de usuário são mapeadas para uma única thread do kernel. |
Cada thread de usuário é mapeada diretamente para uma thread do kernel. |
Múltiplas threads de usuário são mapeadas para um número menor de threads do kernel. |
Características |
Eficiência em termos de troca de contexto de thread. |
|
|
Gerenciadas sem intervenção do kernel. | Maior controle e suporte do kernel para gerenciamento de threads.
Trocas de contexto mais custosas. | Combina eficiência e controle do espaço do usuário com o suporte do kernel.
Oferece um equilíbrio entre eficiência e flexibilidade. |
| Uso em SD | Adequado para sistemas distribuídos onde a eficiência de troca de contexto é crucial. | Menos comum em sistemas distribuídos devido à sobrecarga das trocas de contexto. | Amplamente utilizado em sistemas distribuídos para otimizar desempenho e recursos. |
Threads em Sistemas não Distribuídos:
- Benefícios incluem independência de contextos de execução dentro de um processo e exploração de paralelismo em sistemas multiprocessadores.
- Uso eficaz para economizar recursos do sistema, evitando sobrecarga de IPC causada por processos cooperativos.
- Estruturação mais simples para muitas aplicações como IDEs, jogos, GUIs, editores de texto e planilhas.
Threads em Sistemas Distribuídos:
- Permitir que chamadas de sistemas bloqueantes ocorram sem que todo o processo seja bloqueado.
- Facilitam expressão de comunicação em sistemas distribuídos, mantendo múltiplas conexões lógicas simultâneas.
- Explorar o paralelismo em sistemas multiprocessados, sejam eles tanto do lado cliente quanto do lado servido.
Clientes Multithreaded:
- Ocultar latências de comunicação em sistemas WAN, facilitando a expressão de comunicação ao manter várias conexões lógicas simultâneas:
- Iniciar a comunicação e ao mesmo tempo executar alguma outra atividade até a chegada da resposta.
- Exemplo: navegadores da web.
Servidores Multithreaded:
- Benefícios não apenas na simplificação do código do servidor, mas também na exploração de paralelismo para alto desempenho.
- Não é adequado para cenários em que o número de clientes simultâneos é elevado (ex. 10 mil ou mais) e uma thread é criada servir cada cliente.
- Exemplo: servidor de arquivos.