Fundamentos. Módulo 6: Sincronização de Processos. Bounded-Buffer (Cont.) Bounded-Buffer
|
|
- Rui Mota Furtado
- 8 Há anos
- Visualizações:
Transcrição
1 Módulo 6: Sincronização de Processos Fundamentos Fundamentos O problema das regiões críticas Hardware de Sincronização Semáforos Problemas Clássicos de Sincronização Regiões Críticas Monitores Sincronização no Solaris 2 Transações Atômicas Acesso concorrente a dados compartilhados pode resultar em inconsistências. Manter a consistência de dados requer a utilização de mecanismos para garantir a execução ordenada de processos cooperantes. Soluções de memória compartilhada com área de armazenamento limitada (bounded-buffer capítulo 4) permite no máximo n 1 itens no buffer ao mesmo tempo. Uma solução, na qual N buffers são utilizados não é simples. Suponha que sejam feitas modificações no código do produtor-consumidor adicionando uma variável counter, inicializada em 0 e incrementada cada vez que um novo item é adicionado ao buffer Bounded-Buffer Bounded-Buffer (Cont.) Dados compartilhados type item = ; var buffer array [0..n-1] of item; in, out: 0..n-1; counter: 0..n; in, out, counter := 0; Processo Produtor produz um item em nextp while counter = n do no-op; buffer [in] := nextp; in := in + 1 mod n; counter := counter +1; Processo consumidor while counter = 0 do no-op; nextc := buffer [out]; out := out + 1 mod n; counter := counter 1; consume um item em nextc Os comandos: counter := counter + 1; counter := counter - 1; Devem ser executados atomicamente
2 O Problema das Regiões Críticas n processos todos competindo para utilização dos mesmos dados compartilhados Cada processo tem um segmento de código, chamado região crítica, no qual os dados compartilhados são acessados. Problema garantir que quando um processo está executando sua nenhum outro processo tem permissão de executar a mesma região. Estrutura do Processo P i código de entrada código de saída Solução para o Problema da Região Crítica 1. Exclusão Mútua. Se um processo Pi está executando sua, então nenhuma de outro processo pode estar sendo executada. 2. Progresso. Se nenhuma está sendo executada e existem processos em espera para entrar em suas regiões críticas, apenas esses processos podem ser selecionados para entrar em suas regiões críticas e essa seleção não pode ser adiada indefinidamente. 3. Espera Limitada. Existe um limite para o número de vezes que outros processos são selecionados para entrar em suas regiões críticas, depois que um processo fez uma requisição para entrar em sua região, e antes que essa requisição seja atendida. 1. É assumido que cada processo executa em uma velocidade diferente de zero 2. Nenhuma hipótese é feita referente à velocidade relativa de execução dos n processos Tentativas Iniciais de Resolver o Problema Algoritmo 1 Somente 2 processos, P 0 e P 1 Estrutura Geral do processo P i (outro processo P j ) código de entrada código de saída Processos podem compartilhar algumas variáveis comuns para sincronizar suas ações. Variáveis compartilhadas: var turn: (0..1); inicialmente turn = 0 turn - i P i pode entrar na sua Processo P i while turn i do no-op; turn := j; Satisfaz exclusão mútua, mas não progresso
3 Algoritmo 2 Variáveis compartilhadas: var flag: array [0..1] of boolean; inicialmente flag [0] = flag [1] = false. flag [i] = true P i pronto para entrar na Processo P i flag[i] := true; while flag[j] do no-op; flag [i] := false; Satisfaz exclusão mútua, mas não progresso. Algoritmo 3 Combinar variáveis compartilhadas dos algoritmos 1 e 2. Processo P i flag [i] := true; turn := j; while (flag [j] and turn = j) do no-op; flag [i] := false; Atende os três requisitos; resolve o problema de seção crítica para dois processos Algoritmo para Diversos Processos Algoritmo para Diversos Processos (Cont.) Antes de entrar na sua, processos recebem um número. Quem possuir o menor número entra primeiro. Se processos P i e P j recebem o mesmo número, se i < j, então P i é atendido primeiro; senão P j é atendido primeiro. O esquema de numeração sempre gera números em ordem crescente; ex.: 1,2,3,3,3,3,4,5... Conhecido também como algoritmo de agências bancárias (bakery algorithm) Notação < ordem lexográfica (número do ticket, número do proc.) (a,b) < (c,d) se a < c ou se a = c e b < d max (a 0,, a n-1 ) é um número k, tal que k a i, para i = 0,, n 1 Dados compartilhados var choosing: array [0..n 1] of boolean; number: array [0..n 1] of integer, Estruturas de dados são inicializadas em false e 0 respectivamente
4 Algoritmo para Diversos Processos (Cont.) Hardware de Sincronização choosing[i] := true; number[i] := max(number[0], number[1],, number [n 1])+1; choosing[i] := false; for j := 0 to n 1 do begin while choosing[j] do no-op; while number[j] 0 and (number[j],j) < (number[i], i) do no-op; number[i] := 0; Testar e modificar o conteúdo de uma área de memória atomicamente. function Test-and-Set (var target: boolean): boolean; begin Test-and-Set := target; target := true; Exclusão Mútua usando Test-and-Set Semáforos Dados Compartilhados: var lock: boolean (initially false) Processo P i while Test-and-Set (lock) do no-op; lock := false; Ferramenta de sincronização que não requer espera ocupada (busy waiting). Semáforo S variável inteira Somente pode ser acessada via duas operações indivisíveis (atômicas) wait (S): while S 0 do no-op; S := S 1; signal (S): S := S + 1;
5 Exemplo: Seção Crítica com n Processos Implementação de Semáforos Variáveis compartilhadas var mutex : semaphore initially mutex = 1 Processo P i signal(mutex); Definição de semáforo é feita através de um registro type semaphore = record value: integer L: list of process; São assumidas duas operações simples: block: suspende o processo que a evoca. wakeup(p): restaura a execução de um processo bloqueado P Implementação (Cont.) Operações sobre semáforos podem ser definidas como: wait(s): S.value := S.value 1; if S.value < 0 then begin signal(s): S.value := S.value = 1; if S.value 0 then begin adiciona este processo a S.L; block; remove o processo P de S.L; wakeup(p); Semáforos Empregados para Sincronização Execute B em P j somente após A executar em P i Use semáforo flag inicializado em 0 Código: P i A signal(flag) P j wait(flag) B
6 Deadlock (Impasse) e Starvation (Abandono) Dois tipos de Semáforos Deadlock dois ou mais processos estão esperando indefinidamente por um evento que pode ser causado somente por um dos processos esperando o evento. Seja S e Q dois semáforos inicializados em 1 P 0 P 1 wait(s); wait(q); wait(q); wait(s); Semáforo Contador valor nele armazenado pode ser qualquer número inteiro. Semáforo Binário valor nele armazenado pode variar entre 0 e 1; pode ser implementado mais simplesmente. É possível implementar um semáforo contador S como um semáforo binário. signal(s); signal(q); signal(q) signal(s); Starvation bloqueio indefinido. Um processo pode nunca ser removido da fila do semáforo em que está suspensa devido a um mecanismo de seleção injusta Implementando S como um Semáforo Binário Implementando S (Cont.) Estruturas de dados: Inicialização: var S1: binary-semaphore; S2: binary-semaphore; S3: binary-semaphore; C: integer; S1 = S3 = 1 S2 = 0 C = valor inicial do semáforo S operação wait operação signal wait(s3); wait(s1); C := C 1; if C < 0 then begin signal(s1); wait(s2); end else signal(s1); signal(s3); wait(s1); C := C + 1; if C 0 then signal(s2); signal(s)1;
7 Problemas Clássicos de Sincronização Problema Bounded-Buffer Problema do Buffer de tamanho limitado (Bounded-Buffer) Problema dos Leitores e Escritores Problema dos Filósofos Dados compartilhados type item = var buffer = full, empty, mutex: semaphore; nextp, nextc: item; full :=0; empty := n; mutex :=1; Problema Bounded-Buffer (Cont.) Problema Bounded-Buffer (Cont.) Processo produtor produz um item em nextp wait(empty); signal(mutex); signal(full); Processo consumidor wait(full) remove um item de buffer para nextc signal(mutex); signal(empty); consome o item em nextc
8 Problema dos Leitores e Escritores Problema dos Leitores e Escritores(Cont.) Dados compartilhados var mutex, wrt: semaphore (=1); readcount : integer (=0); Processo Escritor wait(wrt); realização da escrita signal(wrt); Processo Leitor readcount := readcount +1; if readcount = 1 then wait(wrt); signal(mutex); realização da leitura readcount := readcount 1; if readcount = 0 then signal(wrt); signal(mutex): Problema dos Filósofos Problema dos Filósofos (Cont.) Dados compartilhados var chopstick: array [0..4] of semaphore; (=1 initially) Filósofo i: wait(chopstick[i]) wait(chopstick[i+1 mod 5]) comendo signal(chopstick[i]); signal(chopstick[i+1 mod 5]); pensando
9 Regiões Críticas Regiões Críticas (Cont.) Construção para sincronização em alto nível Uma variável compartilhada v do tipo T, é declarada como: var v: shared T Variável v é acessada somente através do comando region v when B do S onde B é uma expressão Booleana. Enquanto o comando S está sendo executado, nenhum outro processo pode acessar a variável v. Regiões que referem a mesma variável compartilhada excluem umas as outras no tempo. Quando um processo tenta executar o comando region, a expressão Booleana B é avaliada. Se B é true, comando S é executado. Se é falso, o processo é atrasado até B tornar-se true e nenhum outro processo estiver na região associada com v Exemplo Bounded Buffer Bounded Buffer (Cont.) Variáveis compartilhadas: var buffer: shared record pool: array [0..n 1] of item; count,in,out: integer Processo produtor insere nextp no buffer compartilhado region buffer when count < n do begin pool[in] := nextp; in:= in+1 mod n; count := count + 1; Processo consumidor remove um item do buffer compartilhado e põem em nextc region buffer when count > 0 do begin nextc := pool[out]; out := out+1 mod n; count := count 1;
10 Implementação: region x when B do S Implementação (Cont.) Associa com a variável compartilhada x, as seguintes variáveis: var mutex, first-delay, second-delay: semaphore; first-count, second-count: integer, Acesso mutuamente exclusivo à é possibilitado pela variável mutex. Se um processo não pode entrar na por causa da expressão booleana B, ele inicialmente espera no semáforo firstdelay (primeira espera); ele então é movido para o semáforo second-delay (segunda espera) antes de poder reavaliar B. Manter controle do número de processos esperando nos semáforos first-delay e second-delay, com variáveis first-count e second-count respectivamente. O algoritmo assume uma ordenação FIFO na fila de processos esperando por um semáforo. Para uma disciplina arbitrária de fila, uma implementação mais complicada é necessária while not B do begin first-count := first-count + 1; if second-count > 0 then signal(second-delay) else signal(mutex); wait(first-delay): first-count := first-count 1; if first-count > 0 then signal(first-delay) else signal(second-delay); wait(second-delay); second-count := second-count 1; S; if first-count >0 then signal(first-delay); else if second-count >0 then signal(second-delay); else signal(mutex); Monitores Construção de sincronização de alto nível que permite o compartilhamento seguro de um tipo de dados abstrato entre processos concorrentes. type monitor-name = monitor declarações de variáveis procedure entry P1 :(); begin procedure entry P2(); begin procedure entry Pn (); begin begin código de inicialização end
11 Monitores (Cont.) Visão Esquemática de um Monitor Para permitir que um processo espere no monitor, uma variável condicional deve ser declarada, como var x, y: condition Variáveis condicionais somente podem ser usadas com as operações wait e signal. A operação x.wait; indica que o processo que chama esta operação está suspenso até outro processo chamar x.signal; A operação x.signal restaura exatamente um processo suspenso. Se nenhum processo está suspenso, a operação signal não possui efeito Monitor com Variáveis Condicionais Exemplo dos Filósofos type dining-philosophers = monitor var state : array [0..4] of :(thinking, hungry, eating); var self : array [0..4] of condition; procedure entry pickup (i: 0..4); begin state[i] := hungry, test (i); if state[i] eating then self[i], wait, procedure entry putdown (i: 0..4); begin state[i] := thinking; test (i+4 mod 5); test (i+1 mod 5);
12 Exemplo dos Filósofos (Cont.) procedure test(k: 0..4); begin if state[k+4 mod 5] eating and state[k] = hungry and state[k+1 mod 5] ] eating then begin state[k] := eating; self[k].signal; begin for i := 0 to 4 end. do state[i] := thinking; Implementação de Monitor com Semáforos Variáveis var mutex: semaphore (init = 1) next: semaphore (init = 0) next-count: integer (init = 0) Cada procedimento externo F será substituído por corpo de F; if next-count > 0 then signal(next) else signal(mutex); Exclusão mútua dentro do monitor é garantida Implementação de Monitor (Cont.) Implementação de Monitor (Cont.) Para cada variável condicional x, tem-se: var x-sem: semaphore (init = 0) x-count: integer (init = 0) A operação x.wait pode ser implementada como: x-count := x-count + 1; if next-count >0 then signal(next) else signal(mutex); wait(x-sem); x-count := x-count 1; A operação x.signal pode ser implementada como: if x-count > 0 then begin next-count := next-count + 1; signal(x-sem); wait(next); next-count := next-count 1;
13 Implementação de Monitor (Cont.) Sistema Operacional Solaris 2 Construção da espera condicional: x.wait(c); c expressão inteira avaliada quando a operação wait é executada. Valor de c (número de prioridade) é armazenado com o nome do processo que está suspenso. Quando x.signal é executado, o processo com o menor número de prioridade associada é executado. Verificar duas condições para estabelecer o correto funcionamento do sistema: Processos usuários devem sempre realizar suas chamadas em uma seqüência correta. Deve garantir que um processo não cooperativo não ignore o protocolo de acesso ao recurso pelo monitor e tente usar diretamente o recurso compartilhado. Implementa uma variedade de mecanismos de sincronização para suportar multitarefa, múltiplos fluxos de execução (incluindo threads em tempo real), e multiprocessamento. Usa semáforos adaptáveis para eficiência quando protegendo dados de pequenos segmentos de códigos. Usa variáveis condicionais e semáforos leitores e escritores quando seções maiores de código necessitam acessar os dados
Sistemas 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 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 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 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: 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 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 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 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 maisSistemas Operacionais: Sincronização entre processos
Sistemas Operacionais: Sincronização entre processos Sincronização Programa concorrente Executado por diversos processos Acesso concorrente a dados Paralelismo real x Paralelismo aparente Multiprocessadores:
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
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. 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 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 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 maisCapítulo 6: Sincronização de Processos. Operating System Concepts 8th Edition
Capítulo 6: Sincronização de Processos Módulo 6: Sincronização de Processos Fundamentos O problema das Regiões Críticas Solução de Peterson Hardware de Sincronização Travas com Mutex Semáforos Problemas
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 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 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 Operativos I
Sincronização de Processos Luis Lino Ferreira / Maria João Viamonte Fevereiro de 2006 Sumário Problemas inerentes à gestão de recursos Inconsistência de dados versus sincronização de processos O problema
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 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 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 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 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 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 Gerência de processos Controle e descrição de processos Edson Moreno edson.moreno@pucrs.br http://www.inf.pucrs.br/~emoreno Sumário Representação e controle de processos pelo SO Estrutura
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 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 mais- UNIVERSIDADE DO VALE DO RIO DOS SINOS CIÊNCIAS EXATAS E TECNOLÓGICAS Curso: Informática / Ciência da Computação
Programação 1I Prof. Osório Fila / Alocação Estática Pag.: 1 - UNIVERSIAE O VALE O RIO OS SINOS IÊNIAS EXATAS E TENOLÓGIAS urso: Informática / iência da omputação Programação II isciplina: Linguagem de
Leia maisEstrutura de Dados. Introdução a Ponteiros. Prof. Gerson Borges Estrutura de Dados I 1
Estrutura de Dados Introdução a Ponteiros Prof. Gerson Borges Estrutura de Dados I 1 Sumário è Explicação da importância do planejamento de ensino; è Métodos e técnicas que iremos trabalhar durante o semestre;
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 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 maisPROGRAMAÇÃO II 3. FILA DINÂMICA
3. FILA DINÂMICA PROGRAMAÇÃO II Prof. Jean Eduardo Glazar Uma fila é um tipo especial de lista na qual todas as inserções são feitas sempre depois do fim e as deleções no início. Por isso também recebe
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 maisBC1518-Sistemas Operacionais. Prof. Marcelo Z. do Nascimento marcelo.nascimento@ufabc.edu.br
BC1518-Sistemas Operacionais Sincronização de Processos (aula 5 Parte 2) Prof. Marcelo Z. do Nascimento marcelo.nascimento@ufabc.edu.br Roteiro Semáforos Monitores Passagem de Mensagem Exemplos em S.O.
Leia maisTabela de Símbolos. Análise Semântica A Tabela de Símbolos. Principais Operações. Estrutura da Tabela de Símbolos. Declarações 11/6/2008
Tabela de Símbolos Análise Semântica A Tabela de Símbolos Fabiano Baldo Após a árvore de derivação, a tabela de símbolos é o principal atributo herdado em um compilador. É possível, mas não necessário,
Leia maisMC714 - Sistemas Distribuídos. Leandro Villas
MC714 - Sistemas Distribuídos Aula de Hoje Aula Passada Relógios Lógicos Relógios de Lamport Relógios Vetoriais Aula de Hoje Exclusão Mútua Algoritmos de Eleição Exclusão mútua Questão fundamental em SDs
Leia maisSistemas de Computação. Threads e Sincronização
Threads e Sincronização Processos concorrentes Os processos em execução sob um sistema operacional podem ser: independentes (não há interferência entre eles) cooperativos (há interferência entre eles)
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 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 maisConcurso Público para provimento de cargo efetivo de Docentes. Edital 20/2015 CIÊNCIA DA COMPUTAÇÃO I Campus Rio Pomba
Questão 01 Assumindo um registrador de 10 bits e utilizando-se de representação binária, com valores negativos representados em código de 2, os valores em representação decimal 235, -189 possuem, respectivamente,
Leia maisSistemas Distribuídos. Aleardo Manacero Jr.
Sistemas Distribuídos Aleardo Manacero Jr. Conteúdo Conceitos fundamentais Estratégias de controle: relógios e algoritmos de sincronismo Serviços: arquivos e memória Corba Processamento distribuído Sistemas
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 maisLABORATÓRIO DE SISTEMAS OPERACIONAIS. PROFª. M.Sc. JULIANA HOFFMANN QUINONEZ BENACCHIO
LABORATÓRIO DE SISTEMAS OPERACIONAIS PROFª. M.Sc. JULIANA HOFFMANN QUINONEZ BENACCHIO Sistemas Operacionais Conteúdo retirado de: SOsim: SIMULADOR PARA O ENSINO DE SISTEMAS OPERACIONAIS Luiz Paulo Maia
Leia maisDisplay de 7. PdP. Autor: Tiago Lone Nível: Básico Criação: 16/12/2005 Última versão: 18/12/2006. Pesquisa e Desenvolvimento de Produtos
TUTORIAL Display de 7 Segmentos Autor: Tiago Lone Nível: Básico Criação: 16/12/2005 Última versão: 18/12/2006 PdP Pesquisa e Desenvolvimento de Produtos http://www.maxwellbohr.com.br contato@maxwellbohr.com.br
Leia maisEXEMPLO: Processo para atualização da hora Processo para monitoramento da necessidade de proteção de tela. Figura 4-1 - Exemplo
4 PROCESSOS Os primeiros sistemas operacionais permitiam que apenas um processo fosse executado por vez. Dessa maneira, este processo tinha todo o sistema computacional a sua disposição. Os atuais sistemas
Leia maisPipeline. Todos os estágios devem estar prontos ao mesmo tempo para prosseguir.
O throughput de um pipeline é determinado pela freqüência com que uma instrução sai do pipeline Todos os estágios devem estar prontos ao mesmo tempo para prosseguir O tempo requerido para mover uma instrução
Leia maisFUNDAÇÃO EDUCACIONAL DE ITUIUTABA
FUNDAÇÃO EDUCACIONAL DE ITUIUTABA ASSOCIADA À UNIVERSIDADE DO ESTADO DE MINAS GERAIS CURSO DE SISTEMA DE INFORMAÇÃO PILHA E FILA Prof. Walteno Martins Parreira Júnior www.waltenomartins.com.br waltenomartins@yahoo.com
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 maisARQUITETURA DE COMPUTADORES E SISTEMAS OPERACIONAIS P/ CONCURSOS PÚBLICOS FOCO: ESAF/CESGRANRIO/FCC. Prof. Almeida Jr
ARQUITETURA DE COMPUTADORES E SISTEMAS OPERACIONAIS P/ CONCURSOS PÚBLICOS FOCO: ESAF/CESGRANRIO/FCC Prof. Almeida Jr Processos Conceitos Básicos Nomes Tipos Batch: jobs CPU-bound T.Sharing: Tarefas/Processos
Leia maisFUNCTION ) RETURNS INTEGER AS $$ DECLARE
PERFORM O comando PERFORM permite a execução de um comando SELECT desprezando o resultado do comando. PERFORM query; A variável especial FOUND é definida como verdadeiro se a instrução produzir pelo menos
Leia maisFaculdade Lourenço Filho - ENADE 2011-1
1. Quando se constrói um banco de dados, define-se o modelo de entidade e relacionamento (MER), que é a representação abstrata das estruturas de dados do banco e seus relacionamentos. Cada entidade pode
Leia maisNesta aula serão apresentados alguns comandos de condição, repetição e gráficos.
3 COMANDOS CONDICIONAIS E DE LAÇO Nesta aula serão apresentados alguns comandos de condição, repetição e gráficos. 3.1 COMANDOS CONDICIONAIS 3.1.1 Comando IF Como o próprio nome já indica, estes comandos
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 maisEstruturas do Sistema de Computação
Estruturas do Sistema de Computação Prof. Dr. José Luís Zem Prof. Dr. Renato Kraide Soffner Prof. Ms. Rossano Pablo Pinto Faculdade de Tecnologia de Americana Centro Paula Souza Estruturas do Sistema de
Leia maisGerência do Processador
Andrique Amorim www.andrix.com.br professor@andrix.com.br Gerência do Processador Desenvolvimento web II IMPORTANTE SABER Desenvolvimento web II DEADLOCK (interbloqueio, blocagem, impasse) Situação em
Leia maisFilas. A ordem de saída corresponde diretamente à ordem de entrada dos elementos. Fila de caixa bancário
Filas Fila é um tipo de lista linear onde as inserções são realizadas num extremo (final da Fila) e as remoções restritas ao outro (começo da Fila). O primeiro a entrar é o primeiro a sair e último a entrar
Leia maisProgramação Estruturada. Programação Estruturada. Idéias Básicas da Programação Estruturada
Programação Estruturada Programação Estruturada Paradigmas de Linguagens de Programação As linguagens desse paradigma são muitas vezes chamadas de linguagens convencionais, procedurais ou imperativas.
Leia maisEstrutura de Dados Pilha (Stack)
Estrutura de Dados Pilha (Stack) Estrutura de Dados que corresponde a uma lista sequencial com a propriedade seguinte: LIFO O primeiro elemento a entrar é o último a sair ( Last in First Out ) Operações
Leia maisProgramação WEB I Estruturas de controle e repetição
Programação WEB I Estruturas de controle e repetição Operadores de Incremento Operadores de incremento servem como expressões de atalho para realizar incrementos em variáveis Operadores de Incremento Vamos
Leia maisSintaxe e Semântica. Fases da Compilação. programa fonte
Sintaxe e Semântica mleal@inf.puc-rio.br Fases da Compilação programa fonte tokens parse tree árvore anotada ou outra forma intermediária código intermediário código objeto código objeto otimizado scanner
Leia mais7. ESTRUTURAS DE DADOS ESTÁTICAS E DINÂMICAS
7. ESTRUTURAS DE DADOS ESTÁTICAS E DINÂMICAS Até... 7.1 Alocação Estática Alocação de Espaço em Memória Como já foi visto anteriormente, a memória de um computador compõe-se de uma sequência de palavras,
Leia maisListando itens em ComboBox e gravando os dados no Banco de Dados MySQL.
Listando itens em ComboBox e gravando os dados no Banco de Dados MySQL. Prof. Vitor H. Migoto de Gouvêa Colégio IDESA 2012 Edição 7 Listando e Gravando Listando itens em ComboBox e gravando os dados no
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 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 maisEstruturas de Dados Pilhas, Filas e Deques
Estruturas de Dados Pilhas, Filas e Deques Prof. Eduardo Alchieri Estruturas de Dados Pilhas Pilhas Lista LIFO (Last In, First Out) Os elementos são colocados na estrutura (pilha) e retirados em ordem
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 ABERTOS Prof. Ricardo Rodrigues Barcelar http://www.ricardobarcelar.com
- Aula 2-1. PRINCÍPIOS DE SOFTWARE DE ENTRADA E SAÍDA (E/S) As metas gerais do software de entrada e saída é organizar o software como uma série de camadas, com as mais baixas preocupadas em esconder as
Leia maisPROGRAMAÇÃO II 3. PILHA DINÂMICA
3. PILHA DINÂMICA PROGRAMAÇÃO II Prof. Jean Eduardo Glazar Uma pilha é um tipo especial de Pilha na quais todas as inserções e remoções são feitas na primeira posição, que é chamada de topo. Outro nome
Leia mais2 echo "PHP e outros.";
PHP (Hypertext Preprocessor) Antes de qualquer coisa, precisamos entender o que é o PHP: O PHP(Hypertext Preprocessor) é uma linguagem interpretada gratuita, usada originalmente apenas para o desenvolvimento
Leia maisSistemas Operativos 2005/2006. Arquitectura Cliente-Servidor Aplicada A Uma Biblioteca. Paulo Alexandre Fonseca Ferreira Pedro Daniel da Cunha Mendes
Sistemas Operativos 2005/2006 Arquitectura Cliente-Servidor Aplicada A Uma Biblioteca Turma 3EIC3 Grupo 5 Paulo Alexandre Fonseca Ferreira Pedro Daniel da Cunha Mendes O trabalho efectuado, consiste numa
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 maisSistemas Operacionais
Sistemas Operacionais Processos - Parte 2 Prof. Dr. Fábio Rodrigues de la Rocha (Processos - Parte 2) 1 / 33 (Processos - Parte 2) 2 / 33 (Processos - Parte 2) 3 / 33 (Processos - Parte 2) 4 / 33 (Processos
Leia maisDisciplina: Sistemas Operacionais - CAFW-UFSM Professor: Roberto Franciscatto
Disciplina: Sistemas Operacionais - CAFW-UFSM Professor: Roberto Franciscatto Introdução Considerações: Recurso caro e escasso; Programas só executam se estiverem na memória principal; Quanto mais processos
Leia maisManipulação de Arquivos em Pascal
Manipulação de Arquivos em Pascal Estrutura de Dados II Aula 03 UFS - DComp Adaptados a partir do material da Profa. Kenia Kodel Cox 1 Para implementar programa infantil para ordenação (alfabética) de
Leia maisProgramação distribuída e paralela (C. Geyer) RPC 1
Programação distribuída e paralela (C. Geyer) RPC 1 Autores C. Geyer Local II-UFRGS Versão v6 2008-2 Disciplinas SOII Programação distribuída e paralela (C. Geyer) RPC 2 Bibliografia base original dos
Leia maisSistemas Operacionais. Prof. André Y. Kusumoto andrekusumoto.unip@gmail.com
Sistemas Operacionais Prof. André Y. Kusumoto andrekusumoto.unip@gmail.com Estruturas de Sistemas de Computação O sistema operacional precisa garantir a operação correta do sistema de computação. Operação
Leia maisCiência de Computadores Sistemas Distribuídos e Móveis
Ciência de Computadores Sistemas Distribuídos e Móveis Lista de Exercícios Data: 4 de Novembro de 2013 Questões sobre o capítulo 1, Tanenbaum & van Steen: Fundamentos 1) Explique o significado de transparência,
Leia maisPL/SQL. Profa. Dra. Cristina Dutra de Aguiar Ciferri. Laboratório de Bases de Dados PL/SQL
PL/SQL Laboratório de Bases de Dados PL/SQL Program Language SQL linguagem de programação da Oracle que permite processar dados armazenados no banco de dados Exemplos de operações permitidas alterar, remover,
Leia maisCAPÍTULO 7 NÍVEL DE LINGUAGEM DE MONTAGEM
CAPÍTULO 7 NÍVEL DE LINGUAGEM DE MONTAGEM 71 Introdução Difere dos níveis inferiores por ser implementado por tradução A tradução é usada quando um processador está disponível para uma mensagem fonte mas
Leia maisEspecificação do 3º Trabalho
Especificação do 3º Trabalho I. Introdução O objetivo deste trabalho é abordar a prática da programação orientada a objetos usando a linguagem Java envolvendo os conceitos de classe, objeto, associação,
Leia maisAlgoritmos e Programação (Prática) Profa. Andreza Leite andreza.leite@univasf.edu.br
(Prática) Profa. Andreza Leite andreza.leite@univasf.edu.br Introdução O computador como ferramenta indispensável: Faz parte das nossas vidas; Por si só não faz nada de útil; Grande capacidade de resolução
Leia maisPROGRAMAÇÃO II 4. ÁRVORE
4. ÁRVORE PROGRAMAÇÃO II Prof. Jean Eduardo Glazar Uma árvore impõe uma estrutura hierárquica em uma coleção de itens. Um exemplo familiar é a árvore genealógica. Árvores despontam de forma natural em
Leia maisOrganização e Arquitetura de Computadores
Organização e Arquitetura de Computadores Entrada e saída Alexandre Amory Edson Moreno Nas Aulas Anteriores Foco na Arquitetura e Organização internas da Cleo Modelo Von Neuman Circuito combinacional Circuito
Leia maisProf. Antonio Torres antonioctorres@gmail.com @_antonioctorres. Fundamentos de Sistemas Operacionais UNIP/2015
Prof. Antonio Torres antonioctorres@gmail.com @_antonioctorres Fundamentos de Sistemas Operacionais UNIP/2015 Disciplinas FUNDAMENTOS DE SISTEMAS OPERACIONAIS Horários Quarta-feira Fundamentos de Sistemas
Leia maisSO: Sincronização. Sistemas Operacionais Flavio Figueiredo (http://flaviovdf.github.io)
SO: Sincronização Sistemas Operacionais 2017-1 Flavio Figueiredo (http://flaviovdf.github.io) 1 Mapa da Disciplina Fim da Seção de Processos SOs geralmente são lecionados em três grandes temas Processos
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 mais