Baixe o app para aproveitar ainda mais
Prévia do material em texto
Sistemas Operacionais com Java Silberschatz, Galvin e Gagne (c) 2003 Aula 12 Capítulo 11 – Interface do Sistema de Arquivos • 11.1 Conceito de Arquivo • 11.2 Métodos de Acesso • 11.3 Estrutura de Diretório • 11.6 Proteção Sistemas Operacionais com Java Introdução Silberschatz, Galvin e Gagne (c) 2003 • O sistemas de arquivos é o componente mais visível de um SO. • O sistema de arquivos é constituído de duas partes distintas: uma coleção de arquivos, que armazenam dados, e uma estrutura de diretórios, que organiza e fornece informações sobre os arquivos do sistema. Sistemas Operacionais com Java 11.1 Conceito de arquivo • Os computadores podem armazenar informações em vários meios de armazenamento diferentes: discos magnéticos, fitas magnéticas e discos óticos. • O SO fornece uma visão lógica uniforme do armazenamento de informações. • O SO abstrai das propriedades físicas de seus dispositivos de armazenamento para definir uma unidade de armazenamento lógica – o arquivo. Silberschatz, Galvin e Gagne (c) 2003 Sistemas Operacionais com Java 11.1 Conceito de arquivo • Os arquivos são mapeados, pelo SO, em dispositivos físicos. Esses dispositivos são, normalmente, não- voláteis (seu conteúdo persiste nos casos de falta de energia ou reinicialização do sistema ). • Arquivo – coleção de informações correlatas que recebe um nome e é gravado no armazenamento secundário. Silberschatz, Galvin e Gagne (c) 2003 Sistemas Operacionais com Java 11.1 Conceito de arquivo • Na visão do usuário, um arquivos é a menor unidade alocável de armazenamento secundário lógico. • O arquivo pode armazenar vários tipos de dados: programas-fonte, programas-objeto, programas- executáveis, dados numéricos, textos, registros de pagamento, imagens gráficas, registros de sons, e muitos outros mais. Silberschatz, Galvin e Gagne (c) 2003 Sistemas Operacionais com Java 11.1.1 Atributos de arquivo • Um arquivo tem determinado atributos, que variam de um SO para outro, mas em geral consistem em: – Nome – nome simbólico, legível pelo homem. – Tipo – determinar qual o tipo do arquivo. – Posição – é um ponteiro para um dispositivo e a posição do arquivo no dispositivo. Silberschatz, Galvin e Gagne (c) 2003 Sistemas Operacionais com Java 11.1.1 Atributos de arquivo • Um arquivo tem determinado atributos, que variam de um SO para outro, mas em geral consistem em: – Tamanho – tamanho atual do arquivo(em bytes, palavras ou blocos). – Proteção – controle de acesso, quem pode realizar operações de leitura, escrita, execução. – Hora, data e identificação de usuário – são definidas por (1) criação, (2) última modificação e (3) último uso. Silberschatz, Galvin e Gagne (c) 2003 Sistemas Operacionais com Java 11.1.2 Operações com arquivos • Um arquivo é um tipo abstrato de dados. Por isso é necessário considerar as operações que podem ser realizadas sobre ele. • O SO fornece chamadas ao sistema para criar, escrever, ler, reposicionar, excluir e truncar arquivos. Silberschatz, Galvin e Gagne (c) 2003 Sistemas Operacionais com Java 11.1.2 Operações com arquivos • Vamos considerar o que o SO deve fazer para cada uma das seis operações básicas: – Para criar um arquivo: • 1º) deve haver espaço no sistema de arquivo. • 2º) a entrada deve ser feita no diretório, onde registra o nome do arquivo e sua localização. Silberschatz, Galvin e Gagne (c) 2003 Sistemas Operacionais com Java 11.1.2 Operações com arquivos • Vamos considerar o que o SO deve fazer para cada uma das seis operações básicas: – Para escrever em um arquivo: • 1º) faz-se uma chamada ao sistema especificando o nome do arquivo e as informações a serem escritas. • 2º) o sistema posiciona o ponteiro de escrita onde ocorrerá a escrita e atualiza o ponteiro. Silberschatz, Galvin e Gagne (c) 2003 Sistemas Operacionais com Java 11.1.2 Operações com arquivos • Vamos considerar o que o SO deve fazer para cada uma das seis operações básicas: – Para ler um arquivo: • 1º) faz-se uma chamada ao sistema especificando o nome do arquivo e onde (na memória) o próximo bloco do arquivo deverá ser colocado. • 2º) o sistema mantém um ponteiro de leitura para a posição no arquivo na qual a próxima leitura deverá ocorrer. Silberschatz, Galvin e Gagne (c) 2003 Sistemas Operacionais com Java 11.1.2 Operações com arquivos • Vamos considerar o que o SO deve fazer para cada uma das seis operações básicas: – Para reposicionar dentro do arquivo: • 1º) o diretório é pesquisado buscando a entrada apropriada. • 2º) a posição do arquivo atual é ajustada para um determinado valor, essa operação é chamada de busca no arquivo. Silberschatz, Galvin e Gagne (c) 2003 Sistemas Operacionais com Java 11.1.2 Operações com arquivos • Vamos considerar o que o SO deve fazer para cada uma das seis operações básicas: – Para excluir um arquivo: • 1º) pesquisa-se no diretório o arquivo é identificado pelo nome. • 2º) libera-se todo o espaço de arquivo e apaga-se a entrada do diretório. Silberschatz, Galvin e Gagne (c) 2003 Sistemas Operacionais com Java 11.1.2 Operações com arquivos • Vamos considerar o que o SO deve fazer para cada uma das seis operações básicas: – Para truncar um arquivo: • Existem momento em que o usuário deseja apagar o conteúdo do arquivo, mas quer manter os atributos. Em vez dele excluir e depois recriá-lo, essa função permite que todos os atributos permaneçam inalterados, exceto o tamanho, pois será reajustado para o tamanho zero. Silberschatz, Galvin e Gagne (c) 2003 Sistemas Operacionais com Java 11.1.3 Tipos de arquivos Silberschatz, Galvin e Gagne (c) 2003 Sistemas Operacionais com Java 11.2 Métodos de acesso • Método de acesso diz respeito à forma como o conteúdo de um arquivo é acessado. • Existem várias formas das informações no arquivo serem acessadas. • Alguns sistemas fornecem apenas um método de acesso aos arquivos. • Em outros sistemas, muitos métodos de acesso são aceitos, mas escolher o método correto é um problema importante de projeto. Silberschatz, Galvin e Gagne (c) 2003 Sistemas Operacionais com Java 11.2.1 Acesso sequencial • O método de acesso mais simples. • As informações no arquivo são processadas em ordem, um registro após o outro. • Esse modo de acesso é muito usado, os compiladores fazem uma leitura sequencial dos programas fontes, assim como a impressão de um arquivo é feita a partir de sua leitura sequencial. • O acesso sequencial é baseado no modelo de arquivos armazenados em fitas. Silberschatz, Galvin e Gagne (c) 2003 Sistemas Operacionais com Java 11.2.2 Acesso direto • Acesso direto ou acesso relativo. • Um arquivo é formado por registros lógicos de tamanho fixo que permitem que os programas leiam e escrevam registros rapidamente sem uma ordem específica. • Esse método baseia-se em um modelo de disco de um arquivo, onde os discos permitem acesso aleatório a qualquer bloco do arquivo. Silberschatz, Galvin e Gagne (c) 2003 Sistemas Operacionais com Java 11.2.2 Acesso direto • No acesso direto, o arquivo é visto como uma sequência numerada de blocos ou registros. • Um arquivo de acesso direto permite que blocos arbitrários sejam lidos e escritos. • Não existem restrições quanto à ordem de leitura e escrita para um arquivo de acesso direto. • Os arquivos de acesso direto são úteispara o acesso imediato a grandes quantidades de informação. Silberschatz, Galvin e Gagne (c) 2003 Sistemas Operacionais com Java 11.2.3 Outros métodos de acesso • Podem ser desenvolvidos com base no método de acesso direto. • Geralmente envolvem a construção de um índice para o arquivo. • O índice, como um índice na parte posterior de um livro, contém ponteiros aos vários blocos. • Para encontrar um registro no arquivo, primeiro pesquisamos o índice e depois usamos o ponteiro para acessar o arquivo diretamente e encontrar o registro desejado. Silberschatz, Galvin e Gagne (c) 2003 Sistemas Operacionais com Java 11.2.3 Outros métodos de acesso • Com arquivos grandes, o arquivo de índice propriamente dito pode ficar grande demais para ser mantido na memória. • Uma solução é criar um índice para o arquivo de índice. • O arquivo de índice principal contém ponteiros aos arquivos de índices secundários, que apontam para os itens de dados reais. Silberschatz, Galvin e Gagne (c) 2003 Sistemas Operacionais com Java 11.3 Estrutura de diretório • Os sistemas de arquivo dos computadores podem ser enormes, armazenando milhares de arquivos em centenas de gigabytes de disco. • Para gerenciar todos esses dados, precisamos organizá-los. Silberschatz, Galvin e Gagne (c) 2003 Sistemas Operacionais com Java 11.3 Estrutura de diretório • Essa organização geralmente é feita em duas partes: – 1º) O sistema é quebrado em partições, também chamados de minidisco ou volume. Em geral, cada disco contém pelo menos uma partição, que é uma estrutura de baixo nível na qual residem arquivos e diretórios. Silberschatz, Galvin e Gagne (c) 2003 Sistemas Operacionais com Java 11.3 Estrutura de diretório • Essa organização geralmente é feita em duas partes: – 2º) Cada partição contém informações sobre os arquivos dentro dela. Essas informações são mantidas em entradas em um diretório de dispositivo ou índice de volume. O diretório registra informações – tais como nome, posição, tamanho e tipo, para todos os arquivos naquela partição. Silberschatz, Galvin e Gagne (c) 2003 Sistemas Operacionais com Java 11.3 Estrutura de diretório • Levando em consideração a estrutura de diretório, vamos conhecer as operações que deverão ser realizadas em um diretório: – Pesquisar arquivos; – Criar um arquivo; – Excluir um arquivo; – Listar um diretório; – Renomear um arquivo; – Percorrer o sistema de arquivos; Silberschatz, Galvin e Gagne (c) 2003 Sistemas Operacionais com Java 11.3.1 Diretório de nível único Silberschatz, Galvin e Gagne (c) 2003 Sistemas Operacionais com Java 11.3.2 Diretório de dois níveis Silberschatz, Galvin e Gagne (c) 2003 Sistemas Operacionais com Java 11.3.3 Diretórios estruturados em árvore Silberschatz, Galvin e Gagne (c) 2003 Sistemas Operacionais com Java 11.4 Proteção • Quando as informações são mantidas em um sistema de computação, uma importante preocupação é a confiabilidade, ou ficar livre de danos físicos. • Outra é a proteção, ou não permitir acesso indevido. • A confiabilidade geralmente é obtida por cópias duplicadas dos arquivos. Silberschatz, Galvin e Gagne (c) 2003 Sistemas Operacionais com Java 11.6 Proteção • Existem programas que copiam automaticamente os arquivos do disco para fita em intervalo regulares. • A proteção pode ser provida de muitas formas. • Para um sistema pequeno, monousuário, podemos remover os disquetes fisicamente e colocá-los em um gabinete de arquivos ou gaveta. • Em um sistema multiusuário, outros mecanismos são necessários. Silberschatz, Galvin e Gagne (c) 2003 Sistemas Operacionais com Java 11.6.1 Tipos de acesso • A necessidade de proteger arquivos é resultado direto da capacidade de acessar arquivos. • Nos sistemas que não permitem acesso aos arquivos de outros usuários, a proteção não é necessária. • Um extremo seria fornecer proteção completa proibindo o acesso. Outro extremo é fornecer acesso livre sem proteção. • É necessário o acesso controlado. Silberschatz, Galvin e Gagne (c) 2003 Sistemas Operacionais com Java 11.6.1 Tipos de acesso • Os mecanismos de proteção fornecem acesso controlado limitando os tipos de acesso a arquivo que podem ser feitos. • O acesso é permitido ou negado dependendo de vários fatores, um dos quais é o tipo de acesso solicitado. Silberschatz, Galvin e Gagne (c) 2003 Sistemas Operacionais com Java 11.6.1 Tipos de acesso • Vários tipos distintos de operação podem ser controladas: – Ler – Escrever – escrever ou reescrever um arquivo – Executar – carregar o arquivo na memória e executá-lo – Anexar – escrever novas informações no final do arquivo – Excluir – excluir e liberar espaço para reutilização – Listar - nomes e atributos de arquivos Silberschatz, Galvin e Gagne (c) 2003 Sistemas Operacionais com Java 11.6.2 Listas de acesso e grupos • A abordagem mais comum ao problema de proteção é tornar o acesso dependente da identidade do usuário. • Vários usuários podem precisar de diferentes tipos de acesso a um arquivo ou diretório. • O acesso dependente da identidade do usuário pode ser implementado através de uma lista de acesso. Silberschatz, Galvin e Gagne (c) 2003 Sistemas Operacionais com Java 11.6.2 Listas de acesso e grupos • O principal problema com as listas de acesso é o seu tamanho, pois se queremos que todos leiam um arquivos, é preciso listar todos os usuários e dar a eles o acesso de leitura. • Para resolver esse problema, usa-se um versão condensada da lista de acesso. Silberschatz, Galvin e Gagne (c) 2003 Sistemas Operacionais com Java 11.6.2 Listas de acesso e grupos • Que reconhece 3 classificações de usuários em relação a cada arquivo: – Proprietário: o usuário que criou o arquivo é o proprietário. – Grupo: Um conjunto de usuários que compartilha o arquivo e precisa de acesso semelhante é um grupo, ou grupo de trabalho. – Universo: todos os outros usuários no sistema constituem o universo. Silberschatz, Galvin e Gagne (c) 2003 Sistemas Operacionais com Java 11.6.3 Outras abordagens de proteção • Existem outras abordagens ao problema de proteção. • Uma delas é associar um senha com cada arquivo. • Desvantagem – o nº de senhas que um usuário deve lembrar aumenta, conforme aumenta o nº de arquivos. Silberschatz, Galvin e Gagne (c) 2003 Sistemas Operacionais com Java Silberschatz, Galvin e Gagne (c) 2003 Aula 12 Capítulo 12 – Implementação do Sistemas de Arquivos • 12.1 Estrutura do Sistemas de Arquivos • 12.4 Métodos de Alocação • 12.5 Gerência de espaço livre Sistemas Operacionais com Java 12.1 Estrutura do sistema de arquivos • Os discos são a principal parte do armazenamento secundário no qual um sistema de arquivos é mantido. • Para melhorar a eficiência de I/O, realizamos transferências entre a memória e o disco em unidades de blocos. Silberschatz, Galvin e Gagne (c) 2003 Sistemas Operacionais com Java 12.1 Estrutura do sistema de arquivos • Os discos têm duas características importantes que os tornam um meio conveniente para armazenar múltiplos arquivos: – Eles podem ser regravados; – Podemos acessar diretamente qualquer bloco de informações no disco. Silberschatz, Galvin e Gagne (c) 2003 Sistemas Operacionais com Java 12.4 Métodos de alocação • Quase sempre os arquivos são armazenadosno mesmo disco. • O principal problema é como alocar espaço a esses arquivos de modo que o espaço em disco seja utilizado com eficácia e os arquivos sejam acessados rapidamente • Existem 3 métodos principais para alocar espaço em disco: contíguo, interligado (encadeado) e indexado. Silberschatz, Galvin e Gagne (c) 2003 Sistemas Operacionais com Java 12.4.1 Alocação Contígua • Esse método requer que cada arquivo ocupe um conjunto de blocos contíguos no disco. Os endereços de disco definem uma ordenação linear no disco; • A alocação contígua de um arquivo é definida pelo endereço de disco(do 1º bloco) e o tamanho (em unidades de blocos). • Se o arquivo começar na posição b e tiver n blocos de comprimento, ele ocupará os blocos b, b+1, b+2, ..., b+n-1. Silberschatz, Galvin e Gagne (c) 2003 Sistemas Operacionais com Java 12.4.1 Alocação Contígua • Acessar um arquivo que tenha sido alocado de forma contígua é fácil. • Tanto o acesso sequencial quanto o direto podem ser suportados por esse método. • O problema de alocação contígua é encontrar espaço para um novo arquivo e depois de encontrar o problema está no caso de precisarmos aumentar esse arquivo. Silberschatz, Galvin e Gagne (c) 2003 Sistemas Operacionais com Java 12.4.1 Alocação Contígua Silberschatz, Galvin e Gagne (c) 2003 Sistemas Operacionais com Java 12.4.2 Alocação Interligada (Encadeada) • A alocação encadeada resolve todos os problemas da alocação contígua. • Na alocação encadeada, cada arquivo é uma lista encadeada de blocos de disco. • Os blocos de disco podem estar dispersos em qualquer parte do disco. O diretório possui um ponteiro ao primeiro e último bloco do arquivo. Silberschatz, Galvin e Gagne (c) 2003 Sistemas Operacionais com Java 12.4.2 Alocação Interligada (Encadeada) • Exemplo: Um arquivo de cinco blocos pode começar no bloco 9, continuar no bloco 16, depois bloco 1, bloco 10 e finalmente bloco 25. • Cada bloco contém um ponteiro para o próximo bloco. Esses ponteiros não são disponíveis para o usuário. • Se cada bloco tiver 512 bytes, e um endereço de disco (o ponteiro) requer 4 bytes, então o usuário verá blocos de 508 bytes. Silberschatz, Galvin e Gagne (c) 2003 Sistemas Operacionais com Java Silberschatz, Galvin e Gagne (c) 2003 12.4.2 Alocação Interligada (Encadeada) Sistemas Operacionais com Java 12.4.2 Alocação Interligada (Encadeada) • A vantagem da alocação encadeada está em permitir que qualquer bloco físico possa ser alocado a qualquer arquivo. • A desvantagem é que não permite a acesso relativo com facilidade. • Para acessar o bloco lógico 5 do arquivo, é antes necessário acessar os blocos lógicos de 0 a 4, mesmo que o programa em execução não necessite dessas informações. Silberschatz, Galvin e Gagne (c) 2003 Sistemas Operacionais com Java 12.4.3 Alocação Indexada • A alocação indexada é capaz de resolver o problema do crescimento dos arquivos ao mesmo tempo que permite o acesso relativo. • Na alocação indexação, cada arquivo possui uma bloco de índices. Cada entrada do bloco de índices contém um endereço de um dos blocos físicos que formam o arquivo. • A alocação indexada sofre de desperdício de espaço. O custo dos ponteiros do bloco de índice é maior que os ponteiros da alocação encadeada. Silberschatz, Galvin e Gagne (c) 2003 Sistemas Operacionais com Java Silberschatz, Galvin e Gagne (c) 2003 12.4.3 Alocação Indexada Sistemas Operacionais com Java 12.4.3 Alocação Indexada • Na alocação encadeada, perdemos o espaço de apenas um ponteiro por bloco. Já na alocação indexada, um bloco de índice inteiro deverá ser alocado. • Uma questão muito importante é o tamanho da tabela de índices. • Todo arquivo deve ter um bloco de índice, por isso esse bloco deve ser o menor possível. Entretanto, se o bloco de índice for muito pequeno, ele não poderá conter ponteiros suficientes para um arquivo grande. Silberschatz, Galvin e Gagne (c) 2003 Sistemas Operacionais com Java 12.4.4 Desempenho • Os métodos de alocação variam em termos de eficiência de armazenamento e tempos de acesso ao blocos de dados, ambos são importantes para a implementação em SO. • Uma dificuldade na comparação do desempenho dos vários sistemas é determinar como os sistemas serão usados. • Para qualquer tipo de acesso, a alocação contígua requer apenas um acesso para obter um bloco de disco. Silberschatz, Galvin e Gagne (c) 2003 Sistemas Operacionais com Java 12.4.4 Desempenho • Para a alocação encadeada, também podemos manter o endereço do próximo bloco na memória e fazer a leitura diretamente. Esse método funciona para o acesso sequencial, já no acesso direto isso complica, pois um acesso ao bloco i pode exigir i leituras de disco. • Alguns sistemas suportam arquivos de acesso direto usando alocação contígua e acesso sequencial por alocação encadeada. Silberschatz, Galvin e Gagne (c) 2003 Sistemas Operacionais com Java 12.4.4 Desempenho • A alocação indexada é mais complexa. Devido ao bloco de índice. • Assim sistemas combinam a alocação contígua com a indexada usando a alocação contígua para arquivos pequenos (de 3 a 4 blocos), e alternando automaticamente para a alocação indexada se o arquivo ficar grande. Silberschatz, Galvin e Gagne (c) 2003 Sistemas Operacionais com Java 12.5 Gerência de espaço livre • Como só existe uma quantidade limitada de espaço em disco, é necessário reutilizar o espaço de arquivos excluídos para novos arquivos, se possível. • Para controlar a quantidade de espaço livre em disco, o sistema mantém uma lista de espaço livre. • Esta lista registra todos os blocos de disco que estão livres, ou seja, os que não estão alocados a algum arquivo ou diretório. Silberschatz, Galvin e Gagne (c) 2003 Sistemas Operacionais com Java 12.5 Gerência de espaço livre • Para criar um arquivo, pesquisamos a lista de espaço livre pra encontrar a quantidade de espaço desejado, e alocamos esse espaço ao novo arquivo. Esse espaço é então removido da lista de espaço livre. • Quando um arquivo é excluído, seu espaço em disco é adicionado à lista de espaço livre. Silberschatz, Galvin e Gagne (c) 2003 Sistemas Operacionais com Java Resumo Silberschatz, Galvin e Gagne (c) 2003 • O sistema de arquivos reside no armazenamento secundário, projetado para manter uma grande quantidade de dados permanentemente. • O meio de armazenamento secundário mais comum é o disco. • Cada tipo de sistema de arquivos pode ter diferentes estruturas e algoritmos. Sistemas Operacionais com Java Referências • Capítulo 11 e 12 da referência abaixo: – SILBERSCHATZ, ABRAHAM; GAGNE, GREG; GALVIN, PETER BAES. Sistemas operacionais: com java. . Rio de Janeiro: Elsevier, 2004. Silberschatz, Galvin e Gagne (c) 2003
Compartilhar