Sistemas Operacionais
Prof. Leonardo Araújo
Plano de aula
• Gerenciamento de Arquivos
• Definição • Arquivos • Uso de arquivos • Organização de volumes • Sistemas de arquivos • PesquisaGerência de Arquivos
• Até agora vimos que o SO tem por finalidades principais:
• Gerenciar os recursos de hardware x software • Estender a capacidade da máquina;
• Vimos também que o SO é responsável por gerenciar os processos e
a memória principal do sistema;
Gerência de Arquivos
• Os processos, como sabemos, são programas em execução;
• Mas os programas, antes de entrarem em execução, aonde
eles estão?
• Em meios de armazenamento secundário (não-voláteis), como discos rígidos (HDs) ou memórias flash (pen-drives);
• E claro, o SO também fica responsável pela
Gerência de Arquivos
• Mas vamos a uma definição bem familiar:
• O que é um arquivo?
“Um conjunto de dados, armazenados em uma memória não
volátil, com uma finalidade específica, que contém uma
Gerência de Arquivos
• Um arquivo pode ser:
• Conjunto de textos • Imagem
• Sons • Vídeos
Gerência de Arquivos
• Imagine um HD com dezenas de gigabytes de arquivos.
Como você acha que eles estão lá dentro?
• Geralmente organizados dentro de diretórios;
• Além disso, em se tratando de sistema operacional, estão
organizados em um sistema de arquivos;
Gerência de Arquivos
• Qualquer arquivo tem atributos ou características que os
tornam únicos na visão do usuário e do sistema;
• Nome;
• Tipo (extensão do nome do arquivo); • Tamanho;
• Data;
• Proprietário;
• Permissão de acesso; • Etc...
Gerência de Arquivos
• Qualquer arquivo tem atributos ou características que os
tornam únicos na visão do usuário e do sistema;
• Nome;
• Tipo (extensão do nome do arquivo); • Tamanho;
• Data;
• Proprietário;
• Permissão de acesso; • Etc...
Gerência de Arquivos
• O Sistema Operacional pode manipular os arquivos através
de chamadas de funções e/ou bibliotecas específicas da
seguinte forma:
• Criar; • Abrir; • Fechar; • Excluir; • Ler; • Escrever; • Copiar; • Etc..Gerência de Arquivos
• Qualquer arquivo tem atributos ou características que os
tornam únicos na visão do usuário e do sistema;
• Nome;
• Tipo (extensão do nome do arquivo); • Tamanho;
• Data;
• Proprietário;
• Permissão de acesso; • Etc...
Gerência de Arquivos
• Além disso, todo arquivo tem um formato, também
conhecido como extensão o arquivo;
• Geralmente o núcleo do SO reconhece apenas extensões
básicas como bibliotecas do sistema (DLL’s);
• Caso o SO não reconheça um formato, ele o interpretará
apenas como um “arquivo desconhecido”;
• Neste último caso, é necessário alguma aplicação para que o
formato do arquivo seja reconhecido.
Gerência de Arquivos
• Um arquivo, além de ser o próprio executável, também pode
ser parte de um processo em execução;
• Um arquivo pode ser acessado enquanto um processo está
sendo executado;
Gerência de Arquivos
• Quando um processo precisa abrir um arquivo, a seguinte
sequência é realizada pelo SO (na maioria dos SOs):
1. Localiza o arquivo no dispositivo físico
2. Verifica as permissões do arquivo (leitura/escrita);
3. Cria uma estrutura na memória do núcleo para representar o arquivo;
4. Insere uma referência a essa memória na lista de arquivo abertos, para fins de gerência;
5. Devolve ao processo a referência de acesso ao arquivo aberto no núcleo para fins de gerência;
6. Quando o processo termina de usar aquele arquivo, o SO fecha o arquivo, excluindo as suas estruturas do núcleo.
Gerência de Arquivos
• Quando abertos, os arquivos podem ser acessados,
geralmente, de duas formas:
• Sequencial – leitura dos dados de forma sequencial, onde um ponteiro percorre a sequência de dados até o fim, representado por um flag EoF (End-of-File);
• Aleatório – os dados são lidos de forma direta, bastando o SO saber a posição exata do dado na memória;
Gerência de Arquivos
• Como os arquivos geralmente estão estritamente associados
a um processo, os mesmos possuem controles de acesso,
que geralmente estão definidos nos seguintes atributos:
• Proprietário – usuário/dono do arquivo;
Gerência de Arquivos
• Por exemplo, nos sistemas UNIX a estrutura de controle de
acesso a arquivos se dá da seguinte maneira:
• Usuários: proprietários do arquivo (User), Grupo de usuários associados ao arquivo (Group), demais usuários (Others)
• Permissões: ler (Read), escrever (Write), Executar (eXecute)
Fig. 2: Exemplo de controle de acesso a arquivos Fonte: Maziero, 2010
Gerência de Arquivos
• Da mesma forma que os processos podem sofrer condições
de disputa (race conditions), os arquivos também podem;
• Logo, para que arquivos sejam acessados de forma
simultânea (seja por processos ou usuários distintos),
algumas técnicas devem ser implementadas;
Gerência de Arquivos
• Travas em arquivos
• São semelhantes à técnica de exclusão mútua entre processos;
• Garante a um processo (ou usuário) o acesso exclusivo a um arquivo; • Pode ser
• Obrigatórias (quando um processo tem acesso a um arquivo e os demais ficam suspensos aguardando a vez)
• Recomendadas (quando qualquer processo acessa um arquivo – trechos – ao mesmo tempo, porém de forma ordenada – programador)
Gerência de Arquivos
• Semântica de acesso
• Quando um arquivo é modificado por um processo na memória e outros arquivos, ao acessá-lo em disco, não encontram o arquivo modificado, ocorre uma semântica de acesso;
• O disco é mais lento do que a memória, por isso o atraso na atualização dos dados na memória secundária;
• Para que esse problema seja tratado, existem as semânticas de
Gerência de Arquivos
• Semântica de acesso
• Semântica UNIX: todas as modificações são visíveis a todos os dispositivos que acessam aquele arquivo na memória local;
• Semântica de sessão: os arquivos são abertos em sessões. Logo, as modificações feitas no arquivo em uma sessão só serão visíveis na mesma sessão ou por outro processo após o fechamento e reabertura de sessão; • Semântica imutável: simplesmente o arquivo é marcada como imutável, ou
seja, mesmo sendo compartilhado, o seu conteúdo nunca poderá ser alterado.
Gerência de Arquivos
• Os arquivos, como visto, são armazenados em memórias
secundárias;
• Dessas memórias, em sistemas do tipo PC a memória mais
usada ainda é o HD ou disco rígido;
• Logo, na maioria dos HDs, a forma de organização determina
o modo de acesso aos arquivos;
Gerência de Arquivos
• De forma sintetizada, o HD é dividido em blocos de bytes,
que contem dados específicos para o seu gerenciamento
(MBR - Master Boot Record e VBR – Volume Boot Record) e
os dados dos arquivos de usuários, além de partições;
Fig. 4: Organização em partições de um disco rígido típico Fonte: Maziero, 2010
Gerência de Arquivos
• Assim, as partições devem ser formatadas para contem um
sistema de arquivo, que pode conter arquivos, diretórios,
atalhos, etc.
Gerência de Arquivos
• Como um sistema pode contem milhões de arquivos, para o
SO é simples gerenciá-los, conforme as técnicas já
mencionadas;
• Porém, para usuários, torna-se complexo identificar um
arquivo sem estar estruturado;
Gerência de Arquivos
• Os diretórios também são arquivos estruturados, que
contem referências a demais arquivos;
• Logo, fisicamente falando, os diretórios não contém
arquivos, mas apontam para estes;
• Logo, para se identificar um arquivo dentro de um diretório,
é necessário a implementação de um caminho de acesso;
Gerência de Arquivos
Gerência de Arquivos
• O acesso a arquivos e diretórios pode ser dado ainda por
meio de referência diretas em locais diferentes, onde o seu
acesso
será
feito
por
meio
de
ponteiros
e
não
necessariamente do arquivo replicado;
• Neste caso temos os atalhos, que podem ser
• Simbólicos, que são arquivos que apenas contem o caminho de acesso ao arquivo original, porém são independentes;
• Físicos, quando várias referências no volume de disco são feitas a um arquivo físico e estão diretamente ligados, ou seja, o arquivo original só pode ser excluído quando as suas referências físicas foram excluídas;
Gerência de Arquivos
• Por fim, os volumes podem ser acessados quando há a
montagem de volumes;
• Cada unidade é representada no sistema por um volume,
que podem ser partições de um disco, outros discos,
pen-drives, CD-ROM, etc.
Gerência de Arquivos
• Um sistema de arquivo é o que organiza a estrutura de
dados dos arquivos;
• Com um sistema de arquivo, o SO consegue gerenciar os
arquivos em uma unidade;
• Existem vários elementos que compõem um sistema de
arquivos, os quais iremos discutir a partir de agora,
conforme a Figura 7.
Gerência de Arquivos
Gerência de Arquivos
• Os discos contam com uma organização física dividida geralmente em
512 bytes, denominada de bloco físico;
• Como a quantidade de blocos pode facilmente ultrapassar a casa dos
500 milhões, para o SO gerenciar esses blocos, o mesmo trata os blocos
físicos como conjuntos de 2^n blocos físicos, denominados de blocos
lógicos ou clusters;
• Com os blocos lógicos, geralmente de 4KB, 8KB, 16KB e 32KB, o
desempenho geral do sistema aumenta e a gerência dos dados melhora
consideravelmente;
Gerência de Arquivos
• Logo, cada arquivo ou diretório ocupa um ou mais blocos lógicos;
• O tamanho do cluster depende do SO durante a formatação da partição;
• Blocos pequenos: tem melhor aproveitamento do espaço dos dados, porém mais dados precisam ser passados e mais blocos precisam ser gerenciados, degradando o desempenho geral do sistema;
• Blocos grandes: são mais rápidos de serem acessados e gerenciados, aumentando o desempenho, porém podem sofrer com a fragmentação interna;
• Logo, o tamanho do bloco lógicos deve ser escolhido de forma adequada
aos tipos de arquivos mais usados naquela partição.
Gerência de Arquivos
• Um arquivo pode conter milhares e até milhões de blocos;
• Esses dado e meta-dados (atributos) de um arquivos precisam ser
organizados de forma que esteja ligados um ao outro;
• Para os processos, o acesso ao arquivo deve ser feito de forma
transparente;
• Porém, os arquivos podem estar dispostos em bloco não contíguos no
disco, gerando o problema da alocação de arquivos, necessitando então
de estratégias de alocação de arquivos;
Gerência de Arquivos
Fig. 8: Problema da alocação de arquivos Fonte: Maziero, 2010
Gerência de Arquivos
• As estratégias de alocação de arquivos podem ser:
• Contígua; • Encadeada; • Indexada;
Gerência de Arquivos
• Estratégia contígua
• Os blocos de um arquivo são dispostos fisicamente de forma sequencial (contígua), sem “buracos”. A sua localização é dada pelo acesso ao primeiro bloco;
• Boa robustez a falhas de disco (se houver defeito em um bloco, os demais poderão ser acessados normalmente);
• Baixa flexibilidade: o tamanho do arquivo precisa ser conhecido e está sujeita à fragmentação externa (igual alocação contígua na memória);
Gerência de Arquivos
• Estratégia encadeada
• Os blocos do arquivo não precisam estar dispostos sequencialmente. Cada bloco pode ficar em uma posição não-contígua, onde os bloco serão “ligados” por meio de ponteiros, formando uma lista encadeada;
• Elimina a fragmentação externa;
Gerência de Arquivos
• Estratégia de alocação indexada
• Nesta estratégia, ao invés de ligar um bloco a outro por meio de ponteiros diretamente, é criada uma tabela de nós de índices (i-nodes), em uma parte reservada na partição, onde essa tabela contem cada índice tem o endereço físico de cada bloco;
• Muito robusto, visto que além de os nós estarão interligados sem ocorrer a fragmentação externa e, mesmo um nó tendo falha física, a tabela de índices tem o ponteiro correto para os demais nós;
• Se a estrutura do arquivo for muito grande, pode ser que haja vários acessos para um mesmo arquivo, diminuindo o desempenho, além de o tamanho dos arquivos serem limitados devido ao tamanho da tabela de índices de nós.
Gerência de Arquivos
• Além da forma de alocação dos dados no blocos, os blocos livres
também precisam ser gerenciados;
• Há, basicamente, duas abordagens para gerenciar os blocos livres:
• Mapa de bits (Silberschatz et al., 2004);Gerência de Arquivos
• Além da forma de alocação dos dados no blocos, os blocos livres
também precisam ser gerenciados;
• Há, basicamente, duas abordagens para gerenciar os blocos livres:
• Mapa de bits (Silberschatz et al., 2004): no início da partição, existe uma tabela com bits representativos aos blocos da partição, onde para cada bit, sendo 1, indica que o bloco está livre e 0 que o bloco está ocupado;
• Lista de blocos livres (Tanenbaum, 2010): cada bloco livre aponta para outro bloco livre no disco;
Pesquisa
• Sistemas de arquivos
• Formem grupos de até quatro pessoas;
• Pesquise sobre os sistemas de arquivo FAT (e suas extensões 12, 16 e 32), NTFS, Ext2, Ext3, ReiserFS, Journaling FS, Extents, LFS, HFS descrevendo de forma breve as suas técnicas de alocação de arquivos e depois faça uma tabela, como no exemplo a seguir, fazendo uma comparação entre todos esses sistemas de arquivos de acordo com os seguintes critérios:
• Rapidez: velocidade oferecida pela estratégia no acesso aos dados do arquivo, tanto para acessos sequenciais quanto para acessos diretos;
• Robustez: desdobramentos frente a erros, como bloco de discos defeituosos (bad blocks) e dados corrompidos;
• Flexibilidade: criação, modificação e exclusão de arquivos e diretórios;
• Cada grupo terá 10 minutos para apresentar, na próxima aula, sobre cada sistema de arquivo e os critérios exigidos;
Pesquisa
• Exemplo de tabela
Sistema de Arquivo
Rapidez Robustez Flexibilidade
FAT 16 FAT 32 NTFS
Referências
• TANENBAUM, Andrew S. Sistemas Operacionais Modernos. São
Paulo: PRENTICE HALL, 2010.
• MAZIERO, Carlos. A. Sistemas Operacionais: Conceitos e Aplicações.
Creative Commons 3.0, 2013.
• SILBERSCHATZ, A.; GALVIN, P. B.; GAGNE, G. Sistemas Operacionais
com Java. Rio de Janeiro: Elsevier, 2004.
• CARISSIMI, Alexandre. Sistemas Operacionais. Porto Alegre:
Bookman.
Sistemas Operacionais
Prof. Leonardo Araújo