![Page 1: Sistemas Operacionais II Professor Cláudio Geyer Instituto de Informática - UFRGS](https://reader036.vdocuments.pub/reader036/viewer/2022062819/5706386e1a28abb82390638a/html5/thumbnails/1.jpg)
SistemasOperacionais
IIProfessor Cláudio Geyer
Instituto de Informática - UFRGS
![Page 2: Sistemas Operacionais II Professor Cláudio Geyer Instituto de Informática - UFRGS](https://reader036.vdocuments.pub/reader036/viewer/2022062819/5706386e1a28abb82390638a/html5/thumbnails/2.jpg)
Autoria
Alunos de turma de SOII C. Geyer Versão
– V17.1, 2013-2
![Page 3: Sistemas Operacionais II Professor Cláudio Geyer Instituto de Informática - UFRGS](https://reader036.vdocuments.pub/reader036/viewer/2022062819/5706386e1a28abb82390638a/html5/thumbnails/3.jpg)
Súmula
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
![Page 4: Sistemas Operacionais II Professor Cláudio Geyer Instituto de Informática - UFRGS](https://reader036.vdocuments.pub/reader036/viewer/2022062819/5706386e1a28abb82390638a/html5/thumbnails/4.jpg)
Pré-requisitos para compreensão do conteúdo :
Noções de Sistemas Operacionais :Processos, threads, 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.
![Page 5: Sistemas Operacionais II Professor Cláudio Geyer Instituto de Informática - UFRGS](https://reader036.vdocuments.pub/reader036/viewer/2022062819/5706386e1a28abb82390638a/html5/thumbnails/5.jpg)
Sumário detalhado 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;
![Page 6: Sistemas Operacionais II Professor Cláudio Geyer Instituto de Informática - UFRGS](https://reader036.vdocuments.pub/reader036/viewer/2022062819/5706386e1a28abb82390638a/html5/thumbnails/6.jpg)
Sumário detalhado 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.
![Page 7: Sistemas Operacionais II Professor Cláudio Geyer Instituto de Informática - UFRGS](https://reader036.vdocuments.pub/reader036/viewer/2022062819/5706386e1a28abb82390638a/html5/thumbnails/7.jpg)
Sumário detalhado de cada tópico Troca de Mensagens:
– Introdução a comunicação em 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.
![Page 8: Sistemas Operacionais II Professor Cláudio Geyer Instituto de Informática - UFRGS](https://reader036.vdocuments.pub/reader036/viewer/2022062819/5706386e1a28abb82390638a/html5/thumbnails/8.jpg)
Sumário detalhado de cada tópico Troca de Mensagens:
– Comunicação coletiva– Web Services
![Page 9: Sistemas Operacionais II Professor Cláudio Geyer Instituto de Informática - UFRGS](https://reader036.vdocuments.pub/reader036/viewer/2022062819/5706386e1a28abb82390638a/html5/thumbnails/9.jpg)
Bibliografia recomendada
Andrews, G. – Concurrent Programming: Principles and Practice.
– The Benjamim Cummings, 1991. Andrews, G.
– Foundations of Multithreaded, Distributed and Parallel Programming.– Ed. 2001.
Silberschatz, A. – Operating Systems Concepts.
– Addison-Wesley, 5º edição, 1992, e edições seguintes.– última versão: 9th Edition. Hardcover: 944 pages. Publisher: Wiley; 9
edition (December 17, 2012). Language: English. ISBN-10: 1118063333. ISBN-13: 978-1118063330
![Page 10: Sistemas Operacionais II Professor Cláudio Geyer Instituto de Informática - UFRGS](https://reader036.vdocuments.pub/reader036/viewer/2022062819/5706386e1a28abb82390638a/html5/thumbnails/10.jpg)
Bibliografia recomendada
Tanenbaum, A. S. – Modern Operating Systems.
– Prentice-Hall, 1992, e edições seguintes.– última versão: 4th Edition. by Hardcover: 1136 pages. Publisher: Pearson;
4 edition (March 20, 2014). Language: English. ISBN-10: 013359162X. ISBN-13: 978-0133591620
Livros dos professores da UFRGS– Toscani, S. S., Oliveira, R., Caríssimi, A. Sistemas Operacionais e Programação
Concorrente. Editora Sagra-Luzzato, 2003. ISBN: 8524106824. 247 páginas.– Oliveira, R., Caríssimi, A .Toscani, S. S. Sistemas Operacionais - Volume 11. ed.
Bookman. 4ª ed. 2010.
![Page 11: Sistemas Operacionais II Professor Cláudio Geyer Instituto de Informática - UFRGS](https://reader036.vdocuments.pub/reader036/viewer/2022062819/5706386e1a28abb82390638a/html5/thumbnails/11.jpg)
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, OpenMP– JSR (SR em Java)– Diversos outros
![Page 12: Sistemas Operacionais II Professor Cláudio Geyer Instituto de Informática - UFRGS](https://reader036.vdocuments.pub/reader036/viewer/2022062819/5706386e1a28abb82390638a/html5/thumbnails/12.jpg)
Sistema Operacional x PC
Gerenciar recursos de forma eficiente.– Uma das funções dos SOs– Exemplos:
• 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.
![Page 13: Sistemas Operacionais II Professor Cláudio Geyer Instituto de Informática - UFRGS](https://reader036.vdocuments.pub/reader036/viewer/2022062819/5706386e1a28abb82390638a/html5/thumbnails/13.jpg)
Sistema Operacional x PC
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.
![Page 14: Sistemas Operacionais II Professor Cláudio Geyer Instituto de Informática - UFRGS](https://reader036.vdocuments.pub/reader036/viewer/2022062819/5706386e1a28abb82390638a/html5/thumbnails/14.jpg)
Programação Concorrente
Conceito– Programas com diversas partes em execução
concorrente (=> “fluxos”), 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.
![Page 15: Sistemas Operacionais II Professor Cláudio Geyer Instituto de Informática - UFRGS](https://reader036.vdocuments.pub/reader036/viewer/2022062819/5706386e1a28abb82390638a/html5/thumbnails/15.jpg)
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
![Page 16: Sistemas Operacionais II Professor Cláudio Geyer Instituto de Informática - UFRGS](https://reader036.vdocuments.pub/reader036/viewer/2022062819/5706386e1a28abb82390638a/html5/thumbnails/16.jpg)
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
![Page 17: Sistemas Operacionais II Professor Cláudio Geyer Instituto de Informática - UFRGS](https://reader036.vdocuments.pub/reader036/viewer/2022062819/5706386e1a28abb82390638a/html5/thumbnails/17.jpg)
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)
![Page 18: Sistemas Operacionais II Professor Cláudio Geyer Instituto de Informática - UFRGS](https://reader036.vdocuments.pub/reader036/viewer/2022062819/5706386e1a28abb82390638a/html5/thumbnails/18.jpg)
Programação Concorrente
Exemplo de Programa– Tendo a equação: (2*A)+((C-D)/3), algumas partes
podem ser executadas em paralelo, como segue:
Início
3
C-D
2*A+
/Fim
![Page 19: Sistemas Operacionais II Professor Cláudio Geyer Instituto de Informática - UFRGS](https://reader036.vdocuments.pub/reader036/viewer/2022062819/5706386e1a28abb82390638a/html5/thumbnails/19.jpg)
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?
![Page 20: Sistemas Operacionais II Professor Cláudio Geyer Instituto de Informática - UFRGS](https://reader036.vdocuments.pub/reader036/viewer/2022062819/5706386e1a28abb82390638a/html5/thumbnails/20.jpg)
Programação Concorrente
Aplicações típicas:– Multiagentes;– Aplicações para internet;– Tolerância a Falhas;– Alto desempenho ou programação paralela.
Tipos de computação onde são usadas:grid, cloud, p2p, HPC, Big Data, computação gráfica, gerência de redes e processamento de comunicação, ...
![Page 21: Sistemas Operacionais II Professor Cláudio Geyer Instituto de Informática - UFRGS](https://reader036.vdocuments.pub/reader036/viewer/2022062819/5706386e1a28abb82390638a/html5/thumbnails/21.jpg)
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
![Page 22: Sistemas Operacionais II Professor Cláudio Geyer Instituto de Informática - UFRGS](https://reader036.vdocuments.pub/reader036/viewer/2022062819/5706386e1a28abb82390638a/html5/thumbnails/22.jpg)
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
• Às vezes por necessidade de memória maior• Para resolver uma instância maior em tempo hábil
![Page 23: Sistemas Operacionais II Professor Cláudio Geyer Instituto de Informática - UFRGS](https://reader036.vdocuments.pub/reader036/viewer/2022062819/5706386e1a28abb82390638a/html5/thumbnails/23.jpg)
Programação Paralela
Conceito– 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
![Page 24: Sistemas Operacionais II Professor Cláudio Geyer Instituto de Informática - UFRGS](https://reader036.vdocuments.pub/reader036/viewer/2022062819/5706386e1a28abb82390638a/html5/thumbnails/24.jpg)
Principais Aspectos da PC
Aspectos clássicos– Expressão da concorrência– Sincronização– Comunicação
Expressão da concorrência– criação e controle das partes concorrentes
Sincronização– redução da concorrência– necessária para produção de resultados corretos
![Page 25: Sistemas Operacionais II Professor Cláudio Geyer Instituto de Informática - UFRGS](https://reader036.vdocuments.pub/reader036/viewer/2022062819/5706386e1a28abb82390638a/html5/thumbnails/25.jpg)
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
![Page 26: Sistemas Operacionais II Professor Cláudio Geyer Instituto de Informática - UFRGS](https://reader036.vdocuments.pub/reader036/viewer/2022062819/5706386e1a28abb82390638a/html5/thumbnails/26.jpg)
Tipos básicos de PC
Em função da arquitetura (hardware)– memória compartilhada– memória distribuída
![Page 27: Sistemas Operacionais II Professor Cláudio Geyer Instituto de Informática - UFRGS](https://reader036.vdocuments.pub/reader036/viewer/2022062819/5706386e1a28abb82390638a/html5/thumbnails/27.jpg)
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
![Page 28: Sistemas Operacionais II Professor Cláudio Geyer Instituto de Informática - UFRGS](https://reader036.vdocuments.pub/reader036/viewer/2022062819/5706386e1a28abb82390638a/html5/thumbnails/28.jpg)
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
![Page 29: Sistemas Operacionais II Professor Cláudio Geyer Instituto de Informática - UFRGS](https://reader036.vdocuments.pub/reader036/viewer/2022062819/5706386e1a28abb82390638a/html5/thumbnails/29.jpg)
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 nas quais é 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.
![Page 30: Sistemas Operacionais II Professor Cláudio Geyer Instituto de Informática - UFRGS](https://reader036.vdocuments.pub/reader036/viewer/2022062819/5706386e1a28abb82390638a/html5/thumbnails/30.jpg)
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 )
Início
D * E
C
A+B *
+Fim+
![Page 31: Sistemas Operacionais II Professor Cláudio Geyer Instituto de Informática - UFRGS](https://reader036.vdocuments.pub/reader036/viewer/2022062819/5706386e1a28abb82390638a/html5/thumbnails/31.jpg)
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.
![Page 32: Sistemas Operacionais II Professor Cláudio Geyer Instituto de Informática - UFRGS](https://reader036.vdocuments.pub/reader036/viewer/2022062819/5706386e1a28abb82390638a/html5/thumbnails/32.jpg)
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ê ?
![Page 33: Sistemas Operacionais II Professor Cláudio Geyer Instituto de Informática - UFRGS](https://reader036.vdocuments.pub/reader036/viewer/2022062819/5706386e1a28abb82390638a/html5/thumbnails/33.jpg)
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.
![Page 34: Sistemas Operacionais II Professor Cláudio Geyer Instituto de Informática - UFRGS](https://reader036.vdocuments.pub/reader036/viewer/2022062819/5706386e1a28abb82390638a/html5/thumbnails/34.jpg)
Conclusões
Um programa concorrente é mais difícil de ser implementado Devido à inclusão de primitivas de gerência das tarefas
Criação, ... Devido à inclusão de primitivas sincronização no
acesso às variáveis compartilhadas 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.
![Page 35: Sistemas Operacionais II Professor Cláudio Geyer Instituto de Informática - UFRGS](https://reader036.vdocuments.pub/reader036/viewer/2022062819/5706386e1a28abb82390638a/html5/thumbnails/35.jpg)
Conclusões
Um programa concorrente é mais difícil de ser verificado (e depurado) Devido ao comportamento randômico inclusive no
caso de mesma entrada (dados) e mesmo ambiente (processadores, memória, rede, ...)
![Page 36: Sistemas Operacionais II Professor Cláudio Geyer Instituto de Informática - UFRGS](https://reader036.vdocuments.pub/reader036/viewer/2022062819/5706386e1a28abb82390638a/html5/thumbnails/36.jpg)
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 os computadores. Incluindo a paralela distribuída
![Page 37: Sistemas Operacionais II Professor Cláudio Geyer Instituto de Informática - UFRGS](https://reader036.vdocuments.pub/reader036/viewer/2022062819/5706386e1a28abb82390638a/html5/thumbnails/37.jpg)
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 :
![Page 38: Sistemas Operacionais II Professor Cláudio Geyer Instituto de Informática - UFRGS](https://reader036.vdocuments.pub/reader036/viewer/2022062819/5706386e1a28abb82390638a/html5/thumbnails/38.jpg)
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?
![Page 39: Sistemas Operacionais II Professor Cláudio Geyer Instituto de Informática - UFRGS](https://reader036.vdocuments.pub/reader036/viewer/2022062819/5706386e1a28abb82390638a/html5/thumbnails/39.jpg)
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?
![Page 40: Sistemas Operacionais II Professor Cláudio Geyer Instituto de Informática - UFRGS](https://reader036.vdocuments.pub/reader036/viewer/2022062819/5706386e1a28abb82390638a/html5/thumbnails/40.jpg)
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.
![Page 41: Sistemas Operacionais II Professor Cláudio Geyer Instituto de Informática - UFRGS](https://reader036.vdocuments.pub/reader036/viewer/2022062819/5706386e1a28abb82390638a/html5/thumbnails/41.jpg)
Auto-avaliação
Principal– PC?– PD?– PP?– Aplicações da PC?– Vantagens da PC?– Desvantagens da PC?– Principais componentes da PC?
![Page 42: Sistemas Operacionais II Professor Cláudio Geyer Instituto de Informática - UFRGS](https://reader036.vdocuments.pub/reader036/viewer/2022062819/5706386e1a28abb82390638a/html5/thumbnails/42.jpg)
Auto-avaliação
Principal– Tipos de sincronização?– Tipos de arquitetura x PC?
![Page 43: Sistemas Operacionais II Professor Cláudio Geyer Instituto de Informática - UFRGS](https://reader036.vdocuments.pub/reader036/viewer/2022062819/5706386e1a28abb82390638a/html5/thumbnails/43.jpg)
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?