Sistemas Operacionais

Slides:



Advertisements
Apresentações semelhantes
Sistemas Operacionais
Advertisements

Arquitetura de Sistemas Operacionais
Sistemas operacionais
Sistemas operacionais
Sistemas operacionais
Ambientes Operacionais
Gerenciamento de memória
Processos no Unix e Linux
Arquitetura de Sistemas Operacionais Francis Berenger Machado
Sistemas Operacionais II - Sistemas de Arquivos -.
SSC SISTEMAS OPERACIONAIS I Aula 17 – Sistemas de Arquivos
SSC541 - SISTEMAS OPERACIONAIS I Aula 19 – Sistemas de Arquivos
Indexação e Hashing Muitas consultas referenciam apenas uma pequena porção dos registros em uma tabela. Portanto necessitamos ser capaz de localizar estes.
Capítulo 6 Sistemas de Arquivos 6.1 Arquivos 6.2 Diretórios
Sistemas de Arquivos.
Gerência de Memória Algoritmos de Substituição de Páginas
Arquitetura de Computadores
Debian Gerência de Memória.
Threads.
Listas Encadeadas.
Sistemas Operacionais I
Gerência de Memória.
Sistemas Operacionais Sistemas de Arquivo
Sistemas Operacionais
Proteção de Memória O sistema operacional deve impedir que um processo tenha acesso ou modifique uma página do sistema sem autorização. Proteção para páginas.
Disciplina: Sistema Operacional Professor: Luciano Ricardi Scorsin
Sistemas Operacionais Gerenciamento de Memória
Fundamentos da Arquitetura de Computadores
PROGRAMAÇÃO ESTRUTURADA II
Sistemas Operacionais
Sistemas Operacionais
Sistemas Operacionais
SISTEMAS OPERACIONAIS
Aula 13 - Armazenamento de Dados em Arquivos
Sistemas Operacionais
SISTEMAS OPERACIONAIS I
Sistemas Operacionais
SISTEMAS OPERACIONAIS I Memória Virtual e Paginação
SISTEMAS OPERACIONAIS I
Software Básico Nível ISA Capítulo 5 Mitsuo Takaki
Sistemas Operacionais
Capítulo VIII Ambientes de Execução
Sistemas Operacionais
SISTEMAS OPERACIONAIS I Gerenciamento de Arquivos
Capítulo V – Comandos de Entrada e Saída 5.1 – Equipamentos de entrada e saída 5.2 – Saída no vídeo-texto 5.3 – Entrada pelo teclado 5.4 – Entrada e saída.
Algoritmos e Estruturas de Dados
Sistemas Operacionais: Sistema de Arquivos
Nomeação de arquivos – Cap 4.1.1
Silberschatz, Galvin and Gagne ©2009 Operating System Concepts – 8 th Edition Capítulo 10: Interface de Sistemas de Arquivos.
Sistemas Operacionais
Sistemas Operacionais Aula 15 Sistema de Arquivos
Professor Esp. Diego André Sant’Ana Disciplina: Sistemas Operacionais II Sistemas de Arquivos- Tipo de arquivos – Cap
Infra-Estrutura de Software
Gerenciamento de Memória
Gerenciamento de Memória - Capítulo 7 - Sistemas Operacionais Prof. Dr. José Carlos Becceneri Luciana Sêda Cardoso.
Engenharia de Controle e Automação Computação Para Engenharia Semana /02/2013 Professor Leomir J. Borba- –
Aula – Sistemas Operacionais
Bruno Iran Ferreira Maciel
Sistemas de Arquivos- Cap4
Sistemas de Arquivos Sistemas Operacionais Profa. Priscila Facciolli
Sistemas de Arquivos. Alocação em memória – Problemas Quantidade Limitada de Informações Perda de informações quando o processo é terminado Vários processos.
Capítulo 5 Entrada/Saída 5.1 Princípios do hardware de E/S
Sistemas de Arquivos.
Pearson Education Sistemas Operacionais Modernos – 2ª Edição 1 Sistemas de Arquivos Capítulo Arquivos 6.2 Diretórios 6.3 Implementação do sistema.
Pearson Education Sistemas Operacionais Modernos – 2ª Edição 1 Gerenciamento de Memória Capítulo Gerenciamento básico de memória 3.2 Troca de processos.
Gerência de Memória. Memória Considerações: Recurso caro e escasso; Programas só executam se estiverem na memória principal; Quanto mais processos residentes.
Pearson Education Sistemas Operacionais Modernos – 2ª Edição 1 Sistemas Operacionais FATEC-PB Professor: Gustavo Wagner
Pearson Education Sistemas Operacionais Modernos – 2ª Edição 1 Sistemas Operacionais FATEC-PB Professor: Gustavo Wagner
Pearson Education Sistemas Operacionais Modernos – 2ª Edição 1 Sistemas Operacionais FATEC-PB Professor: Gustavo Wagner
Transcrição da apresentação:

Sistemas Operacionais Sistemas de Arquivos Sistemas Operacionais Mitsuo Takaki 1

Capítulo 6 – Sistemas de Arquivos 6.2 Diretórios 6.3 Implementação 2

Capítulo 6 – Sistemas de Arquivos 6.2 Diretórios 6.3 Implementação 3

Arquivos É um mecanismo de abstração. Oferece meios de armazenar e ler informações no disco. Deve ser feito de forma que o usuário não se atenha a detalhes de como isto é feito. Uma das características mais importantes é como os objetos são gerenciados e nomeados. 4

Nomeação de Arquivos Quando um processo cria um arquivo, um nome é dado a ele. Este arquivo pode ser posteriormente buscado pelo nome dado. As regras variam de SO para SO. No Unix os caracteres minúsculos e maiúsculos são diferentes. 5

Nomeação de Arquivos - Extensões No windows, a extensão determina o tipo de arquivo. JPEG, arquivo de imagens no formato JPEG. EXE, arquivo executável. C, arquivo fonte da linguagem C. É criada uma tabela de associação de formato a um programa para abrí-lo. 6

Nomeação de Arquivos - Extensões No Unix um arquivo pode ter qualquer extensão e mais de uma. As extensões servem apenas como dica do formato do arquivo. .tar.gz – já informa o usuário que o arquivo foi empacotado usando o tar e zipado usando o gz. 7

Nomeação de Arquivos - Extensões Alguns programas podem exigir arquivos em um determinado formato e uma determinada extensão. O gcc exige arquivos no formato .C ou .CPP. .c – arquivo fonte da linguagem C. .cpp – arquivo fonte da linguagem C++. 8

Estrutura de Arquivos 9

Estrutura de Arquivos Podem seguir uma estrutura pré-determinada. Ou podem ser apenas uma sequência de bytes (a). Esta é a forma mais usada. Quem determina o significado do arquivo é o programa que o abre. Os programas podem inserir qualquer dado sem se preocupar com nenhuma estrutura. 10

Estrutura de Arquivos Outra forma é utilizar registros de tamanhos fixos (b). Pode ser utilizada uma árvore de registros (c). Podem possuir diferentes tamanhos. Melhor tempo de busca de um determinado registro. 11

Tipos de Arquivos Arquivos regulares são arquivos que possuem informações do usuário. Diretórios são arquivos do sistema que mantém a estrutura dos arquivos do disco. Arquivos especiais de caracteres são relacionados a E/S. No linux: /dev/hda5 Representa o HD a, quinta partição. 12

Tipos de Arquivos São geralmente: ASCII, constituídos de linhas de texto. Em alguns sistemas cada linha termina com um caractere de carriage return. Em outros é usado o caractere de line feed. Em alguns, ambos são usados. Binário, possuem estrutura interna conhecida pelo programa que o usa. 13

Tipos de Arquivos (a) Arquivo executável (b) Repositório 14

Tipos de Arquivos – Binário Executável Só é executado se possui uma estrutura apropriada. Formado por cinco partes: Cabeçalho. Texto. Dados. Bits de relocação. Tabela de simbolos. 15

Tipos de Arquivos – Binário Executável O cabeçalho começa pelo número mágico. Número pré-determinado que o identifica como executável. Usado para impedir execução de arquivos que não estejam no formato adequado. 16

Tipos de Arquivos – Repositório Usado no Unix. Composto por procedimentos de bibliotecas (módulos) compilados. Não estão ligados. Cada módulo possui um cabeçalho indicando nome, data de criação, proprietário, código de proteção e tamanho. 17

Tipos de Arquivos Todo SO deve ser capaz de reconhecer pelo menos um tipo de arquivo. O seu próprio executável. 18

Acesso aos Arquivos Tipos de acessos: Sequêncial, utilizado nos primeiros SOs. Ideal para meios de armazenamento sequênciais, como fitas magnéticas. Aleatório. SOs modernos utilizam apenas este tipo. 19

Atributos de Arquivos 20

Atributos de Arquivos Além do nome e dos dados, os SOs associam outras informações a cada arquivos. Chamadas de atributos. Variam para cada SO. 21

Operações com Arquivos Os SOs realizam diferentes operações. As mais comuns são: Create, cria o arquivo sem dados. Usado para anunciar que o arquivo existe e definir alguns atributos. Delete, remove o arquivo. Open, realizado antes de usar um arquivo. O SO busca o arquivo e põe na memória principal os atributos e lista de endereços do disco. Alguns SOs limitam o número de arquivos abertos. 22

Operações com Arquivos Close, realizado quando o processo termina de usar o arquivo. Força a escrita do último bloco do arquivo. Read, lê os dados do arquivo na posição atual. Deve ser definida quantidade de dados necessários para fornecer um buffer. Write, escreve os dados na posição atual. Se a posição atual estiver no final do arquivo, este sofrerá um aumento no tamanho. Se a posição estiver no meio do arquivo, os dados posteriores serão sobrescritos. 23

Operações com Arquivos Append, chamada restrita de Write. Só permite escrita no final do arquivo, não permite sobrescrevê-lo. Seek, busca uma posição no arquivo. Modifica o ponteiro que aponta para uma posição dentro do arquivo. Get Attributes, lê os atributos do arquivo. O make do Unix verifica os momentos de alteração dos arquivos fonte e arquivos objeto usando esta operação. 24

Operações com Arquivos Set Attributes, define atributos do arquivo. Alguns atributos podem ser alterados pelo usuário. Rename, modifica o nome do arquivo. 25

Arquivos Mapeados em Memória Acessar arquivos usando chamadas ao sistema de arquivos pode ser uma tarefa tediosa. Alguns SOs fornecem um mapeamento de arquivos na memória. No espaço de endereçamentodo processo em execução. 26

Arquivos Mapeados em Memória Conceitualmente, vão existir duas rotinas: Map, que retorna um endereço virtual onde o arquivo foi mapeao. Unmap, remove o arquivo da memória principal. Quando um processo acessa a posição x da memória, onde o arquivo foi mapeado, a posição 0 do arquivo está sendo lida. 27

Arquivos Mapeados em Memória Espaço de endereçamento de um processo. 28

Arquivos Mapeados em Memória Ao término do uso do arquivo, o arquivo é salvo no disco como se tivesse sido usado chamadas ao sistema de arquivos. As tabelas internas são alteradas para que o arquivo se torne um armazenamento sobressalente. Uma leitura no endereço virtual do mapeamento gera uma falta de página. O arquivo é trazido à memória. Quando a paǵina é removida, o arquivo é escrito no disco. 29

Arquivos Mapeados em Memória Funciona melhor em sistemas que usam segmentação. Cada arquivo pode ser mapeado em seu próprio segmento. O byte k do segmento é o byte k do arquivo. 30

Arquivos Mapeados em Memória (a) Processo com dois segmentos: código e dados. (b) Após o mapeamento do arquivo “abc” e, ao término, arquivo xyz será criado. 31

Arquivos Mapeados em Memória Vantagem: Elimina chamadas ao sistema de arquivos. Facilita programação. Desvantagem: O SO não sabe o tamanho exato do arquivos no momento da escrita do arquivo. Pode ser usado o tamanho máximo da página ou do segmento. Estimação do tamanho, não tem certeza. 32

Arquivos Mapeados em Memória Compartilhamento, quando um processo lê um arquivo que está sendo escrito por outro processo. O arquivo só possuirá as modificações quando a página for retirada da memória. O arquivo pode ser maior que o segmento ou maior que todo espaço virtual de endereçamento. Solução mapear somente uma parte do arquivo. 33

Capítulo 6 – Sistemas de Arquivos 6.2 Diretórios 6.3 Implementação 34

Sistemas de Diretórios Controla o armazenamento/localização dos arquivos. Pode ser um arquivo também, dependendo do SO. Pode ser implementado de diversas formas. 35

Nível Único Mais simples implementação de um sistema de diretórios. Um único diretório possui todos os arquivos. Chamado de diretório-raiz. Usado nos primeiros PCs. Por possuir apenas um usuário. 36

Nível Único A,B e C são os proprietários dos arquivos. 37

Nível Único Vantagens: Desvantagem: Fácil de implementar. Fácil localização de arquivos. Desvantagem: Sistemas com vários usuários podem criar arquivos com mesmo nome. O arquivo será perdido e sobrescrito com o novo. 38

Nível Único Não é mais utilizado em PCs por razões óbvias. Pode ser utilizado em sistemas embarcados. Devido limitações de usabilidade e hardware. Sistemas que existe apenas um único usuário. 39

Dois Níveis Resolve conflitos de usuários. Um diretório oferecido para cada usuário. Está implicito que o SO identifica o usuário e já sabe qual é o seu diretório. O usuário só tem acesso ao seu diretório. Na sua forma mais básica de implementação. Pode ser extendido e permitir acesso a arquivos de outros usuários. 40

Dois Níveis 41

Dois Níveis Acesso ao diretório de outros usuários permite separar um diretório para programas do sistema. Sem isto, haveria uma cópia dos programas do sistema no diretório de cada usuário. Tem problemas quando o usuário possui muitos arquivos. Um usuário pode querer arquivos com mesmo nome. Uma organização melhor é necessária para identificar os arquivos. 42

Diretórios Hierárquicos Os arquivos são organizados de acordo com o usuário. É criada uma hierarquia de diretórios. É utilizado até hoje. 43

Diretórios Hierárquicos 44

Nomes de Caminhos Em um sistema de arquivos organizado como árvore, é necessário um método de especificar um arquivo. São utilizados dois métodos: Nome de caminho absoluto. Nome de caminho relativo. 45

Nome de Caminho Absoluto Representa o caminho da raiz à folha (arquivo) da árvore. Exemplo: /var/www/index.html Existe um diretório chamado var /var possui um subdiretório chamado www O subdiretório www possui um arquivo chamado index.html 46

Nome de Caminho Absoluto Quando o primeiro caractere é um separador, então o caminho absoluto está sendo usado. O caractere separador é específico de cada SO. Windows: \ Linux: / 47

Nome de Caminho Relativo Usado em conjunto com o conceito de diretório de trabalho. Também chamado de diretório atual. Todos os caminhos que não começam na raiz, são assumidos como relativos ao diretório atual. 48

Nome de Caminho Relativo Se o diretório atual for /var/www, o arquivo index.html pode ser acessado diretamente, sem o uso do caminho absoluto. Cada processo possui um diretório de trabalho. Um arquivo pode ser acessado usando o caminho relativo. Permite que um diretório de trabalho seja modificado sem afetar os outros processos. 49

Nomes de Caminho A maioria dos SOs que suportam sistema de diretório hierárquico, possuem duas entradas especiais: . (ponto) Refere-se ao diretório atual. .. (ponto-ponto) Refere-se ao diretório pai. 50

Operações com Diretórios As operações variam para cada SO. As mais comuns são: Create, cria um diretório vazio. Exceto pelo ponto e ponto-ponto. Geralmente inseridos pelo programa mkdir. Delete, remove um diretório. O diretório deve estar vazio para ser removido. Ponto e ponto-ponto não são contados neste caso. Opendir, abre o diretório. Antes de ser lido, o diretório deve ser aberto. Após a abertura, está pronto para listar os arquivos. 51

Operações com Diretórios Closedir, fecha o diretório. Deve ser fechado para liberação de espaço na tabela interna. Readdir, retorna a próxima entrada do diretório aberto. Antes era feito usando a chamada de sistema read, porém o programador precisaria conhecer a estrutura interna usada pelo sistema de diretórios. Permite ler o diretório de forma padronizada. 52

Operações com Diretórios Rename, modifica o nome do diretório. Link, técnica chamada de ligação (link). Permite que um arquivo apareça em mais de um diretório, ao mesmo tempo. A chamada tem como entrada um diretório e um arquivo existente. Incrementa o contador do i-node do arquivo. 53

Operações com Diretórios Unlink, remove uma entrada do diretório. Se o arquivo existe somente neste diretório, o arquivo é fisicamente removido. Caso exista em outros diretórios, somente o caminho especificado é removido. O delete na verdade é um unlink. 54

Capítulo 6 – Sistemas de Arquivos 6.2 Diretórios 6.3 Implementação 55

Implementação do Sistema de Arquivos Como o sistema de arquivos funciona sob a ótica do programador. 56

Esquema do Sistema de Arquivos Os arquivos são armazenados em discos. Os discos geralmente são divididos em partições. Cada partição pode possuir um sistema de arquivos diferente. O setor 0 (zero) do disco é chamado de MBR (Master Boot Record). Usado para iniciar o computador. No fim da MBR tem uma tabela com os endereços finais e iniciais de cada partição. Uma das partições é marcada como ativa. 57

Esquema do Sistema de Arquivos Quando o computador inicia, a BIOS lê e executa o MBR. Localizar a partição ativa. Lê seu primeiro bloco (bloco de boot). Executa o programa no bloco de boot. O programa no bloco de boot carrega o SO contido naquela partição. Toda partição contém um bloco de boot, mesmo sem ter nenhum SO. Futuramente ela poderá ter um SO. 58

Esquema do Sistema de Arquivos 59

Esquema do Sistema de Arquivos Logo após o bloco de boot está o superbloco. Contém todos os principais parâmetros sobre o sistema de arquivos. É lido quando o computador é iniciado ou quando o sistema de arquivos é usado pela primeira vez. Possui um número mágico para identificar o tipo de sistema de arquivos usado. Possui o número de blocos e outras informações. 60

Esquema do Sistema de Arquivos Após o superbloco, estão as informações sobre os blocos livres. Pode ser na forma de um mapa de bits ou uma lista de ponteiros. Em seguida, os i-nodes. Arranjo de estrutura de dados, um por arquivo, que diz tudo sobre o respectivo arquivo. 61

Esquema do Sistema de Arquivos Depois, pode vir o diretório-raiz. Contém o topo da árvore do sistema de arquivos. Por último estão todos os arquivos e diretórios. 62

Implementação do Sistema de Arquivos A questão mais importante na implementação de armazenamento de arquivos é a manutenção do controle de quais blocos de disco estão relacionados a quais arquivos. São usados vários métodos em diferentes SOs. 63

Alocação Contígua É o esquema mais simples de armazenamento de arquivos no disco. Os arquivos são armazenados em blocos contíguos de disco. Em um disco de blocos de 1kb, um arquivo de 50kb usa 50 blocos consecutivos. 64

Alocação Contígua 65

Alocação Contígua Na figura é possível observar o que ocorre quando um arquivo é removido. Lacunas são criadas dentro do conjunto de blocos. Caso um arquivo use meio bloco, este restante do bloco será desperdiçado. 66

Alocação Contígua Vantagens: Fácil implementação. Só precisa guardar o endereço do início e o número de blocos usados. Alto desempenho de leitura. A leitura de um arquivo é feita de uma só vez, pois o arquivo está escrito de forma contígua. Apenas um seek é necessário. 67

Alocação Contígua Desvantagem: Tendência a fragmentar. Sempre que um arquivo é removido, uma lacuna é criada no lugar do arquivo. A compactação dos blocos dos arquivos poderia ser feita após cada exclusão, porém é extremamente custosa. Quando o disco está cheio, a compactação é necessária. 68

Alocação Contígua Não é mais utilizada em SOs modernos. É utilizada em sistemas de armazenamento de somente leitura. CDs, DVDs, mídias óticas. Algumas técnicas antigas podem se tornar úteis com o advento de novas tecnologias. 69

Alocação Por Lista Encadeada 70

Alocação Por Lista Encadeada Todo bloco é utilizada e não é gerada fragmentação com a remoção de arquivos. Porém a fragmentação interna dos blocos continua. É necessário manter apenas o endereço do primeiro bloco na entrada de diretório. O restante é encontrado a pártir dele. 71

Alocação Por Lista Encadeada Desvantagem: Leitura aleatório lenta. Para ler o dado n, é necessário ler n-1 blocos, um a um. A leitura sequêncial é feita sem problemas. Quantidade de dados armazenados não é uma potência de 2. É necessário armazenar o endereço do próximo bloco. A leitura de todo bloco requer obter e concatenar a informação de dois blocos. 72

Alocação Por Lista Encadeada Leitura de um arquivo. Concatenando os dados de dois blocos. 73

Alocação Por Lista Encadeada usando Tabela na Memória Uma tabela é usada para armazenar o endereço físico de cada bloco no disco. A tabela é chamada de FAT (File Allocation Table). O disco também é totalmente utilizado. Possui acesso aleatório mais rápido, pois não precisa ler do disco os endereços do próximo bloco. 74

Alocação Por Lista Encadeada usando Tabela na Memória 75

Alocação Por Lista Encadeada usando Tabela na Memória Somente o número do bloco inicial é necessário para representar a entrada de diretório. A tabela utiliza um código de fim de arquivo. 76

Alocação Por Lista Encadeada usando Tabela na Memória Desvantagens: Usa muita memória principal. Para funcionar, a tabela deve estar na memória principal o tempo todo. Para um disco de 20GB e blocos de 1KB, a tabela precisa de 20 milhões de entradas, uma para cada bloco. A tabela ocuparia 60 ou 80 MB na memória principal, dependendo do número de bytes usados nas entradas da tabela. 77

i-Nodes Estruturas de dados que controlam quais blocos pertencem a quais arquivos. Relaciona atributos e os endereços no disco ao arquivo. A pártir de um i-node é possível encontrar todos os blocos do arquivo. 78

i-Nodes 79

i-Nodes Vantagem: Usa menos memória principal. Só precisa estar na memória quando um arquivo está sendo usado. Se cada i-node usa n bytes e no máximo k arquivos podem ser abertos simultâneamente, somente nk bytes são necessários na memória. A tabela FAT é proporcional ao tamanho do disco e o espaço gasto pelos i-nodes é proporcional ao número de arquivos abertos. 80

i-Nodes Desvantagem: Limite do número de blocos endereçados pelo i-node. Se a estrutura do i-node tiver um tamanho fixo, o número de blocos endereçáveis por um i-node é limitado. Quando isto ocorre, um espaço do disco é reservado para um, ou mais, blocos de ponteiros. 81

Implementação de Diretórios Para abrir um arquivo, o SO precisa de um nome e um caminho. Este caminho é usado para encontrar: Endereço de disco de todo arquivo (contígua) O número do primeiro bloco (listas encadeadas) Ou o número do i-node. 82

Implementação de Diretórios A função do sistema de diretórios é traduzir um nome ASCII na informação necessária para encontrar os dados. Outra questão é onde salvar os atributos dos arquivos. Todos os SOs mantém informações do arquivo, como o proprietário, data e hora de criação... 83

Armazenamento dos Atributos dos Arquivos (a) Atributos armazenados diretamente na entrada do diretório. (b) Atributos armazenados nos i-nodes. 84

Armazenamento dos Atributos dos Arquivos Uma alternativa é armazenar diretamente na entrada do diretório (a). Consiste em uma lista de entradas de tamanho fixo, uma por arquivo. Contém nome do arquivo (tamanho fixo), uma estrutura de atributos e um ou mais endereços de disco. Usado no DOS/Windows Outra alternativa é armazenar nos i-nodes. A entrada de diretório é menor: Um nome de arquivo O número do i-node. Usado no Unix. 85

Armazenamento do Nome dos Arquivos O nome dos arquivos podem ter tamanho variado. Reservar o espaço usando o tamanho máximo ocasiona em desperdício de espaço. Poucos arquivos possuirão nomes tão longo. 86

Armazenamento do Nome dos Arquivos Uma alternativa é cada entrada de diretório possuir uma parte fixa seguida de uma parte variável (nome real do arquivo) (a). É usado um caractere especial para indicar o fim do nome. Preenche o campo de nome até atingir o tamanho fixado. Na parte fixa são armazenados as informações do arquivo. 87

Armazenamento do Nome dos Arquivos Desvantagem: Fragmentação. Possui a mesma tendência a fragmentar da alocação contígua, caso um arquivo seja removido. Porém a compactação pode ser feita no momento da deleção, pois toda a entrada do diretório está na memória principal. Leitura de um arquivo pode causar uma falta de página. A entrada de diretório pode ser longa demais. 88

Armazenamento do Nome dos Arquivos Outra solução é fixar o tamanho de todas as entradas de diretório e os nomes ficam armazenados em uma área temporária (heap) no final do diretório (b). Possui a vantagem de sempre caber na área da heap quando um arquivo é removido. Não há mais necessidade de completar os nomes com caracteres especiais. Porém ainda é necessário o uso do caractere de fim de nome. 89

Armazenamento do Nome dos Arquivos 90

Implementação de Diretórios Nos projetos abordados até o momento, a busca por um arquivo é realizada sequêncialmente. O que é um método lento quando a lista é extensa. Uma solução é utilizar uma tabela de hash para armazenar as entradas de diretório. 91

Arquivos Compartilhados Compartilhamento é de extrema importância em sistemas multiusuário. Um arquivo compartilhado pode fazer parte da estrutura de diretório de dois, ou mais, usuários (link). 92

Arquivos Compartilhados Se o diretório armazenar os endereços dos blocos do arquivo, uma alteração no arquivo pode não ser visível pelo outro usuário. O diretório não terá a referência dos blocos adicionais. O conceito de compartilhamento é perdido quando isto acontece. 93

Arquivos Compartilhados Pode ser resolvido de duas formas: O diretório não armazena os endereços dos blocos do arquivo. É utilizada uma estrutura de dados que armazena todos os endereços. O diretório possui uma referência à estrutura. O novo arquivo é ligado (link) ao original. O novo arquivo possuirá apenas o nome do caminho do arquivo original. Chamado de ligação simbólica. 94

Arquivos Compartilhados Ambas soluções apresentam desvantagens: Se o arquivo original for removido, a referência do i-node é perdida. O SO é capaz de identificar que o arquivo possui um link, mas não é capaz de encontrar cada um e removê-los. O i-node não é capaz de armazenar todas os links. A solução é remover o arquivo da entrada do diretório do usuário, mas manter o i-node intacto.

Arquivos Compartilhados (a) Antes da ligação. (b) Após a ligação. (c) Após a remoção do arquivo original.

Arquivos Compartilhados Vários acessos a disco são necessários para ler os blocos do arquivo. O caminho deve ser lido e sintaticamente analisado até chegar ao i-node. É necessário um i-node extra para armazenar o caminho para cada ligação simbólica. Tem a vantagem de poder ligar arquivos de locais diferentes. Basta o endereço da máquina e o caminho.

Gerenciamento de Disco O gerenciamento do espaço do disco é uma das principais preocupações de um projetista de sistemas. Como foi visto anteriormente, é possível armazenar de duas formas: Blocos consecutivos (alocação contígua). Blocos espalhados no disco (alocação por lista encadeada ou i-node).

Tamanho do Bloco É visível a importância do tamanho do bloco no gerenciamento do disco. Os blocos podem ter tamanhos diferentes e diferentes reações serão observadas no sistema. A decisão do tamanho do bloco deve ser bem pensada.

Tamanho do Bloco Bloco muito grande: Bloco muito pequeno: Pouca leitura do disco necessária. Os arquivos usariam poucos blocos. Alta fragmentação interna. Poucos arquivos preencherão o bloco inteiro. Bloco muito pequeno: Disco é melhor aproveitado. Baixa fragmentação interna. Muito leitura do disco. Muito acesso a disco, pois o arquivo pode estar espalhado pelo disco inteiro.

Tamanho do Bloco

Monitoramento dos Blocos Livres Através de uma lista encadeada de blocos. Mapa de bits.

Lista Encadeada de Blocos Um bloco de disco é utilizado para armazenar ponteiros para os blocos livres. Armazena o máximo possível de ponteiros. Mantém na memória principal apenas um bloco de ponteiros. Quando um arquivo é criado, os blocos necessários são tirados da lista de blocos livres. Quando a lista se esgota, outro bloco de ponteiros é lido do disco.

Lista Encadeada de Blocos Quando um arquivo é removido, novos ponteiros são criados e adicionados ao bloco de ponteiros. Quando o bloco está cheio, este é escrito ao disco e outro é lido ou criado.

Lista Encadeada de Blocos Desvantagem: Causa muitas operações de E/S. Quando o bloco possui 2 ponteiros livres (a) e um arquivo de 3 blocos é removido, a lista “transborda” e um novo bloco de ponteiros é criado e carregado na memória (b). Se o arquivo que acaba de ser criado é temporário, os blocos são desalocados e o bloco anterior é recarregado.

Lista Encadeada de Blocos Solução: Manter o bloco de ponteiros sempre parcialmente ocupado. Sempre que o bloco de ponteiros se enche, apenas metade dele é armazenada no disco (c).

Lista Encadeada de Blocos Inserir figura!!!!!!!!!

Mapa de Bits Um mapa de bits é utilizado para representar os blocos livres. Utiliza apenas um bit para representar um bloco livre. 1: Livre 0: Alocado Também utiliza blocos do disco para armazenar o mapa.

Mapa de Bits Só usa o disco quando o mapa está cheio. O mapa mantém os arquivos próximos. Pois estão no mesmo mapa.

Mapa de Bits Representação de um mapa de bits. 1 Endereço: 0x10cc00290 1 16 32 48 64 Representação de um mapa de bits.