6 Sistema de Arquivos
6.1 Conceitos Básicos
•Necessidades:
–Armazenar uma grande quantidade de informações; –Informação deve ser persistente;
–Informação pode ser acessada por vários processos. •Arquivos
–Abstração para armazenamento de informações no disco; •Estrutura de Arquivos
–Seqüência de bytes (sem estrutura)
•máxima Flexibilidade. É possível estruturar os arquivos conforme necessidade da aplicação. Ex.: DOS e UNIX.
–Registros
•arquivos são uma seqüência de registros. Ex.: computadores antigos.
–Árvores
•informações são organizadas em estrutura de dados do tipo árvore. Ex.: Mainframe.
•Tipos de Arquivos –Regulares
•arquivos com informações do usuário; •existem arquivos texto e binário;
•cada SO tem um padrão para arquivos. Ex.: arquivos texto no DOS e UNIX são diferentes; –Diretórios
•são arquivos especiais do SO para manter estrutura do sistema de arquivos.
–Arquivos especiais de caracteres e arquivos especiais de bloco
•tipos de arquivos especiais para mapear dispositivos de E/S. Ex.: impressora e cdrom. •Acesso a Arquivos
–Arquivos Seqüenciais
•utilizando primitivas para leitura e escrita de dados.
–Arquivos Randômicos ou Aleatórios
posicionar o ponteiro de arquivo em qualquer parte.
•Atributos de Arquivos
–Arquivos possuem atributos que determinam suas características. Ex.: tamanho, data de criação, data de último acesso, etc.
•Operações sobre Arquivos
–create, delete, open, close, read, write, append, seek, get/
set attributes, rename.
•Arquivos Mapeados na Memória
–Alguns SO permitem mapear arquivos no espaço de endereçamento de processos;
–Utiliza primitivas map e unmap;
–Usa arquivos como se fosse memória física; –É mais fácil de implementar com segmentos; –Dificuldades:
•saber tamanho de arquivos de saída;
•versões inconsistentes (dois ou mais processos que mapeiam o mesmo arquivo);
•arquivos muito grandes (maior que um segmento). •Diretório
–É um tipo de arquivo;
–É uma coleção de nodos contendo informações sobre arquivos;
–Contém ou não os atributos de arquivos. Caso não contenha, estes são armazenados em blocos separados. •Hierarquia de Diretórios
–Diretório contém um número de entradas com nomes, atributos e posição do arquivo no disco;
/ ... hda cdrom ls a.out core a r q u i v o s d e v etc h o m e t m p u s r b i n a n a l u cac b i n X 1 1 p r o g s m i s c g a m e s diretórios
Figura 6.1 Exemplo de Hierarquia de Arquivos
árvore. •Caminhos (path)
–Determinam a posição de um arquivo na árvore de diretórios. Tipos de diretório:
•diretório raiz: diretório primário de determinado sistema de arquivos. Normalmente representado por / ou \;
•diretório de trabalho (ou corrente): é aquele em que o processo está executando. Pode ser alterado pelo processo;
•diretório absoluto: é aquele representado em relação ao diretório raiz;
•diretório relativo: é aquele representado em relação ao diretório de trabalho.
•Operações sobre Diretórios
–create, delete, opendir, closedir, readdir, rename, link e
unlink;
6.2 Implementação de Arquivos
•Como implementar arquivos?
–Um bloco é constituído de um ou mais setores;
–O tamanho do bloco é definido pelo SO no momento da formatação;
–A implementação de arquivos consiste em associar blocos de disco com os arquivos;
–Alguns blocos do disco armazenaram os diretórios e informações gerais do disco. Outros terão os dados dos arquivos;
–Existem várias técnicas para implementar arquivos. As principais são: Alocação Contígua, Lista Encadeada, Lista Encadeada Usando Índice e Indexada.
•Alocação Contígua
–Nessa técnica os arquivos são armazenados em um bloco contíguo de dados;
simples de implementar
•é possível armazenar nas entradas do diretório somente o número do endereço do primeiro bloco. desempenho excelente
•única Operação lê o arquivo inteiro; •é o mais rápido de todos.
Tamanho do Arquivo deve ser conhecido no momento da gravação
Fragmentação (externa) de disco
0 1 2 3 4 5 6 7 8 9 1 0 1 1 1 2 1 3 1 4 1 5 1 8 1 9 2 0 2 1 2 2 2 3 1 6 1 7 2 6 2 7 2 8 2 9 3 0 3 1 2 4 2 5
arquivo início tamanho ===================== prova.tex 20 4 a.out 4 6 core 10 3 prog.asm 14 5 prova.ps 25 7 .bashrc 2 1
Figura 6.2 Alocação Contígua
•Alocação com Lista Encadeada
–Consiste em manter arquivos como listas encadeadas de blocos;
nenhum espaço é perdido na fragmentação
simples para o SO implementar diretórios (é necessário armazenar somente endereço do primeiro bloco)
apesar da leitura seqüencial ser rápida a aleatória é lenta (têm de ser seqüencializada)
dados armazenados em blocos não são potências de dois (devido ao ponteiro da lista encadeada)
0 1 2 3 4 5 6 7 8 9 1 0 1 1 1 2 1 3 1 4 1 5 1 8 1 9 2 0 2 1 2 2 2 3 1 6 1 7 2 6 2 7 2 8 2 9 3 0 3 1 2 4 2 5
arquivo início fim ===================== prova.ps 18 6
•Alocação com Lista Encadeada Usando Índice –Elimina desvantagens anteriores;
–Utiliza ponteiro para cada bloco armazenado em uma tabela ou índice na memória;
–MS-DOS / Windows 95 usam esse método. É
denominado Tabela de Alocação de Arquivos TAA (ou
File Alocation Table – FAT);
arquivo bloco inicial ================== prova.ps 5 9 17 27 22 -1 5 9 17 22 27
Figura 6.4 Alocação com Lista Encadeada Usando Índice
todos blocos são utilizados
facilita acesso aleatório (apesar de ter de percorrer uma lista, ela está na memória)
do arquivo
tabela ou índice deve estar na memória todo o tempo •Alocação Indexada ou Nó Índice (Inode)
–Associar a cada arquivo uma tabela nó índice
(index-node);
–Tabela contém o atributo e os endereços dos blocos de arquivo; 0 1 2 3 4 5 6 7 8 9 1 0 1 1 1 2 1 3 1 4 1 5 1 8 1 9 2 0 2 1 2 2 2 3 1 6 1 7 2 6 2 7 2 8 2 9 3 0 3 1 2 4 2 5 ... 5 9 17 27 22 -1
arquivo bloco índice ================== prova.ps 3
–Arquivos pequenos usa somente o nó índice para
armazenar os endereços dos blocos de dados do arquivo; –Arquivos maiores usam blocos especiais que apontam para extensões do nó índice que contêm endereços de blocos de dados no disco:
•bloco indireto simples, duplo e triplo. –Usado no UNIX (incluindo Linux, BSD e outros).
bom desempenho (mantendo blocos em grupos por arquivos e nós índice em uso na memória)
bloco indireto triplo bloco indireto duplo bloco indireto simples
bloco direto n ... bloco direto 2 bloco direto 1 contador de links tamanho horas/ datas donos modo dados dados dados bloco direto n ... bloco direto 1 bloco direto n ... bloco direto 1 dados dados bloco direto n ... bloco direto 1 bloco direto n ... bloco direto 1 dados dados dados dados
6.3 Implementação de Diretórios
•Armazenar informações necessárias para encontrar blocos no disco:
–endereço do arquivo;
–número do primeiro bloco ou do nó índice. •Mapeia o nome do arquivo na informação necessária para localizar os dados;
•Atributos podem ser armazenados nos diretórios (MS-DOS) ou em estruturas separadas (UNIX).
Nome do Arquivo 1-8 Extensão 9-11 Código usuário 0 Continua 12 16-31 Reservado 13-14 Contador blocos 15 N ú m e r o s d o s B l o c o s n o D i s c o
Figura 6.7 Implementação de Diretório no CP/M
Nome do Arquivo nó índice
6.4 Gerenciamento do Espaço em Disco
•Armazenamento de dados pode ser contíguo ou não:
–Mesma diferença que segmentação pura e paginação; –Movimentação custosa no disco;
–Normalmente arquivos são compostos por blocos de tamanhos fixos não adjacentes.
•Tamanho do Bloco
–Arquivos no UNIX têm tamanho médio de 1k (MULLER e TANENBAUM, 1984)
–Caso o bloco seja muito grande ocorre um desperdício de espaço em disco;
–Caso blocos sejam muito pequenos é lento para acessar os arquivos, se estes estiverem fragmentados;
–Usualmente blocos são de 512, 1k, 2k ou 4k bytes; –Blocos devem ter no mínimo o tamanho de um setor; –Blocos maiores que um setor, trabalham sempre com dois ou mais em operações indivisíveis.
11111111 00001111 11111100 11000000 11111111 00001111 11111100 11000000 11111100 11000000 11111111 M a p a d e Bits Lista e n c a d e a d a 200 18 42 8 19 150 322 450 ... 215 96 310 40 29 160 100 560 861 ...
Figura 6.9 Controle de espaço livre em disco
–Lista encadeada de blocos
•cada bloco armazena tantos números de blocos livres quanto cabe;
•utiliza blocos não ocupados para armazenar a lista encadeada;
•Ex.: Blocos de 1K, endereços de bloco de 16 bits: – cada bloco armazena 511 blocos livres; –Disco de 20M necessita de 40 blocos no máximo.
•Ex.: MS-DOS, BSD e UNIX System 7. –Mapa de bits
•Blocos livres representados por 1 e alocados por 0;
•Requer menos espaço na média (somente com o disco quase cheio lista encadeada ocupa menos); •Ex.: Disco de 20M necessita 20k para o mapa de bits, isto é, 3 blocos;
•Ex.: MacOS, LINUX, 4.3 BSD e Windows NT. simples e eficiente (se mapa estiver na
memória)
melhor (no geral) e mais usado •Cotas no disco
–O administrador associa a cada usuário um espaço máximo do disco que este pode utilizar. Esse espaço recebe o nome de cota do usuário.
–Mecanismo Típico
•existe uma tabela que contém as cotadas dos usuários com arquivos abertos;
•quando todos os arquivos de determinado usuário são fechados, as cotas são armazenadas em disco; •arquivos abertos ao serem alterados no tamanho fazem com que o sistema operacional altere a cota do seu dono.
–Limite lógico (soft) e físico (hard)
•o limite lógico pode ser excedido eventualmente, mas o limite físico não;
•SO determina um limite de tempo/ uso para usuário ficar acima da cota (ultrapassar o limite lógico)
6.5 Arquivos Compartilhados
•Motivação
–Muitos usuários de um mesmo projeto precisam compartilhar arquivos;
–É conveniente um mesmo arquivo aparecer simultaneamente em diferentes diretórios.
/ ... a.out h o m e t m p u s r a n a l u cac ...
Figura 6.10 Exemplo de Arquivo Compartilhado
Grafo Dirigido Acíclico e não mais como uma árvore. •Problema de Implementação
–É difícil o compartilhamento em sistemas de arquivos nos quais os diretórios contenham endereços de disco (ex: CP/M).
•Alternativas para compartilhamento de arquivos • Ligações Físicas (Hard Links)
–Endereços de disco não listados em diretórios mas em estruturas separadas. Arquivos compartilhados são ponteiros para estas estruturas;
–Estruturas mantêm um contador de ligações.
1024 1024 Nó Indice de a.out 1 0 2 4 a n a l u cac a.out a.out
Figura 6.11 Exemplo de Ligação Física a um arquivo
criação de ligação não altera posse e pode causar problema com uso de cotas
velocidade de acesso idêntica seja através da referência original ou por qualquer ligação
• Ligações Simbólicas (Symbolic Links)
– Sistema cria um novo arquivo do tipo link que contém o caminho do arquivo ligado.;
–Somente o verdadeiro dono mantém um ponteiro para a estrutura do arquivo e pode apagá-lo;
–Remover um link não afeta o arquivo.
sobrecarga extra necessária para acessar o arquivo
muitas vezes pode necessitar de uma estrutura extra para o link
podem ser utilizados para ligar arquivos em máquinas diferentes 1024 245 a.out Nó Indice de a.out 1 0 2 4 a n a l u cac Nó Indice de arquivo do tipo link /home/analu /a.out a.out 2 4 5
•Com Links, arquivos podem ter vários caminhos distintos: –pode ocorrer problema com criação de cópias de segurança.
6.6 Confiabilidade
•A destruição de arquivos em uma empresa é mais custosa que a perda de componentes de hardware
•Restauração de erros no disco: –É difícil;
–Consome tempo;
–Em alguns casos, impossível.
•Gerenciamento de Blocos Defeituosos – BB (Bad Blocks) –Discos normalmente têm blocos defeituosos; –Solução por Hardware:
•dedica um setor do disco para lista de blocos defeituosos;
•na inicialização da controladora mapeia blocos reserva em blocos defeituosos.
–Solução por Software:
defeituosos;
•arquivo nunca deve ser acessado. •Cópias de Segurança (backups)
–São usados dispositivos como fitas, discos óticos, magnéticos, etc.;
–Técnica usual é a replicação de dados
necessita do dobro da capacidade de disco –A cópia pode ser incremental;
–Ex.: Bit Archive do MS-DOS:
•no backup os bits são zerados;
•quando os arquivos são modificados, o sistema operacional coloca um nos bits archive
automaticamente. •Consistência
–Travamentos do sistema e faltas de luz causam inconsistências;
–Utilitários para verificação de consistência (ex.: NDD e Scandisk no Windows 9x);
UNIX, Windows 98);
–Pode ser realizada a consistência de bloco e de arquivos. •Verificação de Consistência (Utilizando o UNIX como exemplo)
–De bloco:
•construir uma tabela com dois contadores por bloco, ambos inicializados em zero;
•primeiro contador mantém o número de vezes que os blocos estão presentes em arquivos, o segundo contado o número de vezes que os blocos
aparecem na lista livre;
•todos os blocos são examinados e o sistema é considerado consistente se um contador é um e outro é zero para cada bloco do disco;
•inconsistências possíveis:
–bloco faltando (missing block ou lost
cluster). É indicada por zero em ambos os
contadores. Para resolver basta adicionar o bloco à lista de blocos livres;
–bloco aparece mais de uma vez na lista livre. Solução é reconstruir a lista livre;
–bloco presente em um ou mais arquivos. Para resolver esse problema é feita uma cópia do bloco e associado um bloco para cada arquivo;
–bloco aparece como presente em ambos os contadores. Portanto, deve ser feita a remoção do bloco da lista livre. –De Diretórios:
•tabela de contadores por arquivos;
•percorre a hierarquia, incrementado o contador para cada arquivo encontrado;
•compara o número do contador com o contador de
links. Caso ambos estejam iguais o sistema está
consistente; •inconsistências:
–contador de links > entradas nos diretório. Removendo todos, o contador não será zero e o arquivo não será removido. Para
consertar basta alterar o contador de links; –contador de links < entradas nos
o arquivo seria apagado. A solução é alterar o contador de links.
–Consistência de bloco e diretórios normalmente é integrada por questões de eficiência.
•Apagar arquivos (lógica/física)
–Quando arquivos são eliminados pelo usuário é possível a utilização, de forma automática pelo SO, de um diretório para mante-los temporariamente. Quando isso ocorre dizemos que o SO trabalha com eliminação lógica de arquivos (Ex.: MacOS e Windows 95). Para que o arquivo seja definitivamente apagado, o usuário faz a solicitação através de um comando do SO.
6.7 Desempenho
•Disco é mais lento que memória;
•É comum a utilização de uma memória cache, para acelerar o acesso
–Cache: coleção de blocos pertencentes logicamente a um arquivo mas mantidos na memória;
–Na leitura verifica se o bloco está no cache. Caso contrário lê do disco e coloca no cache;
–Para substituição de bloco são utilizados os mesmos algoritmos de substituição de página:
•referências a cache são relativamente infreqüentes (é aceitável manter os blocos na ordem LRU); •é indesejável usar o LRU puro por causa de inconsistências devido a falhas;
•usa-se um LRU modificado levando em conta a utilização freqüente e a importância do bloco para consistência.
•Mesmo preservando a integridade dos arquivos é indesejável deixar um arquivo muito tempo no cache.
–Exemplos de duas abordagens: UNIX e MS-DOS •UNIX: chamada de sistemas sync
–força a gravação de blocos modificados; –um daemon força a chamada de sync periodicamente (30 segundos).
•MS-DOS: normalmente grava todos os blocos modificados no disco
–técnica denominada de cache
–Abordagem no UNIX é mais eficiente.
•Além do cache, outras medidas para aumentar o desempenho: –Defragmentação do disco periódica.
0 1 2 3 4 5 6 7 8 9 1 0 1 1 1 2 1 3 1 4 1 5 1 8 1 9 2 0 2 1 2 2 2 3 1 6 1 7 2 6 2 7 2 8 2 9 3 0 3 1 2 4 2 5 0 1 2 3 4 5 6 7 8 9 1 0 1 1 1 2 1 3 1 4 1 5 1 8 1 9 2 0 2 1 2 2 2 3 1 6 1 7 2 6 2 7 2 8 2 9 3 0 3 1 2 4 2 5
Figura 6.13 Defragmentação do disco
–Manter os blocos de mesmos arquivos contíguos (no mesmo cilindro);
–Manter os nós índices no centro do disco;
–Dividir o disco em grupos de cilindros (Ex.: BSD 4.3 e LINUX);
–Manter diretórios como árvore B+ (Ex.: Windows NT);
6.8 Estudo de Caso
6.8.1 MS-DOS e Windows 95/98 (FAT 16 e 32)
•DOS 1 usava entradas na FAT de 12 bits (Ainda usada hoje em disquetes);
•DOS 2 introduziu a FAT de 16 bits para suportar discos rígidos; •Em 1987 foi detectado um problema na operação de baixo nível para retornar um setor do disco que passava um valor de 16 bits. Veja: 65526 valores na FAT de 16 bits multiplicados por 512 bytes (tamanho do setor) = 32 MB;
•DOS 4 corrigiu o problema detectado em 1987 alterando a operação de baixo nível para manipular setores, que passou a usar parâmetros de 32bits;
Nome do Arquivo 0-7 Extensão 8-10 Atributos 11
Reservado para uso futuro 12-21 hora 22-23 data 24-25 cluster inicial 26-27 tamanho 28-31
•O Windows 95 ainda utiliza FAT 16 e possui um limite de discos até 2GB. Esse limite ocorre devido a programas existentes, pois um disco de 2GB teria clusters de 64k que não cabem em um registro de 16bits (utilizados por muitos
programas). Mesmo assim, existe o limite do sistema operacional de discos maiores que 4GB, pois este armazena o número de setores por cluster em um único byte;
•A única modificação do Windows 95 foi chamar a FAT 16 de VFAT, permitindo a utilização de nomes longos, utilizando entradas de diretório adicionais para armazena-los.
•Uma versão modificada do Windows 95 introduziu FAT 32. Entradas da FAT e numeração de setores são 32 bits. Com isso é possível utilizar 4.294.967.296 valores distintos de 32bits, que multiplicados por 512 bytes permitem discos de 2 terabytes;
Nome do Arquivo 0-7 Extensão 8-10 Atributos 11 capitali-zação 12 hora últ. modif. 22-23 data últ. modif. 24-25 cluster inicial-L 26-27 tamanho 28-31 m s e g .da criação 13 hora criação 14-15 hora acesso 16-17 data acesso 18-19 cluster inicial-H 20-21
•O Windows 98 continua utilizando a mesma FAT 32. •Comparação do Tamanho do cluster com FAT 16 e 32:
–A Tabela 6.1 e a Tabela 6.2 apresentam os tamanhos dos cluster usados por FAT 16 e 32 respectivamente.
Tabela 6.1 Tamanho do Cluster com FAT 16
Tamanho do Disco Setores por Cluster Tamanho do Cluster
Menos que 128MB 4 2k
Menos que 256MB 8 4k
Menos que 512MB 16 8k
Menos que 1GB 32 16k
Menos que 2GB 64 32k
Menos que 4GB 128 64k (Problema com
programas existentes) 4GB ou mais 256 (Problema com
S.O.)
Tabela 6.2 Tamanho do Cluster com FAT 32
Tamanho do Disco Tamanho do Cluster
Menos que 8GB 4k
Menos que 16GB 8k
Menos que 32GB 16k
32GB ou mais 32k
•Vantagens da FAT 32:
–Suporta drives de até 2 TeraBytes;
GigaBytes), resultando em uso mais eficiente do disco (entre 10 e 15% menos em relação à FAT 16);
–Habilidade de relocar o diretório raiz usar a cópia de backup da FAT ao invés da cópia padrão;
–Registro de boot foi expandido para incluir cópias de segurança das estruturas críticas;
–O diretório raiz é uma cadeia de clusters convencional. O limite de entradas no diretório raiz não existe mais.
•Desvantagens da FAT 32:
–Problema de desempenho/ fragmentação; –Sem proteção de acesso.
6.8.2 Windows NT (NTFS)
•NTFS divide o disco em volumes (partições lógicas); •Volumes são divididos em clusters (potências de dois) como FAT 32;
•Os endereços de disco são os LCN (Logical Cluster Numbers): –Numeração seqüencial do início ao fim do disco. •Arquivos são objetos que contém atributos como nome, data de criação, dados, etc.
e não residentes (grandes, ex: dados);
–Cada arquivo é identificado por uma referência (endereço de 64 bits) que indica sua posição na tabela mestra de arquivos – MFT (Master File Table); •Diretórios são arquivos com o atributo índice:
–Árvore B+ com o nome, referência, tamanho e data da última modificação dos arquivos no diretório;
–Elimina custo de reorganização da árvore e a distância de qualquer caminho desde a raiz até uma folha da árvore é idêntico.
•Metadados do volume:
–Tabela Mestra de Arquivos:
•descreve todos os arquivos do sistema, atributos residentes, blocos de extensão (para atributos não residentes);
•arquivos pequenos são todos armazenados nessa tabela.
–Arquivo de Log:
•armazena alterações nos metadados; •NTFS utiliza transações para facilitar
recuperação. –Arquivo do Volume:
•Nome, versão do NTFS, bit de consistência. –Tabela de definição de atributos:
•Define os atributos e as operações do volume. –Diretório Raiz;
–Arquivo com Mapa de bits:
•Apresenta a ocupação dos clusters. –Arquivo de boot:
•Código de inicialização do NT. –Arquivo de clusters defeituosos.
6.8.3 Linux (ext2 - Extend File System 2)
•Utiliza alocação indexada ou nós índice; •Diretórios são arquivos normais:
–Cada bloco é uma lista encadeada de entradas com seu tamanho, nome do arquivo e nó índice;
•Ext2 divide o disco em blocos pequenos (1k - default, 2k ou 4k).
Nome do Arquivo bloco índice tamanho da
entrada
tamanho do nome
0-3 4-5 6-7
Figura 6.16 Entrada de Diretório no Linux
•Divide o disco em múltiplos grupos de blocos.
–Política de alocação tenta colocar blocos relacionados de um arquivo próximos fisicamente;
–Blocos de dados são colocados no mesmo grupo do seu nó índice, sempre que possível;
–Blocos de nós índice são alocados no mesmo bloco de seu diretório anterior;
–É utilizada pré-alocação de blocos para arquivos abertos; –O problema da fragmentação é minimizado pois blocos relacionados estão próximos (no mesmo cilindro); –Mantém informações relacionadas no mesmo bloco mas também espalha a carga pelos blocos do disco;
–Grupos de blocos têm o mapa de bits da ocupação.
6.9 Segurança
•Definição de Segurança e Proteção
–Segurança: problema geral, garantir que arquivos não são acessados por pessoas não autorizadas;
–Proteção: mecanismo utilizado pelo Sistema Operacional para garantir a segurança (guardar a informação).
•Causas comuns de perdas de dados –Atos de Deus;
–Erros de software ou hardware; –Erros Humanos.
•Uso de cópias de segurança resolve problemas de perdas de dados
•Ataques de Intrusos:
–Existem intrusos passivos, que somente desejam consultar informações, e ativos (querem destruir ou modificar as informações);
–Vários tipos de intrusos, com objetivos distintos; –Segurança necessária depende do tipo de intruso. •Privacidade
–Proteger o mau uso de informações sobre usuários; –Existem questões legais e morais.
•Princípios Gerais para criar um Sistema Operacional Seguro (Saltzer e Schroeder,1975):
–Projeto público;
–Não permitir o acesso por default; –Verificar a autoridade corrente; –Dar o menor privilégio possível; –Mecanismo simples de proteção; –Aceitável Psicologicamente. •Autenticação de Usuários
–Método mais comum é o uso de senhas. •funcionamento no UNIX:
–o usuário entra com um login e uma senha.
–existe um algoritmo de encriptação conhecido, que somente consegue
codificar. É provado matematicamente que a decodificação é impossível;
–o algoritmo é aplicado na senha entrada pelo usuário e a string resultante é comparada com a senha encriptada já armazenada no sistema;
permitido;
–nem o administrador do sistema tem acesso a senha real do usuário. •a escolha de senhas é importante. Deve-se combinar letras e números, letras maiúsculas e minúsculas, não usar palavras do dia-a-dia, etc. •quebra de senhas
–senha com 7 letras, escolha aleatória dentre 95 caracteres. Com 1000
encriptações por segundo pode levar 2000 anos;
•a troca periódica de senhas garante uma maior segurança;
•Outras alternativas para usar senhas são: One-time
password (livro com senhas que são utilizadas uma
única vez), questões e respostas encriptadas e challenge-response (algoritmo do usuário com perguntas desafiantes).
–Outros métodos de autenticação necessitam de identificação física:
•Medir características físicas: –Impressão Digital; –Identificação de Voz; –Identificação de Retina; –Análise de Assinatura;
–Medir Comprimento dos Dedos. •Contramedidas:
–Registrar logins; –Manter armadilhas;
–Monitorar os acessos discados.
6.9.1 Mecanismos de Proteção
•Domínios de Proteção:
–Sistemas contêm objetos que devem ser protegidos (hardware / software);
–Proibir processos de acessar objetos não autorizados; –Domínio é um conjunto de pares (objeto, direitos); –Direito é a permissão para realizar determinada operação (ex.: RWX);
–Um objeto pode pertencer a vários domínios com direitos diferentes;
–Cada processo executa em um domínio. •Domínio no UNIX:
–Definido pelo uid e gid;
–Dois processos com o mesmo uid e gid têm os mesmos direitos. Definem os objetos acessados;
–Chamada de sistemas causa uma mudança de domínio; –Bits SETUID e SETGID também permitem mudanças de domínio; pvm [R] src [RW] bin [RWX] cdrom [RX] work [RW] private [RWX] games [RX] printer [W]
cac, g3pd analu, users
Figura 6.17 Proteção no UNIX
•Domínio no MULTICS
–São usados anéis de proteção (domínio=anel); –Existem 64 domínios distintos;
permitem mudança de domínio. 0 1 2 3 sistema operacional utilitários críticos professores alunos
Figura 6.18 Proteção no MULTICS
•Como o SO controla que processos pertencem a que domínios? Conceitualmente:
–Grande matriz;
–Linhas domínios e colunas objetos;
–Domínios podem ser incluídos nas colunas para permitir a troca de contexto; R W R R W X R W R W R R W X W R R R W R
Arq1 Arq2 Arq3 Arq4 Arq5 Cdrom Printer Scanner Objetos D o m í n i o s 1 2 3 ... ... ... ... ... ... ... ... ... ... ... ... ...
–Na prática impossível de implementar, pois matriz é grande e esparsa.
•Listas de Controle de Acesso – ACL (Access Control List) –Armazenar a matriz de proteção por colunas, mantendo os elementos não vazios;
–Consiste em associar a cada objeto uma lista ordenada contendo os domínios que podem acessar os objetos e de que forma;
–É possível proibir usuários e grupos específicos de acessar objetos, enquanto permite todos os outros de mesma classe acessarem;
–UNIX usa uma ACL com 9 bits (RWX para dono, grupo e outros);
–Donos de objetos podem alterar sua ACL;
–Alteração não afeta usuários que estão atualmente usando.
•Capacidades
–Armazenar a matriz de proteção por linhas, mantendo os elementos não vazios;
podem ser acessados, bem como as operações permitidas; –Esta lista recebe o nome de lista de capacidade e cada item individual (domínio) é chamado de capacidade; –Campos da Lista de Capacidade:
•Tipo de Objeto; •Permissões;
•Ponteiro para o Objeto.
–Deve-se proteger a Lista de Capacidade;
–É possível definir direitos genéricos aplicáveis a todos objetos (ex.:copiar, remover, destruir).
6.10 Exercícios
1) O que são sistemas de arquivos? 2) O que são arquivos?
3) O que são diretórios? 4) Por que utilizar arquivos?
5) Fale sobre a extensão de arquivos. Cite 4 exemplos. 6) Descreva as três estruturas de arquivos estudadas. Qual a
melhor?
deles.
8) Diferencie acesso seqüencial de acesso aleatório. 9) Descreva 5 atributos de arquivos.
10) Fale sobre 5 operações sobre arquivos.
11) O que são arquivos mapeados na memória? Por que utilizar? 12) Diferencie caminho relativo de absoluto.
13) Fale 5 operações sobre diretórios.
14) Como funciona a implementação de arquivos por alocação contígua?
15) Disserte sobre a implementação de arquivos utilizando listas encadeadas. Apresente vantagens e desvantagens.
16) Descreva a implementação de arquivos empregando a alocação com listas encadeadas usando índice. Qual S.O emprega esta abordagem?
17) O que são nós índice? Como funcionam? Qual a vantagem da sua utilização sobre a abordagem do MS-DOS?
18) Quais as informações que podem ser armazenadas em uma entrada de diretório?
20) Descreva os diretórios no MS-DOS. 21) Como o UNIX implementa diretórios?
22) O que são e para que servem arquivos compartilhados? 23) Fale sobre links simbólicos. Compare com a outra alternativa
estudada.
24) Apresente e descreva as duas formas de gerenciar o espaço livre em disco.
25) O que são cotas de disco?
26) Fale sobre o gerenciamento de blocos defeituosos.
27) Descreva o modo de testar a consistência de arquivos através de blocos. Quais as possíveis situações?
28) Fale sobre o modo de testar a consistência de diretórios. 29) Diferencie segurança de proteção.
30) Como funciona o sistema de senhas no UNIX? 31) O que é um domínio de proteção?
32) Fale sobre listas de controle de acesso. 33) O que é lista de capacidades?
34) Fale sobre os modelos de proteção.
desvantagens.
36) Explique como o Windows NT e LINUX implementam arquivos.