A concorrência no Unix refere -se à capacidade do sistema operacional de
gerenciar várias tarefas (processos ou threads)
que parecem estar executando simultaneamente , mesmo que eles estejam compartilhando a mesma CPU. Isso é alcançado através de uma combinação de mecanismos:
1. Processos: - Cada processo possui seu próprio espaço de endereço, dados e recursos.
- São entidades independentes e se comunicam através de mecanismos como tubos, soquetes e memória compartilhada.
- O kernel UNIX alterna entre processos rapidamente, dando a ilusão de execução paralela.
2. Tópicos: - Os threads são processos leves que compartilham o mesmo espaço de endereço e recursos.
- Eles oferecem uma maneira mais eficiente de implementar simultaneidade do que os processos, pois têm menos despesas gerais.
- Os threads podem ser criados e gerenciados usando bibliotecas como threads POSIX (Pthreads).
Conceitos -chave: -
fatia de tempo: A CPU aloca uma pequena fatia de tempo para cada processo ou rosca, alternando rapidamente entre eles.
-
multiplexação: O kernel gerencia várias tarefas, intercalando sua execução, dando a impressão de execução paralela.
-
Sincronização: Mecanismos como mutexes, semáforos e variáveis de condição são usados para coordenar o acesso a recursos compartilhados entre tarefas simultâneas.
-
Comunicação entre processos (IPC): Métodos como tubos, soquetes e memória compartilhada permitem que os processos trocem dados e sincronizem suas operações.
Vantagens da concorrência no Unix: -
Responsabilidade aprimorada: Os usuários podem interagir com o sistema enquanto outras tarefas estão em execução.
-
aumentou a taxa de transferência: Várias tarefas podem ser executadas simultaneamente, melhorando o desempenho geral do sistema.
-
compartilhamento de recursos: Várias tarefas podem compartilhar os mesmos recursos, reduzindo a sobrecarga da memória e melhorando a eficiência.
Exemplos de concorrência no Unix: -
Processos de fundo: Tarefas como imprimir ou baixar arquivos podem ser executadas em segundo plano enquanto o usuário interage com outros aplicativos.
-
servidores da web: Várias solicitações de clientes podem ser tratadas simultaneamente por um único processo de servidor da Web.
-
Sistemas de banco de dados: As transações simultâneas garantem que a integridade dos dados seja mantida enquanto vários usuários acessam o banco de dados.
Nota: Embora a simultaneidade no Unix dê a ilusão de execução paralela, o paralelismo verdadeiro requer várias CPUs.