Buscar

13 Fundamentos e S.O Gerência de Arquivos

Prévia do material em texto

SISTEMAS OPERACIONAIS
Sistemas de Arquivos
Redes para Computadores
Prof. Renato Leite
renato.leite@unipe.br
Um sistema operacional tem por finalidade permitir que 
o usuários do computador executem aplicações, como 
editores de texto, jogos, reprodutores de áudio e vídeo, 
etc. Essas aplicações processam informações como 
textos, músicas e filmes, armazenados sob a forma de 
arquivos em um disco rígido ou outro meio. Este módulo 
apresenta a noção de arquivo, suas principais 
características e formas de acesso, a organização de 
arquivos em diretórios e as técnicas usadas para criar e 
gerenciar arquivos nos dispositivos de armazenamento. 
OBJETIVOS
• Compreender os mecanismos de persistência de dados no disco em arquivos;
• Entender os diversos modos pelos quais o S.O gerencia/estrutura os dados 
dos arquivos logicamente;
• Como são compostos os arquivos: organização lógica, atributos e meios de 
acesso;
• Estudar a organização lógica do disco em diretórios;
• Gerência de Espaço livre;
• Métodos de alocação de arquivos.
O QUE É?
• Cria e manipula estruturas que organizam logicamente 
arquivos no disco;
• Gerir de forma transparente às aplicações o modo como os 
dados são persistidos;
• Aplicações precisam ser representadas em disco como 
arquivos e geram arquivos para manter dados processados ao 
longo de desligamentos e transferências de dados entre 
dispositivos;
• Ao subsistema do S.O. que gere esses processos dá-se o 
nome de Sistema de Arquivos.
ARQUIVOS
• Conjunto de estruturas ligadas e gerenciadas pelo sistema de 
forma a armazenar dados logicamente relacionados;
• O hardware é transparente, não importando o meio a ser 
armazenado, as aplicações enxergam apenas arquivos;
• Todo arquivo possui como atributo mínimo, seu nome;
• Arquivos são generalistas e podem conter dados texto, 
binários ou executáveis;
• Alguns S.O possuem como parte do nome do arquivo sua 
extensão.
ATRIBUTOS
• Arquivos, analogamente as páginas em memória, possuem atributos que 
representam seu status:
• Nome e tipo (extensão). Manipulados pelo usuário;
• Momentos: criação, modificação, acesso. Manipulados pelo S.O;
• Dono/Proprietário: Manipulados pelo S.O./Usuário;
• Localização: em que parte entre os setores do sistema de arquivos 
(manipulado pelo S.O.);
• Atributos específicos: tipo conteúdo, visibilidade, natureza do arquivo 
(sistema ou usuário).
ATRIBUTOS
Comando LS (Unix)
DIRETÓRIOS
• Organizam hierarquicamente os arquivos em disco;
• São agrupamentos de arquivos (incluindo diretórios):
• Contém estrutura com endereço físico do arquivo;
• Todos os atributos dos arquivos estão armazenados na estrutura do 
diretório;
• Esse dados dos arquivos são carregados em memória no momento em que 
são abertos e é referenciada por ponteiros ou índices (descritores) com a 
posição exata daquele arquivo na tabela de arquivo abertos;
• Ao fechar um arquivo é preciso armazenar as modificações e liberar a 
estrutura do arquivo nesta tabela.
ÁRVORE DE DIRETÓRIOS
TIPOS DE ESTRUTURA DE 
DIRETÓRIOS
• Nível único: apenas uma tabela que aponta aos arquivos. Limitado quanto ao 
nome dos arquivos que não podem se repetir dentro do sistema de arquivos;
• UFD (User File Directory): é criado um diretório raiz (Master File Directory) 
MFD que possui índices a partir do nome de usuário apontando então os 
arquivos pertencentes a este;
• Em árvore: diretório raiz (tronco) possui referências a outros diretórios 
(subdiretórios) (galhos) e estes indicam arquivos (folhas) ou outros diretórios 
(galhos).
ESTRUTURA EM 1 NÍVEL
ESTRUTURA EM 2 NÍVEIS
ESTRUTURA EM ÁRVORE
ORGANIZAÇÃO DE 
ARQUIVOS
• Arquivos podem ter sua estrutura definida pelo S.O. ou pela aplicação;
• Arquivos binários e texto;
• A estrutura mais simples de um arquivo é uma sequência de bytes (como 
arquivos texto ou binários definidos pelas aplicações);
• Arquivos organizados em estruturas normalmente são geridos pelo S.O. em 
registros fixos ou variáveis e se dividem em três formas:
• Sequencial;
• Relativa;
• Indexada.
ORGANIZAÇÃO DE ARQUIVOS
(a) Sem organização
(b) Arquivos divididos em registros e ligados até um registro final
MÉTODOS DE ACESSO
• Os arquivos são armazenados no hardware em diversas partes e a partir de 
métodos de acesso providos pelo Sistema Operacional de acordo com o tipo 
de sistema de arquivos definido, estes são acessados:
• Método Sequencial: associado a fitas, cujo meio natural de acesso deve ser 
sequencial;
• Método direto: utilizado a partir do advento de discos rígidos, cujas cabeças 
de leitura podem ser mover entre trilhas e setores. Um arquivo é 
referenciado pela posição a partir do início do disco;
• Método indexado: Utiliza índice que aponta os diversos registros no disco, 
não sendo necessário percorrer todos os registros sequencialmente para 
obter-se o registro solicitado pela aplicação.
ACESSO DIRETO
Vamos desenhar os outros dois métodos de acesso?!
Sequencial e Indexado.
ENTRADA E SAÍDA (E/S)
• Como já dito, o acesso aos arquivos 
é feito de forma transparente, entre 
aplicação e hardware;
• O sistema operacional disponibiliza 
rotinas de Entrada e Saída;
• Open, read, write, close, delete, 
create e change attributes.
#include	
  <stdio.h>	
  
struct	
  s	
  
{	
  
char	
  name[50];	
  
int	
  height;	
  
};	
  
int	
  main(){	
  
	
  	
  	
  	
  struct	
  s	
  a[5],b[5];	
  	
  	
  	
  
	
  	
  	
  	
  FILE	
  *fptr;	
  
	
  	
  	
  	
  int	
  i;	
  
	
  	
  	
  	
  fptr=fopen("file.txt","wb");	
  
	
  	
  	
  	
  for(i=0;i<5;++i)	
  
	
  	
  	
  	
  {	
  
	
  	
  	
  	
  	
  	
  	
  	
  fflush(stdin);	
  
	
  	
  	
  	
  	
  	
  	
  	
  printf("Enter	
  name:	
  ");	
  
	
  	
  	
  	
  	
  	
  	
  	
  gets(a[i].name);	
  
	
  	
  	
  	
  	
  	
  	
  	
  printf("Enter	
  height:	
  ");	
  	
  
	
  	
  	
  	
  	
  	
  	
  	
  scanf("%d",&a[i].height);	
  	
  
	
  	
  	
  	
  }	
  
	
  	
  	
  	
  fwrite(a,sizeof(a),1,fptr);	
  
	
  	
  	
  	
  fclose(fptr);	
  
	
  	
  	
  	
  fptr=fopen("file.txt","rb");	
  
	
  	
  	
  	
  fread(b,sizeof(b),1,fptr);	
  
	
  	
  	
  	
  for(i=0;i<5;++i)	
  
	
  	
  	
  	
  {	
  
	
  	
  	
  	
  	
  	
  	
  	
  printf("Name:	
  %s\nHeight:	
  %d",b[i].name,b[i].height);	
  
	
  	
  	
  	
  }	
  
	
  	
  	
  	
  fclose(fptr);	
  
}
EXEMPLO DE OPERAÇÕES COM 
ARQUIVOS EM C
GERÊNCIA DE ESPAÇO LIVRE
• Para inserir dados em disco o sistema operacional precisa conhecer quais blocos estão livres 
para alocação de registros dos arquivos;
• Normalmente a informação é armazenada em um tipo de estrutura dedicada a indicar aqueles 
blocos disponíveis:
• Essa estrutura ou simplesmente tabela, tem suas entradas modificadas a cada vez que um 
arquivo é deletado ou criado logicamente no disco.
• São três os tipo de tabela utilizadas pelos S.O. para esta gerência:
• Bitmap: para cada espaço no disco é preciso um bit que indique seu status;
• Lista encadeada de blocos livre: cada bloco livre indica o próximo;
• Tabela de espaço livre: Uma tabela que contém o início de cada conjunto de blocos livres.
TIPOS GERÊNCIA DE ESPAÇO LIVRE
GERÊNCIA DE ESPAÇO 
ALOCADO
• Ao passo que é necessário no momento de se criar arquivos 
gerenciar o espaço em disco livre, em cada criação, abertura 
ou manipulação de arquivos o sistema de arquivos deve ser 
capaz de mapear como alocar e onde estão os registros;
• São três os tipos de alocação:
• Contígua;
• Encadeada;
• Indexada.
ALOCAÇÃO CONTÍGUA
• Nesse método de alocação os registros são gravados em disco de forma sequencial,fisicamente falando;
• É preciso que haja uma sequência de blocos (clusters) com tamanho mínimo dos arquivo que se deseja 
alocar ;
• O disco pode ser visto como um conjunto sequencial de clusters, cujos conjuntos são chamados segmentos. 
Conjuntos de clusters ocupados e livres são chamados segmentos ocupados e livres, respectivamente.
• A localização desses segmentos livres deve utilizar estratégias para que haja menos fragmentação possível:
• First-fit;
• best-fit - percorre toda a lista de segmentos a menos que estejam ordenados por tamanho;
• worst-fit - percorre toda a lista de segmentos a menos que estejam ordenados por tamanho.
ALOCAÇÃO CONTÍGUA
Problemas? Fragmentação DO ESPAÇO e crescimento dos arquivos!
ALOCAÇÃO ENCADEADA
• Os blocos que compõem um arquivo são espalhados no disco;
• Cada bloco (extents) possui a referência para o próximo bloco do arquivo;
• Não possui fragmentação de espaço, mas de arquivos;
• Acesso é feito de forma sequencial;
• Problemas:
• Pesquisa sequencial pode exigir diversas buscas (seeks) para recuperar todo 
arquivo;
• Exige desfragmentação. 
ALOCAÇÃO ENCADEADA
ALOCAÇÃO INDEXADA
• Possui uma tabela de índice de todos os arquivos em disco;
• Soluciona o problema causado pelo acesso sequencial;
• Os ponteiros permitem que partes do arquivo sejam 
encontrados pelo endereço em disco diretamente.
ALOCAÇÃO INDEXADA
COMANDOS LINUX
• Listagem de diretórios e arquivos: comando pwd e ls:
• Listam caminhos absolutos e relativos;
• Variável de ambiente $PWD;
• Manipulando arquivos: comando cp, mv e rm:
• cp - copia (para diretórios use o argumento -r);
• mv - move;
• rm - remove (para diretórios use o argumento -r).
• Manipulando diretórios: comando mkdir e rmdir :
• mkdir - cria diretório;
• rmdir - remove diretório.
COMANDO LS
COMANDO CP E MV
COMANDOS RECURSIVOS

Continue navegando