Gestão de Memória e Sistemas de Arquivos

Classificado em Computação

Escrito em em português com um tamanho de 13,74 KB

Endereçamento e Swapping

Endereçamento absoluto ou relativo - O programa pode ser executado em qualquer partição ou processo da memória.

Swapping - "troca" de armazenamento entre memória principal e secundária; consiste em retirar o programa inteiro da memória enquanto ele não estiver sendo executado. Em seguida, ele é armazenado no disco rígido (HD).

Problemas - Ineficiência em função do tempo gasto em cada carregamento.

Solução - Implementação no hardware dos computadores para permitir que a relocação seja realizada durante a execução do programa.

Vantagens e desvantagens do Swapping

  • Vantagens:
    • Maior compartilhamento da memória;
    • Maior throughput;
    • Eficiência (quando bem implementado).
  • Desvantagens:
    • Elevados custos das operações de entrada e saída.

Paginação

Paginação - O programa é armazenado em vários blocos de aproximadamente 4 KB; é um processo de virtualização da memória que consiste na subdivisão da memória física em pequenas partições (frames), para permitir uma utilização mais eficiente da mesma. As frames da memória física correspondem a páginas de memória virtual. A alocação de memória é requisitada por páginas, a menor unidade deste método. Cada página é mapeada numa frame de memória através de um processo que se chama paginação.

Página = programa; Frame = disco; Slot = memória

Termos relacionados a disco e memória

  • Fator de forma: tamanho
  • Velocidade de giro: RPM → latência rotacional
  • Tempo de acesso: seek time
  • Taxa de transferência interna: disco <-> cache
  • Taxa de transferência externa: cache (control) e memória
  • Realocação: assegurar que cada processo (aplicação) tenha o seu próprio espaço de endereçamento, começando em zero
  • Cluster: unidade de alocação. Sistema onde dois ou mais computadores trabalham de maneira conjunta para realizar processamento pesado; os computadores dividem as tarefas de processamento e trabalham como se fossem um único computador.

Memória Virtual

Memória virtual - técnica que usa a memória secundária como uma cache para armazenamento secundário. Houve duas motivações principais: permitir o compartilhamento seguro e eficiente da memória entre vários programas e remover os transtornos de programação causados pela quantidade pequena e limitada de memória principal.

Segmentação

Segmentação - Significa que parte da memória é removida do processo sendo executado atualmente, através do uso de registradores. Se o dado prestes a ser lido ou escrito está fora do espaço de endereços do processo, uma falha de segmentação é lançada.

Segmentação por swapping - Semelhante à paginação por demanda; a memória armazena um conjunto de segmentos de tamanho variável. Problema: geração de buracos (fragmentação externa). Soluções: compactação, best fit, first fit, compensação de buracos.

Compartilhamento de recursos e de memória

Compartilhamento de recursos - processo de atribuição de recursos do computador a programas em execução.

Compartilhamento da memória

Gerenciamento do sistema operacional:

  • Definir e proteger os espaços de endereçamento;
  • Carregar programas (texto) para execução;
  • Maximizar o uso da memória para cada processo;
  • Ampliar os limites da memória física principal;
  • Maximizar a quantidade de processos que podem utilizar a memória.

Hierarquia de armazenamento

Hierarquia de armazenamento

disco ótico /\ Alto custo

disco magnético /\ Alta velocidade

disco eletrônico (SSD) /\ Baixa capacidade

memória principal --

cache \/ Baixo custo

registradores \/ Baixa velocidade

fita magnética \/ Alta capacidade

Migração dos dados

Migração dos dados:

Disco magnético > Memória principal > Cache > Registrador

Migração dos dados entre os dispositivos de armazenamento.

Particionamento e alocação contígua

Particionamento (partições estáticas ou dinâmicas)

  • Limita a quantidade de processos simultâneos (multitarefa).
  • Desperdício caso o programa não ocupe toda a partição.
  • Endereçamento absoluto ou relativo.

Alocação contígua simples

  • Desperdício caso o processo não ocupe toda a memória.
  • Tamanho da memória disponível limita o tamanho máximo do processo.

Gravação perpendicular possui maior densidade de gravação que a gravação longitudinal.

Problemas físicos de discos

Problemas com os pratos do disco: head crash; setores danificados; descompensação térmica (desmagnetização devido ao calor).

Estrutura interna de um disco

Trilha, setor geométrico, setor de trilha, unidade de alocação. Matematicamente, a palavra setor significa uma parte de um disco entre o centro, dois raios e um arco correspondente (setor geométrico), moldado como uma fatia de pizza. O setor de disco comum (setor de trilha) refere-se às intersecções de uma trilha e um setor geométrico. Unidade de alocação (cluster) é um conjunto de setores adjacentes do disco.

Discos Zone Bit Recording possuem mais setores por trilha nas trilhas mais externas (ex.: 18 setores nas trilhas mais internas e 36 nas mais externas).

Sistemas de arquivos

Sistema de arquivos - forma de organização de dados em um meio de armazenamento de dados em massa (frequentemente discos magnéticos). Tem a finalidade de permitir ao sistema operacional controlar o acesso ao disco rígido.

Atributos de um sistema de arquivos

  • Nome
  • Identificador (rótulo interno para o sistema de arquivos)
  • Tipo
  • Posição (ponteiro para o local no dispositivo)
  • Tamanho
  • Proteção
  • Proprietário
  • Hora, data e identificação do usuário (criação, acesso, modificação, backup)

Diretório

Diretório de um sistema de arquivos - estrutura de dados utilizada para organizar logicamente os diversos arquivos contidos no disco. Diretório, ou pasta, é um recurso utilizado para agrupar arquivos ou outras pastas (formando uma árvore).

Registros e unidades de alocação

Registros físicos - em processamento de dados, o registro físico diz respeito à quantidade de informação transmitida à memória ou retirada dela em consequência de uma única instrução (são blocos contíguos).

Registros lógicos - é o que forma um arquivo. Sequência de itens de dados, cada qual também conhecido como campo; esses itens de dados, que caracterizam cada elemento do arquivo, são tratados como uma unidade de informação.

Definir grande unidade de alocação num disco rígido pode fazer com que o HD fique mais rápido, por acessar somente uma unidade, mas também pode haver um grande desperdício caso ela não seja preenchida por completo. Portanto, é necessário conhecer o tamanho dos arquivos no instante de sua criação; se reservar pouco, é necessário cópia depois; se reservar muito, há desperdício. Além disso, fragmentar o disco torna a compactação cara.

Estruturas de gerenciamento de blocos

Vetor de bits - uma das representações de conjuntos mais eficientes tanto em termos de espaço ocupado quanto em termos de tempo para acesso é a representação através de vetores de bits. Cada bit de um grupo de bytes que representa o conjunto corresponde a um elemento: o valor 1 indica a presença do elemento no conjunto; o valor 0 indica sua ausência. Vantagens: compactação dos dados e velocidade de acesso proporcionada por instruções de máquina que operam simultaneamente em todos os bits de uma palavra.

Lista encadeada - uma lista encadeada é uma representação de uma sequência de objetos na memória do computador. É uma sequência de células; cada célula contém um objeto de algum tipo e o endereço da célula seguinte. Cada elemento da sequência é armazenado em uma célula da lista: o primeiro elemento na primeira célula, o segundo na segunda e assim por diante.

Tabela de blocos livres (contagem)

O sistema operacional mantém em disco uma tabela (constantemente atualizada) que identifica o endereço dos blocos livres (livre = 1 // ocupado = 0) e cada bloco livre aponta para o próximo livre (contando quantos blocos livres aparecem no intervalo até chegar a um bloco ocupado). Geralmente, blocos contíguos são alocados ou liberados simultaneamente. Encontrar um número grande de blocos livres é mais rápido; a tabela é menor.

Algoritmos de alocação de arquivos

Alocação contígua - Cada arquivo deve ocupar um conjunto de blocos contíguos no disco.

Vantagens: simples de implementar, pois guarda apenas o endereço do primeiro bloco; acesso sequencial e direto facilitados; excelente performance → leitura em uma única operação.

Dificuldade: achar espaço para novo arquivo (sequência de blocos livres igual ou maior que o arquivo). A alocação de blocos contíguos pode ser feita por algoritmos como FIRST-FIT, BEST-FIT e WORST-FIT.

Desvantagens: é preciso saber o tamanho dos arquivos antes da criação; reservar pouco exige cópias posteriores; reservar muito gera desperdício; fragmenta o disco e a compactação é cara.

Alocação encadeada - um arquivo é organizado como um conjunto de blocos ligados logicamente no disco, independente da sua localização física; cada bloco possui um ponteiro para o bloco seguinte. Neste tipo de alocação ocorre grande fragmentação dos arquivos devido aos blocos livres não precisarem ser contíguos; o arquivo é quebrado em diversos pedaços, denominados extents. Essa fragmentação aumenta o tempo de acesso aos arquivos, pois exige que o mecanismo de leitura/gravação se desloque diversas vezes sob a superfície, tornando necessária a defragmentação periódica.

Um problema na alocação encadeada é que ela só permite acesso sequencial aos blocos dos arquivos, não possuindo acesso direto e desperdiçando espaço com o armazenamento de ponteiros.

Alocação indexada - a alocação indexada soluciona o problema do acesso direto presente na alocação encadeada, pois mantém os ponteiros de todos os blocos do arquivo em uma única estrutura denominada bloco de índice.

Sistemas de arquivos virtuais e formatação

Sistemas de Arquivos Virtuais (VFS) - camada do núcleo que trata de todas as chamadas relacionadas a um sistema de arquivos, provendo uma interface genérica para diversos tipos de sistemas de arquivos. Por exemplo, as chamadas open() e read() podem ser executadas independentemente do sistema de arquivos usado ou do meio físico (local ou rede).

Formatação lógica - processo que cria o sistema de arquivos, no qual o sistema operacional armazena as estruturas de dados iniciais, incluindo mapeamento dos espaços alocados e livres e um diretório vazio inicial.

Spooling

Spooling - a saída de cada processo é armazenada em um buffer do tipo spool para um arquivo de disco separado. Spool é um buffer que mantém saídas para um dispositivo (por exemplo, uma impressora) que não pode aceitar fluxos de dados intercalados. Embora uma impressora possa atender somente um processo por vez, diversas aplicações podem desejar imprimir concorrentemente sem que as saídas sejam misturadas.

O uso do spooling permite desvincular o programa do dispositivo de impressão, impedindo que um programa reserve a impressora para uso exclusivo. O sistema operacional gerencia a sequência de impressões solicitadas pelos programas, seguindo critérios que garantam segurança e uso eficiente das impressoras.

Exercício: calcular disco

• Taxa de transferência é o número de bits transferidos do disco para a memória principal por segundo.

taxa de transferência = bytes transferidos / tempo de acesso

tempo de acesso = tempo_seek + tempo_latência + tempo_transferência

Tempo_latência é o tempo de latência médio com o disco girando a 5.000 rpm, que é de 80 ms.

Tempo_seek é o tempo de busca médio, que é igual à metade do tempo de latência médio.

Tempo_transferência é o tempo despendido na transmissão dos dados (leitura ou gravação); em nosso caso, é necessário um tempo de 130 ms para transferência de 1 Mbyte de dados.

Para facilitar os cálculos, considere:

  • 1 Kbyte = 1.000 bytes
  • 1 Mbyte = 1.000 Kbytes
  • 1 Gbyte = 1.000 Mbytes

Entradas relacionadas: