Baixe o app para aproveitar ainda mais
Prévia do material em texto
UNIVERSIDADE ESTADUAL DE MATO GROSSO DO SUL Fábio Goulart de Matos Sistemas de Informação - UEMS SI/UEMS Acadêmico: Fábio Goulart de Matos RGM: 017707 Sistemas Operacionais e Aplicações – Silberschatz Capítulo 9 – Gerência de Memória 9.1 – Fundamentos: memória é fundamental para sistemas modernos. Consiste em um grande vetor de palavras ou bytes, cada qual com seu próprio endereço. CPU busca instruções da memória de acordo com o valor do contador de programas. Essas instruções podem causar carga e armazenamento em endereços específicos de memória. Para executar uma instrução, deve-se buscar a instrução na memória, decodifica-la e após isso os operandos são buscados na memória, depois os resultados podem ser armazenados na memória. A coleção de processos no disco que esta esperando para ser levada para a memória para a execução forma a fila de entrada. Assim os processos carregados na memória são executados e seu espaço na memória podem ser liberados. Carga dinâmica: uma rotina só é carregada quando é chamada. Ligação Dinâmica: semelhante a carga dinâmica, em vez de a carga ser adiada até o tempo de execução, a ligação é adiada. Overley: A ideia do overlay é manter na memória apenas as instruções e dados que são necessários em determinado momento. 9.2 – Swapping: O sistema mantém uma fila de processos prontos consistindo em todos os processos cujas imagens de memória estejam no armazenamento auxiliar ou na memória principal e prontas para executar. Sempre que o escalonador de CPU executar um processo, ele chama o dispatcher. Esse verifica se o próximo processo na fila está na memória. Se o processo não estiver, e não houver região de memória livre, o dispatcher descarrega um processo que está na memória (stwap out) e carrega o processo desejado em seu lugar (swap in). Em seguida, ele recarrega os registradores da forma usual e transfere o controle para o processo selecionado. 9.3 – Alocação contígua de Memória: Uma solução para o problema da fragmentação externa é a compactação. A meta é trocar de posição o conteúdo da memória para reunir toda memória livre em um grande bloco. Outra solução possível para o problema de fragmentação externa é permitir que o espaço de endereçamento lógico de um processo seja não-contíguo, possibilitando que um processo receba memória física onde ela estiver disponível. 9.4 – Paginação 9.5 – Segmentação 9.6 – Segmentação com Paginação 9.7 • Resumo UNIVERSIDADE ESTADUAL DE MATO GROSSO DO SUL Fábio Goulart de Matos Sistemas de Informação - UEMS SI/UEMS Os algoritmos de gerência de memória para sistemas operacionais multiprogramados variam da abordagem de sistema monousuário simples a segmentação paginada. O maior fator determinante do método usado em um determinado sistema é o hardware existente. 'Iodo endereço de memória gerado pela CPU deve ser verificado em termos de legalidade e possivelmente ser mapeado em um endereço físico. A verificação não pode ser implementada (de modo eficiente) no software. Portanto, estamos limitados pelo hardware disponível. Os algoritmos de gerência de memória discutidos (alocação contígua, paginação, segmentação e combinações de paginação e segmentação) diferem em muitos aspectos. A seguir estão considerações importantes a serem usadas na comparação de diferentes estratégias de gerência de memória: • Suporte de hardware: Um registrador de base simples ou um par de registradores de base e de limite é suficiente para os esquemas de única e múltiplas partições, enquanto a paginação e a segmentação precisam de tabelas de mapeamento para definir o mapa de endereços. • Desempenho: A medida que o algoritmo de gerência de memória se torna mais complexo, o tempo necessário para mapear um endereço lógico em um endereço físico aumenta. Para os sistemas simples, precisamos apenas comparar ou adicionar ao endereço lógico - operações que são rápidas. A paginação e a segmentação também podem ser rápidas, se a tabela for implementada em registradores rápidos. Se a tabela estiver na memória, no entanto, os acessos à memória por parte do usuário podem ter seu desempenho muito afetado. Um conjunto de registradores associativos pode reduzir essa degradação de desempenho para um nível aceitável. • Fragmentaçâo: Um sistema multiprogramado geralmente terá um desempenho mais eficiente se tiver um nível mais alto de multiprogramação. Para determinado conjunto de processos, podemos aumentar o nível de mui ti programação somente colocando mais processos na memória. Para realizar essa tarefa, devemos reduzir o desperdício ou a fragmentação de memória. Os sistemas com unidades de alocação de tamanho fixo, como o esquema de partição única e paginação, sofrem de fragmentação interna. Os sistemas com unidades de alocação de tamanho variável, tais como o esquema de múltiplas partições e segmentação, sofrem de fragmentação externa. • Relocação: Uma solução ao problema de fragmentação externa é a compactação. A compactação implica mover um programa na memória sem que o programa perceba a diferença. Essa consideração requer que os endereços lógicos sejam relocados dinamicamente, no tempo de execução. Se os endereços forem relocados apenas no momento de carga, não será possível compactar a memória. UNIVERSIDADE ESTADUAL DE MATO GROSSO DO SUL Fábio Goulart de Matos Sistemas de Informação - UEMS SI/UEMS • Swapping; Qualquer algoritmo pode ter a operação de swapping ou troca acrescentada a ele. em intervalos determinados pelo sistema operacional, geralmente determinados pelas políticas de escalonamento de CPU, os processos são copiados da memória principal para o armazenamento auxiliar, e mais tarde são copiados de volta para a memória principal. Esse esquema permite que mais processos sejam executados do que caberiam na memória de uma só vez. • Compartilhamento: Outro meio de aumentar o nível de multiprogramação é compartilhar código e dados entre diferentes usuários. Compartilhar geralmente requer que a paginação ou a segmentação sejam utilizadas, para fornecer pequenos pacotes de informação (páginas ou segmentos) que possam ser compartilhados. O compartilhamento é uma forma de executar muitos processos com uma quantidade limitada de memória, mas os programas e dados compartilhados devem ser projetados com cuidado. • Proteção: Se a paginação ou segmentação forem fornecidas, diferentes seções de um programa de usuário podem ser declaradas como somente de execução, somente de leitura ou de leitura-escrita. Essa restrição é necessária com código ou dados compartilhados e geralmente c útil em qualquer caso para fornecer verificações de tempo de execução para erros de programação comuns. Capitulo 10 – Memória Virtual 10.1 – Fundamentos 10.2 – Paginação sobre demanda 10.3 – Substituição de página 10.4 – Alocação de quadros 10.5 – Trashing: falta de página, gasta mais tempo paginando do que executando. 10.8 • Resumo É desejável a possibilidade de executar um processo cujo espaço de endereçamento lógico seja maior do que o espaço de endereçamento físico disponível. O programador pode tornar esse processo executável reestruturando-o usando overlays, mas essa é geralmente uma tarefa de programação difícil. A memória virtual é uma técnica que permite o mapeamento de um espaço de endereçamento lógico grande em uma memória física menor. A memória virtual permite que processos extremamente grandes sejam executados, e que o grau de multiprogramação aumente, melhorando a utilização de CPU. Além disso, ela libera os programadores de aplicações da preocupação com a disponibilidade de memória. UNIVERSIDADE ESTADUAL DE MATO GROSSO DO SUL FábioGoulart de Matos Sistemas de Informação - UEMS SI/UEMS A paginação sob demanda pura nunca leva para a memória uma página até ela ser referenciada. A primeira referência causa uma falta de página para o monitor residente do sistema operacional. O sistema operacional consulta uma tabela interna para determinar onde a página está localizada no armazenamento auxiliar. Em seguida, encontra um quadro livre e lê a página do armazenamento auxiliar. A tabela de página é atualizada para refletir essa mudança, e a instrução que causou a falta de página é reiniciada. Essa abordagem permite que um processo execute mesmo que sua imagem de memória completa não esteja na memória principal de uma vez. Desde que a taxa de falta de página seja razoavelmente baixa, o desempenho será aceitável. Podemos usar a paginação sob demanda para reduzir o número de quadros alocados a um processo. Esse arranjo pode aumentar o grau de multiprogramação (permitindo que mais processos estejam disponíveis para execução ao mesmo tempo) e, ao menos em teoria, aumenta a utilização de CPU do sistema. Permite também que os processos sejam executados mesmo que suas exigências de memória superem a memória física total disponível. Tais processos executam na memória virtual. Se os requisitos de memória total excederem a memória física, pode ser necessário substituir as páginas da memória para liberar quadros para novas páginas. Vários algoritmos de substituição de página são usados. A substituição de página FIFO é fácil de programar, mas sofre da anomalia de Belady (falta de página a partir do aumento de quadros). A substituição de página ótima requer conhecimento futuro. A substituição LRU é uma aproximação da substituição ótima, mas mesmo ela pode ser difícil de implementar. A maioria dos algoritmos de substituição de página, tais como o de segunda chance, são aproximações da substituição LRU. Além de um algoritmo de substituição de página, é necessária uma política de alocação de quadros. A alocação pode ser fixa, sugerindo a substituição de página local, ou dinâmica, sugerindo a substituição global. O modelo de conjunto de trabalho assume que os processos executam em localidades. O conjunto de trabalho é o conjunto de páginas na localidade atual. Da mesma forma, cada processo deve receber um número de quadros suficientes para seu conjunto de trabalho atual. Se um processo não tiver memória suficiente para seu conjunto de trabalho, ele entrará em thrashing. Fornecer quadros suficientes para cada processo a fim de evitar o thrashing pode exigir swapping e o escalonamento de processos. Além de exigir a resolução dos principais problemas de substituição de página e alocação de quadros, o projeto adequado de um sistema de paginação requer que consideremos o tamanho de página, I/O, travamento, pré-paginação, estrutura dos programas e outros tópicos. A UNIVERSIDADE ESTADUAL DE MATO GROSSO DO SUL Fábio Goulart de Matos Sistemas de Informação - UEMS SI/UEMS memória virtual pode ser considerada um nível de uma hierarquia de níveis de armazenamento em um sistema de computação. Cada nível tem seu próprio tempo de acesso, tamanho e parâmetros de custo. Capítulo 11 – Sistemas de Arquivos 11.1 – Conceito de Arquivo 11.2 – Métodos de acesso 11.3 - Estrutura de diretórios 11.4 – Proteção 11.5 – Estrutura do sistema de arquivos 11.6 – Métodos de alocação 11.7 – Gerencia de espaço livre 11.8 – Implementação de diretórios 11.9 – Eficiência e desempenho 11.10 - Recuperação 11.11 • Resumo Um arquivo é um tipo abstrato de dados definido e implementado pelo sistema operacional. É uma sequência de registros lógicos. Um registro lógico pode ser um byte, uma linha (de tamanho fixo ou variável) ou um item de dados mais complexo. O sistema operacional pode suportar especificamente vários tipos de registro ou pode deixar o suporte ao programa aplicativo. A principal tarefa do sistema operacional é mapear o conceito de arquivo lógico em dispositivos de armazenamento físico tais como fita ou disco magnético. Como o tamanho do registro físico do dispositivo talvez não seja igual ao tamanho do registro lógico, pode ser necessário encaixar registros lógicos em registros físicos. Mais uma vez, essa tarefa pode ser suportada pelo sistema operacional ou deixada para o programa aplicativo. Os sistemas de arquivos baseados em fita são limitados; a maioria dos sistemas de arquivos são baseados em disco. As fitas são comumente usadas para transporte de dados entre máquinas, ou para armazenamento de backup ou arquivamento. Cada dispositivo em um sistema de arquivos mantêm um índice de volume ou diretório de dispositivo listando a posição dos arquivos no dispositivo. Além disso, é útil criar diretórios para permitir a organização dos arquivos. Um diretório de nível único em um sistema multiusuário causa problemas de nomeação, já que cada arquivo deve ter um nome exclusivo. Um diretório de dois níveis resolve esse problema criando um diretório separado para cada usuário. Cada usuário tem seu próprio diretório, que contém seus próprios arquivos. UNIVERSIDADE ESTADUAL DE MATO GROSSO DO SUL Fábio Goulart de Matos Sistemas de Informação - UEMS SI/UEMS O diretório lista os arquivos por nome, e inclui informações como a posição do arquivo no disco, seu tamanho, tipo, proprietário, hora da criação, hora da última utilização etc. A generalização natural de um diretório de dois níveis é um diretório estruturado em árvore. Um diretório em árvore permite que o usuário crie subdiretórios para organizar seus arquivos. Estruturas de diretórios de grafos acíclicos permitem o compartilhamento de arquivos e diretórios, mas complicam a pesquisa e exclusão. Uma estrutura de grafo genérico permite flexibilidade total no compartilhamento de arquivos e diretórios, mas às vezes requer o uso da coleta de lixo para recuperar espaço em disco não utilizado. Como os arquivos são o principal mecanismo de armazenamento de informações na maioria dos sistemas de computação, a proteção de arquivo é necessária. O acesso aos arquivos pode ser controlado de forma separada para cada tipo de acesso: ler, gravar, executar, anexar, listar diretório e assim por diante. A proteção de arquivo pode ser fornecida por senhas, listas de acesso, ou por técnicas especiais ad hoc. O sistema de arquivos reside permanentemente no armazenamento secundário, que tem como exigência principal o fato de poder armazenar grandes quantidades de dados de forma permanente. O meio de armazenamento secundário mais comum é o disco. Os sistemas de arquivos são muitas vezes implementados em uma estrutura em camadas ou modular. Os níveis inferiores tratam das propriedades físicas dos dispositivos de armazenamento. Os níveis superiores lidam com nomes de arquivo simbólicos e as propriedades lógicas dos arquivos. Os níveis intermediários mapeiam os conceitos de arquivo lógico em propriedades de dispositivos físicos. Os vários arquivos podem ser alocados no disco de três formas: através de alocação contígua, encadeada ou indexada. A alocação contígua pode sofrer de fragmentação externa. O acesso direto é muito ineficiente com a alocação encadeada. A alocação indexada pode exigir custo substancial para seu bloco de índice. Existem muitas formas nas quais esses algoritmos podem ser otimizados. O espaço contíguo pode ser ampliado por meio de extensões para aumentar a flexibilidade e diminuir a fragmentação externa. A alocação indexada pode ser feita em clusters de múltiplos blocos para aumentar o throughput e reduzir o número de entradas de índice necessárias. A indexação em clusters grandes é semelhante à alocação contígua com extensões.Os métodos de alocação de espaço livre também influenciam a eficiência de uso do espaço em disco, o desempenho do sistema de arquivos, e a confiabilidade do armazenamento secundário. Os métodos usados incluem vetores de bits e listas encadeadas. As otimizações UNIVERSIDADE ESTADUAL DE MATO GROSSO DO SUL Fábio Goulart de Matos Sistemas de Informação - UEMS SI/UEMS incluem agrupamento, contadores e a FAT, que coloca a lista encadeada em uma área contígua. As rotinas de gerência de diretórios devem considerar os aspectos de eficiência, desempenho e confiabilidade. Uma tabela de hash é o método mais frequentemente usado; é rápido e eficiente. Infelizmente, danos à tabela ou uma falha no sistema podem fazer com que as informações do diretório não correspondam ao conteúdo do disco. Um verificador de consistência - um programa de sistema como f sck no UNIX, ou chkdsk no MS-DOS - pode ser usado para reparar o dano.
Compartilhar