Course
Tópicos em Sistemas Operacionais
Neste curso serão abordados os seguintes temas: 3. GERÊNCIA DE MEMÓRIA Swapping. Alocação Contígua Alocação não-Contígua (Paginação e Segmentação) Memória Virtual. 4. SISTEMA DE ARQUIVOS: Arquivo; Catálogo
Modules (5)
-
Swapping
Swapping A técnica de swapping veio para tentar resolver o problema de insuficiência de memória para todos os usuários. Nos esquemas apresentados até o momento, um processo permanecia na memória principal até o final de sua execução, inclusive quando realizava operações de entrada e saída. O swapping é uma técnica aplicada à gerência de memória, para processos que esperam por memória livre para serem processados.O sistema escolhe um processo residente que é levado da memória para o disco (swapped out), retornando posteriormente para amemória principal (swapped in), como se nada tivesse ocorrido. Um dos problemas gerados pelo swapping é a relocação dos processos.O loader realocável permite que um processo seja colocado em qualquer posição de memória, porém a relocação é realizada no momento do carregamento. O conceito de swapping permitiu um maior compartilhamentodememória e, conseqüentemente, um maior throughput. Mostrou-se eficiente em ambientes onde existiam poucos usuários competindo pela memória e com aplicações pequenas. Seu maior problema é o custo das operações de entrada e saída.
-
Memória Virtual
Memória virtual é uma técnica sofisticada e poderosa de gerência de memória onde as memórias principal e secundária são combinadas, dando ao usuário a impressão de que existe muito mais memória do que a capacidade real de memória principal. O conceito de memória virtual baseia-se em não vincular o endereçamento feito pelo programa aos endereços físicos da memória principal. Desta forma, o programa e suas estruturas de dados deixam de estar limitados ao tamanho da memória física disponível, pois podem possuir endereços vinculados à memória secundária, que funciona como uma extensão da memória principal. Outra vantagem desta técnica é permitir um número maior de processos compartilhando a memória principal, já que apenas partes de cada processo estarão residentes. Isto leva a uma utilização mais eficiente do processador, além de minimizar (ou quase eliminar) o problema da fragmentação. A seguir, os conceitos que envolvem a gerência de memória virtual, incluindo a paginação: - Espaço de endereçamento virtual: o conjunto de endereços virtuais que um processo pode endereçar. - Espaço de endereçamento real: analogamente, é o conjunto de endereços reais que um processo pode endereçar. - Mapeamento: como o espaço de endereçamento virtual não tem nenhuma relação com o espaço de endereçamento real, um programa pode fazer referência a um endereço virtual que esteja fora dos limites da memória principal (real), ou seja, os programas e suas estruturas de dados não estão mais limitados ao tamanho da memória física disponível. Quando um programa é executado, apenas uma parte do seu código fica residente na memória principal, permanecendo o restante na memória virtual até o momento de ser referenciado. Este esquema de endereçamento virtual é ignorado pelo programador no desenvolvimento das aplicações. Cabe ao compilador e ao linkeditor gerar códigos executáveis em função do endereçamento virtual, e o sistema operacional se incumbe de administrar os detalhes durante a sua execução. O processador apenas executa instruções e referencia dados residentes no espaço de endereçamento real. Portanto, deve existir um mecanismo que transforme os endereços virtuais em endereços reais. Este mecanismo é o que chamamos de mapeamento, e consiste em permitir a tradução do endereço virtual em endereço real. Como conseqüência, um programa não mais precisa estar necessariamente em endereços contíguos na memória real para ser executado. - Tabela de endereçamento de páginas: estrutura mantida pelo sistema para armazenar, entre outras informações, o mapeamento. É única e exclusiva para cada processo, relacionando os endereços virtuais do processo ás suas posições na memória real. - Memória virtual por paginação: é a técnica de gerência de memória onde o espaço de endereçamento virtual e o espaço de endereçamento real são divididos em blocos do mesmo tamanho chamados páginas. As páginas do espaço virtual são chamadas páginas virtuais, enquanto as páginas do espaço real são chamadas páginas reais ou frames. - Page fault: é a falha de página. Sempre que o processo referencia um endereço virtual, o sistema verifica se a página correspondente já está carregada na memória real. Se não estiver, acontece o page fault. Neste caso, o sistema deve transferir a página virtual para um endereço na memória real. Esta transferência é chamada de paginação. O número de page faults gerados por um processo em um determinado intervalo de tempo é chamado de taxa de paginação do processo. Se esta taxa atingir valores elevados, pode haver um comprometimento do desempenho do sistema. Um page fault provoca uma interrupção no processo, pois há a necessidade de acessar operações de E/S. Assim, sempre que acontece a paginação, uma interrupção de E/S fará com que o processo em execução seja interrompido e colocado em estado de espera até que sua intervenção de E/S seja realizada, quando então o...
-
Alocação
ALOCAÇÃO CONTÍGUA DE MEMÓRIA A alocação contígua consiste em armazenar um arquivo em blocos sequencialmente dispostos, permitindo ao sistema localizar um arquivo através do endereço do primeiro bloco e da sua extensão em blocos. O aceso é feito de maneira simples, tanto para a forma sequencial quanto para a direta. Um problema desse tipo de alocação é que quando um arquivo é criado com n blocos, é necessário que exista uma cadeia de n blocos livres disposto sequencialmente. Nesse tipo de alocação, o disco é visto como um grande vetor, com segmentos ocupados e livres. A alocação em um novo segmento livre consiste técnicas para escolha, algumas das principais são: First-fit: Seleciona o primeiro segmento livre com o tamanho suficiente para alocar o arquivo e a busca é feita seqüencialmente, interrompendo ao achar um segmento livre do tamanho adequado. Best-fit: Seleciona o menor segmento livre disponível com o tamanho suficiente para armazenar o arquivo e é necessária a busca em toda a lista, caso esta não esteja ordenada por tamanho. Worst-fit: Seleciona o maior segmento livre e a busca funciona como no caso anterior. Um problema na alocação contígua é a fragmentação dos espaços livres causado pela criação e eliminação constante de arquivos é que com o tempo surgem espaços vagos sem o tamanho suficiente para se alocar novos arquivos. A defragmentação busca solucionar o problema da fragmentação, reorganizando os arquivos no disco de maneira que só exista um único segmento de blocos. A defragmentação é lenta e deve ser realizada periodicamente. ALOCAÇÃO NÃO-CONTÍGUA DE MEMÓRIA Paginação: A paginação permite que o programa possa ser espalhado por áreas não contíguas de memória. Com isso, o espaço de endereçamento lógico de um processo é dividido em páginas lógicas de tamanho fixo e a memória física é dividida em páginas com tamanho fixo, com tamanho igual ao da página lógica. Nisso, o programa é carregado página a página, cada página lógica ocupa uma página física e as páginas físicas não são necessariamente contíguas. O endereço lógico é inicialmente dividido em duas partes : um número de página lógica (usado como índice no acesso a tabela de páginas, de forma a obter o número da página física correspondente) e um deslocamento dentro da página. Não existe fragmentação externa, porém existe fragmentação interna (Ex: um programa que ocupe 201kb, o tamanho de página é de 4 kb, serão alocadas 51 páginas resultando uma fragmentação interna de 3kb). Além da localização a tabela de páginas armazena também o bit de validade, (1 ou TRUE) se a página está na memória (0 ou FALSE) se a página não está na memória. E a transferência das páginas de processo podem ser transferidas para a memória por demanda, levando apenas o que é necessário para a execução do programa ou por paginação antecipada, onde o sistema tenta prever as páginas que serão necessárias à execução do programa. Abaixo um exemplo de páginas constantemente referenciadas: Segmentação: Técnica de gerência de memória onde programas são divididos em segmentos de tamanhos variados cada um com seu próprio espaço de endereçamento. A principal diferença entre a paginação e a segmentação é a alocação da memória de maneira não fixa, a alocação depende da lógica do programa. O mapeamento é feito através das tabelas de mapeamento de segmentos e os endereços são compostos pelo número do segmento e um deslocamento dentro do segmento. Cada entrada na tabela mantém o endereço físico do segmento, o tamanho do segmento, se ele está ou não na memória e sua proteção. Para isso ocorrer sem problemas, o sistema operacional mantém uma tabela com as áreas livres e ocupadas da memória e somente segmentos referenciados são transferidos para a memória principal. Nesse modelo diferentemente da Paginação, ocorre fragmentação externa. Abaixo um exemplo de Segmentação:
-
Sistema de Arquivos
Sistema de Arquivos O sistema de arquivos é a parte do sistema operacional mais visível para os usuários. Durante o tempo todo, usuários manipulam arquivos contendo textos, planilhas, desenhos, figuras, jogos, etc. Os arquivos são normalmente implementados a partir de discos magnéticos. Como um acesso a disco demora cerca de 10000 vezes mais tempo do que um acesso à memória principal, são necessárias estruturas de dados e algoritmos que otimizem os acessos ao disco. É importante observar que os sistemas de arquivos implementam um recurso em software que não existe no hardware. O hardware oferece simplesmente espaço em disco, na forma de setores que podem ser acessados (gravados e lidos) individualmente, em ordem aleatória. O conceito de arquivo, muito mais útil que o simples espaço em disco, é uma abstração criada pelo SO. Um arquivo pode ser genericamente definido como uma coleção de dados relacionados entre si. Normalmente, arquivos contém programas (tanto fonte como objeto) ou dados. Arquivos são referenciados através de nomes. Além de um nome, cada arquivo possui também outros atributos, tais como: tipo, momento da criação, identificação do criador, tamanho, etc. Tipos de arquivos Diferentes tipos de informação podem ser armazenados em um arquivo: programas fonte, programas objeto, texto, dados numéricos, registros de funcionários, som, imagem, etc. Cada arquivo possui uma estrutura interna, conforme sua aplicação. Por exemplo, um arquivo texto é uma seqüência de caracteres organizados em linhas e parágrafos; um programa executável é uma seqüência de bytes representando instruções em código de máquina; um programa fonte é uma seqüência de caracteres que representam comandos de uma linguagem de programação (normalmente estes arquivos são do tipo “somente texto”, não admitindo qualquer tipo de formatação especial). Uma questão importante é até que ponto o SO deve conhecer a estrutura interna dos arquivos. Para ter esse conhecimento, o SO vai ser maior e mais complexo. Além disso, para evoluir, deverá permitir a definição de novos tipos de arquivos, uma vez que novas aplicações podem expor novas demandas, e com elas, tipo de arquivos diferentes. Isto inviabiliza a pretenção de conhecer a estrutura interna dos arquivos, na prática. Em geral, o conhecimento do SO se limita às informações contidas no registro descritor do arquivo. Isto já lhe permite bloquear algumas operações inválidas. Por exemplo, pode recusar-se a imprimir um arquivo que contenha um programa executável. Sistemas baseados em fita Os primeiros sistemas eram baseados em fita magnética. No início, cada arquivo era mapeado para uma única fita. Isso ocasionava um enorme desperdício de espaço, porque cada fita (de 2400 pés, cerca de 750 m) era capaz de armazenar 5 gigabytes, mas a maioria dos arquivos era pequena (alguns Kb). Por outro lado, havia o problema dos arquivos muito grandes, que poderiam superar a capacidade de uma única fita. O problema dos arquivos grandes foi resolvido com o sistema de armazenamento multi-volume. O desperdício de espaço foi resolvido permitindo a gravação de diversos arquivos em uma única fita. Como resultado, passou a ser necessário saber em que posição da fita cada arquivo estava armazenado. A solução foi adicionar à fita um diretório, onde cada entrada continha um nome de arquivo e sua posição na fita. Tais diretórios também armazenavam informações adicionais sobre os arquivos. Passos para a leitura de um arquivo em fita: Localizar e carregar a fita indicada pelo usuário Localizar no diretório a entrada correspondente ao arquivo Posicionar a fita no ponto correspondente ao início do arquivo Iniciar a leitura Terminar a leitura quando encontrar marca de fim de...
| Course resource | Original resource | Created by |
|---|---|---|
| Swapping | Untitled | Val Corrêa |
| Alocação | Paginação e Segmentação | Val Corrêa |
| Quizz | Quizz S.O. | Val Corrêa |