Arquitetura de Sistemas Operativos
|
|
- Eugénio Barbosa
- 5 Há anos
- Visualizações:
Transcrição
1 Arquitetura de Sistemas Operativos Sistemas Operativos 2011/2012
2 1 Requisitos de uma Secção Crítica
3 Requisitos de uma Secção Crítica Antes de analisarmos as várias soluções para assegurar que um bloco de código seja executado corretamente como secção crítica, é importante compreender quais os requisitos que devem ser cumpridos. Estes requisitos resultam da análise teórica cuidada e da experiência acumulada no seu desenvolvimento ao longo dos anos.
4 Requisitos de uma Secção Crítica Os requisitos são úteis porque nos permitem também avaliar cada uma das soluções tendo em conta o seu cumprimento (ou não): Exclusão mútua (deve ser assegurada) - se uma tarefa está a executar a secção crítica, então nenhuma outra a pode estar a executar;progresso (deve ser assegurado) - se nenhuma tarefa está a executar a secção crítica e existem outras que a pretendem executar, então apenas estas devem participar no protocolo de decisão que seleciona uma delas e esta decisão não deverá prolongar-se indefinidamente, i.e., a exclusão mútua deve ser resolvida entre as tarefas que estão em competição e não afetar as restantes.
5 Requisitos de uma Secção Crítica Míngua ou starvation (não deve ocorrer) - se uma tarefa pretende executar a secção crítica, então alguma vez no futuro irá conseguir o acesso à secção crítica e não ficará para sempre impedida de o fazer; Eficiência (deve ser assegurada) - na ausência de contenção, se uma única tarefa quiser entrar na secção crítica, consegui-lo-á de uma forma eficiente, sem operações adicionais.
6 Requisitos de uma Secção Crítica O primeiro requisito é óbvio e resulta do que se pretende assegurar, a exclusão mútua na execução de uma secção crítica. Tal como vimos anteriormente, a execução de um bloco de código como uma secção crítica implica que as instruções em causa não possam ser executadas por várias tarefas intercaladamente. O segundo requisito, tal como a sua designação indica, garante que pelo menos uma tarefa, das que pretendem executar a secção crítica, vai de facto conseguir fazê-lo, depois de executar um protocolo de decisão cuja duração temporal é limitada.
7 Requisitos de uma Secção Crítica A situação de míngua ocorre quando existem várias tarefas continuamente a tentar aceder à secção crítica, e uma delas nunca consegue ter acesso, sendo sempre ultrapassada pelas restantes. O último requisito zela para que, nos instantes em que apenas uma tarefa pretende executar a secção crítica, o protocolo de decisão seja rápido (uma vez que é óbvio qual a tarefa que irá executar a secção crítica).
8 Requisitos de uma Secção Crítica Para assegurar que um bloco de código é executado como uma secção crítica, respeitando estes requisitos, há três tipos de soluções possíveis que diferem consideravelmente nos recursos que implicam, no desempenho e na sua facilidade de utilização no modelo computacional: algorítmicas: exclusivamente baseadas em programação; baseadas em mecanismos oferecidos pelo hardware; objetos do sistema operativo usando funcionalidades do núcleo em articulação com mecanismos oferecidos pelo hardware.
9 Requisitos de uma Secção Crítica Avaliação - Trabalho Teórico-Prático 10 Escreva um pequeno texto onde resume os slides anteriores. O texto deverá: ser elaborado em grupo; enviado por ao professor no final da aula; e deverá conter entre 50 a 150 palavras.
10 A primeira impressão que um programador terá quando confrontado com o problema da secção crítica é que deve ser possível (e fácil) conceber um algoritmo que resolve o problema como veremos, isso não é verdade Assim, é importante perceber os erros mais comuns que surgem quando, de uma forma menos cuidada, se procura encontrar uma solução para o problema da secção crítica. A solução mais simples consiste na utilização de um trinco que condicione o acesso aos dados partilhados.
11 Este mecanismo funciona do seguinte modo: o trinco é fechado quando se começa a aceder aos dados e libertado no final; qualquer tarefa que pretenda aceder aos dados partilhados deve testar, em primeiro lugar, o estado do trinco e apenas prosseguir se o encontrar aberto - caso o valor do trinco indicar que este está fechado, a tarefa fica em ciclo a testar o seu valor até que este indique que está aberto.
12 As funções do objeto trinco são Fechar e Abrir (lock e unlock, respetivamente). A utilização destas funções seria a que é mostrada no código seguinte para o problema do alocador de memória como se pode ver, o código que deve ser executado em exclusão mútua está enquadrado pelas funções Fechar e Abrir.
13 Alocador de Memória em Exclusão Mútua #define MAX PILHA 100 char* pilha[max PILHA]; int topo = MAX PILHA - 1; char* PedeMem() { Fechar(); ptr = pilha[topo]; topo ; Abrir(); return ptr; } void DevolveMem(char* ptr) { Fechar(); topo ++; pilha[topo] = ptr; Abrir(); }
14 A solução trivial para a realização do objeto trinco consiste numa variável booleana (ou flag) cujo valor indica se o trinco está fechado ou aberto. Consideremos então as funções Fechar e Abrir que se apresentam no código seguinte e que devem enquadrar a região de código que se pretende executar em exclusão mútua. Para simplificar, e sem perda de generalidade, vamos supor, neste e nos exemplos seguintes, que se trata apenas de duas tarefas, T1 e T2, que pretendem executar uma dada secção crítica.
15 Primeira tentativa de solução algorítmica para o problema da secção critica
16 Obviamente, a variável trinco é partilhada pelas tarefas T1 e T2. Assumindo que a tarefa T2 está a executar a secção crítica e que a tarefa T1 pretende também executá-la, esta irá invocar a função Fechar. Enquanto o trinco estiver fechado (valor FECHADO) a tarefa T1 fica a executar a instrução while (trinco == FECHADO).
17 É importante notar que em cada iteração do ciclo while, nenhuma instrução é executada (ter um ciclo sobre um bloco de instruções vazio é uma construção perfeitamente válida em C). Com efeito, trata-se de um ciclo vazio em que se pretende apenas que a tarefa T1 espere que o trinco abra (na realidade gastando inutilmente ciclos de CPU, mas vamos deixar este problema para depois).
18 Quando a tarefa T2 terminar a execução da secção crítica, invocando a função Abrir, atribuindo assim o valor ABERTO à variável trinco, a tarefa T1 sairá do ciclo while e executará a instrução seguinte que fecha de novo o trinco. É fundamental perceber que esta solução para uma secção crítica está errada pois não garante o primeiro requisito - a exclusão mútua - pela mesma razão do exemplo inicial.
19 Com efeito, assumindo uma intercalação na execução das tarefas T1 e T2, podemos facilmente constatar que é possível ambas as tarefas executarem ao mesmo tempo a secção crítica. De facto, quando a tarefa T1 executa a função Fechar, podemos observar que o teste da variável trinco (efectuado no ciclo while) e a atribuição do valor FECHADO (feito na instrução seguinte) não são feitos de forma atómica.
20 Consequentemente, pode ocorrer que a tarefa T1 perca o processador imediatamente após ter saído do ciclo while e antes de executar a instrução trinco = FECHADO. Se em seguida a tarefa T2 executar a função Fechar, esta poderá entrar na secção crítica (pois a variável trinco ainda está com o valor ABERTO). Portanto, esta solução tem o seguinte problema: O primeiro requisito - a exclusão mútua - não é cumprido.
21 Podemos então pensar numa evolução desta solução que, em vez de um trinco, utiliza dois trincos para que as tarefas não estejam a partilhar uma variável. Consequentemente. é necessário um par de funções análogas às Abrir e Fechar, de modo a que cada um atue sobre um dos trincos.
22 A ideia subjacente a esta solução é a seguinte: os trincos trinco t1 e trinco t2 permitem a entrada apenas de uma das tarefas na secção crítica, ficando a outra em ciclo até que o trinco respetivo lhe permita prosseguir. Assim, T1 espera enquanto trinco t2 estiver FECHADO, e T2 espera enquanto trinco t1 estiver FECHADO.
23 Segunda tentativa de solução algorítmica para o problema da secção critica
24 Na realidade, esta solução apresentada na figura anterior também é incorreta. Com efeito, considerando a tarefa T1, podemos observar que o teste do trinco trinco t2 (efetuado no ciclo while) e a atribuição do valor FECHADO ao trinco trinco t1 não é feito de forma atómica.
25 Consequentemente, tal como na solução anterior, pode ocorrer que a tarefa T1 perca o processador imediatamente após ter saído do ciclo e antes de executar a atribuição trinco t1 = FECHADO, e a tarefa T2 executar a função t2 fechar quando obtém o processador. Neste caso, tal como no anterior, a tarefa T2 entrará na secção crítica em simultâneo com T1.
26 Portanto, esta solução tem o mesmo problema da anterior, ou seja: O primeiro requisito - a exclusão mútua - não é cumprido. Note-se que se optarmos por alterar a ordem de execução das instruções em causa (teste e atribuição), tal como se ilustra na figura seguinte, a solução passa a assegurar a exclusão mútua pois a primeira instrução a ser executada é sempre o fecho do trinco.
27 Terceira tentativa de solução algorítmica para o problema da secção critica
28 Contudo, pode conduzir a uma situação em que as tarefas ficam ambas bloqueadas. Com efeito, basta que T1 execute a instrução trinco t1=fechado e perca o processador logo de seguida; quando T2 se executar, esta irá ficar em ciclo na instrução while (trinco t1== FECHADO).
29 O mesmo sucederá à tarefa T1 quando se voltar a executar pois ficará em ciclo na instrução while (trinco t2==fechado). Estamos assim perante uma situação na qual a decisão de entrada na secção crítica se prolonga indefinidamente. Esta situação denomina-se interblocagem.
30 Portanto, esta solução tem o seguinte problema: O segundo requisito - progresso - não é cumprido. Uma vez que a solução antes apresentada não resolve o problema da secção crítica de forma satisfatória, uma outra solução é apresentada na figura seguinte.
31 Quarta tentativa de solução algorítmica para o problema da secção critica
32 O algoritmo baseia-se na existência de um trinco (trinco vez) cujo valor varia de forma a permitir que as tarefas executem a secção crítica alternadamente, uma após a outra; o valor identifica a tarefa que pode executar a secção crítica. O racional desta solução é evitar as duas operações de teste e atribuição que, por não serem atómicas, permitem a intercalação das tarefas.
33 Apesar da exclusão mútua ser assegurada e de não introduzir interblocagem, a solução enferma de um defeito óbvio: as tarefas apenas poderão aceder alternadamente à secção crítica. Se a tarefa T1 tiver necessidade de aceder repetidamente aos dados protegidos pela secção crítica, deve esperar sempre por um acesso da tarefa T2.
34 Assim, devido à necessidade de alternância, caso a tarefa T2 se bloqueie fora da secção crítica, T1 fica impedida de executar a secção crítica no futuro, e vice-versa. Adicionalmente, na ausência de contenção, se a tarefa T1 quiser entrar na secção crítica, não o conseguirá fazer de uma forma eficiente, pois terá de esperar que T2 execute a secção crítica.
35 Portanto, esta solução tem os seguintes problemas: O segundo requisito - progresso - não é cumprido; O quarto requisito - eficiência - não é cumprido.
36 Em conclusão, como se pode ver pelos exemplos antes descritos, uma aproximação menos cuidada ao problema da secção crítica apresenta várias lacunas à luz dos requisitos anteriormente enunciados. O mesmo não se passa com as soluções algorítmicas que serão apresentadas na próxima aula...
37 Avaliação - Trabalho Teórico-Prático 11 Escreva um pequeno texto onde comenta os problemas descritos anteriormente. O texto deverá: ser elaborado em grupo; enviado por ao professor no final da aula; e deverá conter entre 100 a 300 palavras.
Execução Concorrente
Sincronização Parte I Primitivas de Sincronização Sistemas Operativos 2015 / 2016 Execução Concorrente struct { int saldo; /* outras variáveis,ex. nome do titular, etc. */ conta_t; int levantar_dinheiro
Leia maisArquitetura de Sistemas Operativos
Arquitetura de Sistemas Operativos Sistemas Operativos 2011/2012 1 Algoritmo de Lamport (Bakery Algorithm) Algoritmo de Dekker Podemos melhorar o algoritmo visto na aula anterior usando mais uma variável
Leia maisArquitetura de Sistemas Operativos
Arquitetura de Sistemas Operativos Sistemas Operativos 2011/2012 1 Necessidade das As tarefas que se executam em paralelo não são normalmente independentes, tendo de se sincronizar para poderem executar
Leia maisTrincos Lógicos: Implementações. Trincos lógicos: Propriedades
Trincos Lógicos: Implementações Algorítmicas Hardware Sistema Operativo Trincos lógicos: Propriedades Exclusão mútua Progresso (liveness) Ausência de interblocagem (deadlock) Ausência de míngua (starvation)
Leia maisExecução Concorrente
Sincronização Parte I Primitivas de Sincronização Sistemas Operativos 2011 / 2012 Execução Concorrente struct { int saldo; /* outras variáveis,ex. nome do titular, etc. */ conta_t; int levantar_dinheiro
Leia maisFundamentos de Sistemas Operacionais
Fundamentos de Sistemas Operacionais Aula 5: Exclusão Mútua Diego Passos Última Aula Programação Concorrente Programas compostos por mais de um processo ou thread. Pode trazer benefícios: Simplificar o
Leia maisSincronização. Problema da Exclusão Mútua
Sincronização Parte I Primitivas de Sincronização Problema da Exclusão Mútua struct int saldo; /* outras variáveis,ex. nome do titular, etc. */ conta_t; int levantar_dinheiro (conta_t* conta, int valor)
Leia maisSincronização. Problema da Exclusão Mútua
Sincronização Parte I Primitivas de Sincronização Problema da Exclusão Mútua struct int saldo; /* outras variáveis,ex. nome do titular, etc. */ conta_t; int levantar_dinheiro (conta_t* conta, int valor)
Leia maisSistemas Operativos. Objetivo. Entrega do Questionário. Exercício 1. Exercício 2. Exercício 3. Exercício 4. Grupo 1 Introdução
Sistemas Operativos Objetivo O objetivo deste questionário é levá-lo a rever os conceitos básicos dos sistemas operativos, bem como os algoritmos de scheduling e mecanismos de sincronização estudados.
Leia maisSincronização. Problema da Exclusão Mútua
Sincronização Parte I Primitivas de Sincronização Problema da Exclusão Mútua struct int saldo; /* outras variáveis,ex. nome do titular, etc. */ conta_t; int levantar_dinheiro (conta_t* conta, int valor)
Leia maisLEIC/LERC 2008/09 Primeiro Teste de Sistemas Operativos
Nome: Número: LEIC/LERC 008/09 Primeiro Teste de Sistemas Operativos de Novembro de 008 Duração: h0m Identifique o cabeçalho de todas as folhas da prova. O teste é resolvido no espaço dedicado ao efeito
Leia maisProgramação Concorrente Locks
Programação Concorrente Prof. Eduardo Alchieri Variáveis do tipo trava (lock) Lock: É um mecanismo de sincronização de processos/threads, em que processos/threads devem ser programados de modo que seus
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 maisComunicação entre Processos
Programação Paralela e Distribuída Ordenação e Sincronização Prof. Msc. Marcelo Iury de Sousa Oliveira marceloiury@gmail.com http://sites.google.com/site/marceloiury/ Comunicação entre Processos Processos
Leia mais( ) ( ) Auto Avaliação F ( ) M ( ) D ( ) Seqüência: Sistemas Operacionais - UCSAL Professor : Marco Antônio C. Câmara Exercícios - Dia 20/04/2011
Aluno(a) : A avaliação terá a duração de uma hora, portanto, seja objetivo nas respostas e procure não perder tempo. A prova deverá ser realizada sem rasuras e com caneta azul ou preta. Eventuais questões
Leia maisRevisão Ultima aula [1/2]
SOP - TADS Comunicação Interprocessos 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 maisArquitetura Von Neumann Dados e instruções são obtidos da mesma forma, simplificando o desenho do microprocessador;
1 Microprocessador Um microprocessador é um circuito eletrônico capaz de realizar diversas tarefas conforme os comandos específicos. Para isso ele deve ler esses comandos da memória de programa (ROM) e
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 de Tempo-Real. Acesso exclusivo a recursos partilhados
Sistemas de Tempo-Real Aula 7 Acesso exclusivo a recursos partilhados O acesso exclusivo a recursos partilhados A inversão de prioridades como consequência do bloqueio Técnicas básicas para acesso exclusivo
Leia maisSistemas de Tempo-Real. Acesso exclusivo a recursos partilhados
Sistemas de Tempo-Real Aula 7 Acesso exclusivo a recursos partilhados O acesso exclusivo a recursos partilhados A inversão de prioridades como consequência do bloqueio Técnicas básicas para acesso exclusivo
Leia maisMC102 Aula 26. Instituto de Computação Unicamp. 17 de Novembro de 2016
MC102 Aula 26 Recursão Instituto de Computação Unicamp 17 de Novembro de 2016 Roteiro 1 Recursão Indução 2 Recursão 3 Fatorial 4 O que acontece na memória 5 Recursão Iteração 6 Soma em um Vetor 7 Números
Leia maisSistemas Operacionais
Sistemas Operacionais Processos Exclusão Mútua Mecanismos para se Obter Exclusão MútuaM Mecanismos de Hardware: Inibição de Interrupções Instrução TSL (Test and Set Lock) Mecanismos de Software: Com Espera
Leia maisEstrutura deste arquivo.. Comunicação Interprocesso Parte 1 de 2 - Cap. 2. Introdução 1 CONDIÇÕES DE CORRIDA
Estrutura deste arquivo.. Comunicação Interprocesso Parte 1 de 2 - Cap. 2 Prof. Alexandre Beletti Ferreira 1. Condições de Corrida 2. Seções Críticas 3. Exclusão Mútua com Espera Ativa 1. Desativando Interrupções
Leia maisPROGRAMAÇÃO ORIENTADA A OBJETOS. Aula 11 - Threads e Concorrência
Aula 11 - Threads e Concorrência Conteúdo Programático desta aula Apresentar os Conceitos de Threads, Concorrência e Sincronização. Verificar a aplicabilidade destes conceitos no mercado, bem como sua
Leia maisConcorrência. Condições de Corrida. 5a. Tentativa. Dificuldades: Sincronização de Processos (2) Aula 11 Profa. Patrícia Dockhorn Costa
Concorrência Dificuldades: Sincronização de Processos (2) Aula 11 Profa. Patrícia Dockhorn Costa Compartilhamento de recursos globais. Gerência de alocação de recursos. Localização de erros de programação
Leia maisSistemas Operacionais. Universidade Federal de Minas Gerais. Aula 5. Implementação de Exclusão Mútua
Aula 5 Implementação de Exclusão Mútua Implementando Exclusão Mútua Via software Propriedades; Dois processos; Múltiplos processos Via hardware Desabilitando interrupções; read-modify-write test & set
Leia maisGrupo I [7 Val] 1. Considere os seguintes 3 algoritmos de escalonamento num sistema operativo de tempo virtual:
Número: Nome: LEIC/LERC 2012/13-1º Teste de Sistemas Operativos 24 de Novembro de 2011 Responda no enunciado, apenas no espaço fornecido. Identifique todas as folhas. Justifique todas as respostas. Duração:
Leia maisAlgoritmos e Estrutura de Dados. Algoritmos Prof. Tiago A. E. Ferreira
Algoritmos e Estrutura de Dados Aula 3 Conceitos Básicos de Algoritmos Prof. Tiago A. E. Ferreira Definição de Algoritmo Informalmente... Um Algoritmo é qualquer procedimento computacional bem definido
Leia maisCooperação entre Processos
Sincronização Parte II Programação Concorrente Sistemas Operativos 2010 / 2011 Cooperação entre Processos Vários processos executam em conjunto uma ou mais tarefas, nas quais Competem por recursos Indicam
Leia maisLEIC/LERC 2008/09. Repescagem do Primeiro Teste de Sistemas Operativos
Nome: Número: LEIC/LERC 2008/09 Repescagem do Primeiro Teste de Sistemas Operativos Identifique o cabeçalho de todas as folhas da prova. 10 de Fevereiro de 2009 Duração: 1h30m O teste é resolvido no espaço
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 maisProgramação Procedimental
Programação Procedimental Maria Adriana Vidigal de Lima Universidade Federal de Uberlândia - 2013 1 Escrita de Algoritmos 1.1 Técnicas de Programação e Algoritmos Na elaboração de programas maiores e complexos
Leia maisFunção Fundamental do SO
Função Fundamental do SO Gestão do Hardware Uma das funções fundamentais do sistema operativo é gerir os recursos do hardware de um modo o mais transparente possível ao utilizador Recursos principais a
Leia maisTCC 00308: Programação de Computadores I Introdução
TCC 00308: Programação de Computadores I 2017.1 Introdução Processo de resolução de problemas Definição dos requisitos do problema (fazer o programa certo) Entradas Cálculos Casos especiais Saídas Desenvolvimento
Leia maisSistemas Operacionais. Prof. André Y. Kusumoto
Sistemas Operacionais Prof. André Y. Kusumoto andrekusumoto.unip@gmail.com Fundamentos Paradigma do produtor-consumidor Sincronização de Processos Produtor while (count == BUFFER_SIZE) ; //no-op //adiciona
Leia maisSistemas Operacionais. Universidade Federal de Minas Gerais. Aula 4. Comunicação e Sincronização de Processos
Aula 4 Comunicação e Sincronização de Processos Comunicação e Sincronização de Processos Cooperação Variáveis compartilhadas Operações atômicas Exclusão mútua Requisitos para exclusão mútua Referências:
Leia maisUNIVERSIDADE LUSÓFONA DE HUMANIDADES E TECNOLOGIAS C SISTEMAS OPERATIVOS
UNIVERSIDADE LUSÓFONA DE HUMANIDADES E TECNOLOGIAS C1203 - SISTEMAS OPERATIVOS 2º Semestre 2005/2006 27/7/2007 Resolução 1. Identifique três situações em que ocorra uma transição do modo de execução utilizador
Leia mais13 a Aula - Instruções Condicionais. Ciclos. Pré-processador. Variáveis de ambiente. Mestrado em Engenharia Física Tecnológica
13 a Aula - Instruções Condicionais. Ciclos. Pré-processador. Variáveis de ambiente. Programação Mestrado em Engenharia Física Tecnológica Samuel M. Eleutério sme@tecnico.ulisboa.pt Departamento de Física
Leia maisCONCEITOS DE LINGUAGENS DE PROGRAMAÇÃO
CONCEITOS DE LINGUAGENS DE PROGRAMAÇÃO ROTEIRO 1. INTRODUÇÃO 2. LINGUAGENS IMPERATIVAS 1. CONCEITO 2. PARADIGMA IMPERATIVO 3. ORIGENS 4. MODELO COMPUTACIONAL 1. ARQUITETURA DE VON NEUMANN 2. CARACTERISTICAS
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 maisWaldemar Celes e Roberto Ierusalimschy. 29 de Fevereiro de 2012
Capítulo 5: Repetições Waldemar Celes e Roberto Ierusalimschy 29 de Fevereiro de 2012 1 Construção de laços Uma das principais características de um computador é sua capacidade para realizar cálculo e
Leia maisSistemas Distribuídos Aula 7
Sistemas Distribuídos Aula 7 Aula passada Atomicidade Test-and-set Locks revisitado Semáforos Dois problemas Aula de hoje Limitação dos semáforos Monitores Variáveis de condição Semântica do signal Sincronização
Leia maisIntrodução à Programação. Vanessa Braganholo
Introdução à Programação Vanessa Braganholo vanessa@ic.uff.br Processo de resolução de problemas (Princípios de Pólya) Definição dos requisitos do problema (fazer o programa certo) Entradas Cálculos Casos
Leia maisParadigmas de Computação Paralela (UCE Computação Paralela Distribuída)
Paradigmas de Computação Paralela (UCE Computação Paralela Distribuída) Modelos de consistência de memória João Luís Ferreira Sobral jls@... 29 Março 2011 Resumo Revisão: modelos de threads Qual a necessidade
Leia maisProf. Silvana Rossetto 9 de julho de DCC/IM/UFRJ
Computação Concorrente (MAB117) Gabarito Segunda Prova Prof. Silvana Rossetto 9 de julho de 2015 1 DCC/IM/UFRJ Questão 1 (2,5 pts) O código Java abaixo implementa uma solução para o problema do barbeiro
Leia maisNotas da Aula 5 - Fundamentos de Sistemas Operacionais
Notas da Aula 5 - Fundamentos de Sistemas Operacionais 1. Operações Atômicas Uma operação é dita atômica quando ela é indivisível no tempo. Em outras palavras, uma vez que a operação tenha sido iniciada,
Leia maisSistemas Operacionais. Sincronização: Semáforos Problema dos Leitores/Escritores
Sistemas Operacionais Sincronização: Semáforos Problema dos Leitores/Escritores Autoria Autores Eduardo André Mallmann 0905/96-9 João Paulo Reginatto 1530/96-0 Local Instituto de Informática UFRGS disciplina:
Leia maisLEIC/LERC 2009/10 1º Teste de Sistemas Operativos
Número: Nome: LEIC/LERC 2009/10 1º Teste Sistemas Operativos 14 Novembro 2009 Responda no enunciado, apenas no espaço fornecido. Intifique todas as folhas. Duração: 1h30m Grupo I [4,1 v.] 1. [0,5 v] Relativamente
Leia maisIntrodução à Programação
Introdução à Programação Leonardo Gresta Paulino Murta leomurta@ic.uff.br Processo de resolução de problemas (Princípios de Pólya) Definição dos requisitos do problema (fazer o programa certo) Entradas
Leia maisSistemas Distribuídos Aula 5
Sistemas Distribuídos Aula 5 Aula passada Sincronização Race condition Região crítica Locks Algoritmo de Peterson Aula de hoje Atomicidade test-and-set Locks revisitado Semáforos Dois problemas Atomicidade
Leia maisSincronização e comunicação entre entidades de processamento. Mutex Volnys Bernal 1. Tópicos. Exclusão Mútua (mutex) Exclusão Mútua (Mutex)
2004-2013 Volnys Bernal 1 2004-2013 Volnys Bernal 2 Tópicos Exclusão Mútua (mutex) Volnys Borges Bernal volnys@lsi.usp.br http://www.lsi.usp.br/~volnys Exclusão Mútua () Objetivo, utilidade, requisitos
Leia maisFunções de Dispersão Prontas
Funções de Dispersão Prontas E laborar uma função de dispersão é, em boa proporção, uma arte. Assim é sempre melhor usar uma função de dispersão reconhecidamente boa (i.e., que tenha sido exaustivamente
Leia maisTeste de Sistemas de Operação 30 de Maio de 2009
Teste de Sistemas de Operação 30 de Maio de 2009 Duração: 30 min B NOME: Indique apenas uma das alternativas. Respostas erradas descontam na nota. 1. Um pedido de entrada e saída sem buffering: (letra
Leia maisSistemas Operativos: Concorrência
Sistemas Operativos: Concorrência Pedro F. Souto (pfs@fe.up.pt) March 16, 2012 Sumário Race Conditions e Secções Críticas Exclusão Mútua via Programação Exclusão Mútua via Inibição de Interrupções. Locks
Leia maisSistemas Operativos. IST - LEIC - 1º Semestre. Autoria. estes transparentes: Page 1
Sistemas Operativos IST - LEIC - 1º Semestre Paulo Ferreira - INESC/IST 1 Autoria estes transparentes: são baseados no livro Fundamentos de Sistemas Operativos, de José Alves Marques e Paulo Guedes, Editorial
Leia maisEste conceito é bastante simples e será útil e conveniente nos itens seguintes, na definição das estruturas básicas de controle de execução.
Capítulo 7 Controle de Fluxo de Execução Até o momento os algoritmos estudados utilizam apenas instruções primitivas de atribuição, e de entrada e saída de dados. Qualquer conjunto de dados fornecido a
Leia maisProgramação Estruturada
Programação Estruturada Recursão Professores Emílio Francesquini e Carla Negri Lintzmayer 2018.Q3 Centro de Matemática, Computação e Cognição Universidade Federal do ABC Recursão Recursão 1 Recursão 2
Leia maisSISTEMAS OPERACIONAIS
SISTEMAS OPERACIONAIS Deadlock Andreza Leite andreza.leite@univasf.edu.br Plano da Aula 2 Introdução Modelo de um Sistema Computacional Característica de um Deadlock Modelagem de um Deadlock (Grafos de
Leia maisArquitetura de Sistemas Operativos
Arquitetura de Sistemas Operativos Sistemas Operativos 2011/2012 1 Introdução Gestão de Programas Introdução Os sistemas operativos gerem um conjunto de funções básicas que têm evoluído ao longo dos tempos.
Leia maisArquitetura de Sistemas Operativos
Arquitetura de Sistemas Operativos Sistemas Operativos 2011/2012 1 Um processo é uma instância em execução de um programa. No sistema operativo Unix a única forma de se criar um novo processo (processo-filho)
Leia maisProgramação Estruturada Aula - Estruturas de Repetição
Programação Estruturada Aula - Estruturas de Repetição Prof. Flávio Barros flavioifma@gmail.com www.flaviobarros.com.br 2 TESTE NO INÍCIO: WHILE Fundamentos TESTE NO INÍCIO: WHILE Estes comandos permitem
Leia maisLinguagem C Princípios Básicos (parte 1)
Linguagem C Princípios Básicos (parte 1) Objetivos O principal objetivo deste artigo é explicar alguns conceitos fundamentais de programação em C. No final será implementado um programa envolvendo todos
Leia maisAula 9 Outros aspetos do escalonamento de tempo-real
Sistemas de Tempo-Real Aula 9 Outros aspetos do escalonamento de tempo-real Escalonamento sem preempção Questões de aplicação prática em sistemas reais Adaptado dos slides desenvolvidos pelo Prof. Doutor
Leia maisProblema dos Leitores/Escritores
Sincronização: Semáforos Problema dos Leitores/Escritores Autores Eduardo André Mallmann 0905/96-9 João Paulo Reginatto 1530/96-0 Local Instituto de Informática UFRGS disciplina: Sistemas Operacionais
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 maisExclusão Mútua (mutex)
2004-2017 Volnys Bernal 1 Exclusão Mútua (mutex) Volnys Borges Bernal volnys@lsi.usp.br Departamento de Sistemas Eletrônicos Escola Politécnica da USP 2004-2017 Volnys Bernal 2 Tópicos Exclusão Mútua (Mutex)
Leia maisProgramação Concorrente e Paralela. Noemi Rodriguez
2016 o que é programação concorrente e paralela? programação concorrente: composição de linhas de atividades independentes programação paralela: execução simultânea de linhas de atividades Go blog (Rob
Leia maisEstruturas de controle Parte 1
1. Objetivos Estruturas de controle Parte 1 Nas lições anteriores, foram mostrados programas seqüenciais, onde as instruções foram executadas uma após a outra de forma fixa. Nesta lição, discutiremos estruturas
Leia maisTeste de Software. Planejamento de Teste. Rosemary Silveira Filgueiras Melo
Teste de Software Planejamento de Teste Rosemary Silveira Filgueiras Melo rosesfmelo@hotmail.com 1 Agenda Atividades de Teste Conceitos importante no Contexto de Teste Abordagem de Teste 2 Atividades de
Leia maisNotas da Aula 10 - Fundamentos de Sistemas Operacionais
Notas da Aula 10 - Fundamentos de Sistemas Operacionais 1. Escalonadores preemptivos Escalonadores preemptivos são aqueles que têm a capacidade de interromper a execução de um processo para realizar alterações
Leia maisVariáveis e Memória. Revisão. Conceitos. Operações sobre a memória
Variáveis e Memória Revisão Estudamos, na Introdução, que os programas de computador implementam algoritmos, os quais manipulam um conjunto de dados para produzir um resultado. O algoritmo é um conjunto
Leia maisAula 6: Comunicação entre processos. Instituto Federal da Bahia INF009 - Sistemas Operacionais Profª Flávia Maristela
Aula 6: Comunicação entre processos Instituto Federal da Bahia INF009 - Sistemas Operacionais Profª Flávia Maristela (-- motivação --) Processos em execução no sistema operacional podem ser: Independentes:
Leia maisFundamentos de Sistemas Operacionais
Fundamentos de Sistemas Operacionais Aula 5 Gerenciamento de Processos Prof. Belarmino Execução de Processos Já vimos que o processador executa os processos entregando uma fatia de tempo (time slice) para
Leia maisSOP - TADS Processos. Revisão Ultima aula
SOP - TADS Processos Prof. Ricardo José Pfitscher dcc2rjp@joinville.udesc.br Material cedido por: Prof. Rafael Rodrigues Obelheiro Prof. Maurício Aronne Pillon Revisão Ultima aula Revisão de hardware Processador
Leia maisIntrodução à Programação
Introdução à Programação 1.Ano LCC-MIERSI DCC - FCUP Nelma Moreira Aula 10 Ordenação 2 15-1 7 9 4 6 Existem muitos métodos de ordenar Bolha Inserção Seleção Quicksort etc... Bolha (bubble sort) Percorrer
Leia maisIntrodução aos Algoritmos
Introdução aos Algoritmos Aula 05 Diogo Pinheiro Fernandes Pedrosa http://www2.ufersa.edu.br/portal/professor/diogopedrosa diogopedrosa@ufersa.edu.br Universidade Federal Rural do Semiárido Bacharelado
Leia maisIntrodução aos Algoritmos
Introdução aos Algoritmos Quando temos que fazer uma determinada tarefa e não sabemos muito bem como fazê-la, podemos fazer perguntas para nos esclarecer a respeito do que deve ser feito e como deve ser
Leia maisVariáveis primitivas e Controle de fluxo
Variáveis primitivas e Controle de fluxo Material baseado na apostila FJ-11: Java e Orientação a Objetos do curso Caelum, Ensino e Inovação, disponível para download em http://www.caelum.com.br/apostilas/
Leia maisProgramação I Aula 3 Primeiros programas
Programação I Aula 3 Primeiros programas Pedro Vasconcelos DCC/FCUP 2018 Pedro Vasconcelos (DCC/FCUP) Programação I Aula 3 Primeiros programas 2018 1 / 23 Nesta aula... 1 Tipos básicos 2 Variáveis e atribuições
Leia maisIntrodução à Programação / Programação I
Introdução à Programação / Programação I Aula 3: Primeiros Programas Rita P. Ribeiro 2018/2019 Departamento de Ciência de Computadores Nesta aula 1. Tipos básicos 2. Variáveis e atribuições 3. Programas
Leia maisLinguagem de Programação
Linguagem de Programação Funções Gil Eduardo de Andrade Definição É conjunto de comandos (linhas de código) agrupado num bloco devidamente nomeado, que ao ser invocado executa todas as instruções nele
Leia maisRevisão: Tipo Abstrato de Dados Recursividade
Algoritmos e Estrutura de Dados II Revisão: Tipo Abstrato de Dados Recursividade Prof a Karina Oliveira kkco@dei.unicap.br Introdução Estudo das estruturas de dados envolve dois objetivos complementares:
Leia maisInversão de prioridades
Eduardo Ferreira dos Santos Ciência da Computação Centro Universitário de Brasília UniCEUB Maio, 2017 1 / 46 Sumário 1 Dependência 2 Dependência Deadlocks 3 Classicação dos recursos 2 / 46 1 Dependência
Leia maisC Comandos de Controle
C Comandos de Controle Adriano Cruz adriano@nce.ufrj.br 19 de julho de 2017 Instituto de Matemática Departamento de Ciência da Computação UFRJ 1 Revisão da Seção Introdução Comandos de Teste Comandos de
Leia maisArquitetura de Sistemas Operativos
Arquitetura de Sistemas Operativos Sistemas Operativos 2011/2012 1 Threads Conceito Um processo é um programa em execução. A execução de um processo é sequencial: pode-se caracterizar um processo pelo
Leia maisVamos estudar o que se entende por «programação», que é uma linguagem de programação e ver algumas terminologias própria de programação e como
Vamos estudar o que se entende por «programação», que é uma linguagem de programação e ver algumas terminologias própria de programação e como utilizá-la. 1 Por si só, uma equipe não é muito inteligente.
Leia maisUnidade 12: Estrutura de Repetição Simples Prof. Daniel Caetano
Lógica de Programação 1 Unidade 12: Estrutura de Repetição Simples Prof. Daniel Caetano Objetivo: Realizando decisões de repetição simples no código de programação. Bibliografia: ASCENCIO, 2007; MEDINA,
Leia maisProf. A. G. Silva. 28 de agosto de Prof. A. G. Silva INE5603 Introdução à POO 28 de agosto de / 1
INE5603 Introdução à POO Prof. A. G. Silva 28 de agosto de 2017 Prof. A. G. Silva INE5603 Introdução à POO 28 de agosto de 2017 1 / 1 Comandos de decisão simples e compostas Objetivos: Utilização de controles
Leia maisTÉCNICO DE INFORMÁTICA - SISTEMAS
782 - Programação em C/C++ - estrutura básica e conceitos fundamentais Linguagens de programação Linguagem de programação são conjuntos de palavras formais, utilizadas na escrita de programas, para enunciar
Leia maisIntrodução aos Algoritmos
Introdução aos Algoritmos Aula 05 Diogo Pinheiro Fernandes Pedrosa http://www2.ufersa.edu.br/portal/professor/diogopedrosa diogopedrosa@ufersa.edu.br Universidade Federal Rural do Semiárido Bacharelado
Leia maisInstituto Federal de Educação, Ciência e Tecnologia do RN Câmpus Currais Novos. LINGUAGEM C++ VARIÁVEIS COMPOSTAS Arrays Aula I
LINGUAGEM C++ VARIÁVEIS COMPOSTAS Arrays Aula I Prof. Bruno E. G. Gomes Uma variável em um algoritmo pode ser vista como uma gaveta. A declaração de uma variável reserva uma gaveta (posição) de um certo
Leia maisProcessos. Nuno Ferreira Neves Faculdade de Ciências de Universidade de Lisboa. Fernando Ramos, Nuno Neves, Sistemas Operativos,
Processos Nuno Ferreira Neves Faculdade de Ciências de Universidade de Lisboa Objetivos da aula Introduzir a noção de processo um programa em execução que é a base de toda a computação Descrever as várias
Leia maisDesenvolvimento de Aplicações Desktop
Desenvolvimento de Aplicações Desktop Conceitos Básicos de Programação Professor: Charles Leite O Desenvolvimento de Programas A programação consiste em indicar como o computador (hardware) deve trabalhar
Leia maisTeste de Sistemas de Operação 15 de Abril de 2010
Teste de Sistemas de Operação 15 de Abril de 2010 Duração: 1 h (prática + teórica) D NOME: Indique apenas uma das alternativas. Respostas erradas descontam na nota. 1. Em um sistema que suporta multiprogramação
Leia maisMC-102 Aula 13. Instituto de Computação Unicamp. 29 de Setembro de 2016
MC-102 Aula 13 Funções I Instituto de Computação Unicamp 29 de Setembro de 2016 Roteiro 1 Funções Definindo uma função Invocando uma função 2 O tipo void 3 A função main 4 Protótipo de funções 5 Funções
Leia maisLEIC/LERC 2008/09. Primeiro Exame de Sistemas Operativos. 20 de Janeiro de Duração: 2h30m. Grupo I [3 valores]
Nome: Número: LEIC/LERC 2008/09 Primeiro Exame de Sistemas Operativos 20 de Janeiro de 2009 Duração: 2h30m Identifique o cabeçalho de todas as folhas da prova. O exame é resolvido no espaço dedicado ao
Leia maisIntrodução à Programação Aula 3 Primeiros programas
Introdução à Programação Aula 3 Primeiros programas Pedro Vasconcelos DCC/FCUP 2015 Pedro Vasconcelos (DCC/FCUP) Introdução à Programação Aula 3 Primeiros programas 2015 1 / 23 Nesta aula... 1 Tipos básicos
Leia mais