Projeto Pratico Inode 2024
Projeto Pratico Inode 2024
Projeto Pratico Inode 2024
Instruções:
- o projeto deve ser realizado por três alunos;
- ver datas de entrega e apresentação na AVA;
- Tem o valor de 2,0 pontos na média final;
- Deverá ser entregue via AVA – Este deverá ser utilizado no dia para apresentação;
- Deverá ser entregue um arquivo zipado com o código fonte e um documento do word com
as informações do grupo e detalhes do código fonte.
- O grupo deverá implementar em linguagem de programação C sem uso de unions ou outras
estruturas complexas. Deve-se usar apenas struct, lista encadeada e pilha.
Descrição:
Este projeto prático tem como finalidade realizar a simulação referente a implementação do Sistema de
Arquivos utilizado Inode.
O tamanho do disco é de 1000 blocos de 10 bytes cada (10 mega), mas o usuário pode definir outro tamanho
no início da execução. Conforme se pode observar na figura abaixo, tem-se um arquivo de diretório com as
entradas de diretório contendo o nome do arquivo e seu ponteiro para o inode (figura a). Cada bloco do disco
consegue armazenar um arquivo de diretório com no máximo 10 entradas, caso tenha mais que 10, deverá
ser guardado em mais de um bloco.
Na figura b apresenta-se um arquivo de inodes. Cada inode ocupa um bloco em disco e o inode principal
possui um header de atributos com os seguintes campos: as permissões (10 bits, onde o primeiro pode ser –
ou d ou l, seguido dos bits de permissão: usuário dono (u) RWX, seguido do grupo (g) RWX e dos outros (o)
RWX), data, hora, tamanho, nome do usuário, nome do grupo e contador de links físicos. O inode principal
possui 8 ponteiros, sendo os 5 primeiros para alocação direta, o 6º ponteiro para alocação simples indireta; o
7º para alocação dupla indireta e o 8º para alocação tripla-indireta. Já o inode de extensão possui apenas 5
ponteiros.
4 4 4 4 4 4 4 4 4 4 5 5 5 5 5 5 5 5 5 5 6 6 6 6 6 6 6 6 6 6 7 7 7 7 7 7 7 7 7 7
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9
A A F A B I A F A F F A F A F B F F A A A F I A F F F I F F A F A I F F A F F F
Figura C.
Como se pode visualizar na figura c, um bloco pode ser do tipo F que indica bloco livre (Free), B que indica
bloco defeituoso (Bad), I que indica inode de arquivo (principal ou extensão) e A que indica arquivos (arquivos
regulares ou arquivos de diretório).
A figura D abaixo apresenta o funcionamento básico do sistema de arquivos com inode. Com base no arquivo
de diretório da raiz (/) já carregado na memória, o usuário tem acesso a seus arquivos locais e a outros
diretórios contidos na raiz. Vamos exemplificar o funcionamento para uma entrada de diretório correspondente
a um arquivo e um diretório.
O arquivo Readme.txt tem início no bloco do disco número 16. Neste bloco existe um inode (indicado
pela letra I) definido como inode principal número 16. Neste inode temos alguns atributos referentes
a este arquivo bem como os índices dos blocos correspondentes ao arquivo. Neste caso, o arquivo
possui 6 blocos (7, 12, 23, 26, 1 e 58). Como nosso sistema de arquivo possui inodes com 5 entradas
diretas, os cinco primeiros blocos ficam no índice direto (7, 12, 23, 26 e 1). O sexto bloco (58)
necessitará ser indexado com o uso do inode indireto simples. Entretanto, para indexar o inode
indireto simples, no inode principal deve existe uma entrada, que neste caso é para o bloco 45. Neste
bloco está o inode indireto simples e nele está a entrada 58 para o último bloco do arquivo.
A entrada de diretório Boot tem início no bloco número 4. Neste bloco temos um inode de diretório
(indicado pela letra D) definido como inode principal número 4. Neste inode temos alguns atributos
referentes a este diretório bem como os índices dos blocos correspondentes. Neste caso, o arquivo
de diretório ocupa apenas um bloco número com 70. Ao ler este arquivo temos acesso ao conteúdo
do diretório boot. Neste arquivo de diretório temos uma entrada para o arquivo kernel que tem seu
início no bloco 35. Neste bloco é encontrado o inode de arquivo para este arquivo.
Figura D.
Por meio de um prompt de comando o usuário poderá manipular o sistema de arquivo utilizando os seguintes
comandos: