2. Arquivos
• Cada arquivo é identificado por um nome, o qual
permite que o usuário faça referências a ele. Além do
nome, cada arquivo possui uma série de outros
atributos que são mantidos pelo SO. Entre os mais
usuais:
• Tipo de Conteúdo;
• Tamanho;
• Data e horário do último acesso;
• Data e hora da última alteração;
• Identificação do usuário que criou o arquivo;
• Lista de usuários que podem acessar o arquivo.
3. Operações Básicas
• O SO suporta diversas operações sobre arquivos. As operações
básicas são:
• Criação do arquivo;
• Destruição do arquivo;
• Leitura do conteúdo;
• Alteração do conteúdo;
• Escrita de novos dados ao final do arquivo;
• Execução do programa contido no arquivo;
• Troca do nome do arquivo;
• Alteração na lista de usuários que podem acessar o arquivo.
Em geral, essas operações básicas correspondem a chamadas de
sistema que os programas de usuário podem usar para manipular
arquivos. A partir das operações básicas muitas outras podem ser
implementadas.
4. Controle de Acesso
• Em sistemas multiusuários (Linux, Windows), é
importante controlar o acesso aos arquivos.O controle
de acesso inicia com a identificação dos usuários. Isso
normalmente é feito com um código de usuário e uma
senha. O SO então verifica a senha e confirma que o
usuário naquele terminal é mesmo quem ele afirma
ser. A partir do momento em que a identificação do
usuário é feita, todos os processos disparados a partir
do terminal em questão passam a ter os direitos de
acesso associados àquele usuário. É possível associar a
cada arquivo uma lista de usuários e direitos de acesso.
5. Controle de Acesso
Grupos de Usuários
• Para facilitar o controle de acesso aos
arquivos, a solução é criar grupos de usuários.
O administrador do sistema cria diversos
grupos de usuários, conforme suas afinidades.
6. Estrutura Interna dos arquivos
• Cada tipo de arquivo possui uma estrutura interna
apropriada para a sua finalidade. Existe, na
prática, uma enorme quantidade de diferentes tipos de
arquivos, e, não é viável para o SO conhecer todos os
tipos de arquivos existentes.
• Em geral, os SO ignoram a estrutura interna dos
arquivos. Para o SO cada arquivo corresponde a uma
sequência de bytes, cujo significado é conhecido pelo
usuário que criou o arquivo. A única exceção são os
arquivos que contêm programas executáveis. Nesse
caso, a estrutura interna é definida pelo próprio
SO, responsável pela carga do programa para a
memória quando esse deve ser executado.
7. Métodos de acesso
• Método de acesso diz respeito à forma como
o conteúdo de um arquivo é acessado. O
método de acesso mais simples é o
sequencial.
8. Método de acesso
Sequencial
• Nesse caso, o conteúdo do arquivo pode ser lido sequencialmente, pedaço a
pedaço. A figura abaixo ilustra a leitura sequencial de um arquivo. Os valores “A”,
“B”, etc., podem representar bytes, linhas ou registros. Cada chamada de sistema
retorna para o processo os dados seguintes àqueles que foram lidos na chamada
anterior.
• O acesso sequencial é muito em compiladores, impressão de arquivo, copiar o
conteúdo de um arquivo para outro.
Arquivo Ler arquivo
A A
B Ler arquivo
C
B
D
E Ler arquivo
F C
9. Método de acesso
Relativo
Nesse método de acesso, o programa inclui na chamada de sistema
qual a posição do arquivo a ser lida. As posições do arquivo são
numeradas a partir de 0 (ou 1 em alguns sistemas), sendo que cada
posição corresponde a um byte.
Arquivo
Ler arquivo, posicionar em 2
A C
B Ler arquivo, posicionar em 4
C E
D
Ler arquivo, posicionar em 0
E
F A
10. Método de acesso
Relativo usando posição corrente no arquivo
Em muitos SO, existe o conceito de posição
corrente no arquivo. Nesse caso, a
chamada de sistema para leitura ou
escrita não informa uma posição. Essa
sempre acontece a partir da posição
corrente. A posição corrente é então
avançada para imediatamente após o Posicionar em 2
último byte lido ou escrito. Dessa Arquivo
Ler
forma, as leituras e escritas são, a
princípio, sequenciais. Entretanto, o SO C
A
também permite que o programa altere B Posicionar em 4
a posição corrente no arquivo usando C Ler
uma chamada de sistema do tipo D E
“Posicionar”. Dessa forma, acesso E
relativo pode ser obtido por intermédio Posicionar em 0
F Ler
de uma chamada de sistema
“Posicionar” seguida de uma chamada A
de sistema “Ler” ou “Escrever”.
11. Implementação de arquivos
A forma básica de implementar arquivos é criar, para cada arquivo no sistema, um
descritor de arquivo. O descritor de arquivo é um registro no qual são mantidas as
informações a respeito do arquivo. Essas informações incluem os seus atributos, além
de outros dados que não são visíveis aos usuários mas que são necessários para que
o SO implemente as operações sobre arquivos. Um descritor de arquivo típico contém
as seguintes informações:
• Nome do Arquivo;
• Extensão do nome do arquivo;
• Tamanho em bytes;
• Data e horário do último acesso;
• Data e hora da última alteração;
• Identificação do usuário que criou o arquivo;
• Lista de usuários que podem acessar o arquivo e respectivos direitos de acesso;
• Local no disco onde o conteúdo do arquivo foi colocado.
Muitas vezes, o SO sofre paradas propositais ou acidentais, mas o conteúdo dos discos
permanece intacto. Logo, assim como o conteúdo do arquivo, o descritor deve ficar
em disco. A forma usual é manter o descritor de um arquivo na mesma partição onde
está seu conteúdo.