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 computador impressoras unidades de fita tabelas Processos precisam de acesso aos recursos numa ordem racional Suponha que um processo detenha o recurso A e solicite o recurso B ao mesmo tempo um outro processo detém B e solicita A ambos são bloqueados e assim permanecem 4 2
Recursos Deadlocks ocorrem quando garante-se aos processos acesso exclusivo aos dispositivos esses dispositivos são normalmente chamados de recursos Recursos preemptíveis podem ser retirados de um processo sem quaisquer efeitos prejudiciais (memória: RAM x Disco) Recursos não preemptíveis vão induzir o processo a falhar se forem retirados (gravadores de CD/DVD) propicio à ocorrência de deadlocks 5 Recursos Seqüência de eventos necessários ao uso de um recurso 1. solicitar o recurso 2. usar o recurso 3. liberar o recurso Deve esperar se solicitação é negada processo solicitante pode ser bloqueado pode falhar resultando em um código de erro (deverá aguardar e solicitar novamente) 6 3
Recursos Aquisição de Recursos Para alguns tipos de recursos, os processos de usuários precisam gerenciar Exemplo: registros em um Banco de Dados Associação de semáforos aos recursos Caso um processo precise de mais de um recurso, eles são adquiridos sequencialmente 7 Exemplo: 2 Processos typedef int semaphore; semaphore resource1; semaphore resource2; void processa(void) { down(&resource1); down(&resource2); useresources(void); up(&resource2); up(&resource1); } void processb(void) { down(&resource1); down(&resource2); useresources(void); up(&resource2); up(&resource1); } typedef int semaphore; semaphore resource1; semaphore resource2; void processa(void) { down(&resource1); down(&resource2); useresources(void); up(&resource2); up(&resource1); } void processb( void) { down(&resource2); down(&resource1); useresources(void); up(&resource1); up(&resource2); } 8 4
Introdução aos Deadlocks Definição formal: Um conjunto de processos está em situação de deadlock se todo processo pertencente ao conjunto estiver esperando por um evento que somente um outro processo desse mesmo conjunto poderá fazer acontecer Normalmente o evento é a liberação de um recurso atualmente retido Nenhum dos processos pode... executar liberar recursos ser acordado 9 Quatro Condições para Deadlock 1. Condição de exclusão mútua todo recurso está ou associado a um processo ou disponível 2. Condição de posse e espera processos que retêm recursos podem solicitar novos recursos 3. Condição de não preempção recursos concedidos previamente não podem ser forçosamente tomados 4. Condição de espera circular deve ser uma cadeia circular de 2 ou mais processos cada um está à espera de recurso retido pelo 10 membro seguinte dessa cadeia 5
Estratégias para Tratar Deadlocks 1. Ignorar por completo o problema 2. Detecção e Recuperação 3. Anulação dinâmica por meio de uma alocação cuidadosa de recursos 4. Prevenção, negando estruturalmente uma das quatro condições necessárias para gerar um deadlock 11 Recuperação de Situações de Deadlock Recuperação por meio de preempção Recuperação por meio de reversão de estado Recuperação por meio da eliminação de processos 12 6
GERENCIAMENTO DE MEMÓRIA 13 14 Gerenciamento de Memória Idealmente, o que todo programador deseja é dispor de uma memória que seja: grande rápida não volátil Hierarquia de memórias pequena quantidade de memória rápida, de alto custo - cache quantidade considerável de memória principal de velocidade média, custo médio gigabytes de armazenamento em disco de velocidade e custo baixos O gerenciador de memória trata a hierarquia de memórias 7
Classes de Sistemas de Gerenciamento Levam e trazem processos entre memória principal e disco Sistemas simplificados 15 Sistema Simplificado Monoprogramação sem troca de processo ou paginação Memória compartilhada entre programa e SO Somente um programa é executado por vez 16 8
Monoprogramação sem Troca de Processos ou Paginação Três maneiras simples de organizar a memória - um sistema operacional e um processo de usuário 17 Monoprogramação sem Troca de Processo ou Paginação Primeiro modelo: computadores de grande porte e minicomputadores (não é mais usado) Segundo modelo: alguns computadores de mão e sistemas embarcados Terceiro modelo: primeiros computadores pessoais (SO: MS-DOS, ROM: BIOS) 18 9
Multiprogramação com Partições Fixas Múltiplos processos em execução simultaneamente Dividir a memória em n partições (tamanhos diferentes) Um job é alocado em uma fila associada a uma partição grande o suficiente para abrigálo Todo espaço não utilizado pelo job é perdido 19 Multiprogramação com Partições Fixas Partições fixas de memória a) filas de entrada separadas para cada partição 20 b) fila única de entrada 10
Filas Separadas x Fila Única Filas Separadas Fila para pequena partição cheia Fila para grande partição vazia Fila Única Job no início da fila é alocado em partição vazia suficiente (poderia desperdiçar memória) Pesquisar a fila para melhor alocação (discrimina os jobs pequenos, solução?) 21 Modelagem de Multiprogramação Melhorar o uso da CPU Utilização da CPU = 1 p n Onde: p: fração do tempo a espera por E/S n: quantidade de processos na memória Grau da multiprogramação 22 11
Modelagem de Multiprogramação 23 Utilização da CPU como uma função do número de processos na memória Análise de Desempenho de Sistemas de Multiprogramação 10% de perda Chegada de 4 jobs e suas necessidades de trabalho Utilização da CPU por até 4 jobs com 80% de espera por E/S Sequência de eventos entre chegada e término dos jobs Note que os números mostram quanto tempo da CPU cada job obtém em cada intervalo 24 12
Relocação e Proteção Não se sabe com certeza onde o programa será carregado na memória Localizações de endereços de variáveis e de código de rotinas não podem ser absolutos Uma possível solução: instruções do programa são modificadas segundo a partição de memória em que ele será carregado Uma solução para relocação e proteção: uso de valores base e limite localizações de endereços são somadas ao valor base antes de serem mapeadas na memória física localizações de endereços maior que o valor limite indicam erro 25 Troca de Processos (swapping) Alterações na alocação de memória à medida que processos entram e saem da memória Regiões sombreadas correspondem a regiões de memória não utilizadas naquele instante 26 13
Troca de Processos a) Alocação de espaço para uma área de dados em expansão b) Alocação de espaço para uma pilha e uma área de dados, ambos em expansão 27 Gerenciamento de Memória Mapa de Bits Lista de Disponíveis 28 14
Mapa de Bits Memória divida em unidades de alocação Um bit no mapa de bits associado a cada unidade de alocação Bit 0: unidade de alocação disponível Bit 1: unidade de alocação ocupada Quanto menor a unidade de alocação, maior o mapa de bits Quanto maior a unidade de alocação, maior a possibilidade de desperdício 29 Gerenciamento de Memória com Mapas de Bits a) Parte da memória com 5 segmentos de processos e 3 segmentos de memória livre pequenos riscos simétricos denotam as unidades de alocação regiões sombreadas denotam segmentos livres b) Mapa de bits correspondente c) Mesmas informações em uma lista encadeada 30 15
Gerenciamento de Memória com Listas Encadeadas Ordenação por endereço Quatro combinações de vizinhança para o processo X em término de execução 31 Algoritmos para Alocar Memória First Fit Next Fit Best Fit Quick Fit 32 16
Memória Virtual O tamanho total do programa pode exceder a quantidade de memória física disponível O SO mantém as partes ativas do programa na memória e o restante no disco Em multiprogramação, pedaços e partes de diferentes programas estão simultaneamente na memória 33 Paginação Endereços podem ser gerados com o uso de indexação, de registradores base, registradores de segmentos ou outras técnicas Esses endereços gerados pelos programas são denominados endereços virtuais e constituem o espaço de endereçamento virutal 34 17
Paginação Endereço virtual não é idêntico ao endereço físico Não pode ser colocado diretamente no barramento de memória O endereço vai para a MMU (Unidade de Gerenciamento de Memória) A MMU mapeia endereços virtuais para endereços físicos 35 Memória Virtual Paginação 36 Localização e função da MMU 18
Paginação O espaço de endereçamento virtual é divido em unidade denominadas páginas As unidades correspondentes em memória física são denominadas molduras Páginas e Molduras têm sempre o mesmo tamanho 37 Memória Virtual Paginação A relação entre endereços virtuais e endereços físicos de memória dada pela tabela de páginas 38 19
Paginação Operação interna de uma MMU com 16 páginas de 4KB26 39 Paginação Tentativa de utilização de página virtual não mapeada: MMU constata o problema de mapeamento Força o desvio da CPU para o SO (interrupção: falta de página) O SO escolhe uma moldura de página pouco usada e a salva em disco Carrega nova página na moldura, atualiza mapeamento e reinicia a instrução que causou a interrupção 40 20