Notas da Aula 5 - Fundamentos de Sistemas Operacionais

Tamanho: px
Começar a partir da página:

Download "Notas da Aula 5 - Fundamentos de Sistemas Operacionais"

Transcrição

1 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, ela não pode ser interrompida. Desta forma, operações atômicas ou são totalmente executadas ou sequer iniciam sua execução. Um exemplo simples de operação atômica são as instruções de máquina. Se o processador identifica uma interrupção, a instrução sequer começar a ser executada. Por outro lado, se a instrução começa seu ciclo de execução, este será concluído antes que uma nova interrupção possa acontecer. A importância do conceito de operação atômica está no fato de que este tipo de operação pode efetivamente resolver o problema de condição de corrida. Se todo o código dentro de uma região crítica puder ser implementado como uma única operação atômica, então condições de corrida não são possíveis. Isso porque, por definição, um processo não poderia ser interrompido no meio de sua seção crítica. No pior caso, o processo seria interrompido imediatamente antes ou imediatamente depois da execução da região crítica. Isso só se aplica, no entanto, a sistemas com um único processador. Em máquinas multiprocessadas, cuidados extras precisam ser tomados. Porém, para o escopo desta disciplina, não iremos considerar o caso com múltiplos processadores. O problema da utilização de operações atômicas como solução para o problema da condição de corrida é que, em geral, as tarefas executadas dentro de uma seção crítica são muito complexas. Ou seja, na maioria dos casos, é inviável pensar em implementar uma única operação atômica (por exemplo, uma única operação de máquina) que faça tudo o que se deseja em uma seção crítica. Há, no entanto, uma maneira relativamente simples de simular a execução atômica do código de uma região crítica. A solução consiste em, imediatamente antes da primeira instrução da seção crítica, desabilitar as interrupções do processador. Em aulas anteriores, foi discutido que a instrução CLI faz exatamente isso. Uma vez desabilitadas as interrupções, o processo poderia executar sua região crítica sem a possibilidade de ser interrompido. Ao final da seção crítica, o processo pode habilitar novamente as interrupções para retornar o sistema ao estado normal. A instrução STI faz justamente isso. Infelizmente, esta solução traz uma série de problemas. Em primeiro lugar, as instruções CLI e STI são privilegiadas. Isso quer dizer que um processo de um usuário executando em modo usuário não poderia executar tais instruções. Ainda que, de alguma forma, o processo fosse capaz de desabilitar as interrupções, sem elas, o processo fica sem qualquer suporte do SO. Isso significa que qualquer operação de E/S efetuada dentro da região crítica precisaria ser completamente implementada pelo próprio código do processo. Há ainda a questão de possíveis falhas ou mesmo tentativas deliberadas de quebra de segurança por parte do

2 processo. O programador pode se esquecer de colocar uma chamada à instrução STI ao final da região crítica, o que faria com que o sistema nunca voltasse ao normal. Isto poderia ser feito também de maneira deliberada, para que o processo assumisse completamente o controle da máquina. Por fim, esta solução não funciona em máquinas multiprocessadas, já que cada processador tem suas próprias interrupções. Embora apresente uma série de desvantagens, o método de desabilitar interrupções é utilizado em alguns sistemas. Em sistemas embarcados, a simplicidade deste método acaba compensando suas desvantagens, especialmente quando se considera o fato de que os processos que rodam em tais sistemas são, em geral, conhecidos e confiáveis. 2. Exclusão Mútua Uma outra maneira de solucionar o problema da condição de corrida é a chamada exclusão mútua. Exclusão mútua é uma propriedade que diz que um determinado recurso (por exemplo, o acesso a uma região crítica) só pode ser concedido a um único processo por vez. Em outras palavras, se um processo A está atualmente dentro de uma região crítica, então um processo B que quer entrar na região terá que esperar que A saia. É importante notar que a exclusão mútua é diferente da operação atômica, no sentido de que um processo dentro da região crítica pode ser interrompido. Por exemplo, o processo A, atualmente dentro da seção crítica, pode ser interrompido e o processador pode ser dado a um processo C, que não tenha recursos compartilhados com A. O processador também pode ser passado para outros processos que compartilhem recursos com A, desde que eles não estejam atualmente tentando acessar a região crítica. Nestes casos, quando o processo A voltar ao processador, ele encontrará o recurso compartilhado exatamente no mesmo estado que havia deixado. Logo, não há condição de corrida. Deseja-se, portanto, criar um mecanismo capaz de prover exclusão mútua no acesso a uma região crítica. Para isso, existem alguns requisitos desejáveis de uma solução: 1. O mecanismo deve prover exclusão mútua. 2. O mecanismo não deve impedir que um processo acesse a região crítica, caso não haja outro processo atualmente nela. 3. O mecanismo não deve postergar indefinidamente a entrada de um processo na região crítica, em favor de outros processos. O primeiro requisito é obvio: o mecanismo deve funcionar corretamente. O segundo diz simplesmente que um processo não deve ficar travado do lado de fora de uma região crítica se não houver outro processo já a acessando. Este requisito tem relação com a eficiência da solução: se o mecanismo não garante esta propriedade, recursos do sistema podem ser desperdiçados em uma espera inútil. O terceiro requisito tem relação com um problema conhecido como starvation (às vezes chamado de esfomeação, em português). Suponha que existam vários processos constantemente tentando acessar a região crítica e que, para escolher um deles, o mecanismo de exclusão mútua simplesmente faça um sorteio.

3 Neste caso, é possível que um dado processo sempre perca o sorteio e fique eternamente esperando sua oportunidade. Este processo nunca acessará o recurso, sofrendo a condição de starvation. Além destes requisitos, é importante que uma solução não faça suposições sobre a ordem ou a velocidade de execução dos processos. Como discutido na Aula 4, este dois fatores são imprevisíveis. Os primeiros mecanismos criados para prover exclusão mútua foram os chamados Protocolos de Acesso. Estes protocolos nada mais são que pequenos trechos de código colocados antes e depois da região crítica para controlar a entrada dos processos. Uma característica interessante destes protocolos é que eles são totalmente baseados em software, não necessitando de nenhum suporte específico de hardware. O protocolo de acesso mais simples é o chamado Algoritmo de Alternância. Neste algoritmo, existe uma variável compartilhada entre os processos que indica qual processo tem a vez (para entrar na região crítica). O valor desta variável, chamada às vezes de turn, é inicializado para o identificador de um dos processos, arbitrariamente. Quando um processo tenta entrar região na região crítica, ele testa o valor da variável, verificando se ele tem a vez (se o valor da variável é igual ao seu identificador). Se a vez é do processo, ele prossegue para a região crítica. Senão, ele continua testando o valor da variável até que ela passe a conter o seu ID. Esta operação de ficar constantemente testando o valor de uma variável é conhecida como Espera Ocupada. Uma vez que um processo consiga entrar na região crítica, ele executa o código referente à manipulação do recurso da região e, ao final, altera o valor da variável turn, passando-a para outro processo. Embora a variável turn seja compartilhada, não há risco de condição de corrida na sua manipulação, pois um processo só altera seu valor se ele estiver dentro da região crítica. O algoritmo de alternância provê exclusão mútua. Porém, ele deixa de atender aos dois outros requisitos desejáveis. Suponha por exemplo que dois processos, 0 e 1, compartilhem um recurso e utilizem este algoritmo para prover exclusão mútua. Suponha ainda que a variável turn tenha valor inicial 1. Se, por algum motivo, o processo 0 chega à entrada da seção crítica muito antes do processo 1, ele não terá permissão para entrar, precisando esperar que o processo 1 chegue à seção e termine sua execução. Isto claramente infringe o segundo requisito. Além disso, existe a possibilidade do processo 1 jamais chegar à sua seção crítica. Neste caso, 0 ficará eternamente em estado de espera, sofrendo starvation. Um outro protocolo de acesso proposto mais tarde corrigiu estes problemas. Este protocolo, chamado de Algoritmo de Peterson, inseriu uma nova variável que indica a intenção de um processo em utilizar a região crítica. Suponha novamente o caso com dois processos, 0 e 1. O primeiro processo a chegar à entrada da região crítica, digamos o processo 0, irá configurar sua variável de intenção para 1. Em seguida, o processo 0 passará a vez para o processo 1. O próximo passo para o processo 0 é testar se o processo 1 tem a intenção de entrar na região

4 crítica e se tem também a vez. Caso ambas as condições sejam verdadeiras, o processo 0 realiza uma espera ocupada até que o processo 1 termine a seção crítica e reconfigure sua intenção para 0. A chave para o funcionamento correto do Algoritmo de Peterson está no fato dos processos que querem entrar na região crítica abdicarem da preferência, passando a vez para os outros processos. Uma demonstração formal de que este algoritmo não sofre de condição de corrida nas suas próprias variáveis de controle é razoavelmente complexa e está fora do escopo desta disciplina. Mas é importante notar que, ao contrário do Algoritmo de Alternância, no Algoritmo de Peterson um processo não fica travado, tentando entrar na região crítica se os demais processos não manifestaram interesse em usá-la. Logo, o algoritmo atende ao segundo requisito. Além disso, este sistema de abdicar da preferência em favor dos demais processos, se implementado corretamente, impede a ocorrência de starvation. Embora o Algoritmo de Peterson (e outros protocolos de acesso) resolva o problema da exclusão mútua atendendo aos requisitos desejáveis, ele é bastante complexo, especialmente quando se trabalha com mais de dois processos. Os protocolos de acesso também apresentam uma ineficiência, por conta de realizarem espera ocupada, aguardando que as condições para entrada na região crítica se tornem verdadeiras. Por esta razão, novas soluções foram criadas para o problema da exclusão mútua. 3. Soluções com Suporte do Hardware Para tornar mais eficientes e simples os mecanismos de exclusão mútua, foram criados alguns recursos de hardware. O mecanismo mais simples a utilizar tais recursos são os Spin-locks. Um spin-lock, intuitivamente, é uma variável compartilhada, chamada lock, que diz se a região crítica está trancada (pois já há um processo dentro dela) ou aberta (pois não há nenhum processo lá). Quando um processo deseja entrar na região crítica, ele realiza uma espera ocupada, aguardando que a variável de lock se torne 0 (ou seja, a região crítica está aberta). Uma vez que isso ocorra, o processo configura a variável lock para 1, indicando que agora a seção crítica está fechada e prossegue com a execução do código da seção. Ao final da seção crítica, o processo coloca de novo o valor da variável de lock para 0, permitindo o acesso de outros processos. Embora simples, esta ideia apresenta um defeito fundamental. A própria variável lock, compartilhada pelos vários processos, pode sofrer condição de corrida. Isso ocorre porque a operação de testar o valor de lock e configurar este valor para 1 (caso lock anteriomente seja 0) pode ser interrompida. Esta operação, em assembly, é traduzida para algo como: 1: MOV acc, lock ; Traz o valor de lock da memória para um registrador. 2: TST acc ; Verifica se lock (agora no acumulador) é 0. 3: JNZ 1 ; Volta ao início, se não for. 4: MOV lock, 1 ; Escreve 1 na posição de memória de lock.

5 Suponha que, em um dado momento, lock seja 0. Um processo A, então, começa a execução das instruções acima. No entanto, logo após a execução da primeira instrução (que traz o valor de lock para um registrador), o processo A é retirado do processador. Em seu lugar, entra o processo B que também deseja entrar na região crítica. Quando o processo B executa a instrução 1, o valor trazido da memória para o acumulador é 0, pois o processo A não teve a oportunidade de alterar o valor de lock. Portanto, B verifica que a região crítica está aberta, altera o valor de lock para 1 e entra na região. Suponha que no meio do seu processamento dentro da região, o processo B é retirado do processador e substituído pelo processo A. O processo A continua sua execução do exato ponto no qual havia parado e com exatamente os mesmos valores de registradores (lembre-se que ao retirar um processo do processador, o SO salva o contexto do processo, incluindo valores de todos os registradores, para posterior recuperação). Logo, quando o processo A executar a segunda instrução, o valor do acumulador será 0 (valor antigo de lock). Com isso, o processo A entenderá que a seção crítica está aberta, quando na verdade não está. Este problema ocorre porque, entre a instrução 1, que traz o valor de lock para o acumulador, e a instrução 4, que altera o valor de lock, o processo pode ser interrompido e substituído por outro que também tenta acessar a seção crítica. Se houvesse uma maneira de impedir que isso aconteça, a variável lock funcionaria. Para solucionar este problema, os processadores mais modernos passaram a contar com uma ou mais instruções que deram esta capacidade aos programadores. Existem vários nomes para este tipo de instrução, como Test-and-Set-Lock, Swap e Compare-on-Store. Todas elas, no entanto, podem ser utilizadas para a implementação dos spin-locks. Vamos considerar, então, a instrução Swap (SWP). Esta instrução recebe dois argumentos: um endereço de memória (da variável lock) e um registrador. Quando esta instrução é executada, ela troca os valores do registrador e da posição de memória. Em outras palavras, o registrador passa a conter o valor da variável, enquanto a variável passa a conter o valor do registrador. Como se trata de uma única instrução de máquina, esta operação é atômica. Ou seja, não pode ser interrompida. Com esta instrução disponível, a implementação de um spin-lock se torna simples: // Tentar entrar na seção crítica. do { reg = 1; swap(reg, lock); } while(reg == 1); // Início da Seção Crítica... // Fim da Seção Crítica. lock = 0;

6 A repetição antes da seção crítica inicialmente configura o valor de um registrador para 1. Em seguida, a instrução SWP é chamada, trocando os valores do registrador e da variável lock. Finalmente, o valor do registrador (valor que estava no variável lock) é testado. Repare que o código sempre escreve 1 na variável lock (através da instrução swap). Existem, portanto, dois casos: 1. A variável lock continha o valor A variável lock continha o valor 1. Se o valor de lock antes da instrução Swap era 1, seu valor continua sendo 1, assim como o registrador reg. Eventualmente, o processo testará o valor do registrador e irá verificar que a seção está fechada. Se o valor de lock era 0, seu valor passa a ser 1. Ou seja, em uma única instrução de máquina, o processo está trazendo o valor de lock para um registrador (que não pode ser alterado por outros processos) e está fechando a seção crítica para outros processos. Eventualmente, o valor de reg será testado e o processo perceberá que pode entrar na seção crítica. É interessante notar que, neste caso, o processo fecha a seção crítica antes mesmo de saber que ela pode ser utilizada. Embora os spin-locks garantam exclusão mútua, eles não atendem ao terceiro requisito desejável. Dependendo da ordem de execução dos processos, é possível que um processo seja indefinidamente preterido (sempre que um processo sai da região crítica, o SO coloca outro processo antes, que ganha acesso à região primeiro). Ou seja, os spin-locks podem resultar em starvation. Além disso, os spin-locks também utilizam espera ocupada, o que é um desperdício de tempo do processador. Diante destas limitações dos spin-locks, surgiu o conceito de Semáforo. Um semáforo é um tipo especial de dados, composto por um valor inteiro e uma fila de processos. Este tipo de dados aceita duas operações básicas: 1. P(S), também conhecida como down(s): decrementa o valor inteiro do semáforo S e verifica se o resultado é menor que 0. Caso seja, o processo é bloqueado e colocado na fila de processos de S. 2. V(S), também conhecida como up(s): incrementa o valor inteiro do semáforo S e verifica se há processos bloqueados na fila de S. Se houver, desbloqueia o primeiro semáforo da fila. Ambas as operações são implementadas pelo SO. No caso da operação P(S), por exemplo, se o valor inteiro do semáforo é negativo, o SO remove o processo atual do processador, coloca este processo no estado bloqueado e insere uma referência para este processo na fila de processos de S. Dadas as funcionalidades de um semáforo, a exclusão mútua é facilmente obtida. Supondo que um semáforo S tenha sido inicializado com 1 (no caso, seu valor inteiro), basta que, antes de

7 acessar a região crítica, o processo execute um P(S). Se este for o primeiro processo a chegar à região crítica, o valor do semáforo passará a ser 0 e o processo não será bloqueado. A partir deste momento, outros procesos que cheguem à seção executarão P(S) e ficarão bloqueados. Quando o primeiro processo terminar a execução da sua seção crítica, ele deve executar um V(S), incrementando o semáforo e liberando o primeiro processo da fila de S. Note que o valor inteiro de um semáforo representa (em módulo) a quantidade de processos bloqueados na fila. Quando eventualmente todos os processos conseguem acessar a região crítica, o valor inteiro do semáforo passa a ser novamente o valor inicial 1. Semáforos podem também ser usados para sincronização entre processos. Suponha que, em um determinado programa concorrente, um processo A só pode executar uma certa parte do código após um processo B ter terminado um certo trecho da sua execução. Isso pode ocorrer, por exemplo, se A depende do resultado de uma computação de B para realizar a sua própria tarefa. Neste caso, pode-se inicializar um semáforo S com o valor 0. Quando o processo A chega ao ponto do código no qual deve esperar por B, ele executa P(S). Se o valor do semáforo ainda é 0, A será bloqueado. Quando eventualmente B termina o trecho de código do qual A depende, ele executa V(S), liberando A. Note que, se por algum motivo, o processo B executa V(S) antes do processo A executar P(S), o valor do semáforo passará a ser 1, fazendo com que P(S) não bloqueie A. O semáforo discutido até aqui é chamado de Semáforo Contador, por causa da capacidade de contagem do seu valor inteiro. Alguns sistemas, no entanto, fornecem um tipo ligeiramente diferente de semáforo, chamado Semáforo Mutex. A diferença de um mutex para um contador está no fato de que o valor inteiro de um mutex só pode assumir dois valores, 0 ou 1. Quando um processo faz um P(S) em um semáforo S cujo contador está em 0, o processo é bloqueado, mas o valor do semáforo não é decrementado. De forma análoga, quando um processo executa um V(S) em um semáforo S cujo contador está em 1, a operação não tem efeito algum (o valor não pode ser incrementado e não há processos na fila). Semáforos do tipo mutex podem ser mais simples de implementar e são suficientes para as duas funcionalidades vistas até aqui: exclusão mútua e sincronização. Entretanto, semáforos contadores são capazes de uma funcionalidade específica impossível para os semáforos mutex. Suponha uma implementação do problema do Produtor-Consumidor na qual o buffer circular tem capacidade para armazenar 10 dados. Um produtor não pode tentar inserir um dado no buffer, caso não haja posições disponíveis. Um consumidor, por outro lado, não pode tentar ler dados do buffer caso este esteja vazio. Esta coordenação pode ser feita através de dois semáforos contadores. Um dos semáforos, chamado vagas, é inicalizado com 10, representando que há inicialmente 10 posições vagas no buffer circular. Toda vez que um processo produtor tenta inserir um valor no buffer, ele primeiramente tenta realizar um P(vagas). Se ainda há vagas no buffer, o processo não será bloqueado e fará a inserção. Caso contrário, o valor inteiro do semáforo vagas será menor ou igual a 0, e o processo será bloqueado e colocado na fila de espera.

8 De forma análoga, existe um segundo semáforo chamado dados, inicialmente com o valor 0, representando que não há dados a serem consumidos no momento. Quando um consumidor tenta ler um dado do buffer, ele inicialmente executa um P(dados). Se o valor inteiro do semáforo dados é 0, o processo consumidor ficará bloqueado. Caso contrário, o processo seguirá em frente, realizando a remoção do próximo dado do buffer, e decrementando o valor do semáforo dados. Quando um produtor termina de inserir um dado no buffer, ele executa um V(dados), que incrementa o valor do semáforo dados e desbloqueia processos consumidores que estejam esperando. Da mesma forma, quando um consumidor remove um dado do buffer, ele executa um V(vagas), indicando aos produtores que há uma nova vaga livre no buffer. Note que o acesso efetivo a estrutura de dados do buffer ainda precisa ser protegido por um semáforo para exclusão mútua. Este terceiro semáforo pode ser um simples semáforo mutex. Os semáforos são soluções superiores às demais citadas, pois eles garantem todos os requisitos desejáveis. Não é possível haver starvation pois a fila de processos de um semáforo garante que a ordem de chegada é sempre respeitada. Os semáforos são também muito mais eficientes, pois não há espera ocupada: quando um processo fica preso após um P(S), ele é colocado imediatamente no estado bloqueado pelo SO, sem gastar tempo de uso do processador. Os semáforos podem ainda ser usados para outras funcionalidades além da exclusão mútua. Um detalhe sobre os semáforos, no entanto, é a maneira como eles são implementados. A variável que armazena a estrutura de dados de um semáforo precisa ser compartilhada entre os vários processos que desejam utilizá-lo. Como visto em relação aos spin-locks, isso pode fazer com que haja condição de corrida na própria manipulação dos semáforos. Desta forma, é preciso existir algum mecanismo para a implementação segura de semáforos. A implementação dos semáforos, em geral, é feita com spin-locks (por isso, semáforos, indiretamente, precisam de suporte do hardware). No entanto, nada impede que qualquer outro método de exclusão mútua seja utilizado para implementar as operações P e V. A pergunta, portanto, é: qual a vantagem dos semáforos, se eles acabam sendo implementados utilizando algum dos outros métodos de exclusão mútua, todos falhos? A resposta é que semáforos são implementados pelo SO e suas operações, P e V, são rápidas. Isso significa que os problemas enfrentados pelos outros métodos, como a espera ocupada e a possibilidade de starvation, são minimizados.

Fundamentos de Sistemas Operacionais

Fundamentos 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 mais

Sistemas Operacionais: Sincronização entre processos

Sistemas 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 mais

Sistemas Operacionais. Comunicação entre processos

Sistemas Operacionais. Comunicação entre processos Sistemas Operacionais Comunicação entre processos Comunicação entre Processos Os SO s hoje são multi-tarefa Alguns processos precisam cooperar para cumprir seus objetivos Sugestões de implementação? Exemplos

Leia mais

Revisão Ultima aula [1/2]

Revisã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 mais

Sistemas Operacionais. Condição de corrida e Região crítica

Sistemas Operacionais. Condição de corrida e Região crítica Sistemas Operacionais Condição de corrida e Região crítica Região Crítica Parte do código que acessa a área compartilhada Condição em que dois processos lêem e escrevem um dado compartilhado e o resultado

Leia mais

Fundamentos de Sistemas Operacionais

Fundamentos de Sistemas Operacionais Fundamentos de Sistemas Operacionais Aula 12: Revisão para a P1 Diego Passos Capítulo 1 Sistemas Operacionais São programas. Duas funções: Gerenciar os recursos do hardware. Dividir entre os vários processos.

Leia mais

Programação Concorrente Locks

Programaçã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 mais

Exclusão Mútua (mutex)

Exclusã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 mais

Comunicação entre processos

Comunicação entre processos Universidade Federal do Acre Centro de Ciências Exatas e Tecnológicas Bacharelado em Sistemas de Informação Comunicação entre processos Macilon Araújo Costa Neto macilon@ufac.br Capítulo 2 do livro do

Leia mais

Notas da Aula 10 - Fundamentos de Sistemas Operacionais

Notas 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 mais

Sistemas Operacionais. Prof. André Y. Kusumoto

Sistemas 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 mais

Fundamentos de Sistemas Operacionais

Fundamentos de Sistemas Operacionais Fundamentos de Sistemas Operacionais Aula 6: Monitores, Troca de Mensagens e Deadlock Diego Passos Última Aulas Mecanismos de Exclusão Mútua Operações atômicas. Protocolos de controle de acesso. Spin-locks.

Leia mais

Sistemas Operacionais. Universidade Federal de Minas Gerais. Aula 4. Comunicação e Sincronização de Processos

Sistemas 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 mais

Aula 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 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 mais

Sincronização e comunicação entre entidades de processamento. Mutex Volnys Bernal 1. Tópicos. Exclusão Mútua (mutex) Exclusão Mútua (Mutex)

Sincronizaçã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 mais

Fundamentos de Sistemas Operacionais

Fundamentos de Sistemas Operacionais Fundamentos de Sistemas Operacionais Aula 4: Programação Concorrente Diego Passos Últimas Aulas Processos Compostos por: Código (programa). Estado (memória, registradores). Em um sistema com multiprogramação:

Leia mais

Sistemas Operacionais

Sistemas 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 mais

Estrutura 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. 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 mais

Comunicação entre Processos

Comunicaçã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

Sistemas Operacionais

Sistemas Operacionais Introdução Sistemas Operacionais Sincronização de processos Aula 07 Em sistemas multiprogramados há interação entre processos para comunicação, que pode ser feita via compartilhamento de memória/arquivos

Leia mais

Arquitetura de Sistemas Operativos

Arquitetura de Sistemas Operativos Arquitetura de Sistemas Operativos Sistemas Operativos 2011/2012 1 Requisitos de uma Secção Crítica Requisitos de uma Secção Crítica Antes de analisarmos as várias soluções para assegurar que um bloco

Leia mais

Sistemas Operacionais. Prof. André Y. Kusumoto

Sistemas Operacionais. Prof. André Y. Kusumoto Sistemas Operacionais Prof. André Y. Kusumoto andrekusumoto.unip@gmail.com Semáforos Sincronização de Processos Um semáforo é uma estrutura de dados que consiste em um número inteiro e em uma fila Seu

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

( ) ( ) 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 mais

Problema dos Leitores/Escritores

Problema 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 mais

Sistemas Operacionais Concorrência. Carlos Ferraz Jorge Cavalcanti Fonsêca

Sistemas Operacionais Concorrência. Carlos Ferraz Jorge Cavalcanti Fonsêca Sistemas Operacionais Concorrência Carlos Ferraz (cagf@cin.ufpe.br) Jorge Cavalcanti Fonsêca (jcbf@cin.ufpe.br) POSIX Threads... ... POSIX Threads (2) Exercício } Executando n vezes e verificando a ordem

Leia mais

Sistemas Operacionais

Sistemas Operacionais Introdução Sistemas Operacionais Sincronização de processos Aula 08 Em sistemas multiprogramados há interação entre processos para comunicação, que pode ser feita via compartilhamento de memória/arquivos

Leia mais

Sistemas Operacionais. Sincronização: Semáforos Problema dos Leitores/Escritores

Sistemas 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 mais

Introdução Aplicações Concorrentes Especificação de Concorrência em Programas Problemas de Compartilhamento de Recursos Exclusão Mútua Sincronização

Introdução Aplicações Concorrentes Especificação de Concorrência em Programas Problemas de Compartilhamento de Recursos Exclusão Mútua Sincronização Sincronização e Comunicação entre Processos Introdução Aplicações Concorrentes Especificação de Concorrência em Programas Problemas de Compartilhamento de Recursos Exclusão Mútua Sincronização Condicional

Leia mais

Sincronização e Comunicação

Sincronização e Comunicação Sincronização e Comunicação Eduardo Ferreira dos Santos Ciência da Computação Centro Universitário de Brasília UniCEUB Maio, 2017 1 / 28 Sumário 1 Concorrência 2 Sistemas Multiprogramáveis Troca de mensagens

Leia mais

Concorrência. Condições de Corrida. 5a. Tentativa. Dificuldades: Sincronização de Processos (2) Aula 11 Profa. Patrícia Dockhorn Costa

Concorrê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 mais

Sincronização e Comunicação entre Processos. Adão de Melo Neto

Sincronizaçã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 mais

Universidade Federal do Pará Instituto de Ciências Exatas e Naturais Faculdade de Computação

Universidade Federal do Pará Instituto de Ciências Exatas e Naturais Faculdade de Computação Universidade Federal do Pará Instituto de Ciências Exatas e Naturais Faculdade de Computação SISTEMAS OPERACIONAIS Aulas 6 Regiane Kawasaki kawasaki@ufpa.br Slides adaptados da Profa. Sarita Mazzini Bruschi

Leia mais

Sistemas Distribuídos Aula 5

Sistemas 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 mais

Sincronização de Processos (2)

Sincronizaçã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 mais

Comunicação entre processos (2)

Comunicação entre processos (2) Comunicação entre processos (2) Pedro Cruz EEL770 Sistemas Operacionais Lembretes Proposta de trabalho Enviar para cruz@gta.ufrj.br Prazo: dia 02 de abril 2 Aula passada Comunicação entre processos é útil

Leia mais

Notas da Aula 14 - Fundamentos de Sistemas Operacionais

Notas da Aula 14 - Fundamentos de Sistemas Operacionais Notas da Aula 14 - Fundamentos de Sistemas Operacionais 1. Dispositivos de E/S Uma operação de entrada e saída é aquela que envolve a leitura ou escrita de dados a partir de dispositivos que estão fora

Leia mais

LabSO Gerência de Processos. Retrospectiva da aula passada... Na aula passada... Na aula passada...

LabSO Gerência de Processos. Retrospectiva da aula passada... Na aula passada... Na aula passada... LabSO Gerência de Processos Retrospectiva da aula passada... AULA 4 Flávia Maristela (flavia@flaviamaristela.com) Romildo Martins (romildo@romildo.net) Na aula passada... Processos Estados do processo

Leia mais

Sistemas Operacionais

Sistemas Operacionais Introdução Inst tituto de Info ormátic ca - UF FRGS Sistemas Operacionais i Introdução à Programação Concorrente Aula 05 Em sistemas multiprogramados há interação entre processos para comunicação, que

Leia mais

Notas da Aula 2 - Fundamentos de Sistemas Operacionais

Notas da Aula 2 - Fundamentos de Sistemas Operacionais Notas da Aula 2 - Fundamentos de Sistemas Operacionais 1. Ciclo de Vida de um Processo Todo processo passa por 3 fases durante sua vida: criação, execução e término. Um processo pode ser criado por outro

Leia mais

Sincronização e Comunicação de/entre Processos. Na Aula Anterior... Nesta Aula. Comunicação entre Processos. Pipes 07/09/2016

Sincronização e Comunicação de/entre Processos. Na Aula Anterior... Nesta Aula. Comunicação entre Processos. Pipes 07/09/2016 GSI018 Sistemas Operacionais 07/09/2016 Sincronização e Comunicação de/entre Processos Universidade Federal de Uberlândia Faculdade de Computação Prof. Dr. rer. nat. Daniel D. Abdala Na Aula Anterior...

Leia mais

Notas da Aula 8 - Fundamentos de Sistemas Operacionais

Notas da Aula 8 - Fundamentos de Sistemas Operacionais 1. Escalonamento Notas da Aula 8 - Fundamentos de Sistemas Operacionais Uma das funções de um SO é gerenciar o acesso aos recursos da máquina, por parte dos vários processos do sistema. Isto significa

Leia mais

Trincos Lógicos: Implementações. Trincos lógicos: Propriedades

Trincos 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 mais

Notas da Aula 7 - Fundamentos de Sistemas Operacionais

Notas da Aula 7 - Fundamentos de Sistemas Operacionais Notas da Aula 7 - Fundamentos de Sistemas Operacionais 1. Organização de um Processo em Memória Quando um processo é criado, o SO aloca uma porção da memória física da máquina para a criação do espaço

Leia mais

Sincronização e comunicação entre processos

Sincronização e comunicação entre processos Sistemas Operacionais Prof. Esp. André Luís Belini Bacharel em Sistemas de Informações MBA em Gestão Estratégica de Negócios Sincronização e comunicação entre processos Em um sistema multiprogramável com

Leia mais

Algoritmos de escalonamento

Algoritmos de escalonamento Algoritmos de escalonamento Escalonamento de Processos Sistemas Interativos Algoritmos para Sistemas Interativos: First-Come-First-Served (FIFO) Round-Robin; Prioridade; Múltiplas Filas; Utilizam escalonamento

Leia mais

Sincronização de Processos (2)

Sincronizaçã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 mais

Threads e Sincronização no Linux

Threads e Sincronização no Linux Threads e Sincronização no Linux MCTA026-13 - Sistemas Operacionais Emilio Francesquini e Fernando Teubl Ferreira e.francesquini@ufabc.edu.br / fernando.teubl@ufabc.edu.br 2019.Q1 Centro de Matemática,

Leia mais

Escalonamento. Eduardo Ferreira dos Santos. Abril, Ciência da Computação Centro Universitário de Brasília UniCEUB 1 / 28

Escalonamento. Eduardo Ferreira dos Santos. Abril, Ciência da Computação Centro Universitário de Brasília UniCEUB 1 / 28 Escalonamento Eduardo Ferreira dos Santos Ciência da Computação Centro Universitário de Brasília UniCEUB Abril, 2016 1 / 28 Sumário 1 Multiprogramação 2 Escalonamento 3 Concorrência 2 / 28 Multiprogramação

Leia mais

Universidade Federal do Pará Instituto de Ciências Exatas e Naturais Faculdade de Computação

Universidade Federal do Pará Instituto de Ciências Exatas e Naturais Faculdade de Computação Universidade Federal do Pará Instituto de Ciências Exatas e Naturais Faculdade de Computação SISTEMAS OPERACIONAIS Aula 7 Regiane Kawasaki kawasaki@ufpa.br Slides adaptados da Profa. Sarita Mazzini Bruschi

Leia mais

Execução Concorrente

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 mais

Sistemas Operacionais. Gerência de Processador

Sistemas Operacionais. Gerência de Processador Sistemas Operacionais Gerência de Processador Sumário 1. Introdução 2. Funções Básicas do Escalonamento 3. Critérios de Escalonamento 4. Escalonamento 1. Não-Preemptivo 2. Preemptivo 5. Políticas de Escalonamento

Leia mais

Sistemas Distribuídos Aula 7

Sistemas 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 mais

Processos. Prof. Gustavo Leitão

Processos. Prof. Gustavo Leitão Processos Prof. Gustavo Leitão Campus Natal Central Disciplina Programação para Ambiente de Redes Baseada na Aula do Prof. Ricardo Valentim 5/3/2010 Objetivo da Aula 5/3/2010 PLANO DE AULA Processos Processos:

Leia mais

Capítulo 3 Deadlocks - Impasses

Capítulo 3 Deadlocks - Impasses Capítulo 3 Deadlocks - Impasses 3.1. Recurso 3.2. Introdução aos deadlocks 3.3. Algoritmo do avestruz 3.4. Detecção e recuperação de deadlocks 3.5. Evitando deadlocks 3.6. Prevenção de deadlocks 3.7. Outras

Leia mais

Sistemas Operacionais. Universidade Federal de Minas Gerais. Aula 5. Implementação de Exclusão Mútua

Sistemas 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 mais

PROCESSOS. Sistemas Operacionais. Vinícius Pádua

PROCESSOS. Sistemas Operacionais. Vinícius Pádua PROCESSOS Sistemas Operacionais Processo Conceito mais importante em SO SO também é um processo Multiprogramação Relembrando Execução simultânea de vários processos CPU salta de processo em processo Ilusão

Leia mais

Unidade 3. Controle de Concorrência. Primitivas de Programação Concorrente Clássica

Unidade 3. Controle de Concorrência. Primitivas de Programação Concorrente Clássica Unidade 3 Controle de Concorrência Primitivas de Programação Concorrente Clássica Programação Concorrente A abstração de programação concorrente é o estudo de sequênciasde execução intercaladas, de instruções

Leia mais

TAREFAS COORDENAÇÃO ENTRE TAREFAS AULA 09 Sistemas Operacionais Gil Eduardo de Andrade

TAREFAS COORDENAÇÃO ENTRE TAREFAS AULA 09 Sistemas Operacionais Gil Eduardo de Andrade TAREFAS COORDENAÇÃO ENTRE TAREFAS AULA 09 Sistemas Operacionais Gil Eduardo de Andrade O conteúdo deste documento é baseado no livro do Prof. Dr. Carlos Alberto Maziero, disponível no link: http://dainf.ct.utfpr.edu.br/~maziero

Leia mais

Prof. Silvana Rossetto 9 de julho de DCC/IM/UFRJ

Prof. 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 mais

Problema do Produtor -Consumidor. Solução por semáforos

Problema do Produtor -Consumidor. Solução por semáforos Problema do Produtor -Consumidor Solução por semáforos Autoria Autores alunos da disciplina SO II Local Instituto de Informática UFRGS Versão v7 agosto de 2008 por C. Geyer Visão geral do assunto...2 Conceito...3

Leia mais

<identificador>[<tamanho>]: <tipo>;

<identificador>[<tamanho>]: <tipo>; Vetores e Constantes Imagine uma situação na qual fosse necessário armazenar 100 valores para processamento. Por exemplo, pode ser necessário armazenar as notas de 100 provas de uma turma de alunos. Uma

Leia mais

Relatório Experimento 5 Sistemas Operacionais 1 Turma 3 Grupo 8

Relatório Experimento 5 Sistemas Operacionais 1 Turma 3 Grupo 8 Relatório Experimento 5 Sistemas Operacionais 1 Turma 3 Grupo 8 Professor Tobar Bruno de André Mazzoco RA:02150522 César Henrique Kallas RA: 02099224 Introdução O experimento visa entender o que são threads,

Leia mais

LabSO Gerência de Processos. Processos. Porque eu preciso entender este assunto?

LabSO Gerência de Processos. Processos. Porque eu preciso entender este assunto? LabSO Gerência de AULA 3 Flávia Maristela (flavia@flaviamaristela.com) Romildo Martins (romildo@romildo.net) Porque eu preciso entender este assunto? Para entender como um computador consegue executar

Leia mais

Arquitetura de Sistemas Operativos

Arquitetura 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 mais

Tipos de Soluções (cont.)

Tipos de Soluções (cont.) 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 mais

MAC422/5753 Sistemas Operacionais

MAC422/5753 Sistemas Operacionais MAC422/5753 Sistemas Operacionais Prof. Marcel P. Jackowski Aula #9 Sincronização no kernel e deadlocks Sobre sincronização... Tarefa complexa e sutil Exemplos através de código-fonte mostrado utilizando

Leia mais

LICENCIATURA EM COMPUTAÇÃO. Resenha Livro Sistemas Operacionais 4ª edição Capítulo quatro: Gerencia do processador

LICENCIATURA EM COMPUTAÇÃO. Resenha Livro Sistemas Operacionais 4ª edição Capítulo quatro: Gerencia do processador LICENCIATURA EM COMPUTAÇÃO Resenha Livro Sistemas Operacionais 4ª edição Capítulo quatro: Gerencia do processador SANTO AMARO 2012 JEANDERVAL SANTOS DO CARMO RESENHA Resenha do quarto capítulo: Gerencia

Leia mais

Escalonamento. Eduardo Ferreira dos Santos. Abril, Ciência da Computação Centro Universitário de Brasília UniCEUB 1 / 42

Escalonamento. Eduardo Ferreira dos Santos. Abril, Ciência da Computação Centro Universitário de Brasília UniCEUB 1 / 42 Escalonamento Eduardo Ferreira dos Santos Ciência da Computação Centro Universitário de Brasília UniCEUB Abril, 2017 1 / 42 Sumário 1 Multiprogramação 2 Escalonamento 3 Concorrência Memória compartilhada

Leia mais

Sistemas Operacionais Gerenciamento de Memória. Carlos Ferraz Jorge Cavalcanti Fonsêca

Sistemas Operacionais Gerenciamento de Memória. Carlos Ferraz Jorge Cavalcanti Fonsêca Sistemas Operacionais Gerenciamento de Memória Carlos Ferraz (cagf@cin.ufpe.br) Jorge Cavalcanti Fonsêca (jcbf@cin.ufpe.br) Memória Física vs. Memória do Programa Memória P Física Tamanho dos softwares

Leia mais

Redes de Computadores. INF201 - Fundamentos de Sistemas Operacionais - 2º Período

Redes de Computadores. INF201 - Fundamentos de Sistemas Operacionais - 2º Período Redes de Computadores INF201 - Fundamentos de Sistemas Operacionais - 2º Período PARTE II: PROCESSOS E THREADS SUMÁRIO 7. SINCRONIZAÇÃO E COMUNICAÇÃO ENTRE PROCESSOS: 7.1 Introdução; 7.2 Aplicações Concorrentes;

Leia mais

Unidade III Gerência de Processos

Unidade III Gerência de Processos Sistemas Operacionais Unidade III Gerência de Processos http://www.lncc.br/~lrodrigo Professor: Luis Rodrigo lrodrigo@lncc.br Página: 1 de 34 Unidade III: Gerência de Processos Conceito de Processo Materialização

Leia mais

INTRODUÇÃO AOS SISTEMAS OPERACIONAIS SEMANA 13

INTRODUÇÃO AOS SISTEMAS OPERACIONAIS SEMANA 13 INTRODUÇÃO AOS SISTEMAS OPERACIONAIS outubro/2013 SEMANA 13 Conceitos sobre s. Visão geral, s de usuário e de, modelos de multiing, ciclo de vida. Exemplos nos sistemas operacionais. 1 - Introdução Thread

Leia mais

Fundamentos de Sistemas Operacionais

Fundamentos de Sistemas Operacionais Fundamentos de Sistemas Operacionais Aula 7: Implementação de Processos e Threads Diego Passos Revisão Programação Concorrente e Multiprogramação SOs modernos permitem diversos processos em memória. Cada

Leia mais

Sincronização e Comunicação entre Processos. Adão de Melo Neto

Sincronização e Comunicação entre Processos. Adão de Melo Neto Sincronização e Comunicação entre Processos Adão de Melo Neto 1 MOTIVAÇÃO 2 INTRODUÇÃO Em um sistema multiprogramado (concorrente) os processos alternam sua execução (ou seja, são executados alternadamente

Leia mais

Sistemas Operacionais. Deadlock

Sistemas Operacionais. Deadlock Sistemas Operacionais Deadlock Deadlocks! Recursos: hardware ou informação! Preemptivo X não preemptivo! Uso do Recurso:! Pedido (Request ou Open)! Uso! Liberação! Um conjunto de processos está em deadlock

Leia mais

Sistemas Operacionais

Sistemas Operacionais Brainstormig Sistemas Operacionais Processos e multiprogramação Aula 2 Quais são os componentes de um programa? Como podemos representar um programa em execução? Onde ele inicia a executar? Como se mapeia

Leia mais

UNIVERSIDADE LUSÓFONA DE HUMANIDADES E TECNOLOGIAS C SISTEMAS OPERATIVOS

UNIVERSIDADE 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 mais

Sistemas Operacionais

Sistemas Operacionais Introdução 2 a edição Revisão: Fev/2003 Sistemas Operacionais Programação concorrente Capítulo 3 Programa executado por apenas um processo é dito de programa seqüêncial Existe apenas um fluxo de controle

Leia mais

Sincronização e Comunicação entre Processos

Sincronização e Comunicação entre Processos Sincronização e Comunicação entre Processos Monitores/Semáforos Semáforos Mecanismos de sincronização nãoestruturados; Exige do desenvolvedor bastante cuidado, pois qualquer engano pode levar a problemas.

Leia mais

Comunicação entre processos

Comunicação entre processos Comunicação entre processos Freqüentemente, processos precisam se comunicar com outros processos Por exemplo, em um pipeline do interpretador de comandos, a saída do primeiro processo deve ser passado

Leia mais

Capítulo 6 Nível do Sistema Operacional

Capítulo 6 Nível do Sistema Operacional Capítulo 6 Nível do Sistema Operacional - Sistema Operacional: Programa que, do ponto de vista do programador, adiciona uma grande quantidade de instruções e funcionalidades bem além das disponibilizadas

Leia mais

Programação concorrente (processos e threads)

Programação concorrente (processos e threads) Programação concorrente (processos e threads) Programação concorrente Por que precisamos dela? Para utilizar o processador completamente Paralelismo entre CPU e dispositivos de I/O Para modelar o paralelismo

Leia mais

Sistemas Operacionais

Sistemas Operacionais Sistemas Operacionais Processos - Parte 1 Prof. Dr. Fábio Rodrigues de la Rocha (Processos - Parte 1) 1 / 46 Um aspecto importante no estudo sobre sistemas operacionais é o gerenciamento de processos.

Leia mais

SSC510 Arquitetura de Computadores 1ª AULA

SSC510 Arquitetura de Computadores 1ª AULA SSC510 Arquitetura de Computadores 1ª AULA REVISÃO DE ORGANIZAÇÃO DE COMPUTADORES Arquitetura X Organização Arquitetura - Atributos de um Sistema Computacional como visto pelo programador, isto é a estrutura

Leia mais

SSC0611 Arquitetura de Computadores

SSC0611 Arquitetura de Computadores SSC0611 Arquitetura de Computadores 6ª Aula Entrada e Saída Profa. Sarita Mazzini Bruschi sarita@icmc.usp.br Estrutura da máquina de von Neumann Dispositivos Periféricos Interface com o mundo exterior

Leia mais

Fundamentos de Sistemas Operacionais

Fundamentos de Sistemas Operacionais Fundamentos de Sistemas Operacionais Aula 19: Memória Virtual: Introdução Diego Passos Última Aula Paginação Método de gerenciamento de memória mais usado hoje. Espaço de endereçamento de um processo é

Leia mais

Alocação de Recursos. Introdução. Sistemas de Tempo Real: Introdução. Modelo de Recursos. Modelo de Recursos. Modelo de Recursos

Alocação de Recursos. Introdução. Sistemas de Tempo Real: Introdução. Modelo de Recursos. Modelo de Recursos. Modelo de Recursos Introdução Sistemas de Tempo Real: Alocação de Recursos Rômulo Silva de Oliveira Departamento de Automação e Sistemas DAS UFSC Processador é o recurso mais imtante Mais essencial Outros recursos também

Leia mais

Sistemas Operacionais. Escalonamento de processos

Sistemas Operacionais. Escalonamento de processos Sistemas Operacionais Escalonamento de processos 1 Escalonamento de Processos Sistemas Interativos Algoritmos para Sistemas Interativos: First-Come-First-Served (FIFO) Round-Robin; Prioridade; Múltiplas

Leia mais

Alocação de Recursos. Introdução. Sistemas de Tempo Real: Introdução. Modelo de Recursos. Modelo de Recursos. Modelo de Recursos

Alocação de Recursos. Introdução. Sistemas de Tempo Real: Introdução. Modelo de Recursos. Modelo de Recursos. Modelo de Recursos Introdução Sistemas de Tempo Real: Alocação de Recursos Rômulo Silva de Oliveira Departamento de Automação e Sistemas DAS UFSC Processador é o recurso mais imtante Mais essencial Outros recursos também

Leia mais

Sistemas Operacionais

Sistemas 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 mais

Universidade Federal de Campina Grande Unidade Acadêmica de Sistemas e Computação Curso de Bacharelado em Ciência da Computação.

Universidade Federal de Campina Grande Unidade Acadêmica de Sistemas e Computação Curso de Bacharelado em Ciência da Computação. Universidade Federal de Campina Grande Unidade Acadêmica de Sistemas e Computação Curso de Bacharelado em Ciência da Computação Organização e Arquitetura de Computadores I Organização e Arquitetura Básicas

Leia mais

Capítulo 3. Deadlocks. Recursos

Capítulo 3. Deadlocks. Recursos Capítulo 3 Deadlocks 3.1. Recursos 3.2. Introdução a deadlocks 3.3. O algoritmo a avestruz 3.4. Detecção e recuperação de deadlock 3.5. Evitando Deadlock 3.6. Prevenindo Deadlock 3.7. Outros assuntos 1

Leia mais

Recursos. Exemplos de recursos:

Recursos. Exemplos de recursos: Deadlocks 1. Recursos 2. Introdução aos deadlocks 3. Algoritmo Ostrich (Avestruz) 4. Detecção e recuperação de deadlocks 5. Evitar deadlocks 6. Prevenir deadlocks 7. Considerações Recursos Exemplos de

Leia mais

Teste de Sistemas de Operação 30 de Maio de 2009

Teste 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 mais

Parte I Multiprocessamento

Parte I Multiprocessamento Sistemas Operacionais I Estrutura dos SO Prof. Gregorio Perez gregorio@uninove.br 2004 Parte I Multiprocessamento Roteiro 1 Multiprocessadores em Sistemas Fortemente Acoplados 1.1 1.2 1.3 Processamento

Leia mais

Fundamentos de Sistemas Operacionais

Fundamentos de Sistemas Operacionais Fundamentos de Sistemas Operacionais Aula 9: Escalonadores Não- Preemptivos Diego Passos Última Aula Escalonamento O que é escalonamento. Objetivos dos escalonadores. Vazão. Eficiência. Tempo de resposta...

Leia mais

Questões de Múltipla escolha

Questões de Múltipla escolha ATPS Sistemas Operacionais Professor Matheus de Lara Calache Valor total do trabalho: 10 Cada resposta vale 0,34. Questões de Múltipla escolha 1) Processos podem ser organizados em filas como Fila de Prontos

Leia mais

Notas da Aula 20 - Fundamentos de Sistemas Operacionais

Notas da Aula 20 - Fundamentos de Sistemas Operacionais Notas da Aula 20 - Fundamentos de Sistemas Operacionais 1. Algoritmos de Substituição de Páginas Quando ocorre uma falta de páginas, o SO precisa trazer da área de swap para a memória principal a página

Leia mais

PROGRAMAÇÃO ORIENTADA A OBJETOS. Aula 12 - Threads e Concorrência em Java

PROGRAMAÇÃO ORIENTADA A OBJETOS. Aula 12 - Threads e Concorrência em Java Aula 12 - Threads e Concorrência em Java Conteúdo Programático desta aula Aplicar os conceitos e threads, processos concorrentes e sincronização em pequenos programas. Aplicar e verificar os conceitos

Leia mais