Sistemas Operacionais
         Sistemas de Arquivos
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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

SO-08 Sistemas de Arquivos

  • 1.
    Sistemas Operacionais Sistemas de Arquivos
  • 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.
    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.
    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.
    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.
    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.
    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.
    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.
    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.
    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.
    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.
    Gerência de EspaçoLivre   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.
    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.
    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.
    Lista Ligada comAgrupamento   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.
    Tabela de BlocosLivres (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.
    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.
    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.
    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.
    Alocação com ListaLigada   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.
    Alocação com ListaLigada   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.
    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.
    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.
    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.
    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.
    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.
    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.
    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.
    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.
    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.
    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.
    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