Conceito de processo como uma unidade de trabalho em um sistema moderno de tempo compartilhado. Estados de um processo.

Save this PDF as:
 WORD  PNG  TXT  JPG

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

Download "Conceito de processo como uma unidade de trabalho em um sistema moderno de tempo compartilhado. Estados de um processo."

Transcrição

1 gerenciamento de processos Objetivo Compreender a maneira como o sistema operacional controla o gerenciamento dos programas em execução por meio do gerenciamento de processos no qual cada processo representa a abstração do programa em execução. Conteúdos UNIDADE 2 Conceito de processo como uma unidade de trabalho em um sistema moderno de tempo compartilhado. Estados de um processo. Escalonadores e escalonamento de processos. Cooperação, comunicação e sincronização entre os processos. Threads e Deadlocks.

2 No início de cada unidade você encontrará as informações práticas para o seu desenvolvimento, os objetivos que pretendemos atingir e o conteúdo que será estudado. Portanto, lembre-se de que sua participação é fundamental para o seu aprendizado. INFORMAÇÃO: Em um instante determinado um programa está sendo executado e, no instante seguinte, este é interrompido para que outro programa ocupe o processador, mesmo que o primeiro ainda não tenha terminado totalmente sua execução. 1 Introdução Na unidade anterior você conheceu o histórico e a evolução dos sistemas operacionais, aprendeu alguns conceitos importantes para o seu estudo, como por exemplo a multiprogramação. Você pôde compreender que um sistema multiprogramável permite a execução de diversas tarefas ao mesmo tempo, simulando um ambiente de monoprogramação para cada usuário, sendo que cada um tem a sensação de estar utilizando um processador exclusivamente para si. Mas vimos que o que realmente acontece é a divisão do tempo do processador para todos os programas (time-sharing). Nesta unidade você aprenderá mais sobre o chaveamento de programas, ou seja, a troca de programas no processador e, principalmente, sobre a entidade que torna essa troca possível, chamada de processo. Além de técnicas e algoritmos utilizados para realizar o escalonamento e a sincronização entre processos, respectivamente. 2 Definição de processos Um processo é tudo aquilo que o processador executa efetivamente, ou seja, é a entidade pela qual a utilização da memória de um programa, tempo de processador e recursos de E/S podem ser gerenciados e monitorados pelo sistema operacional. O processo pode ser visto como a abstração de um programa em execução. A divisão do processador em vários processos significa que em um instante o sistema operacional decide interromper um processo em execução, e dar o processador a outro processo, pois o primeiro já utilizou sua porção do processador. Se um processo é interrompido, em um dado momento, para que outro ocupe o processador, quando esse voltar a ser executado em que ponto deverá continuar? Quando um processo é suspenso, todas as informações sobre ele são armazenadas em uma estrutura chamada tabela de processo, mantida pelo SO. O chaveamento rápido dos processos na CPU dá aos usuários a sensação de paralelismo na execução dos programas. O que não é verdade, pois o que acontece realmente é um pseudo-paralelismo. O verdadeiro paralelismo acontece apenas em sistemas com múltiplos processadores. As informações de um processo são: um programa executável, os dados e a pilha do programa, o contador de programa, o ponteiro de pilha, registradores e as informações necessárias para executar o programa. Esta estrutura pode ser implementada como uma lista encadeada de processos. 3 Modelo de procresso O processo possui uma natureza seqüencial, ou seja, se um processo for executado várias vezes com os mesmos dados, a mesma seqüência de instruções será executada e fornecerá o mesmo resultado em todas as execuções. Todo software executável em um computador moderno, até mesmo o sistema operacional, é organizado em processos. Sistemas de multiprogramação permitem ao usuário a execução paralela de vários processos. Porém, o que acontece é um chaveamento rápido dos processos na CPU que dá aos usuários a sensação de paralelismo na execução dos programas. Esse pseudoparalelismo, definido como multiprogramação é caracterizado pelo chaveamento de processos pela CPU. O verdadeiro paralelismo acontece apenas em sistemas com múltiplos processadores. 16 CRC Sistemas Operacionais Claretiano Batatais

3 A cada instante, um processador diferente ocupa o processador e pode rodar independentemente dos outros existentes, pois cada um possui sua própria memória virtual e fluxo de controle (contador de programa). Desta forma, a velocidade de execução dos processos depende da quantidade, e também dos recursos oferecidos pelo computador. Por exemplo: Se você tiver três aplicativos rodando em sua máquina, terá uma velocidade de cada processo reduzida conforme carrega outros aplicativos ao mesmo tempo, porque outros processos estão na competição pelo processador. Dependendo da velocidade do processador e da quantidade de processos, o trabalho poderá ser prejudicado, ou até mesmo inviabilizado. A troca de processos consiste, basicamente, em salvar o conteúdo atual dos registradores da CPU, referentes a um processo que esteja deixando o processador, e carregá-los com o conteúdo do processo que esteja ganhando a CPU. Observe o esquema da Figura 1 a seguir que representa a mudança de contexto entre dois processos. Processo X S.O. Processo Y fim 1) Salva conteúdo dos Registradores de A 2) Carrega Registradores de B início execução execução Figura 1 Troca de processos na CPU. Nos computadores modernos o gerenciamento de processos é feito pelo sistema operacional. Para o gerenciamento de processos o Sistema Operacional atribui, basicamente, três conjuntos de informações: identificação do processo; quotas de recursos; privilégios. A identificação de um processo é feita pelos seguintes campos: PID (process identification) identificação única de cada processo. Owner campo que armazena a identificação de quem o criou: pode ser um PID, no caso de ser criado por outro processo, ou um UID (user identification), no caso de ter sido criado por um usuário. Assim como os processos possuem uma identificação única no sistema (PID process identification), os usuários também são identificados unicamente por um UID (user identification). O ID (identificação) do usuário é muito útil quando desejamos controlar o acesso aos arquivos, aos processos e memória por questões de segurança. Sistemas Operacionais CRC Batatais Claretiano 17

4 As quotas de recursos identificam a quantidade de recursos que um processo pode utilizar. Alguns exemplos destes recursos são: tamanho máximo de memória, tamanho do para E/S e número máximo de arquivos abertos simultaneamente. Se a quota alocada não for suficiente para a execução do processo, este será prejudicado. Se a cada instante um processo diferente ganha a CPU, pode-se constatar que existem alguns privilégios. Estes privilégios definem qual a permissão que cada processo tem para utilizar o sistema, alguns exemplos são: ele pode acessar, criar e eliminar outros processos; ele pode acessar arquivos de outros usuários. 4 Estados Dos processos Você já sabe que o processador não pode ser ocupado por todos os processos existentes no sistema em um mesmo instante, então todos competem para ganhar o processador. O sistema operacional é responsável por controlar essa competição entre os processos, ou seja, ele diz em que momento e quais processos devem entrar ou deixar a CPU (estado de execução). Esta transição de processos entre os três estados possíveis, permite que os processos mudem de estado várias vezes durante sua existência. Como você viu na primeira unidade existem, basicamente, três estados principais que um processo pode estar:, ou. Conforme as situações descritas a seguir. quando todos os recursos necessários para sua execução já estão disponíveis, mas ainda não pode entrar em execução porque não chegou sua vez e a CPU está ocupada por outro processo. Neste estado pode haver uma fila de processos esperando a liberação da CPU. quando o próprio processo está ocupando a CPU e sendo executado. quando o processo estava em execução, mas precisou de um recurso que não estava disponível no momento, então ele é bloqueado até que o recurso desejado esteja disponível. A Figura 2 apresenta as transições possíveis entre os estados de um processo. Observe que um processo bloqueado não pode voltar diretamente para a CPU, deve antes passar pelo estado de pronto, se não houver nenhum processo prioritário na frente e se seu tempo de CPU ainda não se esgotou, então aí sim ele poderá voltar para o estado de execução. Um processo que sai da CPU porque seu time-slace (fatia de tempo) já terminou, volta para o estado de pronto e aguarda, juntamente com outros processos, até ser eleito novamente pelo sistema operacional para entrar em execução. 18 CRC Sistemas Operacionais Claretiano Batatais

5 Processo Fila de processos esperando escalonamento n-2 n-1 n Escalonador Processo Processo Processo Processo Figura 2 Estados possíveis de um processo. Um processo pode denominar outros subprocessos que executam de maneira hierárquica. Veja no tópico a seguir. Escalonador é um componente que faz parte do Sistema Operacional. Ele tem a função de selecionar qual dos processos concorrentes ganhará a CPU. Este escalonador se baseia em algoritmos de escalonamento para definir os critérios para seleção de um processo. 5 Subprocessos e thread Uma aplicação pode ser dividida em partes que trabalham concorrentemente. Essa divisão da aplicação consiste em particionar o processo gerado para controlar a aplicação (processo pai) em outros subprocessos subordinados a este que são chamados de processos filhos, ou apenas subprocessos. Os subprocessos, por sua vez, podem criar outros processos filhos em uma estrutura hierárquica de subprocessos. Esta hierarquia faz com que todos os processos filhos de um processo pai sejam destruídos caso o processo pai deixe de existir. Pa Pb Pc Pd Pe Pf Pg Figura 3 Representação hierárquica de processos. Conforme aumenta a utilização de subprocessos há um desperdício de tempo gasto para criação e eliminação desses subprocessos. Para minimizar este problema, introduziu-se o conceito de threads de controle (ou linhas de controle). Sistemas Operacionais CRC Batatais Claretiano 19

6 As threads são consideradas processos mais leves e representam uma entidade básica de utilização da CPU. Enquanto os processos são usados para agrupar recursos, as threads são as entidades escalonadas para a execução na CPU. INFORMAÇÃO: A diferença mais marcante entre subprocessos e threads é que enquanto os subprocessos utilizam espaços de memória independentes e protegidos, as threads compartilham o mesmo espaço de endereçamento do processo. Para você compreender melhor a utilidade de threads, considere um navegador web. Você sabe que muitas páginas na Internet são carregadas de imagens e outros recursos pesados. Se para cada imagem o navegador tiver que estabelecer uma conexão separada com o servidor para solicitar uma imagem, o procedimento seria muito difícil. Mas se o navegador implementar múltiplas threads, é possível fazer a requisição de muitas imagens ao mesmo tempo melhorando o desempenho e a capacidade de resposta. A Intel lançou no mercado um modelo de processador com a tecnologia Hyperthreading, que permite que se processe, dentro de um mesmo ciclo de clock, instruções referentes a várias threads e não apenas várias instruções dentro de uma mesma thread. Os sistemas multiprogramáveis possibilitam o compartilhamento da CPU entre diversos processos concorrentes. Para isso, cada sistema possui critérios para determinar qual será a forma de seleção de um dos processos que ocupará a CPU. Este procedimento de seleção é realizado pelo sistema operacional e conhecido como escalonamento de processos. 6 escalonamento dos processos Você compreendeu que o estado de pronto possui uma fila de processos aguardando a liberação da CPU para entrarem em execução e cabe ao sistema operacional decidir qual processo terá a posse do processador? Na tentativa de manter o processador ocupado 100% de seu tempo, o sistema operacional possui um componente de seleção que escolhe um dos processos que ocupará a CPU, este componente é chamado de escalonador e utiliza um algoritmo de escalonamento para definir os critérios de seleção de um processo. Os algoritmos de escalonamento podem ser divididos em três categorias: Não-preemptivos utilizados em processamento batch. Quando um processo (job) ganha a CPU, nenhum outro poderá tirar-lhe este recurso. Exemplos de implementação: FIFO (First In First Out) o primeiro da fila de pronto será o primeiro a executar e SJF (Shortest Job First) escolhe sempre o processo que precisa de menos tempo de CPU. Cooperativos um processo libera, voluntariamente, a CPU para outro. O grande problema é a monopolização do processador. Preemptivos o sistema interrompe um processo em execução para que outro ocupe o processador. A seguir você conhecerá os detalhes deste tipo de algoritmo. Exemplos de algoritmos de escalonamento PREEMPTIVOS: Round Robin Este algoritmo aloca um intervalo de tempo, conhecido como quantum, para cada processo. 20 CRC Sistemas Operacionais Claretiano Batatais

7 Ao final de seu quantum, se o processo ainda estiver em execução voltará para o estado de pronto e o próximo processo da fila será alocado para ocupar a CPU. Se o processo terminar antes de finalizar o seu quantum a CPU será liberada imediatamente para o próximo processo. Se o processo for bloqueado para esperar algum recurso externo antes de terminar o quantum, a CPU é liberada para outro processo, e esse voltará para a fila de pronto assim que o recurso for liberado. Neste momento, se a CPU estiver livre, ele a ocupará imediatamente, senão deverá entrar na fila de espera. Você deve estar se perguntando: Qual é o tamanho de um quantum? Se o quantum for muito grande poderá degradar o tempo de resposta. Se for muito pequeno, diminui a eficiência da CPU que terá uma sobrecarga de processamento para realizar o chaveamento de recursos entre processos. O ideal seria um balanceamento de acordo com a carga dos processos, mas tal não é fácil de ser gerenciado. Essa é maior dificuldade deste algoritmo Prioridade Este algoritmo considera níveis de prioridade entre os processos, permitindo um tratamento especial em casos de emergência, pois processos de maior prioridade podem ser executados. O problema seria se processos de alta prioridade executassem indefinidamente, mas neste caso o escalonador pode diminuir a prioridade do processo corrente e trocá-lo pelo próximo com maior prioridade (chaveamento). Múltiplas filas Este algoritmo adota várias classes de prioridades. Cada classe possui um quantum diferente. Desta forma, processos menores entram na fila de menor quantum, processos maiores entram na fila de maior quantum, e assim por diante. Shortes process next (Tarefas Pequenas Primeiro) Lembra da idéia do algoritmo não-preemptivo SJF (Shortest Job First)? A idéia é a mesma, ou seja, na tentativa de minimizar o tempo médio de espera pelo processador tarefas menores são executadas primeiro. Apesar das soluções apresentadas para escalonamento de processos, há ocorrências em que os recursos do sistema são compartilhados. Compartilhar, principalmente os espaços de memória, pode ocasionar diversas situações indesejadas de discriminação de processos caso não seja bem controlada. Nestes casos dizemos que há concorrência entre processos. No próximo tópico será apresentada uma descrição dos problemas típicos em computação gerados pela concorrência entre processos. Se encontrar dificuldades não desanime! Entre em contato com seus colegas de curso e seu professor que estará sempre pronto para esclarescer suas dúvidas. 7 Concorrência entre processos Os processos concorrem pelos recursos do sistema que normalmente podem atender a uma única requisição por vez. Sistemas Operacionais CRC Batatais Claretiano 21

8 (1) Fila de impressão A regra é simples, o primeiro arquivo que chega será o primeiro a ser impresso, e assim sucessivamente. Quando processos compartilham a mesma área de memória, ou o mesmo arquivo ou qualquer outro recurso compartilhado, existem situações de concorrência entre os processos por aquele recurso, esta situação de competição é conhecida por Race Conditions. Suponha a fila de impressão 1 (spool directory) com uma variável que indica onde a fila começa, ou seja, o próximo documento a ser impresso; e outra variável que indica o final da fila, ou seja, o último documento que chegou, portanto o último que será impresso. Todos os processos que desejam imprimir deverão consultar a próxima posição livre para colocar seu documento (fim+1). Imagine a seguinte situação (considere que os documentos das posições de 1 a 4 já foram impressos). começo fim SAÍDA so.pdf ed.doc index.htm mail.txt Figura 4 Fila de impressão (spool directory). Imagine um processo X em execução que consulta a próxima posição vazia (fim+1) para inserir seu documento. No exemplo da Figura 4 o processo obterá o valor 9. Só que antes de armazenar, de fato, o seu arquivo na posição 9 da fila, o Sistema Operacional, subitamente, envia uma interrupção para que o processo X deixe a CPU, pois seu tempo já se esgotou. O SO salva as informações dos registradores, inclusive a posição 9 da fila de impressão, e libera a CPU para o processo Y. Este entra em execução e também deseja enviar um documento para ser impresso e, da mesma forma, obtém a próxima posição (fim+1) para inserir seu documento, esta posição continua sendo 9, pois o processo X não teve tempo de ocupá-la. O processo Y insere seu arquivo na fila e atualiza a variável fim com o valor 9, isso indica que a próxima posição livre (fim+1) será a 10 e não mais a 9. começo fim SAÍDA so.pdf ed.doc index.htm mail.txt foto Figura 5 Inserção do arquivo foto.jpg na fila de impressão. Neste instante, o processo Y volta para o estado de pronto e libera a CPU para o processo X que continuará a executar do local que parou utilizando as informações armazenadas dos registradores, ou seja, colocará seu documento na posição 9 da fila de impressão. Este novo documento, contas.xls, irá sobregravar o documento e o arquivo foto.jpg nunca será impresso. 22 CRC Sistemas Operacionais Claretiano Batatais

9 começo fim SAÍDA so.pdf ed.doc index.htm mail.txt contas Figura 6 Inserção do arquivo contas.xls na fila de impressão. A solução para resolver o problema anterior é chamada de exclusão mútua e garante que se um processo estiver utilizando um recurso compartilhado, os outros processos serão impedidos de fazer o mesmo. O nome dado à parte de um programa executada concorrentemente é região crítica e sua implementação deve obedecer a quatro condições: a) Dois processos não podem estar dentro de suas regiões críticas de um mesmo recurso compartilhado ao mesmo tempo. Isso garante a exclusão mútua dos processos. b) A exclusão mútua dos processos deve ser independente da velocidade dos processos ou o número de CPU s. c) Um processo executado fora da região crítica não pode bloquear outros processos. d) Nenhum processo esperará para sempre para entrar em sua região crítica. Existem vários algoritmos criados para garantir que todas estas condições sejam seguidas. Tais algoritmos possuem características particulares, porém todos têm o mesmo propósito: implementar eficientemente a exclusão mútua. Exclusão mútua com espera ocupada É a garantia que um recurso compartilhado será utilizado por apenas um processo de cada vez. Se um processo está acessando uma região crítica, ou seja, esta em execução, todos os outros processos que precisarem acessar esta região deverão entrar em estado de espera ocupada, mas esta espera se refere apenas à região crítica. Isso significa que eles poderão continuar disputando a CPU e utilizando outros recursos, mas ainda não poderão executar a região crítica. Desabilitar Interrupções Para que o sistema operacional controle a transição de processos em execução, utiliza envio de interrupções de hardware para os processos avisando sobre a mudança de estado. Uma possível solução de exclusão mútua com espera ocupada permite desabilitar todas as interrupções, inclusive as do sistema operacional, quando uma região crítica está sendo acessada, garantindo que o processo em execução termine de executar a região crítica sem a intervenção de outros processos. Todavia, o custo desta solução é caro, pois processos de usuário têm o poder de desabilitar as interrupções do sistema e se, por algum motivo (de implementação, de hardware), não puder reabilitar as interrupções, o sistema operacional perderá integralmente o controle do hardware. A exclusão mútua em regiões críticas garante que mais de um processo não acessará o mesmo recurso compartilhado ao mesmo tempo. INFORMAÇÃO: O sistema operacional, bem como outros arquivos de sistema e de usuários, pode gerar interrupções. Um caso comum é o Sistema Operacional gerar interrupções obrigando um processo a deixar a CPU. As soluções que implementam exclusão mútua com espera ocupada serão descritas no decorrer do texto. Você não precisa decorar tais soluções, basta entender como elas funcionam e quais são as técnicas possíveis, utilizadas pelo sistema operacional, para resolver problemas de acesso simultâneo em regiões compartilhadas. Variável LOCK Esta solução utiliza um algoritmo em que cada recurso compartilhado possui uma variável global chamada lock, com valor inicial igual a 0. O algoritmo controla o acesso à região crítica por meio da variável lock. Ao consultar, se o seu valor for 0, o processo executará a região crítica; e se for 1, o processo aguardará até que a variável lock se torne 0. Sistemas Operacionais CRC Batatais Claretiano 23

10 Um processo que precisa entrar em sua região crítica testa o valor de lock. Se o valor for 0 o processo altera para 1 e executa a região crítica até o final. Se o valor for 1, espera até que seja 0. Desta forma sempre existem duas opções: lock=0 execução da região crítica liberada; lock=1 espera da liberação para executar a região crítica. Você achou este algoritmo uma boa solução? Realmente, os problemas parecem ser solucionados, mas esta solução se torna inviável se dois ou mais processos tentam acessar a variável lock e obtém o valor 0 ao mesmo tempo. Refletiria assim, a situação inicial (exemplo da fila de impressão) do problema de concorrência. Alternância Estrita ou Variável TURN Alternância estrita é uma solução implementada em software que utiliza uma variável turn para indicar o processo com direito de executar a região crítica naquele momento. Se turn for igual a i, o processo de número i executará a região crítica até terminar. Ao sair, o processo altera o valor de turn para i+1 para que o próximo processo, ao executar, tenha acesso à região crítica. Na verdade é uma solução simples e que garante a exclusão mútua. O problema desta solução surge quando processos possuem freqüências diferentes de acessos à região crítica, ou seja, um processo que utiliza muito uma região crítica poderá ser prejudicado se tiver que ficar ocioso esperando os acessos de vários outros que precisam menos deste recurso compartilhado. Solução de Peterson Esta solução combina as duas últimas soluções que nós vimos anteriormente, variáveis lock e turn solucionando os problemas individuais de cada uma delas. Instrução TSL Test and Set Lock é uma instrução utilizada em muitos processadores que permite, neste caso, a implementação de variáveis lock. A característica das instruções TSL é que são executadas do início ao final pelo processador, não permitindo a divisão de sua execução, mesmo em caso de interrupções de hardware. Funcionamento da instrução TSL. Para compreender melhor o funcionamento da instrução TSL, leia o algoritmo ao lado que implementa a exclusão mútua por esta técnica. Atente para os comentários em itálico. entra_regiao: tsl register, flag copia flag para o registrador e seta flag para 1 cmp register,#0 a flag é zero? jnz entra_regiao se diferente de zero, já tem lock, então fica no loop ret retorna para quem chamou; conseguiu entrar na região crítica sai_regiao mov flag, #0 libera a execução da região crítica e armazena um 0 em flag ret retorna para quem chamou 24 CRC Sistemas Operacionais Claretiano Batatais

11 As soluções apresentadas para a exclusão mútua com espera ocupada não impedem que os processos que esperam para executar a região crítica, continuem competindo pela CPU e executando outras instruções. A exclusão mútua pode, porém, ser implementada usando outra técnica; os processos que competem pela região crítica serão bloqueados e somente um poderá continuar executando a região crítica e também a CPU. Esta solução é chamada de Exclusão Mútua com Espera Bloqueada. Exclusão mútua com espera bloqueada Para garantir a exclusão mútua de forma mais eficiente, em uma tentativa de eliminar os problemas causados pelas técnicas apresentadas foram propostas outras, caracterizadas pelo bloqueio de processos enquanto um deles está executando uma região crítica. Dorme e Acorda (Sleep and Wakeup) crítica: Este método utiliza duas variáveis para controlar a entrada-saída na região Sleep é uma chamada de sistema que altera o estado de um processo em execução para bloqueado (dormente). Wakeup é uma chamada de sistema, feita por um processo, que acorda o processo tornando-o ativo novamente, saindo do estado de bloqueado. Se você entendeu como funciona a Instrução TSL, não terá problema em compreender este método. Note que o princípio utilizado é o mesmo, exceto que neste caso, o controle da ocupação-liberação da região crítica será feito por chamadas sleep e wakeup, ou seja, quando a variável está setada com 1, o processo executa sleep. O processo que altera o valor de LOCK para 0 ao sair da região crítica é o responsável por ativar um processo bloqueado (via wakeup). O programador é o responsável pela execução destas chamadas, sleep e wakeup. Pode não ser uma idéia boa, uma vez que erros no programa podem causar uma situação na qual todos os processos ficam bloqueados ao mesmo tempo, ocasionando o que chamamos de deadlock 2. Há um exemplo clássico, utilizado na maioria dos livros que ensinam sistemas operacionais, para demonstrar a utilização do método dorme e acorda. Esse exemplo é conhecido por Produtor-Consumidor. (2) Deadlock é uma situação em que todos os processos no sistema se encontram em estado de bloqueado () e não há como acordá-los. O problema do Produtor-Consumidor considera um de tamanho fixo que é compartilhado por dois processos, um processo que insere elementos no, conhecido como produtor e outro que retira os elementos do, conhecido como consumidor. A regra principal é que o produtor não pode inserir elementos se o estiver cheio e o consumidor não pode remover elementos se o estiver vazio. A solução parece ser simples se considerarmos algumas regras durante a implementação, enumeradas a seguir. Para o processo produtor: Antes de inserir no o produtor verifica se ainda há espaço para inserção. Se houver, ele insere, se não houver, ele vai dormir e espera o consumidor acordá-lo quando um novo slot estiver livre. Ao inserir o primeiro elemento do, o produtor sabe que o consumidor estava, pois não havia nada para ele consumir, e então envia uma chamada para que ele acorde (wakeup). Sistemas Operacionais CRC Batatais Claretiano 25

12 Para o processo consumidor: Lembre-se de que o escalonador, a qualquer momento, pode selecionar outro processo para ocupar a CPU, ou seja, entrar em estado de execução. Porém, o escalonador não interfere no estado dormir, pois quem pode dar ordens para um processo dormir-acordar são apenas os processos produtor e consumidor. Leia o programa linha a linha fazendo a execução mental e veja se encontra algum problema nesta solução. Antes de consumir um elemento do, o consumidor testa para confirmar que há elementos. Caso não haja, ele vai dormir e espera que o produtor o acorde quando o primeiro elemento for inserido. Ao consumir o último elemento do, o consumidor envia uma chamada, acorda o produtor e avisa que há posições livres para serem preenchidas. Acompanhe a seguir como ficaria a implementação desta solução do problema produtor-consumidor em pascal. PROGRAM ProdutorConsumidor; CONST N = 10; {número de slots no } VAR : ARRAY [1..N] OF INTEGER; elem : INTEGER; count : 0..N; {contador de elementos no } PROCEDURE produtor; REPEAT produz_elem (elem); IF (count = N) THEN sleep(); {repita para sempre} {produz um novo elemento} {enquanto o estiver cheio, produtor vai dormir} {se couber elementos no, insere elemento na posição count} insere_ (elem, count); count := count +1; {incrementa contador} IF (contador == 1) THEN wakeup(consumidor); {se o estava vazio, acorda o consumidor} UNTIL false; END; PROCEDURE consumidor; REPEAT {repita para sempre} IF (count = 0) THEN {se vazio, consumidor vai sleep(); dormir} {se o não estiver vazio, consumidor consome elemento} remove_elem (elem); count := count - 1; {decrementa contador, libera uma posição do } IF (contador == N-1) THEN wakeup(produtor); {se o estava cheio, acorda o produtor} WRITELN(elem); UNTIL false; END; {imprime elemento} count := 0; END. 26 CRC Sistemas Operacionais Claretiano Batatais

13 Se você analisou algumas possibilidades, pode ter encontrado um problema gravíssimo na utilização deste método (Sleep-Wakeup). Pode acontecer dos dois processos, produtor e consumidor, dormirem para sempre sem que o sistema operacional volte a ter controle sobre eles! A Tabela 1 detalha uma seqüência de execução do programa que mostra como isso pode acontecer. Tabela 1 Seqüência de execução do programa ProdutorConsumidor.pas. SITUAÇÃO REAL SITUAÇÃO CONHECIDA PELO PRODUTOR SITUAÇÃO CONHECIDA PELO CONSUMIDOR count 0 O escalonador decide que o processo consumidor entrará em execução. Consumidor testa variável count e obtém o valor 0 (não há o que consumir, deve ir dormir. Antes de o consumidor dormir, seu time slice termina e ele entra em estado de pronto e guarda o count = 0. c c count 0 count 0 O escalonador decide que o processo produtor entrará em execução. Produtor consulta o count e obtém valor 0 (significa que o consumidor está ). Produtor insere um elemento no, incrementa o contador e envia um sinal de acorda para o consumidor, que nunca receberá o sinal, pois estava bloqueado pelo sistema esperando um novo time slice (situação real) e não (situação conhecida pelo Produtor). p c c p a c o r d e X count 1 X count 1 Sistemas Operacionais CRC Batatais Claretiano 27

14 SITUAÇÃO REAL SITUAÇÃO CONHECIDA PELO PRODUTOR SITUAÇÃO CONHECIDA PELO CONSUMIDOR O escalonador decide que o processo consumidor entrará em estado de execução, pois seu tempo de CPU terminou. Enquanto isso, o produtor vai para o estado de pronto aguardar novo time slice. O produtor imagina que o processo consumidor já está acordado, pois havia enviado um sinal de acorda. Consumidor continua sua execução de onde havia parado. Agora sim, ele dormirá achando que o count continua valendo 0 (informação obtida antes de terminar seu time slice mesmo problema do spool de impressão). p p c c X count 1 count 0 Quando o processo produtor for escalonado novamente para entrar em execução preencherá todas as posições do (até count chegar a 10) e dormirá. Só o produtor poderia acordar o consumidor, mas como acredita que já tenha feito isso, não fará novamente. Problema: Ambos irão dormir para sempre! C P C P P C X X X X X X X X X X count 10 X X X X X X X X X X count 10 count 0 Depois de acompanhar a execução do programa, você viu que o método sleepwakeup não é suficiente para resolver o problema do produtor-consumidor. Uma alternativa é utilizar um bit de controle que recebe um valor true quando uma chamada é enviada para um processo que não está. Porém, esta solução possui uma deficiência: o sistema pode sobrecarregar se houver muitos pares de processos, pois necessitariam de muitos bits de controle. Na tentativa de otimizar a solução do problema produtor-consumidor presente no método sleep-wakeup, propôs-se um outro método chamado de semáforos, que trataremos no próximo tópico. Semáforos Um semáforo pode ser manipulado por duas instruções: down e up, que funcionam como protocolos de entrada e saída de um processo em sua região crítica, respectivamente. 28 CRC Sistemas Operacionais Claretiano Batatais

15 O semáforo indica quando um recurso compartilhado está sendo acessado por outro processo concorrente. Se o valor do semáforo for maior que 0, o recurso está livre; se for igual a 0 o recurso está ocupado por outro processo. Um down (sleep) é executado sempre que o processo deseja entrar em uma região crítica. Se o valor do semáforo for maior que 0, será decrementado e o processo executa sua região crítica; se o valor for igual a 0, o processo é posto na fila de espera sem completar a operação de down. Uma instrução up (wakeup) é executada sempre que o processo sai da sua região crítica, neste caso incrementa-se o valor do semáforo liberando o recurso compartilhado. Se houver processos na fila de espera, o sistema escolherá um deles e enviará uma chamada wakeup, este processo vai para o estado de pronto e poderá completar a operação de down assim que a CPU for liberada. Observe a seguir a implementação de semáforo em Pascal.... TYPE Semaforo = RECORD elem : INTEGER; fila_espera : {fila com processos aguardando a CPU} END; PROCEDURE down (VAR s: semaforo); IF (s=0) THEN {processo entra na fila de espera} ELSE s := s 1; END; PROCEDURE up (VAR s: semaforo); s := s + 1; IF (tem_processo_na_fila_de_espera) THEN {um processo sai da fila de espera e vai para pronto} END;... END. Apesar da facilidade do uso de semáforos, eles não excluem totalmente as ocorrências de deadlocks, pois um engano no envio de chamadas do sistema pode gerar uma situação de bloqueio mútuo dos processos. Um outro método, conhecido por Monitores, pode representar uma solução eficiente para este problema. Monitores Os monitores constituem um método de sincronização entre processos concorrentes. Eles são formados por um conjunto de procedimentos, variáveis e estrutura de dados em um único módulo. Sua principal característica é que apenas um processo pode estar ativo dentro do monitor em um instante (exclusão mútua), enquanto outros ficam bloqueados esperando a liberação do monitor. Sistemas Operacionais CRC Batatais Claretiano 29

16 A utilização de monitores consiste em escrever o programa colocando todas as regiões críticas em forma de procedimentos no monitor e o compilador será o responsável por garantir a exclusão mútua destes procedimentos. O exemplo a seguir demonstra a utilização de monitor em Pascal. PROGRAM monitores;... MONITOR regiao_critica; VAR elem : INTEGER; PROCEDURE multiplica; elem := elem * 2; END; PROCEDURE divide; elem := elem DIV 2; END; elem := 0; END; PAR regiao_critica.multiplica; regiao_critica.divide; PAREND; END. A implementação da exclusão mútua nos monitores é realizada pelo compilador e não pelo programador, como acontecia com os semáforos. O compilador é quem reconhece um monitor e quem tratará este mecanismo. Sua utilização pode não ser possível, pois não são todas as linguagens de programação que incorporam este conceito. 8 Trocas de mensagens A troca de mensagens garante, além da sincronização, a comunicação entre os processos. Uma comunicação acontece quando há intercâmbio de informações entre os processos concorrentes e objetiva a cooperação entre eles. A troca de mensagens é implementada pelo sistema operacional por meio de duas chamadas de sistema: send(destino, $mensagem); receive(origem, $mensagem); Send envia mensagem para um processo receptor (destino especificado), e o procedimento receive recebe esta mensagem de um processo transmissor em uma origem especificada. Se não houver mensagens disponíveis, o procedimento receive é bloqueado até que uma nova mensagem seja entregue. 30 CRC Sistemas Operacionais Claretiano Batatais

17 Você pode perceber facilmente a comunicação entre os processos quando ocorre a troca de mensagens. A sincronização acontece quando uma mensagem só pode ser lida após ter sido enviada, isso significa que não há mais o problema de trocar a ordem de execução dos eventos. Resolvido o problema da ordem de execução dos processos, parece que todos os problemas apresentados pelas soluções anteriores foram resolvidos. Mas ainda existem situações que precisam ser consideradas. Situação 1 Lembrando que os recursos compartilhados podem estar em rede e que, portanto, as mensagens send/receive trafegam de uma máquina para outra, maximizando a ocorrência de perda de mensagens no meio do caminho. Alternativa para a situação 1 Para resolver a perda de mensagens utiliza-se uma mensagem de confirmação de recebimento, conhecida por acknowledgement, ou simplesmente ACK. Após enviar uma mensagem send, se o transmissor não receber um ACK em um determinado intervalo de tempo, ele retransmite a mensagem. Situação 2 A alternativa para a situação 1 parece resolver o problema da perda de mensagens, mas há uma 2ª situação. A mensagem é recebida corretamente pelo receptor e envia um ACK, mas quem se perde desta vez é o ACK. Desta forma o send retransmitirá a mensagem e quando esta chegar, o receive executará novamente. Se a mensagem se tratar de uma impressão, por exemplo, o arquivo será colocado na fila duas vezes e será impresso repetidamente. Alternativa para a situação 2 Se o receive soubesse se uma mensagem é uma retransmissão, poderia solucionar o problema. Para isso, basta acrescentar um campo de identificação em cada mensagem. Assim, ao receber uma nova mensagem, o receive compara o campo de identificação com o das outras mensagens e a descarta se concluir que é uma retransmissão. A troca de mensagens é uma solução, mas possui outros problemas presentes em qualquer comunicação distribuída, como, por exemplo, garantir a autenticidade do transmissor e receptor no envio das mensagens, além de se tornar um processo mais lento do que as operações com semáforos e os monitores. APRENDA A APRENDER: Terminado o estudo desta unidade é importante que você reflita sobre os conteúdos estudados, bem como sobre as técnicas e estratégias propostas para sua aprendizagem. Identifique o que foi útil e, portanto, pode ser incorporado e o que pode ser dispensado. Em caso de eventuais dúvidas, retome o estudo do conteúdo, realize pesquisas e interaja na Sala de Aula Virtual com seus colegas de curso e com seu professor. Você é o protagonista de sua aprendizagem. Participe! Sistemas Operacionais CRC Batatais Claretiano 31

Capítulo 4 Gerência do Processador. O que sabemos é uma gota, o que ignoramos é um oceano. Isaac Newton

Capítulo 4 Gerência do Processador. O que sabemos é uma gota, o que ignoramos é um oceano. Isaac Newton Universidade Federal de Itajubá UNIFEI Instituto de Engenharia de Sistemas e Tecnologias da Informação IESTI CCO 004 Sistemas Operacionais Prof. Edmilson Marmo Moreira 4.1 Introdução Capítulo 4 Gerência

Leia mais

Sistemas Operacionais

Sistemas Operacionais Sistemas Operacionais GERÊNCIA DO PROCESSADOR MACHADO/MAIA: CAPÍTULO 08 Prof. Pedro Luís Antonelli Anhanguera Educacional Gerenciamento do Processador A gerência do processador pode ser considerada a atividade

Leia mais

Gerência do Processador

Gerência do Processador Andrique Amorim www.andrix.com.br professor@andrix.com.br Gerência do Processador Gerência do Processador No gerenciamento dos processos serão definidas as propriedades dos processos em execução, e a maneira

Leia mais

Notas da Aula 6 - Fundamentos de Sistemas Operacionais

Notas da Aula 6 - Fundamentos de Sistemas Operacionais 1. Monitores Notas da Aula 6 - Fundamentos de Sistemas Operacionais Embora os semáforos sejam uma boa solução para o problema da exclusão mútua, sua utilização não é trivial. O programador é obrigado a

Leia mais

BACHARELADO EM SISTEMAS DE INFORMAÇÃO EaD UAB/UFSCar Sistemas de Informação - prof. Dr. Hélio Crestana Guardia

BACHARELADO EM SISTEMAS DE INFORMAÇÃO EaD UAB/UFSCar Sistemas de Informação - prof. Dr. Hélio Crestana Guardia O Sistema Operacional que você usa é multitasking? Por multitasking, entende-se a capacidade do SO de ter mais de um processos em execução ao mesmo tempo. É claro que, num dado instante, o número de processos

Leia mais

Revisão Ultima aula [1/2]

Revisão Ultima aula [1/2] SOP - TADS Comunicação Interprocessos - 2 IPC Prof. Ricardo José Pfitscher dcc2rjp@joinville.udesc.br Material cedido por: Prof. Rafael Rodrigues Obelheiro Prof. Maurício Aronne Pillon Revisão Ultima aula

Leia mais

Prof. Antonio Torres antonioctorres@gmail.com @_antonioctorres. Fundamentos de Sistemas Operacionais UNIP/2015

Prof. Antonio Torres antonioctorres@gmail.com @_antonioctorres. Fundamentos de Sistemas Operacionais UNIP/2015 Prof. Antonio Torres antonioctorres@gmail.com @_antonioctorres Fundamentos de Sistemas Operacionais UNIP/2015 Disciplinas FUNDAMENTOS DE SISTEMAS OPERACIONAIS Horários Quarta-feira Fundamentos de Sistemas

Leia mais

Sistemas Operacionais

Sistemas Operacionais Sistemas Operacionais SINCRONIZAÇÃO E COMUNICAÇÃO ENTRE PROCESSOS MACHADO/MAIA: CAPÍTULO 07, PÁGINA 101 Prof. Pedro Luís Antonelli Anhanguera Educacional sistemas multiprogramáveis Os sistemas multiprogramáveis

Leia mais

Capítulo 4 Gerência de Processador

Capítulo 4 Gerência de Processador DCA-108 Sistemas Operacionais Luiz Affonso Guedes www.dca.ufrn.br/~affonso affonso@dca.ufrn.br Capítulo 4 Gerência de Processador Luiz Affonso Guedes 1 Luiz Affonso Guedes 2 Conteúdo Caracterização de

Leia mais

Escalonamento de CPU 2 Quadrimestre

Escalonamento de CPU 2 Quadrimestre BC1518-Sistemas Operacionais Escalonamento de CPU 2 Quadrimestre de 2010 (aula 05) Prof. Marcelo Z. do Nascimento marcelo.nascimento@ufabc.edu.br Roteiro Conceito Despachante Critérios de escalonamento

Leia mais

Sistemas Distribuídos

Sistemas Distribuídos Sistemas Distribuídos Processos e Threads Gustavo Reis gustavo.reis@ifsudestemg.edu.br - O que são Processos? Uma abstração de um programa em execução. Mantêm a capacidade de operações (pseudo)concorrentes,

Leia mais

O mecanismo de alocação da CPU para execução de processos constitui a base dos sistemas operacionais multiprogramados.

O mecanismo de alocação da CPU para execução de processos constitui a base dos sistemas operacionais multiprogramados. O mecanismo de alocação da CPU para execução de processos constitui a base dos sistemas operacionais multiprogramados. A multiprogramação tem como objetivo permitir que, a todo instante, haja algum processo

Leia mais

Sistemas Operacionais Sincronização e Comunicação entre Processos

Sistemas Operacionais Sincronização e Comunicação entre Processos Universidade Estadual de Mato Grosso do Sul UEMS Curso de Licenciatura em Computação Sistemas Operacionais Sincronização e Comunicação entre Processos Prof. José Gonçalves Dias Neto profneto_ti@hotmail.com

Leia mais

SISTEMAS OPERACIONAIS

SISTEMAS OPERACIONAIS SISTEMAS OPERACIONAIS Sincronização entre Processos Andreza Leite andreza.leite@univasf.edu.br Sincronização Freqüentemente, os processos precisam se comunicar com outros processos. Isto ocorre quando

Leia mais

Sincronização de Processos (1) Mecanismos de busy wait

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

Sistemas Operacionais Processos e Threads

Sistemas Operacionais Processos e Threads Sistemas Operacionais Processos e Threads Prof. Marcos Monteiro, MBA http://www.marcosmonteiro.com.br contato@marcosmonteiro.com.br 1 Estrutura de um Sistema Operacional 2 GERÊNCIA DE PROCESSOS Um processo

Leia mais

Sistemas Operacionais. Roteiro. Tipos de Tarefas (temporal) Marcos Laureano

Sistemas Operacionais. Roteiro. Tipos de Tarefas (temporal) Marcos Laureano Sistemas Operacionais Marcos Laureano 1/28 Roteiro Tipos de Tarefas Preempção Escalonamento de processos Tipos de escalonamentos 2/28 Tipos de Tarefas (temporal) Tarefas de tempo real Previsibilidade em

Leia mais

Prof. Marcos Ribeiro Quinet de Andrade Universidade Federal Fluminense - UFF Pólo Universitário de Rio das Ostras - PURO

Prof. Marcos Ribeiro Quinet de Andrade Universidade Federal Fluminense - UFF Pólo Universitário de Rio das Ostras - PURO Gerenciamento de processos Prof. Marcos Ribeiro Quinet de Andrade Universidade Federal Fluminense - UFF Pólo Universitário de Rio das Ostras - PURO 1 Conceitos Básicos Máxima utilização da CPU obtida com

Leia mais

Sistemas Operacionais I

Sistemas Operacionais I Sistemas Operacionais I Material Baseado no Livro Sistemas Operacionais Modernos 2ª. Ed. da Pearson Education 1 Agenda Deadlocks Gerenciamento de Memória 2 1 DEADLOCKS 3 Recursos Exemplos de recursos de

Leia mais

Gerência de Processador

Gerência de Processador Gerência de Processador Prof. Edwar Saliba Júnior Junho de 2009 Unidade 03-003 Gerência de Processador 1 Introdução Com o surgimento dos sistemas multiprogramáveis, onde múltiplos processos poderiam permanecer

Leia mais

Gerência do Processador

Gerência do Processador Andrique Amorim www.andrix.com.br professor@andrix.com.br Gerência do Processador Desenvolvimento web II IMPORTANTE SABER Desenvolvimento web II DEADLOCK (interbloqueio, blocagem, impasse) Situação em

Leia mais

Programação Concorrente Processos e Threads

Programação Concorrente Processos e Threads Programação Concorrente Processos e Threads Prof. Eduardo Alchieri Processos O conceito mais central em qualquer sistema operacional é o processo Uma abstração de um programa em execução Um programa por

Leia mais

Capítulo 4 Gerenciamento de Memória

Capítulo 4 Gerenciamento de Memória Capítulo 4 Gerenciamento de Memória 4.1 Gerenciamento básico de memória 4.2 Troca de processos 4.3 Memória virtual 4.4 Algoritmos de substituição de páginas 4.5 Modelagem de algoritmos de substituição

Leia mais

Gerenciamento de memória

Gerenciamento de memória Na memória principal ficam todos os programas e os dados que serão executados pelo processador. Possui menor capacidade e custo maior. S.O buscam minimizar a ocupação da memória e otimizar sua utilização.

Leia mais

EXEMPLO: Processo para atualização da hora Processo para monitoramento da necessidade de proteção de tela. Figura 4-1 - Exemplo

EXEMPLO: Processo para atualização da hora Processo para monitoramento da necessidade de proteção de tela. Figura 4-1 - Exemplo 4 PROCESSOS Os primeiros sistemas operacionais permitiam que apenas um processo fosse executado por vez. Dessa maneira, este processo tinha todo o sistema computacional a sua disposição. Os atuais sistemas

Leia mais

Processos e Threads (partes I e II)

Processos e Threads (partes I e II) Processos e Threads (partes I e II) 1) O que é um processo? É qualquer aplicação executada no processador. Exe: Bloco de notas, ler um dado de um disco, mostrar um texto na tela. Um processo é um programa

Leia mais

Sistemas Operacionais Aula 08: Sincronização de Processos. Ezequiel R. Zorzal ezorzal@unifesp.br www.ezequielzorzal.com

Sistemas Operacionais Aula 08: Sincronização de Processos. Ezequiel R. Zorzal ezorzal@unifesp.br www.ezequielzorzal.com Sistemas Operacionais Aula 08: Sincronização de Processos Ezequiel R. Zorzal ezorzal@unifesp.br www.ezequielzorzal.com Objetivos Introduzir o problema da seção crítica, cujas soluções podem ser usadas

Leia mais

SISTEMAS OPERACIONAIS

SISTEMAS OPERACIONAIS 1 SISTEMAS OPERACIONAIS Profª Josiane T. Ferri Licenciada em Computação prof.jositf@yahoo.com.br facebook.com/josiferri ESTRUTURA DO SISTEMA OPERACIONAL Embora a definição de níveis de privilégio imponha

Leia mais

Disciplina: Sistemas Operacionais - CAFW-UFSM Professor: Roberto Franciscatto

Disciplina: Sistemas Operacionais - CAFW-UFSM Professor: Roberto Franciscatto Disciplina: Sistemas Operacionais - CAFW-UFSM Professor: Roberto Franciscatto Introdução Processo cooperativo é aquele que pode afetar outros processos em execução no sistema Ou ser por eles afetado Processos

Leia mais

Arquitetura dos Sistemas Operacionais

Arquitetura dos Sistemas Operacionais Arquitetura dos Sistemas Operacionais Arquitetura de um Sistema Operacional Basicamente dividido em shell é a interface entre o usuário e o sistema operacional é um interpretador de comandos possui embutido

Leia mais

Sistemas Operacionais

Sistemas Operacionais AULA 09 Sincronização de Processos - II Monitores Conforme comentamos, o uso equivocado dos semáforos pode levar a uma situação de deadlock, por isso devemos tomar cuidado ao programar utilizando este

Leia mais

Capítulo 4 Gerenciamento de Memória

Capítulo 4 Gerenciamento de Memória Capítulo 4 Gerenciamento de Memória 4.1 Gerenciamento básico de memória 4.2 Troca de processos 4.3 Memória virtual 4.4 Algoritmos de substituição de páginas 4.5 Modelagem de algoritmos de substituição

Leia mais

Gerenciamento Básico B de Memória Aula 07

Gerenciamento Básico B de Memória Aula 07 BC1518-Sistemas Operacionais Gerenciamento Básico B de Memória Aula 07 Prof. Marcelo Z. do Nascimento marcelo.nascimento@ufabc.edu.br Roteiro Introdução Espaço de Endereçamento Lógico vs. Físico Estratégias

Leia mais

2 Modelos de Implementação

2 Modelos de Implementação 2 Modelos de Implementação Os modelos de concorrência definem como uma aplicação atende às requisições concorrentes. Os modelos de sandboxes definem como o ambiente das aplicações são criados. Os modelos

Leia mais

Métodos de Sincronização do Kernel

Métodos de Sincronização do Kernel Métodos de Sincronização do Kernel Linux Kernel Development Second Edition By Robert Love Tiago Souza Azevedo Operações Atômicas Operações atômicas são instruções que executam atomicamente sem interrupção.

Leia mais

PROCESSOS. Prof. Maicon A. Sartin mapsartin@gmail.com

PROCESSOS. Prof. Maicon A. Sartin mapsartin@gmail.com PROCESSOS Prof. Maicon A. Sartin mapsartin@gmail.com Cenários em Sistemas Multitarefas Um usuário pode executar diversas atividades simultâneas Música Editoração de texto Navegar na Internet Servidor pode

Leia mais

Comunicação de Dados

Comunicação de Dados UNISUL 2013 / 1 Universidade do Sul de Santa Catarina Engenharia Elétrica - Telemática 1 Comunicação de Dados Aula 6 Agenda Projeto da camada de enlace de dados Detecção e correção de erros Protocolos

Leia mais

Memória - Gerenciamento. Sistemas Operacionais - Professor Machado

Memória - Gerenciamento. Sistemas Operacionais - Professor Machado Memória - Gerenciamento Sistemas Operacionais - Professor Machado 1 Partes físicas associadas à memória Memória RAM Memória ROM Cache MMU (Memory Management Unit) Processador Tabela de Páginas TLB 2 Conceitos

Leia mais

9 - Sincronização e Comunicação entre Processos

9 - Sincronização e Comunicação entre Processos 1 9 - Sincronização e Comunicação entre Processos 91 Introdução Em um sistema multitarefa, seja com um único processador ou com mais de um processador ou ainda com vários núcleos por processador, os processos

Leia mais

Sistemas Operacionais. Prof. André Y. Kusumoto andrekusumoto.unip@gmail.com

Sistemas Operacionais. Prof. André Y. Kusumoto andrekusumoto.unip@gmail.com Sistemas Operacionais Prof. André Y. Kusumoto andrekusumoto.unip@gmail.com Estruturas de Sistemas Operacionais Um sistema operacional fornece o ambiente no qual os programas são executados. Internamente,

Leia mais

Notas da Aula 4 - Fundamentos de Sistemas Operacionais

Notas da Aula 4 - Fundamentos de Sistemas Operacionais Notas da Aula 4 - Fundamentos de Sistemas Operacionais 1. Threads Threads são linhas de execução dentro de um processo. Quando um processo é criado, ele tem uma única linha de execução, ou thread. Esta

Leia mais

SISTEMAS OPERACIONAIS

SISTEMAS OPERACIONAIS SISTEMAS OPERACIONAIS Processos e Threads Andreza Leite andreza.leite@univasf.edu.br Plano de Aula 2 Gerenciamento de Processos Threads Aplicações com múltiplas Threads Concorrência e Compartilhamento

Leia mais

Sistemas Operacionais. Técnicas de Implementação de Exclusão Mútua. Aula VI Prof. Rosemary Silveira

Sistemas Operacionais. Técnicas de Implementação de Exclusão Mútua. Aula VI Prof. Rosemary Silveira Sistemas Operacionais Técnicas de Implementação de Exclusão Mútua Aula VI Prof. Rosemary Silveira Tópicos de Apresentação Condições de Corrida Técnicas de Implementação de Exclusão Mútua Condições de Corrida

Leia mais

Sistema Operacional. Processo e Threads. Prof. Dr. Márcio Andrey Teixeira Sistemas Operacionais

Sistema Operacional. Processo e Threads. Prof. Dr. Márcio Andrey Teixeira Sistemas Operacionais Sistema Operacional Processo e Threads Introdução a Processos Todos os computadores modernos são capazes de fazer várias coisas ao mesmo tempo. Enquanto executa um programa do usuário, um computador pode

Leia mais

PROGRAMAÇÃO II 3. FILA DINÂMICA

PROGRAMAÇÃO II 3. FILA DINÂMICA 3. FILA DINÂMICA PROGRAMAÇÃO II Prof. Jean Eduardo Glazar Uma fila é um tipo especial de lista na qual todas as inserções são feitas sempre depois do fim e as deleções no início. Por isso também recebe

Leia mais

Sistemas Operacionais Arquivos. Carlos Ferraz (cagf@cin.ufpe.br) Jorge Cavalcanti Fonsêca (jcbf@cin.ufpe.br)

Sistemas Operacionais Arquivos. Carlos Ferraz (cagf@cin.ufpe.br) Jorge Cavalcanti Fonsêca (jcbf@cin.ufpe.br) Sistemas Operacionais Arquivos Carlos Ferraz (cagf@cin.ufpe.br) Jorge Cavalcanti Fonsêca (jcbf@cin.ufpe.br) Copyright Carlos Ferraz Cin/UFPE Implementação do Sistema de Arquivos Sistemas de arquivos são

Leia mais

2. NÍVEL DE SISTEMA OPERACIONAL

2. NÍVEL DE SISTEMA OPERACIONAL 2. NÍVEL DE SISTEMA OPERACIONAL Nos períodos anteriores foram mostrados os níveis iniciais da organização de um computador, quando vimos em Circuitos Digitais os detalhes do Nível 0 (zero) de Lógica Digital.

Leia mais

- UNIVERSIDADE DO VALE DO RIO DOS SINOS CIÊNCIAS EXATAS E TECNOLÓGICAS Curso: Informática / Ciência da Computação

- UNIVERSIDADE DO VALE DO RIO DOS SINOS CIÊNCIAS EXATAS E TECNOLÓGICAS Curso: Informática / Ciência da Computação Programação 1I Prof. Osório Fila / Alocação Estática Pag.: 1 - UNIVERSIAE O VALE O RIO OS SINOS IÊNIAS EXATAS E TENOLÓGIAS urso: Informática / iência da omputação Programação II isciplina: Linguagem de

Leia mais

Prof. Marcos Ribeiro Quinet de Andrade Universidade Federal Fluminense - UFF Pólo Universitário de Rio das Ostras - PURO

Prof. Marcos Ribeiro Quinet de Andrade Universidade Federal Fluminense - UFF Pólo Universitário de Rio das Ostras - PURO Comunicação e Sincronismo entre processos Prof. Marcos Ribeiro Quinet de Andrade Universidade Federal Fluminense - UFF Pólo Universitário de Rio das Ostras - PURO 1 Comunicação entre Processos Processos

Leia mais

Arquitetura e Organização de Computadores

Arquitetura e Organização de Computadores Arquitetura e Organização de Computadores Suporte do Sistema Operacional Material adaptado, atualizado e traduzido de: STALLINGS, William. Arquitetura e Organização de Computadores. 5ª edição Objetivos

Leia mais

Trabalho 7 Fila de prioridade usando heap para simulação de atendimento

Trabalho 7 Fila de prioridade usando heap para simulação de atendimento Trabalho 7 Fila de prioridade usando heap para simulação de atendimento Data: 21/10/2013 até meia-noite Dúvidas até: 09/10/2013 Faq disponível em: http://www2.icmc.usp.br/~mello/trabalho07.html A estrutura

Leia mais

Prof.: Roberto Franciscatto. Capítulo 1.2 Aspectos Gerais

Prof.: Roberto Franciscatto. Capítulo 1.2 Aspectos Gerais Sistemas Operacionais Prof.: Roberto Franciscatto Capítulo 1.2 Aspectos Gerais Estrutura do Sistema Operacional Principais Funções do Sistema Operacional Tratamento de interrupções e exceções Criação e

Leia mais

Filas. A ordem de saída corresponde diretamente à ordem de entrada dos elementos. Fila de caixa bancário

Filas. A ordem de saída corresponde diretamente à ordem de entrada dos elementos. Fila de caixa bancário Filas Fila é um tipo de lista linear onde as inserções são realizadas num extremo (final da Fila) e as remoções restritas ao outro (começo da Fila). O primeiro a entrar é o primeiro a sair e último a entrar

Leia mais

void echo(); { chin = getchar(); chout = chin; putchar(chout); }

void echo(); { chin = getchar(); chout = chin; putchar(chout); } Sincronização Processos (Aula de 10) Concorrência Dificuldades: Profa. Patrícia Ação Compartilhamento Gerência Localização D. Proteger Promover de alocação de recursos. globais. CostaLPRM/DI/UFES programas).

Leia mais

Conceitos Básicos sobre Sistemas Operacionais

Conceitos Básicos sobre Sistemas Operacionais Conceitos Básicos sobre Sistemas Operacionais Ivanovitch Medeiros Dantas da Silva Universidade Federal do Rio Grande do Norte Departamento de Engenharia de Computação e Automação DCA0800 - Algoritmos e

Leia mais

MODELAGEM E SIMULAÇÃO

MODELAGEM E SIMULAÇÃO MODELAGEM E SIMULAÇÃO Professor: Dr. Edwin B. Mitacc Meza edwin@engenharia-puro.com.br www.engenharia-puro.com.br/edwin Terminologia Básica Utilizada em de Sistemas Terminologia Básica Uma série de termos

Leia mais

Capítulo 4 Gerenciamento de Memória

Capítulo 4 Gerenciamento de Memória Capítulo 4 Gerenciamento de Memória 4.1 Gerenciamento básico de memória 4.2 Troca de processos 4.3 Memória virtual 4.4 Algoritmos de substituição de páginas 4.5 Modelagem de algoritmos de substituição

Leia mais

AULA 13 - Gerência de Memória

AULA 13 - Gerência de Memória AULA 13 - Gerência de Memória omo sabemos, os computadores utilizam uma hierarquia de memória em sua organização, combinando memórias voláteis e não-voláteis, tais como: memória cache, memória principal

Leia mais

ARQUITETURA DE COMPUTADORES E SISTEMAS OPERACIONAIS P/ CONCURSOS PÚBLICOS FOCO: ESAF/CESGRANRIO/FCC. Prof. Almeida Jr

ARQUITETURA DE COMPUTADORES E SISTEMAS OPERACIONAIS P/ CONCURSOS PÚBLICOS FOCO: ESAF/CESGRANRIO/FCC. Prof. Almeida Jr ARQUITETURA DE COMPUTADORES E SISTEMAS OPERACIONAIS P/ CONCURSOS PÚBLICOS FOCO: ESAF/CESGRANRIO/FCC Prof. Almeida Jr Processos Conceitos Básicos Nomes Tipos Batch: jobs CPU-bound T.Sharing: Tarefas/Processos

Leia mais

Sistemas Operacionais Prof. Esp. André Luís Belini Bacharel em Sistemas de Informações MBA em Gestão Estratégica de Negócios Gerência do Processador

Sistemas Operacionais Prof. Esp. André Luís Belini Bacharel em Sistemas de Informações MBA em Gestão Estratégica de Negócios Gerência do Processador Sistemas Operacionais Prof. Esp. André Luís Belini Bacharel em Sistemas de Informações MBA em Gestão Estratégica de Negócios Gerência do Processador A partir do momento em que diversos processos podem

Leia mais

Gerência de Processador

Gerência de Processador Gerência de Processador mbientes Operacionais Prof. Simão Sirineo Toscani stoscani@inf.pucrs.br www.inf.pucrs.br/~stoscani Multiprogramação Torna mais eficiente o aproveitamento dos recursos computacionais

Leia mais

Figura 1: tela inicial do BlueControl COMO COLOCAR A SALA DE INFORMÁTICA EM FUNCIONAMENTO?

Figura 1: tela inicial do BlueControl COMO COLOCAR A SALA DE INFORMÁTICA EM FUNCIONAMENTO? Índice BlueControl... 3 1 - Efetuando o logon no Windows... 4 2 - Efetuando o login no BlueControl... 5 3 - A grade de horários... 9 3.1 - Trabalhando com o calendário... 9 3.2 - Cancelando uma atividade

Leia mais

Processos. Adão de Melo Neto

Processos. Adão de Melo Neto Processos Adão de Melo Neto 1 EXECUTE O SEGUINTE Baixa a aula dos dias 20 MAR 15 e 08 MAI 15 e salve no computador. Feche o browser Inicialize o vmware player e inicialize a máquina virtual ubuntu Inicialize

Leia mais

7. ESTRUTURAS DE DADOS ESTÁTICAS E DINÂMICAS

7. ESTRUTURAS DE DADOS ESTÁTICAS E DINÂMICAS 7. ESTRUTURAS DE DADOS ESTÁTICAS E DINÂMICAS Até... 7.1 Alocação Estática Alocação de Espaço em Memória Como já foi visto anteriormente, a memória de um computador compõe-se de uma sequência de palavras,

Leia mais

Unidade: Unidade Lógica e Aritmética e Registradores. Unidade I:

Unidade: Unidade Lógica e Aritmética e Registradores. Unidade I: Unidade: Unidade Lógica e Aritmética e Registradores Unidade I: 0 Unidade: Unidade Lógica e Aritmética e Registradores UNIDADE LÓGICA E ARITMÉTICA E REGISTRADORES O Processador é um chip com milhares de

Leia mais

Introdução à Computação: Sistemas de Computação

Introdução à Computação: Sistemas de Computação Introdução à Computação: Sistemas de Computação Beatriz F. M. Souza (bfmartins@inf.ufes.br) http://inf.ufes.br/~bfmartins/ Computer Science Department Federal University of Espírito Santo (Ufes), Vitória,

Leia mais

Sistemas Operacionais

Sistemas Operacionais Sistemas Operacionais Sistemas de Entrada/Saída Princípios de Software Sistema de Entrada/Saída Princípios de Software Tratadores (Manipuladores) de Interrupções Acionadores de Dispositivos (Device Drivers)

Leia mais

Gerência de processos Requisitos fundamentais

Gerência de processos Requisitos fundamentais Requisitos fundamentais Implementar um modelo de processo. Implementar facilidades para criação e destruição de processos por usuários Alocar recursos a processos Intercalar a execução de um número de

Leia mais

Até o final de década de 70, os sistemas operacionais suportavam apenas processos com um único thread;

Até o final de década de 70, os sistemas operacionais suportavam apenas processos com um único thread; CAPÍTULO VI THREADS 6.1 INTRODUÇÃO Até o final de década de 70, os sistemas operacionais suportavam apenas processos com um único thread; O sistema operacional Toth, em 1979, foi o primeiro a implementar

Leia mais

Sistemas Distribuídos. Professora: Ana Paula Couto DCC 064

Sistemas Distribuídos. Professora: Ana Paula Couto DCC 064 Sistemas Distribuídos Professora: Ana Paula Couto DCC 064 Questões Em uma rede de sobreposição (overlay), mensagens são roteadas de acordo com a topologia da sobreposição. Qual uma importante desvantagem

Leia mais

MAIS CONTROLE SOFTWARE Controle Financeiro / Fluxo de Caixa (MCS Versão 2.01.99) Índice

MAIS CONTROLE SOFTWARE Controle Financeiro / Fluxo de Caixa (MCS Versão 2.01.99) Índice Item MAIS CONTROLE SOFTWARE Controle Financeiro / Fluxo de Caixa (MCS Versão 2.01.99) Índice Página 1.Apresentação... 4 2.Funcionamento Básico... 4 3.Instalando o MCS... 4, 5, 6 4.Utilizando o MCS Identificando

Leia mais

Algoritmos de Escalonamento

Algoritmos de Escalonamento Na aula anterior lgoritmos de Escalonamento Marcelo Johann Threads Sincronização Semáforos ula : Slide ula : Slide Plano da aula de Hoje. FIFO. SJF. Prioridade. Round-Robin 5. Múltiplas Filas 6. Garantido

Leia mais

Organização de Computadores 1

Organização de Computadores 1 Organização de Computadores 1 4 SUPORTE AO SISTEMA OPERACIONAL Prof. Luiz Gustavo A. Martins Sistema Operacional (S.O.) Programa responsável por: Gerenciar os recursos do computador. Controlar a execução

Leia mais

4. GERÊNCIA DE PROCESSADOR (Escalonamento de processos)

4. GERÊNCIA DE PROCESSADOR (Escalonamento de processos) 4. GERÊNCIA DE PROCESSADOR (Escalonamento de processos) Para implementar o compartilhamento da CPU entre diversos processos, um sistema operacional multiprogramável deve possuir um critério para determinar,

Leia mais

Nível da Arquitetura do Conjunto das Instruções

Nível da Arquitetura do Conjunto das Instruções Nível da Arquitetura do Conjunto das Instruções (Aula 13) Fluxo de Controle Fluxo Seqüencial de Controle e Desvios (1) Fluxo de Controle: É a seqüência na qual instruções são dinamicamente executadas Isto

Leia mais

Gerenciamento de memória

Gerenciamento de memória Sistemas Operacionais Gerenciamento de memória Capítulos 7 Operating Systems: Internals and Design Principles W. Stallings O problema Em um ambiente multiprogramado, é necessário: subdividir a memória

Leia mais

LGTi Tecnologia. Manual - Outlook Web App. Soluções Inteligentes. Siner Engenharia

LGTi Tecnologia. Manual - Outlook Web App. Soluções Inteligentes. Siner Engenharia LGTi Tecnologia Soluções Inteligentes Manual - Outlook Web App Siner Engenharia Sumário Acessando o Outlook Web App (Webmail)... 3 Email no Outlook Web App... 5 Criar uma nova mensagem... 6 Trabalhando

Leia mais

Manual do Painel Aceno Digital A3000/A6000. www.acenodigital.com.br. Rua Porto Alegre, 212 Jd. Agari 43 3027-2255 Cep: 86.

Manual do Painel Aceno Digital A3000/A6000. www.acenodigital.com.br. Rua Porto Alegre, 212 Jd. Agari 43 3027-2255 Cep: 86. Manual do Painel Aceno Digital A3000/A6000 Manual do Painel Aceno Digital A3000/A6000 Este manual apresenta o funcionamento e os procedimentos de configuração e instalação dos painéis Aceno Digital, modelos

Leia mais

Unidade 11: A Unidade de Controle Prof. Daniel Caetano

Unidade 11: A Unidade de Controle Prof. Daniel Caetano Arquitetura e Organização de Computadores 1 Unidade 11: A Unidade de Controle Prof. Daniel Caetano Objetivo: Apresentar as funções o mecanismo de atuação da Unidade de Controle. Bibliografia: - STALLINGS,

Leia mais

Capítulo 2 Processos e Threads Prof. Fernando Freitas

Capítulo 2 Processos e Threads Prof. Fernando Freitas slide 1 Capítulo 2 Processos e Threads Prof. Fernando Freitas Material adaptado de: TANENBAUM, Andrew S. Sistemas Operacionais Modernos. 3ª edição. Disponível em: http://www.prenhall.com/tanenbaum_br slide

Leia mais

1.2 Tipos de Sistemas Operacionais

1.2 Tipos de Sistemas Operacionais 1.2 Tipos de Operacionais Tipos de Operacionais Monoprogramáveis/ Monotarefa Multiprogramáveis/ Multitarefa Com Múltiplos Processadores 1.2.1 Monoprogramáveis/Monotarefa Os primeiros sistemas operacionais

Leia mais

IFPE. Disciplina: Sistemas Operacionais. Prof. Anderson Luiz Moreira

IFPE. Disciplina: Sistemas Operacionais. Prof. Anderson Luiz Moreira IFPE Disciplina: Sistemas Operacionais Prof. Anderson Luiz Moreira SERVIÇOS OFERECIDOS PELOS SOS 1 Introdução O SO é formado por um conjunto de rotinas (procedimentos) que oferecem serviços aos usuários

Leia mais

Permitir a troca de mensagens de texto entre os dois alunos; Permitir que um aluno enviasse para o outro uma cópia de prova;

Permitir a troca de mensagens de texto entre os dois alunos; Permitir que um aluno enviasse para o outro uma cópia de prova; Software Básico 2008.2 Trabalho Prático 1: programação de E/S, uso de sinais Prática de programação voltada a eventos Trabalho individual ou em dupla Data de entrega: 01/10/2008 1 O Objetivo Utilizando

Leia mais

Sistemas Operacionais

Sistemas Operacionais Sistemas Operacionais Aula 11 Sincronização de Processos Prof.: Edilberto M. Silva http://www.edilms.eti.br Baseado no material disponibilizado por: SO - Prof. Edilberto Silva Prof. José Juan Espantoso

Leia mais

Mais configuração OptraImage

Mais configuração OptraImage 1 fax Personalizarconfiguraçõesdecópia...2 Definirmanualmenteasinformaçõesbásicasdofax...3 Criardestinospermanentesdefax...5 Alterarasconfiguraçõesderecebereenviarfax...7 Ajustarasopçõesdeenviodefax...8

Leia mais

SISTEMAS OPERACIONAIS CAPÍTULO 3 CONCORRÊNCIA

SISTEMAS OPERACIONAIS CAPÍTULO 3 CONCORRÊNCIA SISTEMAS OPERACIONAIS CAPÍTULO 3 CONCORRÊNCIA 1. INTRODUÇÃO O conceito de concorrência é o princípio básico para o projeto e a implementação dos sistemas operacionais multiprogramáveis. O sistemas multiprogramáveis

Leia mais

Sistemas Distribuídos

Sistemas Distribuídos Sistemas Distribuídos Aula 3 Msc. Daniele Carvalho Oliveira Doutoranda em Ciência da Computação - UFU Mestre em Ciência da Computação UFU Bacharel em Ciência da Computação - UFJF Processos Um processo

Leia mais

Nível do Sistema Operacional

Nível do Sistema Operacional Nível do Sistema Operacional (Aula 14) Introdução a Sistemas Operacionais Roberta Lima Gomes - LPRM/DI/UFES Sistemas de Programação I Eng. Elétrica 2007/1 Introdução Hardware Provê os recursos básicos

Leia mais

Prof. Marcos Ribeiro Quinet de Andrade Universidade Federal Fluminense - UFF Pólo Universitário de Rio das Ostras - PURO

Prof. Marcos Ribeiro Quinet de Andrade Universidade Federal Fluminense - UFF Pólo Universitário de Rio das Ostras - PURO Conceitos básicos e serviços do Sistema Operacional Prof. Marcos Ribeiro Quinet de Andrade Universidade Federal Fluminense - UFF Pólo Universitário de Rio das Ostras - PURO Tipos de serviço do S.O. O S.O.

Leia mais

Capítulo 2 Processos e Threads. 2.1 Processos 2.2 Threads 2.3 Comunicação interprocesso 2.4 Problemas clássicos de IPC 2.

Capítulo 2 Processos e Threads. 2.1 Processos 2.2 Threads 2.3 Comunicação interprocesso 2.4 Problemas clássicos de IPC 2. Capítulo 2 Processos e Threads 2.1 Processos 2.2 Threads 2.3 Comunicação interprocesso 2.4 Problemas clássicos de IPC 2.5 Escalonamento 1 Processos O Modelo de Processo Multiprogramação de quatro programas

Leia mais