 
 
 
 
 
 
 
 
 
 
 Next: Preparando uma imagem de
 Up: Detalhes na utilização do
 Previous: Detalhes da versão simples
A versão intermediária tem a intenção de apresentar ao aluno
uma estrutura de arquivos mais elaborada. Para isto, foi implementada
uma versão inicial do Second Extended Filesystem  (EXT2FS )
[Card et al., 1994],
o sistema de arquivos padrão do Linux . Esta implementação não é completa
e contém algumas restrições (discutidas mais adiante).
O EXT2FS  trata o disco como uma série de blocos.
O tamanho padrão de cada bloco é de 1024 bytes . Este tamanho
é definido na hora da formatação do disco e pode variar. Uma implementação
completa do EXT2FS  deve estar preparada para qualquer tamanho
de bloco. Entretanto, por motivos de clareza de conceitos, o BananaKernel 
trabalha apenas com blocos de 1024 bytes .
Uma vez que são definido os blocos do disco, tudo que é gravado nele
possui uma posição pré-determinada. Cada informação pertinente ao
gerenciamento dos arquivos é gravada em um bloco separado. Isso facilita
seu acesso, pois pode-se facilmente encontrar as estruturas do EXT2FS 
sabendo-se o índice do bloco onde a informação se encontra. A figura
Estrutura do EXT2FS ajuda a entender menlhor a estrutura do
EXT2FS .
 
Figura:
Estrutura do EXT2FS  
| ![\begin{figure}
\begin{center}
\includegraphics [width=1.0\textwidth]{Drawing-EXT2FS.eps}\end{center}\end{figure}](img26.png) | 
 
Devido a limitações no tamanho das estruturas de dados do 
EXT2FS , o disco é separado em vários
grupos e cada grupo contém sua própria área de gerência de arquivos
e de dados. A versão intermediária do BananaKernel  trata apenas
do primeiro grupo do disco, ignorando quaisquer outros grupos existentes.
Isso simplifica o código fonte, dando mais clareza aos conceitos.
Como pode ser visto na figura ![[*]](cross_ref_motif.png) , o primeiro
bloco do disco é reservado ao setor de boot. Aqui estaria algum bootloader 
(como, por exemplo, o Grub ). Depois do primeiro bloco, inicia-se
uma sequência de grupos. Cada grupo possui:
, o primeiro
bloco do disco é reservado ao setor de boot. Aqui estaria algum bootloader 
(como, por exemplo, o Grub ). Depois do primeiro bloco, inicia-se
uma sequência de grupos. Cada grupo possui:
- Superbloco:
- Contém informações pertinentes ao sistema de arquivos
de todo o disco, como a quantidade total de grupos, quantidade total
de iNodes , quantidade total de blocos, quantidade de iNodes 
e blocos em cada grupo, etc . Pelo fato de ser uma estrutura
crucial para o funcionamento do EXT2FS , ela é replicada em
todos os grupos![[*]](foot_motif.png) . .
- Descritor do grupo:
- Contém informações pertinentes ao grupo onde
se encontra, como a posição dos mapas de bits  e da tabela de
iNodes .
- Bitmap  dos blocos:
- Este é um bloco especial, onde cada
bit  representa um bloco de dados do grupo (área de dados dos
arquivos). Se o bit  for igual a 0, quer dizer que o bloco não
está sendo utilizado. Se for igual a 1, quer dizer que o bloco correspondente
está sendo utilizado e contém dados de algum arquivo, portanto, não
pode ser sobrescrito. Esta mapa é usado para gerenciar os blocos de
dados utilizados pelos arquivos. Antes de escrever os dados de um
arquivo em disco, o EXT2FS  verifica neste mapa, quais blocos
estão livres e procura por um que possa ser utilizado.
- Bitmap  dos iNodes :
- Este mapa de bits  controla
quais iNodes  estão sendo utilizados e quais estão livres. Seu
funcionamento é parecido como mapa de bits  dos blocos, mas
ao invés de gerenciar blocos de dados, gerencia os iNodes  na
tabela de iNodes .
- Tabela de iNodes :
- Esta parte do disco contém os iNodes 
propriamente ditos. Toda vez que um arquivo é criado, um iNode 
desta tabela é selecionado e marcado como utilizado (com a ajuda do
mapa de bits ). Um iNode  contém informações sobre o arquivo,
como data de criação, permissões de acesso, ponteiros para os blocos
de dados (onde os dados do arquivo se encontram).
Esta versão do BananaKernel possui uma implementação parcial do EXT2FS .
Seguem abaixo algumas das diferenças:
-  Apenas o primeiro grupo do disco é tratado, ignorando-se a existência
dos demais grupos.
-  Não há gerenciamento completo de diretórios. Usuários podem criar
arquivos apenas no diretório raiz do sistema.
-  Tamanho do arquivo é limitado aos primeiros 12 blocos de dados apontados
pelo iNode . Blocos indiretos (que aumentam o tamanho máximo
de um arquivo) são ignorados pelo BananaKernel .
Apesar destas limitações, o código fonte do BananaKernel  está
muito bem comentado. A simplificação do código-fonte torna os conceitos
mais claros, que nos leva de votla ao objetivo principal do BananaKernel .
 
 
 
 
 
 
 
 
 
 
 
 Next: Preparando uma imagem de
 Up: Detalhes na utilização do
 Previous: Detalhes da versão simples
rafael@safecore.net