SO-08 Sistemas de Arquivos

9,985 views

Published on

Sistemas de Arquivos. Arquivos e Diretórios. Alocacao de espaco em disco: FAT e Nó-I ou I-node (Sistemas Operacionais)

Published in: Technology
2 Comments
3 Likes
Statistics
Notes
No Downloads
Views
Total views
9,985
On SlideShare
0
From Embeds
0
Number of Embeds
20
Actions
Shares
0
Downloads
537
Comments
2
Likes
3
Embeds 0
No embeds

No notes for slide

SO-08 Sistemas de Arquivos

  1. 1. Sistemas Operacionais Sistemas de Arquivos
  2. 2. Sistema de Arquivos   Arquivos ➼  Atributos ➼  Operações ➼  Tipos   Diretórios   Gerência de Espaço Livre ➼  Mapa de Bits (Vetor de Bits) ➼  Lista Ligada Simples ➼  Lista Ligada com Agrupamento ➼  Tabela de Blocos Livres Agrupados   Alocação de Espaço em Disco ➼  Alocação Contígua ➼  Alocação Encadeada (Lista Ligada) ➼  Lista Ligada usando Índice ➼  Alocação Indexada (Nó-I)   Implementações de Diretórios 2 Sistemas Operacionais Eduardo Nicola F. Zagari
  3. 3. Sistemas de Arquivos   Para a maioria dos usuários, o Sistema de Arquivos é o aspecto mais visível do SO   É a parte do SO responsável pelo armazenamento e acesso de dados e programas do SO e dos usuários   Consiste de: ➼  conjunto de arquivos ➼  estrutura de diretórios ➼  partição 3 Sistemas Operacionais Eduardo Nicola F. Zagari
  4. 4. Arquivos   Computadores armazenam informação em diferentes tipos de dispositivos físicos: ➼  fitasmagnéticas ➼  discos magnéticos ➼  discos óticos, ...   SO abstrai as propriedades físicas do dispositivo definindo uma unidade de armazenamento lógica: O arquivo   O SO associa cada arquivo a um dispositivo físico 4 Sistemas Operacionais Eduardo Nicola F. Zagari
  5. 5. Arquivos   Arquivo é um conjunto nomeado de informações que são gravadas em memória secundária ➼  Programas:código-fonte ou objeto ➼  Dados: numéricos , alfabéticos, alfanuméricos ou binários   Formato: ➼  Livre: arquivos-texto ➼  Rigidamente Formatado   Geralmente é uma seqüência de bits, bytes, linhas ou registros, cujo significado é definido pelo criador do arquivo ou pelo usuário. 5 Sistemas Operacionais Eduardo Nicola F. Zagari
  6. 6. Atributos   Tipicamente: ➼  Nome: informação para consumo humano ➼  Tipo: necessário quando o SO diferencia tipos ➼  Localização: ponteiro para dispositivo físico e localização dentro dele ➼  Tamanho: quantidade de bytes, palavras ou blocos do arquivo (e, possivelmente, o tamanho máximo permitido) ➼  Proteção: informação de controle de acesso ao arquivo (leitura, escrita, execução) ➼  Dono: dono do arquivo ➼  Data, hora e usuário: usado para (1) criação, (2) última modificação e (3) último uso  informação útil para proteção, segurança e monitoramento de uso ➼  Senha: utilizada no acesso 6 Sistemas Operacionais Eduardo Nicola F. Zagari
  7. 7. Operações   Unix system calls : ➼  fd:descritor de arquivo = referência para tabela de arquivos ➼  fd = creat(nome, modo) ➼  fd = open(arq, como) ➼  s = close(fd) ➼  n = read(fd, buffer, nbytes) ➼  n = write(fd, buffer, nbytes) ➼  pos = lseek(fd, offset, inicio/atual/fim) ➼  s = stat(nome, &buf) ➼  s = chmod(nome, modo) 7 Sistemas Operacionais Eduardo Nicola F. Zagari
  8. 8. Tipos 16 bits Um arquivo Número mágico . binário Tamanho do código . . executável Tamanho dos dados Cabeçalho Tamanho do BSS ≈ Código ≈ no Unix Tamanho da tabela de símbolos Ponto de entrada ≈ Dados ≈ Flags Bits de ≈ relocação ≈ . . Tabela de . ≈ símbolos ≈ 8 Sistemas Operacionais Eduardo Nicola F. Zagari
  9. 9. Tipos Um arquivo Cabeçalho Nome do módulo binário Módulo Data não objeto Proprietário executável Proteção (biblioteca Cabeçalho Tamanho de módulos) Módulo objeto no Unix Cabeçalho Módulo objeto 9 Sistemas Operacionais Eduardo Nicola F. Zagari
  10. 10. Diretórios   O sistema de arquivo pode ser grande  para se gerenciar os dados, torna-se necessários organizá-los   A organização é feita em duas partes: ➼  O sistema é dividido em partições (volumes): •  cada disco contém pelo menos uma partição •  usadas para fornecer áreas separadas em disco  cada uma é tratada como um dispositivo de armazenamento diferente •  alguns sistemas permitem que uma partição agrupe vários discos em uma única estrutura lógica 10 Sistemas Operacionais Eduardo Nicola F. Zagari
  11. 11. Diretórios ➼  Cada partição contém informação sobre os arquivos que ela armazena: •  mantida em diretório de dispositivo ou tabela de conteúdo do volume (mais conhecido como diretório) •  o diretório registra informações como nome, localização, tamanho, tipo, etc... diretório diretório Partição A Disco 2 arquivos Disco 1 Partição C diretório arquivos Partição B Disco 3 arquivos 11 Sistemas Operacionais Eduardo Nicola F. Zagari
  12. 12. Gerência de Espaço Livre   São possíveis duas estratégias genéricas para armazenamento de arquivos: ➼  alocação de n bytes consecutivos no disco •  apresenta um problema óbvio quando o arquivo cresce... ➼  alocação de blocos não necessariamente contíguos   Tamanho do Bloco: ➼  Candidatos a serem a unidade de alocação: o tamanho do setor, da trilha, do cilindro e da página (se SO paginado) ➼  Unid. de alocação grande: provável desperdício de memória ➼  Unid. de alocação pequena: baixa taxa de transferência   Para poder criar arquivos, o SO precisa saber se há blocos livres e quais são  lista de espaço livre 12 Sistemas Operacionais Eduardo Nicola F. Zagari
  13. 13. Mapa de Bits (Vetor de Bits)   Cada entrada da tabela aponta para um bloco   Define-se: Livre = 1 ocupado = 0   Simples Disco: 1,3 Gbytes   Consome muito espaço de memória: Bloco: 512 bytes   Exemplo: Bitmap: 333k 2, 3, 4, 5, 00111100 Usado quando 8, 9, 10, 11, 12, 13, 11111100 se tem espaço 17, 18, 01100000 na memória principal para 25, 26 e 27 livres 01110000 todo o vetor 13 Sistemas Operacionais Eduardo Nicola F. Zagari
  14. 14. Lista Ligada Simples   Cada bloco livre aponta para o próximo livre   Acesso seqüencial   Ineficiente 0 1 2 3 Primeiro 4 5 6 7 bloco livre 8 9 10 11 12 13 14 15 16 17 18 19 14 Sistemas Operacionais Eduardo Nicola F. Zagari
  15. 15. Lista Ligada com Agrupamento   Os endereços dos n primeiros blocos livres são armazenados no primeiro bloco. Os primeiros n-1 endereços estão disponíveis e o último endereço aponta para outro bloco com endereços livres 42 230 86 Ex.: Blocos de 1K 136 162 234 End. do bloco: 16 bits 210 612 897 97 342 422  cada bloco guarda 511 41 160 140 blocos livres 63 664 21 216 Disco de 20M ≈ 147 ≈ ≈ 320 ≈ ≈ ≈ 20K blocos 48 482  precisa, no máximo, de uma lista ligada de 40 blocos 15 Sistemas Operacionais Eduardo Nicola F. Zagari
  16. 16. Tabela de Blocos Livres (Contagem)   Geralmente blocos contíguos são alocados ou liberados simultaneamente   Encontrar um número grande de blocos livres é mais rápido   Tabela é menor Bloco 4 5 Contador 18 1 23 7 35 30 253 5 16 Sistemas Operacionais Eduardo Nicola F. Zagari
  17. 17. Métodos de Alocação de Espaço em Disco   A natureza do acesso direto aos discos permite flexibilidade na implementação de arquivos   A questão principal do projeto de um Sistema de Arquivos é: Como alocar espaço aos arquivos de modo que o uso do espaço em disco seja eficaz e que o acesso aos dados seja rápido? 17 Sistemas Operacionais Eduardo Nicola F. Zagari
  18. 18. Alocação Contígua   Cada arquivo deve ocupar um conjunto de blocos contíguo no disco   Vantagens: ➼  Simples de implementar  guardar apenas o end. do 1o bloco ➼  Acessos seqüencial e direto facilitados ➼  Excelente performance  leitura em uma única operação   Dificuldade: achar espaço para novo arquivo  seqüência de blocos livres igual ou maior que o arquivo   A alocação de blocos em uma área contígua pode ser feita através de algoritmos de estratégia de alocação como o First-Fit, Best-Fit e Worst-Fit. 18 Sistemas Operacionais Eduardo Nicola F. Zagari
  19. 19. Alocação Contígua   Desvantagens: ➼  Necessário conhecer o tamanho dos arquivos no instante de sua criação (se reservar pouco  necessidade de cópia, se reservar muito  desperdício) ➼  Fragmentação do disco  compactação é cara. Diretório Arquivo Início Tamanho 0 1 2 3 prog.c 0 2 4 5 6 7 a.out 14 3 8 9 10 11 leiame 19 1 12 13 14 15 arq.txt 6 2 16 17 18 19 19 Sistemas Operacionais Eduardo Nicola F. Zagari
  20. 20. Alocação com Lista Ligada   Espaço alocado é mantido através de uma lista ligada de blocos  uma parte do bloco guarda a referência para o próximo 512 bytes Dados 4 bytes  próximo bloco 0 1 2 10 3 11 Diretório Para criar um arquivo: Arquivo Início Tamanho 47 5 63 72 prog.c 4 5 Início (1o bloco) = -1 8 9 1012 1114 a.out 6 4 Tamanho = 0 12 x 13 14 x 15 16 17 18 19 Para escrever: Aloca-se um bloco etc 20 Sistemas Operacionais Eduardo Nicola F. Zagari
  21. 21. Alocação com Lista Ligada   Vantagens: ➼  Não existe fragmentação ➼  Entrada do diretório tb armazena apenas o end. do 1o bloco   Desvantagens: ➼  Acesso randômico (mais lento) ➼  O acesso direto é feito seqüencialmente ➼  Tamanho útil do bloco (≠ potência de 2) ➼  Espaço perdido com os ponteiros para próximo bloco  solução: clusters ➼  Confiabilidade: erro em qualquer um dos blocos do arquivo torna impossível recuperação do restante ➼   solução parcial: lista duplamente ligada 21 Sistemas Operacionais Eduardo Nicola F. Zagari
  22. 22. Alocação com Lista Ligada usando um Índice   Similar ao método anterior, colocando-se os ponteiros que encadeiam os blocos em tabela ou índice na memória   A tabela fica no início de cada partição e é usada como uma lista ligada  FAT (File Allocation Table) 0 1 0 0 2 10 3 11 4 7 Entrada no diretório 5 0 6 3 prog.c ... 4 7 2 FAT 8 0 a.out ... 6 9 0 nome bloco 10 12 inicial 11 14 12 eof 13 0 14 eof 22 Sistemas Operacionais Eduardo Nicola F. Zagari
  23. 23. Alocação com Lista Ligada usando um Índice   Vantagens: ➼  Bloco fica livre para armazenamento apenas da informação ➼  Apesar de randômico, o acesso é baseado na cadeia que está inteiramente na memória principal (basta realizar a busca na FAT) ➼  Entrada no diretório precisa conter apenas o número do bloco inicial   Desvantagem: ➼  Tabela deve permanecer na memória durante todo o tempo •  Disco de 500.000 blocos 500 MBytes •  Blocos de 1K •  Tabela com 500.000 entradas vezes 4 bytes = 2 MBytes 23 Sistemas Operacionais Eduardo Nicola F. Zagari
  24. 24. Alocação Indexada (Nó-I)   Assim como lista ligada, resolve problemas relativos à: ➼  tamanho do arquivo alocação contígua ➼  fragmentação externa ➼  suporte a acesso direto  alocação encadeada   ... além do problema da grande tabela em memória...   Consiste em associar a cada arquivo uma pequena tabela de índices (nó-i), que lista seus atributos e endereços em disco (um vetor de endereços)   O diretório contém o endereço da tabela de índices   Permite acesso direto ao n-ésimo bloco ➼  é só ler a n-ésima entrada do nó-i. 24 Sistemas Operacionais Eduardo Nicola F. Zagari
  25. 25. Alocação Indexada (Nó-I) 4 7 15 2 10 0 1 2 3 12 4 5 6 7 8 9 10 11 12 13 14 15 Diretório Arquivo Início 16 17 18 19 prog.c 15 25 Sistemas Operacionais Eduardo Nicola F. Zagari
  26. 26. Alocação Indexada (Nó-I)   Desvantagem: Se o arquivo for pequeno, gasta-se um bloco por índice   Solução: índices encadeados (vários níveis) ➼  Os primeiros endereços são armazenados no próprio nó- i  arquivos pequenos ➼  Um dos endereços apontados pelo nó-i é o endereço do bloco indireto simples, que aponta para endereços do arquivo no disco ➼  Outro apontador do nó-i é para o bloco indireto duplo, que contém uma lista de blocos de endereço simples ➼  Existe ainda o bloco indireto triplo 26 Sistemas Operacionais Eduardo Nicola F. Zagari
  27. 27. Implementação de Diretórios   Para abrir um arquivo o SO usa o nome do caminho para localizar sua entrada no diretório   Dependendo do sistema, tal entrada fornece informações do tipo: ➼  endereço do bloco (alocação contígua) ➼  número do primeiro bloco (alocação com listas ligadas) ➼  número do nó-i relativo ao arquivo (alocação indexada)   Outro aspecto a ser considerado é onde os atributos dos arquivos devem estar armazenados: diretamente na entrada do diretório ou nos nós-i, no caso dos sistemas que usam alocação indexada 27 Sistemas Operacionais Eduardo Nicola F. Zagari
  28. 28. Diretórios no MS-DOS Setor primário de boot Partição 1 Partição 2 Partição 3 Part. 4 Tab. de alocação Setor secundário Diretório-raiz de arquivos de boot ≈ ≈ FAT Cópia opcional Blocos de dados da FAT   Setor de boot: ➼  começa com um desvio incondicional para código de boot ➼  lista de parâmetros: no de bytes por setor, no de setor por bloco, no de arquivo na tabela de alocação, tamanho do diretório raiz, ... ➼  Tabela de partição (máximo 4): uma deve ser ativa 28 Sistemas Operacionais Eduardo Nicola F. Zagari
  29. 29. Diretórios no MS-DOS 8 3 1 10 2 2 2 4 Nome do arquivo Tamanho Extensão Reservado Data Atributos Hora Número do 1o bloco   Nome e extensão: o ponto não é armazenado   Atributos: contém os seguintes bits ➼  A - 1 quando arquivo é modificado ➼  D - 1 quando for diretório ➼  V - 1 quando for nome do volume ➼  S - 1 arquivo do sistema ➼  H - 1 arquivo escondido ➼  R - 1 arquivo não pode ser escrito   Não se pode ter link  não se pode ter 2 entradas com mesmo número inicial de bloco 29 Sistemas Operacionais Eduardo Nicola F. Zagari
  30. 30. Diretórios no UNIX Bloco de ≈ ≈ boot Nós-I Blocos de dados Super -Bloco   Bloco de boot: não é usado pelo UNIX e muitas vezes contém o código de boot   Super-bloco: no de nós-i, no de blocos e início da lista de blocos livres (crítico para o sistema)   Nós-i: atrib. do arquivo mais a localização dos blocos   Blocos de dados: armazenam arquivos e diretórios 30 Sistemas Operacionais Eduardo Nicola F. Zagari
  31. 31. Diretórios no UNIX 2 14 ou 255 (dependendo da versão) No do nó-i Nome do arquivo   Os atributos não estão armazenados na entrada do diretório, mas no nó-i   Ex.: /usr/enfz/mbox Diretório raiz Nó-i 6 Bloco 132: /usr Nó-i 30 Bl. 406: /usr/enfz 1 . Modo 6 . Modo 30 . 1 .. Tamanho 1 .. Tamanho 6 .. 4 bin Tempos 19 ast Tempos 64 Prog1.c 7 dev 132 30 enfz 406 92 books 14 Arq.txt 51 lff 60 mbox 9 etc 26 lgsj 81 minix 6 usr usr está no 45 rcmp /usr/enfz está 17 src 8 tmp bloco 132 Procura /usr/enfz no bloco 406 Procura usr Obtém nó-i 30 Procura /usr/enfz/mbox Obtém nó-i 6 Obtém nó-i 60 31 Sistemas Operacionais Eduardo Nicola F. Zagari
  32. 32. Diretórios no UNIX Nó-i Modo Contador de ligações Uid Gid Tamanho do arquivo Tempos End dos primeiros 10 blocos de disco Indireto único Indireto duplo Indireto triplo Bloco Indireto Triplo Bloco Indireto Duplo Bloco Indireto Único 32 Sistemas Operacionais Eduardo Nicola F. Zagari

×