Os Sistemas Operacionais - Relatório
Por: Maiana Rodrigues • 19/10/2019 • Trabalho acadêmico • 716 Palavras (3 Páginas) • 220 Visualizações
Universidade Federal do Espírito Santo – UFES
Aluna: Maiana Rodrigues Gonçalves
Sistemas Operacionais - Relatório Capítulo 04
Threads
A maioria dos Sistemas Operacionais atuais fornecem recursos que permitem que um processo contenha vários Threads de controle.
4.1 Visão Geral
Um Thread é composto por:
-ID de Thread;
-Contador de programa;
-Conjunto de registradores e pilhas.
Pode ser definido como uma unidade básica de utilização da CPU.
Compartilha com outros Threads de um mesmo processo:
-Sua seção de código;
-Seção de dados;
-Outros recursos do Sistema Operacional. (Arquivos abertos e sinais)
Processo tradicional (processo pesado) – possui um único Thread de controle.
O processo só poderá executar várias tarefas ao mesmo tempo, se ele tiver vários threads de controle.
4.1.1 Motivação
A criação de processos é demorada e utiliza muitos recursos. Por isso, é mais eficiente usar um processo contendo múltiplos threads. Os threads desempenham um papel muito importante em sistemas com chamadas de procedimento remotas (RPCs). As RPCs tornam possível a comunicação entre processos fornecendo mecanismo de comunicação semelhante às funções ou chamadas de procedimento comuns.
A maioria dos kernels dos sistemas operacionais são multithreads. Isso significa que múltiplos threads operam no kernel e cada thread executa uma tarefa específica, como o gerenciamento de dispositivos, gerenciamento da memória ou a manipulação de interrupções.
4.1.2 Benefícios
Os benefícios da programação com várias Threads podem ser divididos em quatro categorias principais:
- Capacidade de resposta;
- Compartilhamento de recursos;
- Economia;
- Escalabilidade.
4.2 Programação Multicore
Cada núcleo pode aparecer como um processador separado para o sistema operacional, isso devido a inserção de vários núcleos de computação em um mesmo chip.
4.2.1 Desafios da Programação
O desafio consiste em modificar os programas existentes e projetar novos programas com múltiplos Threads.
Lei de AMDAHL: Aceleração <= 1/((1-S)/(S+N))
Essa fórmula identifica ganhos de desempenho potenciais com a inclusão de núcleos de computação adicionais em uma aplicação que tenham componentes tanto seriais quanto paralelos.
À medida que N se aproxima do infinito, a aceleração converge para 1/S.
Cinco áreas apresentam desafios para a programação de sistemas multicore:
- Identificação de tarefas;
- Equilíbrio;
- Divisão de dados;
- Dependência de dados;
- Teste e depuração.
Muitos desenvolvedores de software argumentam que o advento dos sistemas multicore demandará uma abordagem totalmente nova para o projeto de sistemas de software futuro.
4.2.2 Tipos de Paralelismo
Existem dois tipos de paralelismo:
-Paralelismo de dados: coloca o foco na distribuição de subconjuntos dos mesmos dados, por múltiplos núcleos de computação, e na execução da mesma operação em cada núcleo.
-Paralelismo de tarefas: envolve a distribuição não de dados, mas de tarefas (threads) em vários núcleos de computação separadas. Cada thread executa uma única operação. Diferentes threads podem estar operando sobre os mesmos dados ou sobre dados diferentes. Portanto, o paralelismo de dados envolve a distribuição de dados por vários núcleos, e o paralelismo de tarefas envolve a distribuição de tarefas em vários núcleos. Na prática poucas aplicações seguem estritamente o paralelismo de dados ou de tarefas.
...