sistemas de arquivos - higuita.com.br · 20/11/2014 5 tipos de arquivos • arquivos comuns –...

24
20/11/2014 1 Sistema de Arquivos Prof. Alexandre Beletti 1 Introdução Como organizar as informações? Arquivos! E como classificar os arquivos? Extensões! 2

Upload: phamlien

Post on 17-Nov-2018

236 views

Category:

Documents


0 download

TRANSCRIPT

20/11/2014

1

Sistema de Arquivos

Prof. Alexandre Beletti

1

Introdução

• Como organizar as informações?

• Arquivos!

• E como classificar os arquivos?

• Extensões!

2

20/11/2014

2

Extensões de Arquivos

3

Estruturas de Arquivos

• Sequência de bytes

• Sequência de registros

• Árvore

4

20/11/2014

3

Estruturas de Arquivos (continua...)

5

Sequência de Bytes

• O SO só reconhece bytes, não sabe o que realmente está dentro do arquivo

• Abordagem utilizada pelo Unix, DOS, Win 9x

• O SO não ajuda a organizar mas também não atrapalha em nada

• Os aplicativos cuidam dos detalhes de lidar com cada tipo de arquivo

6

20/11/2014

4

Sequência de Registros

• Cada arquivo é um sequência de registros de comprimento fixo

• Exemplo de uso: CP/M

• Tem a origem nos cartões perfurados (registros de 80 caracteres)

• Não é mais utilizada nos computadores modernos

7

Árvore

• Árvore de Registros

• Os registros podem ter comprimento variável

• Cada um possui um campo-chave

• A árvore é classificada pelo campo-chave

• Para o exemplo seguinte, obter o registro cuja chave é “potro”, não sabemos a posição exata do arquivo

• Esse sistema é utilizado em alguns Mainframes

8

20/11/2014

5

Tipos de Arquivos

• Arquivos comuns

– Arquivos de texto, binários, etc.

• Diretórios

– Criar uma estrutura para o sistema de arquivos

• Arquivos especiais de caractere

– Relacionados a E/S, utilizados para modelar terminais, impressoras e redes

• Arquivos especiais de bloco

– Utilizados para modelar discos9

Arquivos Comuns

• Arquivos ASCII

– Texto comum interpretado por programas como o “vi”, “mined”, “mcedit”

• Arquivos Binários

– Sequência de bytes incompreensíveis (exceto se você conhece Opcodes e Assembly)

10

20/11/2014

6

Binário Antigo do Unix

11

Binários –Objetos

não Linkados

12

20/11/2014

7

Acesso a Arquivos

• Acesso Sequencial: SOs antigos, em sistemas com fitas magnéticas

– Uso comum em Mainframes (Cobol)

• Acesso Aleatório: origem nos discos flexíveis e magnéticos

– Essencial para sistemas de banco de dados (considere a pesquisa de um voo)

• Podem existir sistemas híbridos (Mainframes que ainda existem)

13

Atributos de Arquivos

• São campos específicos de cada arquivo

• Alguns mais comuns são:

– Permissões (read, write e execute)

– Proprietário

– Grupo

– Tamanho

– Data de Modificação

CONTINUA

14

20/11/2014

8

15

Operações com Arquivos – 1/3

• CREATE: criar um arquivo (Ex: touch file.txt)

– Chamada de sistema que cria o arquivo sem dados, configurando alguns atributos

• DELETE: apagar um arquvo (Ex: rm file.txt)

– Existe um chamada de sistema para isso

• OPEN: abrir um arquivo (Ex: vi file.txt)

– Transfere os atributos e a lista de endereços do disco para a RAM (otimizar o acesso)

16

20/11/2014

9

Operações com Arquivos – 2/3

• CLOSE: fechar um arquivo

– Envolve a chamada de sistema para fechar um arquivo, liberando memória e atualizando o disco

• READ: ler bytes de um arquivo

– Quantos dados serão lidos e onde serão colocados na RAM

• WRITE: gravar bytes de um arquivo

– Atualizar blocos do disco com a RAM

• RENAME

– Syscall para atualizar o nome do arquivo 17

Operações com Arquivos – 1/3

• APPEND

– Forma restrita de WRITE (grava no final)

• SEEK

– No acesso aleatório, move o ponteiro no arquivo

• GET ATTRIBUTES

– Obter os atributos (Ex: user, group, others)

• SET ATTRIBUTES

– Configurar os atributos (Ex: user, group, others)

18

20/11/2014

10

Diretórios

• Opção (a): cada entrada contém o nome do arquivo, os atributos, endereços de disco onde os dados serão armazenados

• Opção (b): cada entrada armazena o nome do arquivo, e um ponteiro para outra estrutura de dados onde os atributos e os endereços de disco estão localizados

CONTINUA

19

Diretórios

20

20/11/2014

11

Diretórios – Sistema Hierarquico

• Único diretório compartilhado por todos os usuários (Figura “a”)

• Um diretório por usuário (Figura “b”)

• Árvore arbitrária por usuários (Figura “c”)

21

Projeto de Hierquia

22

20/11/2014

12

Nomes de Caminho

• Caminho absoluto:

– Unix: /home/beletti

– DOS/WIN: \WINDOWS\SYSTEM32

– MULTICS: >usr>bin

• Caminho relativo

– Unix: cd beletti (entrar no diretório “beletti” partindo do diretório atual, também chamado de diretório de trabalho)

23

Diretório Atual (.) e Pai (..)

24

20/11/2014

13

Operações com Diretórios – 1/3

• CREATE: está vazio, exceto por “.” e “..”

– Utiliza uma chamada de sistema (mkdir)

• DELETE: excluir um diretório vazio

– Os diretórios “.” e “..” não são considerados

• OPENDIR

– Para um diretório ter seu conteúdo lido, ele precisa ser aberto na RAM

25

Operações com Diretórios – 2/3

• CLOSEDIR

– Após ser lido, deve ser fechado para liberar espaço na tabela da RAM

• READDIR

– Essa syscall retorna a próxima entrada em um diretório aberto

• RENAME

– São renomeados tal qual os arquivos

26

20/11/2014

14

Operações com Diretórios – 3/3

• LINK

– Permite que um arquivo apareça em mais de um diretório através dessa syscall

• UNLINK

– Remove o link criado anteriormente

• É muito comum fazer uso disso no Unix

27

Implementação - Arquivos

• Alocação Contígua

• Alocação por Lista Encadeada

• Alocação por Lista Encadeada Utilizando um Índice

• Nós-I

28

20/11/2014

15

Alocação Contígua

• Alocação por blocos contíguos de dados

• Um arquivo de 50K em um sistema de blocos de 1K ocuparia 50 blocos consecutivos

• Fácil de localizar o arquivo

• Excelente desempenho

• Desvantagens: só é praticável se soubermos o tamanho do arquivo e ele se manter; o disco ficará fragmentado quando excluir arquivos

29

Alocação por Lista Encadeada

• A primeira palavra de cada bloco funciona como um ponteiro para o próximo bloco

• Nenhum espaço é desperdiçado (exceto por fragmentação interna no último bloco)

• A entrada do diretório teria o endereço somente do primeiro bloco

• A leitura sequencial é RÁPIDA

• A leitura aleatória é LENTA (desvantagem 1)

• O ponteiro não é uma potência de 2 (desv. 2)30

20/11/2014

16

Alocação por Lista Encadeada

31

Lista Encadeada com Índice

• Elimina as desvantagens do modelo sem índice

• Pega os índices dos blocos (ponteiro) e coloca-os em uma tabela na RAM

• Exemplo (próximo slide):

– Arquivo A: blocos 4, 7, 2, 10 e 12

– Arquivo B: blocos 6, 2, 11 e 14

• Acesso aleatório é rápido

• A tabela precisa estar toda na RAM32

20/11/2014

17

Lista Encadeada com Índice

33

Tabela (FAT) na RAM

• Um disco de 500Mb

• Blocos de 1K

• A tabela terá 500.000 entradas

• Cada entrada com 3 bytes (4 byte p/ acelerar)

• Terá de 1,5Mb a 2Mb

• Utilizado pelos DOS, Win 3.x, Win 9x

34

20/11/2014

18

Nós-I

• Monitora quais blocos pertencem a quais arquivos

• Associa com cada arquivo um pequena tabela (chamada de “Nó-i” ou “nó índice”)

• O “Nó-i” é carregado na RAM

• Para arquivos pequenos todas as informações (blocos e atributos) estão no próprio nó-i

35

Nós-I

• Para arquivos maiores temos o “bloco indireto simples” contendo endereços adicionais

• Se não for suficiente, temos o “bloco indireto duplo” que contém o endereço de um bloco, que por sua vez contém uma “lista de blocos indiretos simples”

• Se isso não for suficiente temos o “bloco indireto triplo”

36

20/11/2014

19

Nó-i

37

Implementação - Diretórios

• CP/M

• MS-DOS

• Unix

38

20/11/2014

20

CP/M

• Existe somente um diretório

• O sistema de arquivos para procurar um nome de arquivo procura exclusivamente dentro desse diretório

• Quando localiza a entrada ele também tem o número do blocos de disco

39

CP/M

40

20/11/2014

21

MS-DOS

• 32 bytes de comprimento

• Nome do arquivo

• Os atributos

• Endereço do primeiro bloco de disco

• O número do primeiro bloco é como um índice

41

MS-DOS

42

20/11/2014

22

UNIX

• Cada entrada contém apenas um nome de arquivo e o número de seu “nó-i”

• As informações sobre o tipo, tamanho, tempos, proprietário e blocos de disco estão contidas no “nó-i”

43

UNIX

44

20/11/2014

23

Monitorando Blocos Livres

• Existem basicamente duas técnicas para mapear os blocos livres:

– Lista Encadeada (Figura “a”)

– Mapa de bits (Figura “b”)

45

Monitorando Blocos Livres

46

20/11/2014

24

Bibliografia

• TANENBAUM, A.S., WOODHULL, A.S., Sistemas Operacionais – Projeto e Implementação (Edição 2).

47