O Solaris é um Unix implementado pela Sun Microsystems. O Unix surgiu em 1969 como um projeto da AT&T e hoje já está popularizado em todo mundo. O grande atrativo desse sistema é que ele pode ser utilizado em todas arquiteturas, desde PC até mainframes, provendo para o usuário uma consistente interface e resultados esperados.
SunOS era o antigo nome do sola
Arquitetura do Sistema de Arquivos
A estrutura Vnode (Nó virtual):
Localizando arquivos:
Na estrutura vnode existem dois campos que ajudam a localizar sistemas de arquivos, v_vfsp e v_vfsmountedhere. Se um vnode está representando um diretório que é um ponto de montagem para um sistema de arquivos, v_vfsp apontará para o sistema de arquivos sendo montado e v_vfsmountedhere apontará para o sistema de arquivos onde existe o ponto de montagem.
Quando um processo faz a chamada de sistema open(2), o sistema operacional deve encontrar e abrir esse arquivo. Para isso o Solaris se utiliza de duas rotinas: vfs_root() e vop_lookup(). A primeira delas da estrutura vfs e a segunda da estrutura vnode.
Descritores de arquivos:
A chamada de sistema open(2) retorna um descritor de arquivo. Um descritor de arquivo é a estrutura onde podemos encontrar todas as informações relevantes do arquivo. É no descritor de arquivo que ficam guardadas informações como: tamanho, proteção, último acesso, e etc.
O descritor de arquivo é do tipo int e é usado como um índice dentro da tabela de descritors de arquivos abertos. Nas primeiras versões a tabela era estática, ou seja tinha tamanho fixo. O problema com esta solução é que a tabela poderia se encher e o usuário não poderia abrir mais arquivos. Atualmente, isso não ocorre mais. Descritores de arquivo são alocados em blocos de 24. A tabela de descritores de arquivos abertos é uma lista de blocos ligados.
#define NFPCHUNK 24
struct ufchunk {
struct file *uf_ofile[ NFPCHUNK ];
struct uf_pofile[ NFPCHUNK ];
struct ufchunk *uf_next;
};
Sistema de arquivos
SunOS suporta diversos sistemas de arquivos graças a interface Virtual File System (VFS) descrita anteriormente. SunOS dá suporte há três tipos básicos de sistemas de arquivos:
• baseados em disco;
• distribuídos;
• sistemas de pseudo-arquivos;
Sistemas de arquivos baseados em disco:
Veja abaixo alguns dos sistemas de arquivos baseados em disco que o Solaris dá suporte:
• ufs- Sistema de arquivos UNIX. Sun baseia esse sistema de arquivos no Berkley Software Distribution (BSD) 4.2 Fast File System.
• hsfs- Sistema de arquivos High Sierra. Hsfs é tipicamente usado em CD-ROM. Hsfs provê toda a semântica de UFS exceto escrita e links.
• pcfs- Sistema de arquivos de computador pessoal. Como o nome implica, sistema de arquivos pcfs dá suporte a leitura e escrita de discos formatados MS-DOS.
Sistemas de arquivos distribuídos:
Solaris também dá suporte a noção de sistemas de arquivos distribuídos. Um sistema de arquivos distribuído é um sistema que pode ser compartilhado via rede e que parece estar local na sua estação de trabalho. A intenção é que o usuário ou administrador não tenha que aprender um novo conjunto de comandos para cada novo sistema de arquivos distribuídos. Alguns dos sistemas de arquivos distribuídos que o Solaris dá suporte:
• nfs- Sistema de arquivos em rede (network).
• rfs- Sistema de arquivos remotos.
Sistemas de pseudo-arquivos:
Um pseudo-arquivo é usado para ganhar acesso a informações do kernel usando estilo UFS de nomes de arquivos e chamadas de sistema sem usar qualquer espaço de disco adicional. Tipicamente, isso é executado usando recursos da Memória Virtual (VM) do kernel ou espaço de swap.
Abaixo veja alguns sistemas de arquivos que o Solaris dá suporte:
• tmpfs- Sistemas de arquivos temporários.
• proc- Sistema de arquivos de processos.
• lofs- Sistema de arquivos loopback (amarrado pelo passado). Lofs é usado para criar um sistema de arquivos virtual que é uma cópia de outro sistema de arquivos ou para cobrir um sistema de arquivos existente.
Grande arquivos no Solaris:
Chegamos, finalmente, ao ponto que queríamos sobre o sistema de arquivos do Solaris. Demos uma grande visão sobre o sistema de arquivos e agora podemos explicar como o Solaris dá suporte a grandes arquivos.
Como explicado anteriormente, no sistema ufs uma estrutura vnode aponta para um inode. E é nesse inode que fica armazenado os blocos que pertencem ao arquivo.
O número máximo de blocos vezes o tamanho de cada bloco que um inode pode referenciar é o obrigatoriamente o tamanho máximo que um arquivo no Solaris pode assumir. Lembrando que no sistema ufs cada bloco possui o mesmo tamanho.
Assim, para descobrir um tamanho máximo de um arquivo no Solaris temos que entender a estrutura inode.
Cálculo do tamanho máximo de um arquivo:
Basta calcular o número de blocos que o inode pode referenciar para que encontremos o tamanho máximo de um arquivo. No Solaris cada bloco possui 4K. Assim, os ponteiros diretos referenciam: 48K (4K x 12).
Os ponteiros indiretos apontam para outro bloco que está cheio de ponteiros para blocos de dados. Cada ponteiro ocupa 4 bytes, então um bloco contém 1K ponteiros. Isso provê acesso a arquivos de até 4 Mb mais 48 K [ (4K x 12) + (1024 x 4K) ].
Os ponteiros duplos indiretos apontam para blocos de ponteiros, que por sua vez apontam para blocos de ponteiros e que finalmente apontam para blocos de dados. Assim é possível ter arquivos de 4 Gb mais 4Mb mais 48 K
[ (1024 x 1024 x 4k) + (1024 x 4K) + (4K x 12) ]
Conclusão:
A grande vantagem do sistema Solaris é por ele poder ser utilizado em varias arquiteturas, e graças a Virtual File System suporta diversos sistemas de arquivos.