Baixe o app para aproveitar ainda mais
Prévia do material em texto
Programação Paralela e Distribuída 01 - Processos e Threads Prof. Laerte M. Rodrigues laerte.rodrigues@ifmg.edu.br Programação sequêncial X concorrente I Quando escrevemos um algoritmo sua execução é estritamente sequecial I Cada instrução é executada após o término de seu antecessor I A programação concorrente é um paradigma de programação que é a execução simultânea de várias tarefas ao mesmo tempo I As tarefas podem estar distribuídas I Entre processos distintos que compartilham o mesmo recurso Programação sequêncial X concorrente I Threads criadas por um único processo (compartilham os dados) I Entre máquinas de uma rede de computador (processamento distribuído) Processos I Um processo é uma atividade de um programa I Contém o código e dados da atividade I Leitura/Escrita de dados (em arquivo ou banco de dados), comunicação com usuário (GUI ou console), troca de dados pela rede e etc. I É uma unidade concorrente que um processador sob o controle do S.O. pode utilizar I Identificado pelo seu PID (Process IDentifier) Processos I Na década de 80 identificou-se que a linha de execução contínua não pode ser aplicado em sistemas operacionais distribuídos I Atualmente isso ainda é diferente do processos paralelos que utilizam um único processor mas possuem concorrência em suas atividades internas I Threads que compartilham a mesma variável I Um processo é uma entidade de nível de kernel que possui espaço de endereçamento I Somente podemos consultar/alterar o estado de um processo à partir de chamadas do sistema Processos I O contexto do kernel: I PID I Segmento de código I Segmento de dados I Registradores da CPU I Program Counter I Pilha de execução I Estado do processo I Informações de escalonamento I Recursos locais (Ponteiro para arquivos, portas sendo ouvidas na rede, etc...) Threads I Com o surgimento de processadores de alto desempenho (Simultaneous Multithreading, multi-core...) pode-se então ter atividades concorrentes dentro do processo. I Ao invés de termos um único fluxo de execução dentro do processo teremos então múltiplos fluxos dentro do mesmo processo I Atualmente, um processo nada mais é que um abimente de execução que contêm 1 ou mais threads Threads I Contexto de uma Thread I O contexto do kernel: I Thread IDentifier I Segmento de código I Segmento de dados I Registradores da CPU I Program Counter I Pilha de execução I Estado da thread I Informações de escalonamento I Recursos locais (Ponteiro para arquivos, portas sendo ouvidas na rede, etc...) Threads I Pertecem ao processo
Compartilhar