BC1518-Sistemas Operacionais. Prof. Marcelo Z. do Nascimento
|
|
- Maria Antonieta Fernandes de Sá
- 8 Há anos
- Visualizações:
Transcrição
1 BC1518-Sistemas Operacionais Sincronização de Processos (aula 5 Parte 2) Prof. Marcelo Z. do Nascimento marcelo.nascimento@ufabc.edu.br
2 Roteiro Semáforos Monitores Passagem de Mensagem Exemplos em S.O. Problemas clássicos de comunicação entre processos Leituras Sugeridas
3 Semáforos E.W. Dijkstra (1965) sugeriu usar uma variável do tipo inteira para contar o número de sinais de acordar salvos para uso futuro. Um novo tipo de variável denominado Semáforo. Um semáforo poderia conter valor 0 indicando que nenhum sinal de acordar foi salvo ou valor positivo se um ou mais sinais de acordar estivessem pendentes. 3
4 Semáforos Mecanismo de sincronização que permite implementar a exclusão mútua e sincronização condicional (software) Variável inteira, não negativa, manipulada por duas instruções: DOWN e UP ; Garante uma única ação atômica e indivisível. Duas primitivas de chamadas de sistema: down (sleep) e up (wakeup) originalmente: P (teste) - proberen (down) e V (incrementa) - verhogen (up) em holandês. 4
5 Semáforos Problema da exclusão mútua Inicialmente o semáforo -> o valor 1, indicando que nenhum processo está executando sua região crítica. Se o Processo_A executar a instrução Down, faz com que o semáforo seja decrementado de 1 -> passando a ter o valor 0. 5
6 Semáforos Em seguida => Processo_A ganha o acesso a região crítica. O Processo_B também executará a instrução Down, mas como seu valor é igual a 0, ficará aguardando até que o Processo_A execute a instrução Up (volte o valor => para 1). Seja qual for o processo que entre primeiro na região crítica => o problema da exclusão será resolvido. Chamado de semáforo binário (mutex) que permite a exclusão mútua; 6
7 Semáforos Down(Var empty: Int) Begin While empty<=0 Do; (* não faz nada *) empty:=empty-1; End; Garante que, uma vez iniciada uma operação de semáforo, nenhum outro processo pode ter acesso ao semáforo até que a operação tenha terminado ou sido bloqueada. Atomicidade absoluta essencial para resolver o problema de sincronização. 7
8 Semáforos Up(Var empty: Int) Begin empty:= empty +1; end; Se um ou mais processos estiverem dormindo naquele semáforo, incapacitados de terminar uma operação, um deles seria escolhido pelo sistema e seria dado a permissão de terminar o seu down. 8
9 Semáforos Problema: Gerenciamento de recursos em problema Produtor/consumidor: Resolve o problema de perda de sinais enviados; Úteis quando aplicados em problemas de sincronização condicional onde existem processos concorrentes alocando recursos do mesmo tipo. Necessidade de três semáforos: controle do número de lugares preenchido e vazio e um mutex para controle de acesso. 9
10 Semáforos Semáfaros contadores: Full: conta o número de slots no buffer que estão ocupados; iniciado com 0; resolve sincronização; Empty: conta o número de slots no buffer que estão vazios; iniciado com o número total de slots no buffer; resolve sincronização; Semáfaros mutex 10
11 Semáforos Down(Var empty: Int) Begin While empty<=0 Do;(* não faz nada *) empty:=empty-1; End; 11
12 Semáforos Up(Var empty: Int) Begin empty:= empty +1; end; 12
13 Semáforos 13
14 Semáforos Multex em pthreads Há várias funções que podem ser usadas para sincronização dos threads O mecanismo básico usa uma variável mutex, que pode ser travado ou destravada, para proteger a região crítica; Cabe ao programador assegurar que os threads os utilizem corretamente 14
15 Mutexes em pthreads O mutex permite bloquear e desbloquear acesso a região crítica, mas há as variáveis de condição
16 Mutexes em pthreads
17 Mutexes em pthreads (Continua)
18 Mutexes em pthreads (Continuação) libera o uso do libera o uso do bloqueio mutex e espera sinalização em condc
19 Semáforos Problema: Primitiva deve ser encaixada dentro do código de cada processo. Portanto, aqueles que escrevem o código devem lembrar-se de inseri-los. Isso esta sujeito a erros por duas razões: As pessoas se esquecem das coisas; As pessoas podem ignorar a regras para ganhar uma vantagem em desempenho ou violar a segurança Erro de programação pode gerar um deadlock; Suponha que o código seja trocado no processo produtor; 19
20 Semáforos empty.adquire(); mutex.adquire(); full.adquire(); mutex.adquire(); empty.adquire(); mutex.adquire(); enter_item(item); enter_item(item); remove_item(item); mutex.release () ; mutex.release(); mutex.release(); full.release(); full.release(); empty.release(); Se o buffer estiver cheio => o produtor será bloqueado; Assim, a próxima vez que o consumidor tentar acessar o buffer, ele tenta executar um release sobre o mutex, ficando também bloqueado. 20
21 Monitores Primitiva de alto nível; Semáforos exige bastante cuidado, pois qualquer engano pode levar a problemas de sincronização imprevisíveis; Idealizado por Hoare (1974) e Brinch Hansen (1975): Primitiva de alto nível para sincronizar processos implementadas pelo compilador. É um conjunto de procedimentos, variáveis e/ou estruturas de dados agrupados em um único módulo (pacote): Exclusão mútua. 21
22 Monitores Somente um processo pode estar ativo dentro do monitor em um mesmo instante; Outros processos ficam bloqueados até que possam estar ativos no monitor. O monitor possui uma fila (FIFO) de entrada: processos que desejem executar um procedimento do monitor deve aguardam sua vez. Cabe ao compilador implementara exclusão mútua nas entradas do monitor (mutex ou semáforo binário). Compiladores tratam de forma diferente das outras chamadas de procedimento Alguns compiladores implementam a exclusão mútua por meio dos monitores exemplo: Java. 22
23 Monitores 23
24 Monitores Procedimentos para Execução: Chamada a uma rotina do monitor; Instruções iniciais => teste para detectar se um outro processo está ativo dentro do monitor; Se positivo, o processo novo ficará bloqueado até que o outro processo deixe o monitor; Caso contrário, o processo novo entra no monitor; 24
25 Monitores Exclusão mútua não é realizada pelo programador => cria procedimentos no monitor; Comunicação ocorre através de chamadas a seus procedimentos e de seus parâmetros passados; As regiões críticas devem ser definidas como procedimentos no monitor: O compilador se encarregará de garantir a exclusão mútua entre esses procedimentos; 25
26 Monitores Declaração de variáveis globais Fila de entrada Monitor Procedimentos Proc. 1 Proc. 2 Proc. n Condição C1 Condição C2 Condição Cn Inicialização de variáveis Filas de espera 26
27 Monitores Classe Main package monitorjava; public class Main { public static void main(string args[]) { ObjetoBuffer umbuffer = new ObjetoBuffer(); // criacao das threads Produtor umprodutor = new Produtor(umBuffer); Consumidor umconsumidor = new Consumidor(umBuffer); // start threads umprodutor.start(); umconsumidor.start(); 27
28 Monitores Class Objeto public class ObjetoBuffer { private int memoria = -1; private boolean acessivel = true; //variavel de condicao de escrita // metodo de escrita de dados na memoria A palavra synchronized public synchronized void escrevebuffer(int valor) { significa que o método while (!acessivel) { // nao e a vez de escrever será executado se try { puder adquirir o wait(); //suspende a thread monitor do objeto a catch (InterruptedException e) { e.printstacktrace(); quem pertence o método. System.err.println(Thread.currentThread().getName() + " produzindo o valor: " + valor); this.memoria = valor; acessivel = false; // desabilita a memoria para escrita notify(); // libera a thread que esta ESPERANDO devido a um wait( ) 28
29 Monitores Class Objeto // metodo de leitura de dados na memoria public synchronized int lerbuffer() { while (acessivel) { // nao eh a vez de ler try { wait(); //suspende a thread que chamou este metodo catch (InterruptedException e) { e.printstacktrace(); System.err.println(Thread.currentThread().getName() + " consumindo o valor: " + this.memoria); acessivel = true; // libera buffer para escrita notify(); // libera uma thread que esta ESPERANDO devido a um wait( ) return this.memoria; 29
30 Monitores Class Produtor public class Produtor extends Thread { private ObjetoBuffer o_buffer; public Produtor( ObjetoBuffer dado ) { super( "Produtor" ); o_buffer = dado; // Thread do Produtor escrevera 10 vezes em intervalos de tempo public void run(){ for ( int i = 1; i <= 10; i++ ) { try { // dorme por um tempo aleatorio Thread.sleep( ( int ) ( Math.random() * 3000 ) ); catch( InterruptedException exception ) { System.err.println( exception.tostring() ); // chama metodo do objeto buffer o_buffer.escrevebuffer( i ); System.err.println(getName() + " terminou de produzir"); 30
31 Monitores Class Consumidor public class Consumidor extends Thread { private ObjetoBuffer um_buffer; public Consumidor(ObjetoBuffer dado) { super("consumidor"); um_buffer = dado; //Thread Consumidor lera o buffer 10 vezes em intervalos public void run() { int valor, soma = 0; do { // dorme por um intervalo aleatorio try { Thread.sleep((int) (Math.random() * 3000)); // Tratamento de excecao catch (InterruptedException exception) { System.err.println(exception.toString()); valor = um_buffer.lerbuffer(); soma += valor; while (valor!= 10); System.err.println( getname() + " terminou de consumir. Totalizou: " + soma); 31
32 Monitores - Java Método Wait: O thread libera o lock do objeto O estado da thread é definido como bloqueada O thread é colocada no conjunto de espera do objeto Chamada Notify Apanha um thread qualquer na lista de threads no conjunto de espera; Move um thread do conjunto de espera para o conjunto de entrada Define o estado da thread de bloqueado para executável 32
33 Semáforo - Java final class Semaforo { private int valor; //valor do semaforo; //quantidade de processos bloqueados por semaforo public semaforo (int i) { valor = i ; // construtor synchronized void P() { if ( valor > 0 ) valor--; //se valor > 0, decrementa o valor else { esperando++; //senão, incrementa o numero threads try { wait(); catch (InterruptedException e) { ; //o processo que executou a operacao P é suspenso esperando--; ; //fim do metodo P() 33
34 Semáforo - Java synchronized void V() { //ou UP() if (esperando > 0) //se tem processo na fila de espera notify(); //tira processo da fila de espera else valor++; //senao, incrementa o valor do semaforo //fim da classe Semaforo 34
35 Semáforo - Java public class Produtor extends Thread { private ObjetoBuffer o_buffer; private Semaforo s1,s2; public void run() { for ( int i = 1; i <= 10; i++ ) { try { Thread.sleep( ( int ) ( Math.random() * 3000 ) ); // tratamento de excecao catch( InterruptedException exception ) { System.err.println( exception.tostring() ); //executa o objeto buffer s1.p(); o_buffer.escrevebuffer( i ); s2.v(); System.err.println(getName() + " terminou de produzir"); 35
36 Monitores x Semáforos Limitações de semáforos e monitores: Ambos são boas soluções somente para CPUs com memória compartilhada => não são uma boa solução para aplicações em sistemas distribuídos; Nenhuma das soluções previne troca de informações entre processo que estão em diferentes máquinas; Além disso, monitores dependem de uma linguagem de programação nem todas as linguagens suportam Monitores (JAVA); 36
37 Passagem de Mensagem Ocorre uma troca de mensagens entre processos rodando em máquinas diferentes; Utiliza-se de duas primitivas de chamadas de sistema: send (receptor, mensagem) e receive(transmissor, mensagem). O procedimento send envia para um determinado destino uma mensagem, enquanto que o procedimento receive recebe essa mensagem em uma determinada fonte; 37
38 Passagem de Mensagem Implementada de 2 maneiras: A comunicação direta entre 2 processos exige que, ao enviar ou receber uma mensagem, o processo enderece explicitamente o nome do processo receptor ou transmissor: Só permite a troca de mensagem entre dois processos; Especificação do nome dos processos envolvidos na troca de mensagens => caso de mudança desse nome o código do programa deve ser alterado e recompilado; 38
39 Passagem de Mensagem Processo A Processo B 39
40 Passagem de Mensagem A comunicação indireta entre processos utiliza uma área compartilhada, onde as mensagens podem ser colocadas pelo processo transmissor e retiradas pelo receptor. Buffer conhecido como mailbox ou port definidos no momento da criação Processo A Processo B Mailbox ou Port 40
41 Passagem de Mensagem Problema Produtor/Consumidor: Início consumidor envia uma mensagem de vazio Produtor mais rápido fica bloqueado para enviar mensagem. Consumidor mais rápido todas as mensagens estarão vazias esperando o produtor as preencha # define N 100 void producer (void){ int item; message m; while (TRUE){ item = produce_item(); //espera que uma //mensagem vazia chegue receive(consumer,&m); build_message(&m,item); send(consumer,&m); void consumer (void){ int item, i; message m; //mensagens vazias for(i=0;i<n;i++) send(producer,&m); while (TRUE){ receive(producer,&m); item = extract_item(&m); send(producer,&m); consume_item(item); 41
42 Passagem de Mensagem Bibliotecas de comunicação: MPI e PVM 42
43 Exemplos Windows XP Mascara interrupções para proteger acesso a recurso global em sistema com único processador; Usa spinlocks em sistema multiprocessado; Provê objetos despachantes (mutex, semáforos e eventos) para threads fora do kernel.
44 Exemplos Linux O kernel provê o spinlocks e semáforos para lock no kernel (multiprocessado); Máquinas com apenas um processador esse mecanismo é substituido pela ativação e desativação da preempção do kernel.
45 Problemas clássicos de comunicação entre processos Há um conjunto de problemas que tem sido amplamente discutidos e analisados a partir de vários método de sincronização. Em 1965, Dijkstra formulou e resolveu um problema de sincronização que chamou de problema do jantar dos filósofos Com isso, cada nova primitiva de sincronização criada obriga a demostrar até que ponto essa nova primitiva é eficiente
46 Problemas clássicos de comunicação entre processos Problema do Jantar dos Filósofos Cinco filósofos desejam comer espaguete; No entanto, para poder comer, cada filósofo precisa utilizar dois garfo e não apenas um. Portanto, os filósofos precisam compartilhar o uso do garfo de forma sincronizada. Os filósofos comem e pensam;
47 Problemas clássicos de comunicação entre processos Problemas que devem ser evitados: Deadlock todos os filósofos pegam um garfo ao mesmo tempo; Starvation os filosófos podem ficar indefinidamente pegando os garfos simultaneamente; 47
48 Problemas clássicos de comunicação entre processos 48
49 Problemas clássicos de comunicação entre processos Uma solução para o problema do jantar dos filósofos (parte 1) 49
50 Problemas clássicos de comunicação entre processos Uma solução para o problema do jantar dos filósofos (parte 2) 50
51 Aula 06 - Sumário Primitivas Dormir e Acordar Semáforo Monitores Problemas clássicos de comunicação de processos
52 Leituras Sugeridas Silberschatz, A., Galvin, P. B. Gagne, G. Sistemas Operacionais com Java. 7º edição. Editora Campus, TANENBAUM, A. Sistemas Operacionais Modernos. Rio de Janeiro: Pearson, 3 ed. 2010
53 Nota de Aula Acesse o link abaixo: Obrigado!!!
Roteiro. BC1518-Sistemas Operacionais. Prof. Marcelo Z. do Nascimento Semáforos
BC1518-Sistemas Operacionais Sincronização de Processos (aula 6 Parte 2) Prof. Marcelo Z. do Nascimento marcelo.nascimento@ufabc.edu.br Roteiro Semáforos Problemas clássicos de comunicação entre processos
Leia maisRevisão Ultima aula [1/2]
SOP - TADS Comunicação Interprocessos - 2 IPC Prof. Ricardo José Pfitscher dcc2rjp@joinville.udesc.br Material cedido por: Prof. Rafael Rodrigues Obelheiro Prof. Maurício Aronne Pillon Revisão Ultima aula
Leia maisSistemas Operacionais
AULA 09 Sincronização de Processos - II Monitores Conforme comentamos, o uso equivocado dos semáforos pode levar a uma situação de deadlock, por isso devemos tomar cuidado ao programar utilizando este
Leia maisSistemas Operacionais Sincronização e Comunicação entre Processos
Universidade Estadual de Mato Grosso do Sul UEMS Curso de Licenciatura em Computação Sistemas Operacionais Sincronização e Comunicação entre Processos Prof. José Gonçalves Dias Neto profneto_ti@hotmail.com
Leia maisSistemas Operacionais
Sistemas Operacionais Aula 11 Sincronização de Processos Prof.: Edilberto M. Silva http://www.edilms.eti.br Baseado no material disponibilizado por: SO - Prof. Edilberto Silva Prof. José Juan Espantoso
Leia maisSistemas Operacionais Aula 08: Sincronização de Processos. Ezequiel R. Zorzal ezorzal@unifesp.br www.ezequielzorzal.com
Sistemas Operacionais Aula 08: Sincronização de Processos Ezequiel R. Zorzal ezorzal@unifesp.br www.ezequielzorzal.com Objetivos Introduzir o problema da seção crítica, cujas soluções podem ser usadas
Leia maisDisciplina de Sistemas Distribuídos. Sincronização em SD. Prof. M.Sc. Alessandro Kraemer kraemer@utfpr.edu.br. Kraemer
Disciplina de Sistemas Distribuídos Sincronização em SD Prof. M.Sc. Alessandro kraemer@utfpr.edu.br Cronograma Contextualização Tipos de sincronização Mecanismos para sincronização da região crítica Exclusão
Leia maisThreads em Java. Sistemas Operacionais - Laboratório Professor Machado
Threads em Java Sistemas Operacionais - Laboratório Professor Machado 1 Conceitos de Programação Concorrente Uma unidade concorrente é um componente de um programa que não exige a execução seqüencial,
Leia maisSISTEMAS OPERACIONAIS
SISTEMAS OPERACIONAIS Sincronização entre Processos Andreza Leite andreza.leite@univasf.edu.br Sincronização Freqüentemente, os processos precisam se comunicar com outros processos. Isto ocorre quando
Leia maisProgramação Concorrente
Programação Concorrente Monitores e Troca de Mensagens Monitores Considere que, no projeto da solução do produtor-consumidor com semáforos, os 2 downs tenham sido trocados Se o buffer estiver cheio deadlock
Leia mais9 - Sincronização e Comunicação entre Processos
1 9 - Sincronização e Comunicação entre Processos 91 Introdução Em um sistema multitarefa, seja com um único processador ou com mais de um processador ou ainda com vários núcleos por processador, os processos
Leia maisProf. Marcos Ribeiro Quinet de Andrade Universidade Federal Fluminense - UFF Pólo Universitário de Rio das Ostras - PURO
Comunicação e Sincronismo entre processos Prof. Marcos Ribeiro Quinet de Andrade Universidade Federal Fluminense - UFF Pólo Universitário de Rio das Ostras - PURO 1 Comunicação entre Processos Processos
Leia maisSincronização. Cooperação entre Processos
Sincronização Parte II Programação Concorrente Cooperação entre Processos Vários processos executam em conjunto uma ou mais tarefas, nas quais Competem por recursos Indicam uns aos outros a: Ausência/existência
Leia maisSincronização e Comunicação entre Processos. Adão de Melo Neto
Sincronização e Comunicação entre Processos Adão de Melo Neto 1 INTRODUÇÃO Em um sistema multitarefa os processos alternam sua execução segundo critérios de escalonamento estabelecidos pelo sistema operacional.
Leia maisSistemas Operacionais. Capítulo 7 Sincronização e Comunicação entre Processos
Sistemas Operacionais Capítulo 7 Sincronização e Comunicação entre Processos Baseado no Livro e Material de Apoio de Arquitetura de Sistemas Operacionais 3ª edição - LTC - 2004 Francis Berenger Machado
Leia maisSincronização de Processos (5) Troca de Mensagens
Sincronização de Processos (5) Troca de Mensagens Passagem (Troca) de Mensagens Motivação: Semáforos e algoritmos de exclusão mútua são baseados no compartilhamento de variáveis. Isso implica no compartilhamento
Leia mais(Aula 17) Threads em Java
(Aula 17) Threads em Java Difícil As Threads thread threads de emjava classificar sãogerenciadaspelajvm. podemser com user criadasdas thread ou kernel Profa. Patrícia A seguintesmaneiras: Fazendo extend
Leia maisMonitores. Conceito Sistemas Operacionais II
Monitores Conceito Sistemas Operacionais II Monitores Autores Daniel Artur Seelig Fábio Lutz Local Universidade Federal do Rio Grande do Sul Instituto de Informática Sistemas Operacionais II Professor
Leia maisProgramação Orientada a Objetos Threads
Threads Prof. Edwar Saliba Júnior Janeiro de 2013 1 Introdução Multithreading: fornece múltiplas threads de execução para a aplicação; permite que programas realizem tarefas concorrentemente; às vezes
Leia maisUniversidade da Beira Interior. Sistemas Distribuídos
Folha 6-1 Sincronização de Threads A sincronização de Threads em Java é baseada no conceito do Monitor (de Hoare). Cada objecto Java tem associado um monitor (ou lock ) que pode ser activado se a palavra
Leia maisSistemas Operacionais
Sistemas Operacionais SINCRONIZAÇÃO E COMUNICAÇÃO ENTRE PROCESSOS MACHADO/MAIA: CAPÍTULO 07, PÁGINA 101 Prof. Pedro Luís Antonelli Anhanguera Educacional sistemas multiprogramáveis Os sistemas multiprogramáveis
Leia maisSincronização de Processos (4) Monitores
Sincronização de Processos (4) Monitores Monitores (1) Sugeridos por Dijkstra (1971) e desenvolvidos por Hoare (1974) e Brinch Hansen (1975), são estruturas de sincronização de alto nível, que têm por
Leia maisTHREADS EM JAVA. George Gomes Cabral
THREADS EM JAVA George Gomes Cabral THREADS Fluxo seqüencial de controle dentro de um processo. Suporte a múltiplas linhas de execução permite que múltiplos processamentos ocorram em "paralelo" (em computadores
Leia maisCarlos Eduardo Batista Centro de Informática - UFPB bidu@ci.ufpb.br
Carlos Eduardo Batista Centro de Informática - UFPB bidu@ci.ufpb.br Principais problemas programação concorrente Deadlocks (impasses) Starvation (inanição) Condições de corrida Erros de consistência na
Leia maisMétodos de Sincronização do Kernel
Métodos de Sincronização do Kernel Linux Kernel Development Second Edition By Robert Love Tiago Souza Azevedo Operações Atômicas Operações atômicas são instruções que executam atomicamente sem interrupção.
Leia maisSistemas Distribuídos
Sistemas Distribuídos Processos e Threads Gustavo Reis gustavo.reis@ifsudestemg.edu.br - O que são Processos? Uma abstração de um programa em execução. Mantêm a capacidade de operações (pseudo)concorrentes,
Leia maisComo foi exposto anteriormente, os processos podem ter mais de um fluxo de execução. Cada fluxo de execução é chamado de thread.
5 THREADS Como foi exposto anteriormente, os processos podem ter mais de um fluxo de execução. Cada fluxo de execução é chamado de thread. 5.1 VISÃO GERAL Uma definição mais abrangente para threads é considerá-lo
Leia maisProgramação Concorrente em java - Exercícios Práticos Abril 2004
Programação Concorrente em java - Exercícios Práticos Abril 2004 1. Introdução As threads correspondem a linhas de controlo independentes no âmbito de um mesmo processo. No caso da linguagem JAVA, é precisamente
Leia maisThreads e Concorrência em Java (Material de Apoio)
Introdução Threads e Concorrência em Java (Material de Apoio) Professor Lau Cheuk Lung http//www.inf.ufsc.br/~lau.lung INE-CTC-UFSC A maioria dos programas são escritos de modo seqüencial com um ponto
Leia maisProcessos e Threads (partes I e II)
Processos e Threads (partes I e II) 1) O que é um processo? É qualquer aplicação executada no processador. Exe: Bloco de notas, ler um dado de um disco, mostrar um texto na tela. Um processo é um programa
Leia maisUdesc/Ceplan Bacharelado em Sistemas de Informação Sistemas Operacionais. Prof. Alexandre Veloso alexandre.matos@udesc.br
Programação Concorrente [Parte 2] Udesc/Ceplan Bacharelado em Sistemas de Informação Sistemas Operacionais Prof. Alexandre Veloso alexandre.matos@udesc.br Condição de Corrida Uma forma de um processo comunicar-se
Leia maisNotas da Aula 4 - Fundamentos de Sistemas Operacionais
Notas da Aula 4 - Fundamentos de Sistemas Operacionais 1. Threads Threads são linhas de execução dentro de um processo. Quando um processo é criado, ele tem uma única linha de execução, ou thread. Esta
Leia maisJava. Marcio de Carvalho Victorino www.dominandoti.eng.br
Java Marcio de Carvalho Victorino www.dominandoti.eng.br 3. Considere as instruções Java abaixo: int cont1 = 3; int cont2 = 2; int cont3 = 1; cont1 += cont3++; cont1 -= --cont2; cont3 = cont2++; Após a
Leia maisAula 30 - Sockets em Java
Aula 30 - Sockets em Java Sockets Sockets são estruturas que permitem que funções de software se interconectem. O conceito é o mesmo de um soquete (elétrico, telefônico, etc...), que serve para interconectar
Leia maisUniversidade Federal da Paraíba
Universidade Federal da Paraíba Mestrado em Informática Fora de Sede Universidade Tiradentes Aracaju - Sergipe Disciplina Sistemas Operacionais Professor Jacques Philippe Sauvé Aluno José Maria Rodrigues
Leia maisJava : Comunicação Cliente-Servidor.
Java : Comunicação Cliente-Servidor. Objetivo: Capacitar o aluno a desenvolver uma aplicação servidora para múltiplos clientes. Apresentar as classes Socket e ServerSocket, classes de fluxo de dados, a
Leia maisAnalisar os sistemas operacionais apresentados na figura e responder as questões abaixo: Identificar
Projeto Integrador Sistemas Operacionais Prof.ª Lucilia Ribeiro GTI 3 Noturno Grupo: Anderson Alves da Mota. André Luiz Silva. Misael bezerra dos santos. Sandro de almeida silva. Analisar os sistemas operacionais
Leia maisCapítulo 2 Processos e Threads Prof. Fernando Freitas
slide 1 Capítulo 2 Processos e Threads Prof. Fernando Freitas Material adaptado de: TANENBAUM, Andrew S. Sistemas Operacionais Modernos. 3ª edição. Disponível em: http://www.prenhall.com/tanenbaum_br slide
Leia maisProblemas Clássicos de Sincronização
Problemas Clássicos de Sincronização Filósofos Jantando Filósofo i: Solução Óbvia O problema dos filósofos jantando foi introduzido e solucionado por Dijkstra em 1965. Neste problema, 5 filósofos estão
Leia maisNotas da Aula 6 - Fundamentos de Sistemas Operacionais
1. Monitores Notas da Aula 6 - Fundamentos de Sistemas Operacionais Embora os semáforos sejam uma boa solução para o problema da exclusão mútua, sua utilização não é trivial. O programador é obrigado a
Leia maisIFPE. Disciplina: Sistemas Operacionais. Prof. Anderson Luiz Moreira
IFPE Disciplina: Sistemas Operacionais Prof. Anderson Luiz Moreira SERVIÇOS OFERECIDOS PELOS SOS 1 Introdução O SO é formado por um conjunto de rotinas (procedimentos) que oferecem serviços aos usuários
Leia maisOrientação a Objetos
1. Domínio e Aplicação Orientação a Objetos Um domínio é composto pelas entidades, informações e processos relacionados a um determinado contexto. Uma aplicação pode ser desenvolvida para automatizar ou
Leia maisComputação Concorrente (MAB-117) Monitores
Computação Concorrente (MAB-117) Monitores Prof. Silvana Rossetto 1 Departamento de Ciência da Computação (DCC) Instituto de Matemática (IM) Universidade Federal do Rio de Janeiro (UFRJ) Maio de 2012 1.
Leia maisLinguagem de Programação JAVA. Técnico em Informática Professora Michelle Nery
Linguagem de Programação JAVA Técnico em Informática Professora Michelle Nery Agenda Regras paravariáveis Identificadores Válidos Convenção de Nomenclatura Palavras-chaves em Java Tipos de Variáveis em
Leia maisDisciplina: Sistemas Operacionais - CAFW-UFSM Professor: Roberto Franciscatto
Disciplina: Sistemas Operacionais - CAFW-UFSM Professor: Roberto Franciscatto Introdução Processo cooperativo é aquele que pode afetar outros processos em execução no sistema Ou ser por eles afetado Processos
Leia maisSistemas Operacionais
Sistemas Operacionais Processos Semáforos Semáforos Mecanismo de sincronização que não requer espera ocupada Dijkstra propôs usar uma variável inteira para contar o n o de WAKEUPs para uso futuro Menos
Leia maisProgramação Concorrente em Java. Profa Andréa Schwertner Charão DLSC/CT/UFSM
Programação Concorrente em Java Profa Andréa Schwertner Charão DLSC/CT/UFSM O que é programação concorrente? Um programa, múltiplos fluxos de execução Quando usar programação concorrente? Desempenho Ex.:
Leia maisProf. Marcos Ribeiro Quinet de Andrade Universidade Federal Fluminense - UFF Pólo Universitário de Rio das Ostras - PURO
Conceitos básicos e serviços do Sistema Operacional Prof. Marcos Ribeiro Quinet de Andrade Universidade Federal Fluminense - UFF Pólo Universitário de Rio das Ostras - PURO Tipos de serviço do S.O. O S.O.
Leia maisFundamentos de Programaçã. ção Concorrente
Java 2 Standard Edition Fundamentos de Programaçã ção Concorrente Helder da Rocha www.argonavis.com.br 1 Programação concorrente O objetivo deste módulo é oferecer uma introdução a Threads que permita
Leia maisProgramação Concorrente Conceitos Multiprogramação Threads
Programação Concorrente Conceitos Multiprogramação Threads Prof. Gibson Pasquini Nascimento gibson.pasquini@gmail.com O que é Concorrência? Uma unidade concorrente é um componente de um programa que não
Leia maisSistemas Distribuídos. Professora: Ana Paula Couto DCC 064
Sistemas Distribuídos Professora: Ana Paula Couto DCC 064 Questões Em uma rede de sobreposição (overlay), mensagens são roteadas de acordo com a topologia da sobreposição. Qual uma importante desvantagem
Leia maisProgramação de Computadores - I. Profª Beatriz Profº Israel
Programação de Computadores - I Profª Beatriz Profº Israel As 52 Palavras Reservadas O que são palavras reservadas São palavras que já existem na linguagem Java, e tem sua função já definida. NÃO podem
Leia maisJava Threads. Introdução
Java Threads mleal@inf.puc-rio.br 1 Introdução O único mecanismo de concorrência suportado explicitamente pela linguagem Java é multi-threading. threading. Os mecanismos de gerenciamento e sicronização
Leia mais1.6. Tratamento de Exceções
Paradigmas de Linguagens I 1 1.6. Tratamento de Exceções Uma exceção denota um comportamento anormal, indesejado, que ocorre raramente e requer alguma ação imediata em uma parte do programa [GHE 97, DER
Leia maisCurso Adonai QUESTÕES Disciplina Linguagem JAVA
1) Qual será o valor da string c, caso o programa rode com a seguinte linha de comando? > java Teste um dois tres public class Teste { public static void main(string[] args) { String a = args[0]; String
Leia maisImplementando uma Classe e Criando Objetos a partir dela
Análise e Desenvolvimento de Sistemas ADS Programação Orientada a Obejeto POO 3º Semestre AULA 04 - INTRODUÇÃO À PROGRAMAÇÃO ORIENTADA A OBJETO (POO) Parte: 2 Prof. Cristóvão Cunha Implementando uma Classe
Leia maisSISTEMAS DISTRIBUÍDOS
SISTEMAS DISTRIBUÍDOS Modelo cliente e servidor Slide 2 Nielsen C. Damasceno Modelos Cliente - Servidor A principal diferença entre um sistema centralizado e um sistema distribuído está na comunicação
Leia maisPROCESSOS. Prof. Maicon A. Sartin mapsartin@gmail.com
PROCESSOS Prof. Maicon A. Sartin mapsartin@gmail.com Cenários em Sistemas Multitarefas Um usuário pode executar diversas atividades simultâneas Música Editoração de texto Navegar na Internet Servidor pode
Leia maisSISTEMAS DISTRIBUÍDOS
SISTEMAS DISTRIBUÍDOS CUP Disk Memoey CUP Memoey Disk Network CUP Memoey Disk Remote Method Invocation (RMI) Introdução Solução JAVA para Objetos Distribuídos Um objeto existe em uma máquina É possível
Leia maisMonitores. Setembro de 2009. Monitores
Setembro de 2009 mecanismo de sincronização clássico referência influência de conceitos de programação estruturada C. A. R. Hoare, Monitors: an operating system structuring concept, Communications of the
Leia maisGrupo I [4v] b. [0,6v] De que forma é que o escalonador do Linux tenta minimizar o impacto desta limitação?
Número: Nome: LEIC/LERC 2011/12-2º Exame de Sistemas Operativos 3/Fevereiro/2012 Responda no enunciado, apenas no espaço fornecido. Identifique todas as folhas. Duração: 2h30m Grupo I [4v] 1. [0,6v] A
Leia maisSistemas Operacionais
Sistemas Operacionais Aula 13 Gerência de Memória Prof.: Edilberto M. Silva http://www.edilms.eti.br Baseado no material disponibilizado por: SO - Prof. Edilberto Silva Prof. José Juan Espantoso Sumário
Leia maisProgramação Orientada a Objetos em Java. Threads Threads Threads. Threads
Universidade Federal do Amazonas Departamento de Ciência da Computação IEC481 Projeto de Programas Programação Orientada a Objetos em Java Threads Threads Threads Threads Professor: César Melo Slides baseados
Leia maisSincronização de Processos (1) Mecanismos de busy wait
Sincronização de Processos (1) Mecanismos de busy wait Condições de Corrida Exemplo: Fila de impressão. Qualquer processo que queira imprimir precisa colocar o seu documento na fila de impressão (compartilhada).
Leia maisSistemas Operacionais. Prof. M.Sc. Sérgio Teixeira. Aula 05 Estrutura e arquitetura do SO Parte 1. Cursos de Computação
Cursos de Computação Sistemas Operacionais Prof. M.Sc. Sérgio Teixeira Aula 05 Estrutura e arquitetura do SO Parte 1 Referência: MACHADO, F.B. ; MAIA, L.P. Arquitetura de Sistemas Operacionais. 4.ed. LTC,
Leia maisSistemas Operacionais Aula 06: Threads. Ezequiel R. Zorzal ezorzal@unifesp.br www.ezequielzorzal.com
Sistemas Operacionais Aula 06: Threads Ezequiel R. Zorzal ezorzal@unifesp.br www.ezequielzorzal.com Objetivos Introduzir o conceito de thread Discutir as APIs das bibliotecas de threads Pthreads, Win32
Leia maisSistemas Operacionais Processos e Threads
Sistemas Operacionais Processos e Threads Prof. Marcos Monteiro, MBA http://www.marcosmonteiro.com.br contato@marcosmonteiro.com.br 1 Estrutura de um Sistema Operacional 2 GERÊNCIA DE PROCESSOS Um processo
Leia maisDeadlocks. Prof. Marcos Ribeiro Quinet de Andrade Universidade Federal Fluminense - UFF Pólo Universitário de Rio das Ostras - PURO
Prof. Marcos Ribeiro Quinet de Andrade Universidade Federal Fluminense - UFF Pólo Universitário de Rio das Ostras - PURO Dispositivos e recursos são compartilhados a todo momento: impressora, disco, arquivos,
Leia maisAnálises Geração RI (representação intermediária) Código Intermediário
Front-end Análises Geração RI (representação intermediária) Código Intermediário Back-End Geração de código de máquina Sistema Operacional? Conjunto de Instruções do processador? Ambiente de Execução O
Leia maisMultithreading. Programação Orientada por Objectos com Java. Ademar Aguiar. MRSC - Programação em Comunicações
Programação Orientada por Objectos com Java www.fe.up.pt/~aaguiar ademar.aguiar@fe.up.pt 1 Multithreading 154 Objectivos Ser capaz de: Explicar os conceitos básicos de multithreading Criar threads múltiplos
Leia maisProgramação Concorrente Processos e Threads
Programação Concorrente Processos e Threads Prof. Eduardo Alchieri Processos O conceito mais central em qualquer sistema operacional é o processo Uma abstração de um programa em execução Um programa por
Leia maisSistemas Operacionais. Técnicas de Implementação de Exclusão Mútua. Aula VI Prof. Rosemary Silveira
Sistemas Operacionais Técnicas de Implementação de Exclusão Mútua Aula VI Prof. Rosemary Silveira Tópicos de Apresentação Condições de Corrida Técnicas de Implementação de Exclusão Mútua Condições de Corrida
Leia maisAula 3. Sistemas Operacionais. Prof: Carlos Eduardo de Carvalho Dantas (carloseduardoxpto@gmail.com) http://carloseduardoxp.wordpress.
Sistemas Operacionais Aula 3 Prof: Carlos Eduardo de Carvalho Dantas (carloseduardoxpto@gmail.com) http://carloseduardoxp.wordpress.com Nunca cone em um computador que você não pode jogar pela janela.
Leia maisChamadas Remotas de Procedimentos (RPC) O Conceito de Procedimentos. RPC: Programa Distribuído. RPC: Modelo de Execução
Chamadas Remotas de Chamada Remota de Procedimento (RPC) ou Chamada de Função ou Chamada de Subrotina Método de transferência de controle de parte de um processo para outra parte Procedimentos => permite
Leia maisIntrodução a Java. Hélder Nunes
Introdução a Java Hélder Nunes 2 Exercício de Fixação Os 4 elementos básicos da OO são os objetos, as classes, os atributos e os métodos. A orientação a objetos consiste em considerar os sistemas computacionais
Leia maisThreads e Sockets em Java. Threads em Java. Programas e Processos
Threads em Java Programas e Processos Um programa é um conceito estático, isto é, um programa é um arquivo em disco que contém um código executável por uma CPU. Quando este programa é executado dizemos
Leia mais3. O NIVEL DA LINGUAGEM DE MONTAGEM
3. O NIVEL DA LINGUAGEM DE MONTAGEM Nas aulas anteriores tivemos a oportunidade de discutir dois diferentes níveis presentes na maioria dos computadores atuais. Nesta aula dedica-se a outro nível que também
Leia maisBC 1518 - Sistemas Operacionais Sistema de Arquivos (aula 10 Parte 2) Prof. Marcelo Z. do Nascimento
BC 1518 - Sistemas Operacionais Sistema de Arquivos (aula 10 Parte 2) Prof. Marcelo Z. do Nascimento 1 Gerência de espaço em disco Cópia de segurança do sistema de arquivo Roteiro Confiabilidade Desempenho
Leia maisUniversidade da Beira Interior Cursos: Matemática /Informática e Ensino da Informática
Folha 1-1 Introdução à Linguagem de Programação JAVA 1 Usando o editor do ambiente de desenvolvimento JBUILDER pretende-se construir e executar o programa abaixo. class Primeiro { public static void main(string[]
Leia mais7 Processos. 7.1 Introdução
1 7 Processos 7.1 Introdução O conceito de processo é a base para a implementação de um sistema multiprogramável. O processador é projetado apenas para executar instruções, não se importando com qual programa
Leia maisA memória é um recurso fundamental e de extrema importância para a operação de qualquer Sistema Computacional; A memória trata-se de uma grande
A memória é um recurso fundamental e de extrema importância para a operação de qualquer Sistema Computacional; A memória trata-se de uma grande região de armazenamento formada por bytes ou palavras, cada
Leia maisIntrodução a Threads Java
Introdução a Threads Java Prof. Gerson Geraldo Homrich Cavalheiro Universidade Federal de Pelotas Departamento de Informática Instituto de Física e Matemática Pelotas RS Brasil http://gersonc.anahy.org
Leia maisCONCEITOS DE LINGUAGEM DE PROGRAMAÇÃO CARACTERÍSTICAS. João Gabriel Ganem Barbosa
CONCEITOS DE LINGUAGEM DE PROGRAMAÇÃO CARACTERÍSTICAS João Gabriel Ganem Barbosa Sumário Motivação História Linha do Tempo Divisão Conceitos Paradigmas Geração Tipos de Dados Operadores Estruturada vs
Leia maisComandos de repetição For (inicialização; condição de execução; incremento/decremento) { //Código }
Este documento tem o objetivo de demonstrar os comandos e sintaxes básicas da linguagem Java. 1. Alguns passos para criar programas em Java As primeiras coisas que devem ser abordadas para começar a desenvolver
Leia maisMC504 - Sistemas Operacionais
MC504 - Sistemas Operacionais Algoritmo da Padaria Problema dos Produtores e Consumidores Primitivas de Sincronização Islene Calciolari Garcia Primeiro Semestre de 2014 Sumário 1 Algoritmo da Padaria 2
Leia maisSumário. Deadlock. Definição. Recursos. M. Sc. Luiz Alberto lasf.bel@gmail.com
Sumário Condições para Ocorrência de Modelagem de Evitando deadlock Algoritmo do banqueiro M. Sc. Luiz Alberto lasf.bel@gmail.com Aula - SO 1 Definição Um conjunto de N processos está em deadlock quando
Leia maisBACHARELADO EM SISTEMAS DE INFORMAÇÃO EaD UAB/UFSCar Sistemas de Informação - prof. Dr. Hélio Crestana Guardia
O Sistema Operacional que você usa é multitasking? Por multitasking, entende-se a capacidade do SO de ter mais de um processos em execução ao mesmo tempo. É claro que, num dado instante, o número de processos
Leia maisUNIVERSIDADE FEDERAL DO RIO GRANDE DO SUL INSTITUTO DE INFORMÁTICA INFORMÁTICA APLICADA
Responda 1) Quem desenvolveu a linguagem C? Quando? 2) Existe alguma norma sobre a sintaxe da linguagem C? 3) Quais são os tipos básicos de dados disponíveis na linguagem C? 4) Quais são as principais
Leia maisArquitetura de Computadores. Tipos de Instruções
Arquitetura de Computadores Tipos de Instruções Tipos de instruções Instruções de movimento de dados Operações diádicas Operações monádicas Instruções de comparação e desvio condicional Instruções de chamada
Leia maisOrientação a Objetos
Orientação a Objetos 1. Sobrecarga (Overloading) Os clientes dos bancos costumam consultar periodicamente informações relativas às suas contas. Geralmente, essas informações são obtidas através de extratos.
Leia maisSISTEMAS OPERACIONAIS CAPÍTULO 3 CONCORRÊNCIA
SISTEMAS OPERACIONAIS CAPÍTULO 3 CONCORRÊNCIA 1. INTRODUÇÃO O conceito de concorrência é o princípio básico para o projeto e a implementação dos sistemas operacionais multiprogramáveis. O sistemas multiprogramáveis
Leia maisComunicação em Sistemas Distribuídos
Comunicação em Sistemas Distribuídos A diferença mais importante entre os Sistemas Distribuídos e os Sistemas Uniprocessadores é a comunicação inter-processo. Nos uniprocessadores esta comunicação é feita
Leia maisSincronização de Processos (2)
Sincronização de Processos (2) Tipos de Soluções (cont.) Soluções de Hardware Inibição de interrupções Instrução TSL (apresenta busy wait) Soluções de software com busy wait Variável de bloqueio Alternância
Leia maisProcessamento de Dados
Processamento de Dados Execução de Programas Os computadores não entendem nada além de comandos, dados e endereços escritos em linguagem binária, também chamada de linguagem de baixo nível. Ela utiliza
Leia mais