390 likes | 549 Views
Sistemas. Operacionais. II. Professor Cláudio Geyer Instituto de Informática - UFRGS. Autoria. Alunos de turma de SOII C. Geyer Versão V13, 2010-2. S úmula. T ópicos da disciplina SO x Programação concorrente Programação concorrente Conceito Tarefa Tipos de PC
E N D
Sistemas Operacionais II Professor Cláudio Geyer Instituto de Informática - UFRGS
Autoria • Alunos de turma de SOII • C. Geyer • Versão • V13, 2010-2
Súmula • Tópicos da disciplina • SO x Programação concorrente • Programação concorrente • Conceito • Tarefa • Tipos de PC • Memória distribuída x compartilhada • Variações • Programação Distribuída • Programação Paralela
Pré-requisitosparacompreensão do conteúdo : • Noções de SistemasOperacionais : Processos, escalonamento de processos, esperaativa. • Conhecimento de estruturasbásicas de programação : comandos : if , while, for, procedures, functions , etc ; tipos de variáveis : registro, ponteiro, etc ; manipulação de arquivos.
Índice explicativo de cada tópico Conceitos básicos de programação concorrente: SO x PC; PC; Programação Distribuída; Programação Paralela, Exemplos de PC; Vantagens, aplicações, abordagens operacional X axiomática. Expressão da concorrência: Grafos de processos; fork/join; parbegin/end; vetor de processos. Sincronização: Atomicidade definição por software e hardware; exemplo de não-atomicidade; notação do Andrews);
Índice explicativo de cada tópico Sincronização: Exclusão mútua conceitos, requisitos, mutexbegin/end, implementações falsa, com alternância; implementação para 2 processos e por hardware. Semáforos conceitos, usos, implementação com filas e block/wakeup; problema do produtor/consumidor; problema dos leitores/escritores. Monitores conceitos e implementação; exemplo dos filósofos.
Índice explicativo de cada tópico Troca de Mensagens: Introdução a sistemas distribuídos, mapeamento, conceitos básicos; Assíncrona Conceitos e propriedades; Exemplo produtor/consumidor; Difusão com probe. Síncrona Conceitos e propriedades. RPC Conceitos e propriedades; Exemplo do servidor de tempo.
Índice explicativo de cada tópico Sistemas Operacionais Distribuídos Conceitos e tipos; Questões de projeto; Modelo cliente/servidor; RPC Sistema de arquivos distribuídos: conceitos e questões de projeto. Threads Comunicação coletiva WS Transações, replicação e p2p
Índice explicativo de cada tópico Deadlock Conceitos, tipos de tratamento, prevenção;
Ambiente e Linguagens Concorrentes Unix e/ou Windows C ou C++ biblioteca de processos; biblioteca de sockets; biblioteca de threads; RPC; biblioteca de variáveis compartilhadas. Java, C#, Objetive C Python MPI, OpenMPI JSR (SR em Java)
Sistema Operacional x PC • Gerenciar recursos de forma eficiente. • Exemplo: através de I/O concorrente (duas ou mais aplicações concorrentes); escalonamento (time-sharing). • Dentro de uma única máquina pode existir programação concorrente. • Programa seqüencial é um código que especifica a execução seqüencial, uma lista de comandos. • Programa concorrente pode ser visto como um programa composto de vários (> 1) programas seqüenciais, executados concorrentemente.
Programação Concorrente • Conceito • Programas com diversaspartesemexecuçãoconcorrente, emumaoumais CPUs) • PodehaverprogramaçãoconcorrenteemRedes, MáquinasParalelas, multicores, GPUsouemumaúnicamáquina simples. • Analogia com sistemasreais • Podemoscitarcomoexemplos de atividadesconcorrentes, ondemais de um eventoestáocorrendoaomesmo tempo: • Aeroporto; Trânsito; • Porto; • Linha de montagem de umafábrica.
Programação Concorrente Tarefa (task) nome normalmente associado a uma parte concorrente independe do modelo de programação paradigma linguagem construção ou abstração usada para representá-la
ProgramaçãoConcorrente Vantagens Expressãomaisfácil de certosproblemas (concorrentes); exemplos: simulação de sistemasnaturais; jogos; Usoeficiente dos recursos de hardware; I/O concorrente a CPU Aumento do desempenho de algunsprogramas (paralelos); (tentar) Usartodas as CPUs todo o tempo com trabalhoútil. Tarefanormalmentemuitocomplexa
Programação Concorrente • Problemas • Sincronização: • dependência temporal • uma tarefa necessita da conclusão da anterior não podem ser executadas concorrentemente. • acesso concorrente a um recurso compartilhado • pode gerar estados (do recurso) inconsistentes • recursos: variáveis, arquivos, ... • Escalonamento • garantir um bom (eficiente, …) uso dos recursos • disputa de recursos do sistema, tais como cpu, memória, disco, impressora • eventualmente a cargo do programador (não do SO)
ProgramaçãoConcorrente • Exemplo de Programa • Tendo a equação: (2*A)+((C-D)/3), algumas partes podem ser executadas em paralelo, como segue: 2*A + Início C-D Fim / 3
Programação Concorrente Aplicaçõestípicas: Núcleo do SistemaOperacional; Núcleo do SGBD (váriosclientesacessam o BD); Servidoresemgeral: multithreaded; Interfaces gráficas; Jogos; Simulação; Aplicaçõescpuintensivas; Futuro com multicoreseGPUs: (quase) todas as aplicações?
ProgramaçãoConcorrente Aplicações típicas: Multiagentes; Aplicações para internet; Tolerância a Falhas; Alto desempenho ou programação paralela.
ProgramaçãoDistribuída Conceito Entende-se porprogramaçãodistribuída (ouprocessamentodistribuído) comosendo um programaconcorrenteexecutadosobre um sistema de hardware com memóriadistribuída. Obs: algunsautoresdesconsideram a memória Um programadistribuídopodeacessar a memória de várioscomputadores e nãosó de umaúnicamáquina. Via protocolosespeciais, por software Deve ser possívelcriar e gerenciarprocessosemoutroscomputadores. Nemsempre de forma simples
ProgramaçãoParalela Conceito Programaçãoparalelapode ser vista como um programaconcorrente (equivalente a um seqüencialpara o mesmoproblema) mas com o objetivoadicionaldaredução do tempo de resposta. Um programaparalelopodecompartilhar a mesmamemória ( memórianãodistribuída ) e váriosprocessadores. Oupode ser um programadistribuído
Principais Aspectos da PC Aspectosclássicos Expressãodaconcorrência Sincronização Comunicação Expressãodaconcorrência criação e controle das partesconcorrentes Sincronização reduçãodaconcorrência necessáriaparaprodução de resultadoscorretos
Principais Aspectos da PC Comunicação troca de informações entre as partes concorrentes necessária para a produção de resultados finais, consistentes também chamada de IPC InterProcess Communication
Tipos básicos de PC Em função da arquitetura (hardware) memória compartilhada memória distribuída
Tipos básicos de PC PC emmemóriacompartilhada sincronizaçãoexplícita maiscomplexa exigeprimitivasetécnicas de sincronização comunicaçãoimplícita leituraeescrita de variáveiscompartilhadas simples
Tipos básicos de PC PC em memória distribuída comunicação explícita denominada troca de mensagens mais complexa exige primitivas e técnicas de comunicação sincronização implícita via semântica da comunicação simples, mas nem tanto
Exercícios com resposta : Desenhe um grafocomoovistoanteriormente, paralelizandoomáximopossível as instruçõesdaequação ((A+B)*C)+(C+D*E). De exemplos de aplicaçõesqueondeéinteressaneusarprogramaçãoparalelapararedução do tempo de resposta. Um programapode ser classificadocomoparaleloedistribuídoaomesmo tempo ? Justifique.
Respostas : • Computação gráfica ( renderização, reconhecimento de padrões, criação de texturas, etc ) Problemas de otimização linear ( processamento dos ótimos locais em paralelo ) Cálculos vetoriais ( soma, subtração, multiplicação, divisão, concatenação de vetores ) A+B * + Fim Início C + D * E
Respostas : • Sim, uma das opções não exclui a outra. Um programa de rede pode ser distribuído ( memória diferente para cada nó de processamento) e também pode ser paralelo ( tarefas divididas pelas diversas máquinas da rede ) de forma a diminuir o tempo de resposta.
Exercícios complementares : • Os microprocessadoresmodernosemgeralsãosuperescalares, ouseja, dividemoprocessamento de um programaemduasfilas de execução, de forma quepartesdistintas de um programasãoexecutadasemparalelo. Porqueosprogramasexecutadosemsuperescalaresnãosãoconsideradosprogramasparalelos ? • Porqueosprogramas de simulaçãosãomelhorimplementadosusandoconcorrência ? • Programas de navegaçãopela Internet ( Netscape , Internet Explore ) sãoconcorrentes ? Porquê ?
Atividade em Grupo • Pesquise as linguagens de programação que você usa e ou as linguagens de programação que estão em foco e descubra se elas possuem suporte para programação concorrente, tais como : • Ambiente de programação adequado à concorrência ; • Comandos específicos ; • Bibliotecas ; • Funções e Procedimentos ; • Depois discuta com seus colegas o que você descobriu, mostrando as vantagens e desvantagens de cada linguagem.
Conclusões • Um programaconcorrente é maisdifícil de ser implementado • devidoà inclusão de sincronização no acessoaocódigo e àsvariáveis • Devidoàinclusão de primitivas de comunicação • Algumasproblemas e aplicaçõessãoconcorrentespordefinição e possuem um melhorresultado se implementadosconcorrentemente.
Conclusões • Programaçãoparalela é utilizadaquando o principal objetivo é diminuir o tempo de resposta. • Programaçãodistribuídadevelevaremconta o tempo perdido com a comunicaçãoentre as CPUs. • Incluindo a paraleladistribuída
Auto-avaliação : Responda as questões abaixo, sem rever os slides anteriores, para testar seus conhecimentos adquiridos até agora : Quais os pré-requisitos para aprender PC? Qual a linguagem básica para ilustração dos conceitos de PC? Quais ambientes são apropriados para PC? Qual a relação entre SO e PC? O que é um programa concorrente? Quais os 3 principais componentes da PC? Cite 3 exemplos de aplicações concorrentes : Cite 2 vantagens de programação concorrente :
Auto-avaliação : Por que a sincronização é importante ? Qual o conceito de programa paralelo e de programa distribuído ? O que é uma tarefa? Quais os tipos principais de sincronização?
Auto-avaliação : Qual o “melhor” livro para PC? Qual o “melhor” para SOD? Qual o livro que contém ambos os tópicos, PC e SOD? Para PC, quais livros são suficientes para a disciplina?
Auto-avaliação : Quais os tipos de PC conforme hw? Em qual tipo a sincronização é complicada? Em qual tipo a comunicação é complicada? Se você conseguiu responder a estas perguntas, está apto a prosseguir no curso, senão releia os slides.
Auto-avaliação Principal PC? PD? PP? Aplicações da PC? Vantagens da PC? Desvantagens da PC? Principais componentes da PC?
Auto-avaliação Principal Tipos de sincronização? Tipos de arquitetura x PC?
Auto-avaliação Principal Sincronização em memória compartilhada? Complexidade? Importância? Sincronização em memória distribuída? Idem Idem para comunicação?