2. Introduçao
• Os primeiros computadores executavam seus programas
contando exclusivamente com a informação carregada na
memória primária.
• Que problemas essa abordagem causava?
– O espaço de endereçamento de cada processo que estava
executando era muito limitado em seu tamanho. Por
vezes, aplicações muito grandes não cabiam inteiramente
na memória.
– Quando o processo terminava, toda a informação que ele
manipulava era eliminada da memória junto com o
mesmo.
Professor Eduardo Xavier
3. Introduçao
• Outros problemas:
– Falhas no funcionamento do hardware comprometiam a
informação manipulada.
– Múltiplos processos precisavam acessar uma determinada
informação (ou apenas parte dela) ao mesmo tempo e isso
não era possível, pois cada processo tinha seu próprio
espaço de endereçamento protegido do acesso dos
demais.
• A solução para todos estes problemas era uma só: tornar a
informação independente dos processos que a manipulavam
– Assim nasceu o conceito de ARQUIVO
Professor Eduardo Xavier
4. Arquivos
• Para resolver os problemas já citados, os arquivos
devem atender a alguns requisitos essenciais:
– Conseguir suportar grandes capacidades de
armazenamento
– Garantir a “persistência” da informação, ou seja,
providenciar que a informação sobreviva ao término do
processo
– Suportar acesso compartilhado da informação por
múltiplos processos simultaneamente
Professor Eduardo Xavier
5. Arquivos
• Os arquivos são gerenciados pelo sistema
operacional no que diz respeito a:
– Estrutura de armazenamento
– Identificação (nomeação e outras características)
– Proteção (garantia de integridade)
– Uso (como pode ser manipulado)
– Acesso (controle de quem e como pode ter acesso)
– Implementação (como manipular a estrutura de
armazenamento)
• A parte do SO que cuida disso chama-se “Sistema
de Arquivo”
Professor Eduardo Xavier
7. Nomeação de Arquivos
• Cada sistema operacional tem regras próprias para
definir o que é válido e o que não é aceito na
definição de um nome válido para seus arquivos.
– A ideia básica é possibilitar que diversos
processos possam acessar um certo conjunto de
dados usando apenas a identificação deste
conjunto (um nome)
– Assim, os processos deixam de preocupar com a
forma de armazenamento destes dados ou com
o funcionamento do hardware onde estão
hospedados
Professor Eduardo Xavier
8. Nomeação de Arquivos
• Extensões de arquivos
– Parte do nome do arquivo que indica alguma
característica específica daquele tipo de arquivo
– Não é algo obrigatório na maioria dos sistemas
operacionais modernos e seu objetivo é apenas
facilitar o uso do arquivo
Professor Eduardo Xavier
10. Estruturas de Arquivos
• O sistema operacional normalmente não sabe (e
nem precisa saber) qual o conteúdo de cada arquivo.
– O que o SO “vê” é apenas um conjunto de bytes.
– Dessa forma, a manipulação do arquivo ganha
flexibilidade
Professor Eduardo Xavier
11. Estruturas de Arquivos
• As estruturas de arquivos mais comuns são:
– Sequência de bytes
• É a estrutura mais flexível
– Sequência de registros
• Cada registro é um bloco de tamanho fixo de bytes
– Árvore de registros
• Cada “folha” (registro) pode ter um tamanho diferente
• Cada registro possui em uma posição fixa um campo-
chave pelo qual a árvore se liga e é ordenada
Professor Eduardo Xavier
13. Tipos de Arquivos
• Os sistemas operacionais costumam suportar diversos tipos
de arquivos, mas geralmente eles se dividem em dois
grupos:
– Arquivos regulares
• São arquivos que contém informações dos usuários
• Podem ser:
– Arquivos de texto
» Linhas de texto em código ASCII
– Arquivos binários
» Conjunto de códigos binários cuja estrutura interna é
conhecida apenas pelos programas projetados para
manipular estes arquivos
» O que chamamos de arquivos EXECUTÁVEIS são arquivos
binários codificados em um formato reconhecido pelo SO
sem ajuda de nenhum outro programa
– Diretórios
• Arquivos de controle que contém parte da estrutura suportada pelo
sistema de arquivos
Professor Eduardo Xavier
14. Acesso a Arquivos
• Os primeiros computadores e seus sistemas operacionais
só suportavam acessos a seus arquivos de forma sequencial
– Exemplos: fitas magnéticas, cartões perfurados,
impressoras,...
• Com o surgimento dos discos magnéticos, o acesso
aleatório passou a ser mais frequente, em virtude das
novas aplicações que surgiram com a nova tecnologia (ex:
bancos de dados)
– Nos primeiros modelos, o tipo de acesso ao arquivo era
definido quando o mesmo era criado, ou seja, ao criar
um novo arquivo seu dono definia se este seria
acessado de forma sequencial ou aleatória
– Hoje em dia, todos os arquivos são criados permitindo-
se o acesso aleatório (porém o acesso sequencial
também é suportado em alguns casos)
Professor Eduardo Xavier
15. Atributos
• Atributos são itens informativos sobre determinado
arquivo, mas que não fazem parte dos dados.
• Alteração da informação contida nos atributos
– Alguns atributos são informações fixas, como a data de
criação do arquivo.
– Outros podem ser modificados pelo SO, a exemplo da
data da última alteração no arquivo
– Existem ainda atributos que podem ser alterados pelo
próprio usuário, de acordo com sua conveniência.
Exemplo: permissões de acesso ao arquivo
• Dependendo do sistema de arquivos, os atributos podem
variar, embora alguns deles sejam praticamente “padrões
de mercado”, como identificação do dono, tamanho do
arquivo, data de criação e informações de proteção.
Professor Eduardo Xavier
17. Operações com Arquivos
• O sistema de arquivos é responsável por prover uma série de
system calls ou primitivas que permitam a manipulação dos
arquivos gerenciados
• As system calls mais comuns são:
– Create: Cria o arquivo e estabelece os primeiros atributos básicos
– Open: Carrega o arquivo na memória e lê certos atributos para definir
como o mesmo será manipulado
– Seek: Procura determinado ponto no arquivo
– Read: Lê o arquivo (geralmente de forma sequencial) a partir de
determinado ponto
– Write: Escreve dados no arquivo (existe uma variação chamada
“append” que indica que o dado será adicionado ao final do arquivo)
– Get/Set atributes: Recupera/Altera o valor de certos atributos
– Close: Remove qualquer controle ou informação que indique que o
arquivo está sendo usado (isso foi estabelecido no “open”)
– Delete :Apaga o arquivo
Professor Eduardo Xavier
18. Diretórios
• Diretórios são uma forma de organizar os diversos arquivos
contidos em um armazenamento secundário
• São estruturas de dados que contém entradas associadas a
cada arquivo
• A estrutura dos diretórios foi evoluindo desde os primeiros
computadores até hoje. Podemos destacar 3 grandes passos:
– Sistemas de Diretório em Nível Único
– Sistemas de Diretório em Dois Níveis
– Sistemas de Diretório em Hierárquicos
Professor Eduardo Xavier
19. Sist. de Diretórios em Nível Único
• Cada entrada possui os atributos de um
determinado arquivo
• É a solução mais antiga – muito usada nos
primeiros computadores
• Embora mais simples de implementar, é uma
alternativa muito limitada
• Seu maiores problemas são:
– Não permitir dois arquivos com o mesmo nome
– Cada usuário conhece os arquivos dos demais
Professor Eduardo Xavier
20. Sist. de Diretórios em Nível Único
Professor Eduardo Xavier
Diretório
Arquivos
Arquivo 1 Arquivo 2 Arquivo 3 ... Arquivo N
21. Sist. de Diretórios em Dois Níveis
• Para cada usuário do sistema existe um diretório particular
que gerencia seus arquivos, chamdo UFD (User File
Directory)
• Em um nível acima dos UFDs, existe outro diretório que os
controla, chamado MFD (Master File Directory) que é
indexado por usuário
• Para localizar um arquivo, é preciso saber qual o caminho
(PATH) necessário para chegar até ele
• Para evitar que arquivos de uso comum sejam duplicados
desnecessariamente:
– Cria-se um UFD especial onde todos os usuários têm
acesso (OBS: podem haver vários)
– O sistema procura qualquer arquivo primeiramente no
diretório corrente e, caso não ache, procura nesse
diretório especial
22. Sist. de Diretórios em Dois Níveis
Professor Eduardo Xavier
UFDs
Arquivos
Arquivo 1 Arquivo 2 Arquivo 3 Arquivo 1 Arquivo 2 Arquivo 1 Arquivo 2
Usuário 1 Usuário 2 ... Usuário NMFD
23. Sist. de Diretórios Hierárquico
• É uma organização em árvore, criada a partir de uma
extensão da idéia dos sistemas de diretórios em dois níveis,
que permitiu mais organização e flexibilidade
• Neste sistema, é possível criar quantos diretórios se queira
e cada um pode conter arquivos e outros diretórios
• Cada arquivo possui um PATH único que descreve como
chegar até ele a partir do MDF
• O MDF não agrupa mais entradas por usuário e sim por
diretórios
• A grande maioria dos sistemas operacionais modernos
adota este sistema de diretórios
Professor Eduardo Xavier
25. Operações com Diretórios
• As system calls para gerenciamento de diretórios variam mais
de sistema para sistema que as chamadas para
gerenciamento de arquivos
• Alguns exemplos de system calls do sistema UNIX:
– Create: Cria um diretório vazio, exceto pelo “.” e pelo “..”
– Delete :Apaga o diretório (só funciona para diretórios vazios)
– OpenDir: “Abre” o diretório deixando o mesmo pronto para
manipulação
– CloseDir: “Fecha” o diretório
– ReadDir: Lê a próxima entrada de um diretório previamente aberto
– Rename: Altera o nome de um diretório
– Link: Efetua uma “ligação” que permite que um arquivo seja
visualizado em mais de um diretório
– Unlink: Remove uma entrada do diretório. Se o arquivo “desligado”
estiver presente apenas em um diretório o mesmo será apagado. Se
estiver em visível em mais de um diretório apenas a ligação será
desfeita Professor Eduardo Xavier
26. Sistemas Baseados em Disco
• Cada unidade de disco magnético contém os seguintes componentes
básicos:
– Diversos discos com faces magnetizáveis paralelamente posicionados
– Um dispositivo de tração que mantém o disco em rotação à velocidade
constante
– Um pente de cabeças de leitura/gravação
• Uma cabeça para cada face magnetizável do disco (existem dispositivos com mais
de uma cabeça por face, visando reduzir o tempo de acesso à informação)
• Organização do disco
– O disco armazena as informações em trilhas concêntricas
– Um grupo de trilha sobrepostas no disco compõe um cilindro
– Cada trila possui várias divisões radiais (como em uma pizza cortada)
chamadas setores.
Professor Eduardo Xavier
28. Sistemas Baseados em Disco
• A visão do controlador de discos
– Cada setor tem, geralmente, 512 bytes e é a
unidade mínima de armazenamento
manipulada pelo controlador de disco
– Para acessar a informação no disco, o
controlador precisa saber:
• Qual a face do disco
• Qual a trilha ou o cilindro
• Qual o setor dentro da trilha
Professor Eduardo Xavier
29. Sistemas Baseados em Disco
• A visão do SO
– O SO enxerga os setores de forma continuada,
ignorando trilhas, cilindros e faces
• Estes setores são chamados de blocos contínuos ou
registros físicos
– As vezes, é mais interessante para o SO trabalhar com
unidades diferentes de 1 setor (exemplo: para obter
mais velocidade em discos de alta capacidade)
• Neste caso, o SO passa a trabalhar com registros
lógicos ou blocos, que são agrupamentos de
registros físicos (mais comum hoje em dia)
• Isso aumenta a velocidade de acesso, mas aumenta
também o espaço perdido pro registro
Professor Eduardo Xavier
30. Sistemas Baseados em Disco
• Gerenciamento de espaço livre no disco
– O espaço de um arquivo que foi apagado pode
ser reutilizado
– Por este motivo, é preciso ter estratégias para
gerenciar este espaço
– Estratégias :
• Lista Encadeada
• Lista de Blocos Contíguos
Professor Eduardo Xavier
31. Sistemas Baseados em Disco
• Gerenciamento de espaço LIVRE no disco
– Estratégia : Lista Encadeada
• Ligação de todos os blocos livres do disco, formando uma
“corrente”
• Cada bloco possui uma área reservada para armazenar o
endereço do próximo bloco livre
• Problema: a pesquisa nos blocos é sempre sequencial
– Estratégia : Lista de Blocos Contíguos
• Guarda o endereço do primeiro bloco livre de uma série de
blocos adjacentes em uma tabela de controle
• Para cada endereço guardado, também se armazena a
quantidade de blocos contíguos
Professor Eduardo Xavier
32. Sistemas Baseados em Disco
Professor Eduardo Xavier
DISCO
Lista Encadeada
1 2 3 4 5 6 7 8 9 10
11 12 13 14 15 16 17 18 19 20
Bloco Ocupado
Bloco Livre
33. Sistemas Baseados em Disco
Professor Eduardo Xavier
DISCO
Lista de Blocos Contíguos
1 2 3 4 5 6 7 8 9 10
11 12 13 14 15 16 17 18 19 20
Bloco Ocupado
Bloco Livre
Primeiro Bloco Livre Número de Blocos Contíguos
1 2
5 1
7 1
10 2
14 1
17 4
34. Sistemas Baseados em Disco
• Alocação de espaço OCUPADO no disco
– Estratégia : Alocação Contígua
• Consiste em armazenar um arquivo em blocos
sequencialmente dispostos no disco
• O sistema passa a localizar o arquivo pelo endereço
do primeiro bloco e a quantidade de blocos
contíguos do mesmo
• Embora possuindo um gerenciamento simples, este
método apresenta alto índice de fragmentação do
disco, o que obriga a execução freqüente de rotinas
de desfragmentação, causando impacto no
desempenho
Professor Eduardo Xavier
36. Sistemas Baseados em Disco
• Alocação de espaço OCUPADO no disco
– Estratégia : Alocação Encadeada
• Conjunto de blocos ligados logicamente no disco,
independente de localização física
• Cada bloco do arquivo possui um ponteiro apontando
para o bloco seguinte do arquivo
• Este método lida melhor com a fragmentação do disco
do que a alocação contígua, porém:
– Não elimina o problema de desempenho causado
por excesso de fragmentação
– Continua necessitando de eventuais
desfragmentações
– Outro problema neste método é a impossibilidade
de acesso direto aos blocos dos arquivos
37. Sistemas Baseados em Disco
Professor Eduardo Xavier
DISCO
Alocação Encadeada
1 2 3 4 5 6 7 8 9 10
11 12 13 14 15 16 17 18 19 20
Início do arquivo
Fim do arquivo
Bloco Ocupado
Bloco Livre
38. Sistemas Baseados em Disco
• Alocação de espaço OCUPADO no disco
– Estratégia : Alocação Indexada
• Mantém o endereço de todos os blocos (ponteiros)
de um arquivo em uma estrutura separada chamada
bloco de índice
• Para arquivos grandes, pode-se encadear vários
blocos de índices, onde o último valor de um bloco
aponta para o próximo bloco
• Este método resolve o problema de acesso direto
mencionado na alocação encadeada
Professor Eduardo Xavier
40. Tópicos para Discussão
• Confiabilidade do sistema de arquivos
– Cópias de segurança
• Procedimentos, Desastres e reprocessamentos
– Consistência
• Detecção e verificação
• Desempenho
– Cache de blocos (ou cache de buffer)
– Leitura antecipada
– Redução do movimento no braço do disco
Professor Eduardo Xavier