INTRODUÇÃO A SISTEMAS DE ARQUIVO E GERENCIA DE MEMÓRIA Prof. Hélio Esperidião
DEFINIÇÕES DE ARQUIVOS Um arquivo é basicamente um conjunto de dados armazenados em um dispositivo físico não-volátil, com um nome ou outra referência que permita sua localização posterior. Do ponto de vista do usuário e das aplicações, o arquivo é a unidade básica de armazenamento de informação em um dispositivo não-volátil, pois para eles não há forma mais simples de armazenamento persistente de dados. Arquivos são extremamente versáteis em conteúdo e capacidade: podem conter desde um texto ASCII com alguns bytes até uma sequencia de vídeo com dezenas de gigabytes ou mais.
Como um dispositivo de armazenamento pode conter milhões de arquivos, estes são organizados em estruturas hierárquicas denominadas diretórios. A organização física e lógica dos arquivos e diretórios dentro de um dispositivo é denominada sistema de arquivos.
ESTRUTURAS HIERÁRQUICAS
SISTEMAS DE ARQUIVOS Um sistema de arquivos pode ser visto como uma imensa estrutura de dados armazenada de forma persistente em um dispositivo físico. Existe um grande número de sistemas de arquivos, Existe um grande número de sistemas de arquivos, dentre os quais podem ser citados o NTFS (nos sistemaswindows), Ext2/Ext3/Ext4 (Linux), HPFS (MacOS), FFS (Solaris) e FAT (usado em pendrives USB, máquinas fotográficas digitais e leitores MP3)
ATRIBUTOS DE ARQUIVOS Cada arquivo é caracterizado por um conjunto de atributos, que podem variar de acordo com o sistema de arquivos utilizado. Os atributos mais usuais são: Nome: string de caracteres que identifica o arquivo para o usuário, como foto1.jpg, relatório.pdf, hello.c, etc; Tipo: indicação do formato dos dados contidos no arquivo, como áudio, vídeo, imagem, texto, etc. Muitos sistemas operacionais usam parte do nome do arquivo para identificar o tipo de seu conteúdo, na forma de uma extensão:.doc,.jpg,.mp3, etc.;
ATRIBUTOS DE ARQUIVOS Tamanho: indicação do tamanho do conteúdo do arquivo, em bytes ou registros Datas: para fins de gerência, é importante manter as datas mais importantes relacionadas ao arquivo, como suas datas de criação, de último acesso e de última modificação do conteúdo; Proprietário: em sistemas multiusuários, cada arquivo tem um proprietário, que deve estar corretamente identificado;
ATRIBUTOS DE ARQUIVOS Permissões de acesso: indicam que usuários têm acesso àquele arquivo e que formas de acesso são permitidas (leitura, escrita, remoção, etc.); Localização: indicação do dispositivo físico onde o Localização: indicação do dispositivo físico onde o arquivo se encontra e da posição do arquivo dentro do mesmo;
OPERAÇÕES BÁSICAS SOBRE ARQUIVOS Criação (create) Escrita (write) e leitura (read) Reposicionamento em um ponto qualquer do arquivo (file seek) Remoção (delete) Abertura (open) e encerramento (close) Adicionalmente: renomeação (rename);
ORGANIZAÇÃO DE ARQUIVOS E ACESSO A DADOS Partição: Permite criar discos lógicos. Dividir um disco físico em vários discos lógicos menores. Blocos ou setores: A menor unidade de armazenamento disponibiliza pelo disco.
ALOCAÇÃO DE ARQUIVOS ALOCAÇÃO CONTÍNUA Este é o esquema mais simples de alocação de arquivos, onde cada arquivo é armazenado no disco como um bloco contíguo de dados. Neste esquema, em um disco com blocos de 1 KB, um pequeno arquivo de 20 KB seria armazenado em 20 blocos consecutivos. Principais Vantagens: simples implementação: controle de onde está cada arquivo no disco é feito por 1 único número (endereço em disco do 1º bloco).
ALOCAÇÃO CONTÍGUA Performance: todo o bloco (arquivo) pode ser lido do disco de uma única vez. É necessário o tempo de somente um seek. Problemas: a estratégia só pode ser usada se o Problemas: a estratégia só pode ser usada se o tamanho Máx. do arquivo for conhecido no momento de sua criação (devido a necessidade existente em saber o tamanho total do arquivo ou quantidade de blocos que ele ocupa).
ALOCAÇÃO CONTÍGUA fragmentação do disco: perde-se muito espaço útil com este esquema de alocação. Ao remover um arquivo a área ocupada pelo mesmo é liberada ocasionando lacunas por todo o disco. Necessidade de desfragmentação (custo alto).
ALOCAÇÃO DE ARQUIVOS ALOCAÇÃO COM LISTA ENCADEADA Nesta estratégia de alocação, usamos uma lista encadeada para indicar os espaços ocupados em disco pelo arquivo. Assim, não é mais necessário que o arquivo seja armazenado em posições contíguas do disco. A primeira instrução de cada bloco é usada com um ponteiro para o próximo bloco e o restante do bloco é usado para armazenar as informações (dados) do arquivo.
ALOCAÇÃO COM LISTA ENCADEADA Principais Vantagens: Qualquer bloco pode ser utilizado, permitindo que os arquivos cresçam indefinidamente enquanto houver espaço no disco. Só precisa armazenar o endereço do 1º bloco do arquivo (em cada bloco existirá um ponteiro para o próximo bloco do arquivo). Problemas: O acesso randômico é lento, pois existe a necessidade de percorrer a lista.
TIPOS E GERENCIAMENTO DE MEMÓRIA O conceito de multiprogramação permite que, diversos processos são executados simultaneamente, através da divisão do tempo do processador. Para que o chaveamento entre eles seja rápido, esses processos devem estar na memória, prontos para executar. É função da gerência de memória do sistema operacional prover os mecanismos necessários para que os diversos processos compartilhem a memória de forma segura e eficiente.
MEMÓRIA FÍSICA A memória física é aquela implementada pelos circuitos integrados de memória, pela eletrônica do computador. O endereço físico é aquele que vai para a memória física, ou seja, é usado para endereçar os circuitos integrados de memória.
MEMÓRIA LÓGICA A memória lógica de um processo é aquela que o processo enxerga, ou seja, aquela que o processo é capaz de acessar. Os endereços manipulados pelo processo são endereços lógicos. Em outras palavras, as instruções de máquina de um processo especificam endereços lógicos. Por exemplo, um processo executando um programa escrito na linguagem C manipula variáveis tipo pointer. Essas variáveis contêm endereços lógicos. Em geral, cada processo possui a sua memória lógica, que é independente da memória lógica dos outros processos.
FRAGMENTAÇÃO Quando um programa é carregado em uma área de memória maior que o necessário, isso resulta em um desperdício de memória que é chamado de fragmentação interna, isto é, memória perdida dentro da área alocada para um processo. Outra possibilidade é termos duas partições livres, digamos, de 25 e 100 Kbytes. Nesse momento é criado um processo para executar um programa de 110 Kbytes. Observe que a memória total livre no momento é de 125 Kbytes, mas ela não é contígua. Se o programa não pode ser executado devido à forma como a memória é gerenciada, o problema é chamado de fragmentação externa, isto é, memória perdida fora da área ocupada por um processo
PAGINAÇÃO O desperdício de memória em função da fragmentação externa é um grande problema. A origem da fragmentação externa está no fato de cada programa necessitar ocupar uma única área contígua de memória. Se essa necessidade for eliminada, ou seja, se cada programa puder ser espalhado por áreas não contíguas de memória, a fragmentação externa é eliminada. Esse efeito é obtido com a paginação
PAGINAÇÃO A memória física e lógica é dividida em páginas com tamanho fixo. Um programa é carregado para a memória página a página. Cada página lógica do processo ocupa exatamente uma página física da memória física. Entretanto, a área ocupada pelo processo na memória física não precisa ser contígua. Durante a carga é montada uma tabela de páginas para o processo. Essa tabela informa, para cada página lógica, qual a página física correspondente.