Programação de Sistemas Distribuídos e Concorrentes 1 Programação de Sistemas Distribuídos e Concorrentes Sumario Sistema Operacional Monoprogramação X Multiprogramação Processo X Threads Posix (Pthreads) Pthreads implementação 2 Programação de Sistemas Distribuídos e Concorrentes Sistema Operacional É um programa responsável pelo gerenciamento de hardware. Ele gerencia as aplicações, para que uma não interfira no funcionamento da outra. Monoprogramação Somente um programa de usuário é carregado em memória por vez, e somente um programa concorre pelo processamento. Multiprogramação Vários programas são carregados em memoria, e concorrem entre si pelo processamento. 3 Programação de Sistemas Distribuídos e Concorrentes Processo Processo é constituído por uma seqüência de instrução, em execução. Processo pode ser entendido como um programa em execução. Threads Toda Threads pertence a um processo. O termino de um processo, significa o termino de todas as Threads pertencentes á ele. 4 Programação de Sistemas Distribuídos e Concorrentes Processo X Threads Processo ocupa espaço de endereçamento, e isto custa caro. Thread são executadas no mesmo espaço de endereçamento, isto é mais viável. Se interromper um Processo, toda aplicação é interrompida. Uma Thread, pode ser interrompida, e o processo criador continua sendo executado. É mais rápido fazer chaveamento entre Thread, do que entre Processos. 5 Programação de Sistemas Distribuídos e Concorrentes Posix (Pthreads) POSIX Threads, ou Pthreads, é um padrão, criado pelo IEEE que define uma API (application program interface) para o desenvolvimento de aplicações multi-threaded. A API é formada por aproximadamente 60 funções que possibilitam a criação, suspensão e término de threads, bem como a sincronização e o controle do escalonamento destas threads. Atualmente ela pode ser utilizada apenas com as linguagens C e C+. 6 Programação de Sistemas Distribuídos e Concorrentes Pthreads O programa inicia com uma única thread, principal que (executa a função main do programa C). Após outras threads são criadas pelo programador através da função pthread_create, que tem como parâmetro o nome de uma função para a thread executar. Um programa paralelo desenvolvido com Pthreads consiste, em um conjunto de threads que executam o código dentro de uma ou mais funções definidas pelo usuário. Cada thread executa independentemente das demais até o término da função que lhe foi designada ou até a realização de uma chamada à função pthread_exit, quando então é destruída. 7 Programação de Sistemas Distribuídos e Concorrentes Implementação 8 Programação de Sistemas Distribuídos e Concorrentes REFERÊNCIAS BIBLIOGRÁFICAS Toscani-Simão Sirineo, Romulo Silva de Oliveira, Alexandre da Silva Carissimi. Sistemas Operacionais e Programação Concorrente. Porto Alegre RS. Sagra Luzzatto 2003 Torelli-Programação Paralela em SMPs com OpenMP e POSIX Threads. Acessado em 22/04/05 disponível em: http://www.niee.ufrgs.br/cbcomp/cbcomp2004/html/pdf/Sistemas_Parale los_Distribuidos/t170100281_3.pdf 9 Duvidas Marcos Sfair Jonats Santos FIM. 10