II Sistemas Operacionais Professor Cláudio Geyer

Slides:



Advertisements
Apresentações semelhantes
Sistemas Operacionais
Advertisements

Sistemas Operacionais
Sistemas Distribuídos
Sistemas Distribuídos
Sistemas Operacionais
INTRODUÇÃO À COMPUTAÇÃO Sistemas Operacionais
Sistemas Operacionais
Sistemas Operacionais
Sistemas distribuídos Metas de Projeto Prof. Diovani Milhorim
A Abstração de Programação Concorrente
Projeto conceitual Mostra ao cliente exatamente o que o sistema fará
Sistemas Distribuídos:Definições e Caracteristicas
Programação Concorrente
Chapter 4: Threads.
Sistemas Operacionais II
Sistemas Operacionais
Arquitetura de Sistemas Operacionais
Sincronização e Comunicação entre Processos
e comunicação entre Processos
Threads.
Sistemas Distribuídos
Protocolo CMB em simulação distribuída
Middleware e Sistemas Distribuídos
Monitores.
Unidade 1-1 Processos e Threads
Pedro Costa Computadores e Redes de Comunicação 1 Sistemas Operativos Baseado em: Andrew S. Tanenbaum. Modern Operating Systems, Prentice-Hall, 1992.
Algoritmos paralelos eficientes para alguns problemas de processamento de Cadeia de Caracteres Alunos: Diego Alencar dos Santos Melo Felipe Formagini Brant.
Linguagem de Programação IV
Tópicos em redes e sistemas distribuídos
Tópicos em redes e sistemas distribuídos B Carlos Oberdan Rolim Ciência da Computação.
Sistemas Distribuídos
Arquitetura Cliente /Servidor
Conteúdo 1. Introdução Threads 2. Ambiente Monothread 3. Ambiente Multithread 4. Arquitetura e Implementação 5. Modelos de Programação.
Sistemas Distribuídos
Alexandre Mota/Augusto Sampaio {acm,
Sistemas Distribuídos
Sistemas Distribuídos Introdução. Conceito Coleção de múltiplos processos que executam sobre uma coleção de processadores autônomos interligados em uma.
Sistemas Operacionais
Concorrência e thread Petrônio Júnior(pglj) Márcio Neves(mmn2)
SISTEMAS OPERACIONAIS I
Sistemas Operacionais
PROGRAMAÇÃO DISTRIBUÍDA Aula 01 Prof. Henrique Mongelli
Processos.
Silberschatz, Galvin and Gagne ©2009 Operating System Concepts – 8 th Edition Chapter 4: Threads.
Sistemas Distribuídos
O que é? É o processo de investigação técnica com intuito de identificar a qualidade, a segurança e a exatidão do software desenvolvido. A validação do.
Objetivos do Capítulo Explicar a importância da implementação de processos e tecnologias de gerenciamento de dados numa organização. Explicar as vantagens.
SISTEMAS OPERACIONAIS I
Zeque - Grad. CC1 Sistemas Operacionais Curso de Ciência da Computação da UFPE Prof. José Queiroz - ZEQUE.
Sistemas de Informação: Estrutura básica dos Sistemas Empresariais.
Troca de Mensagens Programação concorrente
Unidade 1 – Introdução a J2EE Prof.: Henrique Santos
Conceitos de thread Faculdade PITÁGORAS – Outubro de 2012
Integração de Ferramentas CASE
Linguagem de Programação IV Carlos Oberdan Rolim Ciência da Computação Sistemas de Informação.
Capítulo 4: Processos.
Fundamentos de linguagens de programação
Aula – Sistemas Operacionais
Sistemas Operacionais Distribuídos
Engenharia de Software
Arquitetura de computadores
UML (Unified Modeling Language) Linguagem Unificada de Modelagem
Sistemas Operacionais IV – Gerenciamento de E/S
Sistemas Operacionais II Professor Cláudio Geyer Instituto de Informática - UFRGS.
Pearson Education Sistemas Operacionais Modernos – 2ª Edição 1 Sistemas Operacionais IESP - FATEC-PB Professor: Gustavo Wagner.
Estruturas de Sistemas Operacionais. Componentes Comuns do Sistema Administração de Processos Administração da Memória Principal Administração do Armazenamento.
Bruna Cavallero Martins Universidade Católica de Pelotas.
Pearson Education Sistemas Operacionais Modernos – 2ª Edição 1 Sistemas Operacionais IESP - FATEC-PB Professor: Gustavo Wagner.
Pearson Education Sistemas Operacionais Modernos – 2ª Edição 1 Sistemas Operacionais FATEC-PB Professor: Gustavo Wagner
Capítulo 4 Estrutura do Sistema Operacional
Transcrição da apresentação:

II Sistemas Operacionais 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 Conceito Tarefa Tipos de PC Memória distribuída x compartilhada Variações Programação Distribuída Programação Paralela

Tópicos ensinados no Curso Programação concorrente: especificação de concorrência, atomicidade; sincronização, exclusão mútua, sinalização; semáforos e monitores; troca de mensagens: conceitos, exemplo difusão; dead-lock;

Tópicos ensinados no Curso Sistemas distribuídos: objetivos, conceitos, questões de projeto; modelo cliente/servidor; RPC; estudo de casos : servidor RPC de tempo; ordem de eventos, relógio lógico, exclusão mútua; Algoritmos distribuídos; arquivos distribuídos : interfaces, arquiteturas, semântica e questões de implementação; comunicação coletiva; Web Services (WS); transações, replicação, p2p.

Pré-requisitos para compreensão do conteúdo : Noções de Sistemas Operacionais : Processos, escalonamento de processos, espera ativa. Conhecimento de estruturas bá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 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;

Bibliografia recomendada Andrews, G. Concurrent Programming: Principles and Practive. The Benjamim Cummings, 1991. Silberschatz, A. Operating Systems Concepts. Addison-Wesley, 5º edição, 1992. Tanenbaum, A. S. Modern Operating Systems. Prentice-Hall, 1992. Tanenbaum, A. S. Distributed Operating Systems. Prentice-Hall, 1995. Couloris, G. Distributed Systems : Concepts and Design. Addison-Wesley, 2º edição, 1994. Chow, R. Distributed OS and Algorithms. Addison-Wesley, 1997. Apostila do Professor Simão Toscani

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)

Ambiente e Linguagens Concorrentes Windows C ou C++ biblioteca POSIX; biblioteca NT;

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 diversas partes em execução concorrente, em uma ou mais CPUs) Pode haver programação concorrente em Redes, Máquinas Paralelas, multicores, GPUs ou em uma única máquina simples. Analogia com sistemas reais Podemos citar como exemplos de atividades concorrentes, onde mais de um evento está ocorrendo ao mesmo tempo: Aeroporto; Trânsito; Porto; Linha de montagem de uma fá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ção Concorrente Vantagens Expressão mais fácil de certos problemas (concorrentes); exemplos: simulação de sistemas naturais; jogos; Uso eficiente dos recursos de hardware; I/O concorrente a CPU Aumento do desempenho de alguns programas (paralelos); (tentar) Usar todas as CPUs todo o tempo com trabalho útil. Tarefa normalmente muito complexa

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ção Concorrente 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ções típicas: Núcleo do Sistema Operacional; Núcleo do SGBD (vários clientes acessam o BD); Servidores em geral: multithreaded; Interfaces gráficas; Jogos; Simulação; Aplicações cpu intensivas; Futuro com multicores e GPUs: (quase) todas as aplicações?

Programação Concorrente Aplicações típicas: Multiagentes; Aplicações para internet; Tolerância a Falhas; Alto desempenho ou programação paralela.

Programação Distribuída Conceito Entende-se por programação distribuída (ou processamento distribuído) como sendo um programa concorrente executado sobre um sistema de hardware com memória distribuída. Obs: alguns autores desconsideram a memória Um programa distribuído pode acessar a memória de vários computadores e não só de uma única máquina. Via protocolos especiais, por software Deve ser possível criar e gerenciar processos em outros computadores. Nem sempre de forma simples

Programação Paralela Conceito Programação paralela pode ser vista como um programa concorrente (equivalente a um seqüencial para o mesmo problema) mas com o objetivo adicional da redução do tempo de resposta. Um programa paralelo pode compartilhar a mesma memória ( memória não distribuída ) e vários processadores. Ou pode ser um programa distribuído

Principais Aspectos da PC Aspectos clássicos Expressão da concorrência Sincronização Comunicação criação e controle das partes concorrentes redução da concorrência necessária para produção de resultados corretos

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 em memória compartilhada sincronização explícita mais complexa exige primitivas e técnicas de sincronização comunicação implícita leitura e escrita de variáveis compartilhadas 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 grafo como o visto anteriormente, paralelizando o máximo possível as instruções da equação ((A+B)*C)+(C+D*E). De exemplos de aplicações que onde é interessane usar programação paralela para redução do tempo de resposta. Um programa pode ser classificado como paralelo e distribuído ao mesmo 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 microprocessadores modernos em geral são superescalares, ou seja, dividem o processamento de um programa em duas filas de execução, de forma que partes distintas de um programa são executadas em paralelo. Por que os programas executados em superescalares não são considerados programas paralelos ? Por que os programas de simulação são melhor implementados usando concorrência ? Programas de navegação pela Internet ( Netscape , Internet Explore ) são concorrentes ? Por quê ?

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 programa concorrente é mais difícil de ser implementado devido à inclusão de sincronização no acesso ao código e às variáveis Devido à inclusão de primitivas de comunicação Algumas problemas e aplicações são concorrentes por definição e possuem um melhor resultado se implementados concorrentemente.

Conclusões Programação paralela é utilizada quando o principal objetivo é diminuir o tempo de resposta. Programação distribuída deve levar em conta o tempo perdido com a comunicação entre as CPUs. Incluindo a paralela distribuí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?