1. **4.2.1 Diretórios**
1.1. **Diretório raiz**
1.1.1. Diretório que contém todos os arquivos
2. **4.2.3 Nomes de caminhos**
2.1. Como especificar o arquivo em uma árvore de diretórios?
2.1.1. **Nome de caminho absoluto**
2.1.1.1. Começa do diretório raiz e são únicos.
2.1.1.1.1. Começa com / geralmente
2.1.2. **Nome de caminho relativo**
2.1.2.1. O caminho começa em relação ao seu diretório atual
3. **4.2.4 Operações com diretórios**
3.1. Create
3.2. Delete
3.3. Opendir
3.4. Closedir
3.5. Readdir
3.6. Rename
3.7. Link
3.7.1. Possibilita a um arquivo aparecer em mais de uma diretório
3.8. Unlink
3.8.1. Remove uma entrada de um diretório.Ele remove somete do caminho especificado. Os outros permanecerão.
4. **4.3.2 Implementação de arquivos**
4.1. Como saber qual bloco do disco está relacionado a qual arquivo?
4.2. **Alocação contígua**
4.2.1. Fácil de implementar o sistema e possui uma leitura rápida.
4.2.2. Tem problema com a fragmentação interna, caso o arquivo não utilize o bloco por inteiro, fragmentação externa, quando deleta ou move um arquivo.
4.2.2.1. Imagine que há laguna em uma lista sequencial. Se não há um arquivo do tamanho igual ou menor, nada consegue ser escrito neste espaço.
4.3. **Alocação por lista encadeada**
4.3.1. Ele é uma solução para a **alocação contígua**. Ele visa evitar a fragmentação externa.
4.3.2. A alocação por lista encadeada é uma tecnica de gerenciamento de disco onde os blocos de um arquivo não são armazenadas de forma contígua. Isso é possível porque cada bloco possui um ponteiro que aponta para o próximo bloco, resolvendo a fragmentação externa.
4.3.2.1. O problema é que ao precisar de um ponteiro, cada bloco consegue armazenar menos dados e a leitura e escrita pode ser mais lenta.
4.4. **Alocação por lista encadeada usando uma tabela de memória**
4.4.1. A maior diferença em relação à alocação por lista encadeada é que nesta modalidade os ponteiros serão armazenados dentro de uma tabela na memória, ao invés de estar nos próprios blocos.
4.4.1.1. A centralização dos ponteiros em uma tabela, como a FAT (file allocation system), possibilita o acesso mais rápido e gerenciamento facilitado.
4.5. **i-nodes**
4.5.1. O i-node é uma estrutura de dados usada no sistema de arquivos para armazenar metadados sobre um arquivo ou diretório, como permissões, tamanho, datas de criação/modificação e dono. Ele não contém o conteúdo do arquivo diretamente, mas possui ponteiros para os blocos de disco onde os dados do arquivo estão armazenados. Para arquivos pequenos, ele usa ponteiros diretos, e para arquivos maiores, utiliza ponteiros indiretos (simples, duplos ou triplos), o que permite um gerenciamento eficiente, mesmo para arquivos grandes e fragmentados.
5. **4.3.3 Implementação de diretórios**
5.1. O diretório é como se fosse um contêiner de arquivos que armazena refências para arquivos e subdiretórios para organizar e gerir melhor.
5.1.1. A pargunta é... Onde colocar os atributos do arquivo?
5.1.1.1. Pode ser na entrada do diretório ou para sistema que utiliza i-nodes, armazenar nele.
6. **4.3.4 Arquivos compatilhados**
6.1. **ligação** é quando um diretório se conecta a um arquivo de outro usuário. Quando isso acontece, a estrutura utilizada é de **grafo acíclico orientado**.
6.1.1. Problemas
6.1.1.1. Se um **append** acontecer, o endereço será somente adicionado no usuário que realizou a operação. Negando o compartilhamento.
6.1.1.2. Como resolver?
6.1.1.2.1. Utilizar a **ligação simbólica**, na qual um diretório receberá apenas um arquivo tipo link para acessar o caminho.
6.1.1.2.2. Criar uma estrutura de dados separada em vez de armazenar os dados no diretório.
7. **4 Introdução**
7.1. **Condição para armazenamento de longo prazo**
7.1.1. 1. A informação deve sobreviver após o término do processo estava usando ela. 2. Deve possibilitar o armazenamento de grande quantidade de informação. 3. Deve possibilitar o acesso de múltiplos processos para acessar a informação simultaneamente.
7.2. **Questão relevante**
7.2.1. Como encontrar a informação?
7.2.2. Como saber os blocos livres?
7.2.3. Como **encontrar, proteger de usuários e descobrir?**
7.3. **O que é arquivo?**
7.3.1. Arquivo é uma unidade lógica de informação que foi criada por um processo.
7.4. **O que importa?**
7.4.1. Os arquivos são gerenciados pelo sistema operacional, como é estruturado, protegido, nomeado, acessado, usado e etc.
8. **4.1.1 Nomeação de arquivos**
8.1. Nomeação e gerenciamento são os principais tópicos.
8.2. A regra da nomeação depende do sistema operacional.
8.3. **Estensão de arquivos**
8.3.1. .bak - cópia segura
8.3.2. .c - código fonte em C
8.3.3. .hlp - arquivo de ajuda
9. **4.1.2 Estrutura de arquivos**
9.1. **Sequência de bytes**
9.1.1. O sistema operacionar trata os arquivos como uma sequêcia de bytes
9.2. Sequência de registros
9.2.1. É uma sequência de estrutura de tamanho fixo com uma estrutura interna.
9.3. **Árvore**
9.3.1. É organizado no formato de árvore. Há um **campo-chave**, para utilizar na ordenação e busca eficiente
10. **4.1.3 Tipos de arquivos**
10.1. **Arquivos regulares** contém informação do usuráio
10.1.1. **Aquivo binário**
10.1.2. **Arquivo ASCII**