Propósito de cada acesso ao disco e por que não pode ocorrer

0

Eu estou passando por trabalhos anteriores para um exame que eu tenho e minha universidade não fornece respostas para que eu possa checá-los, por favor, você poderia me informar se meu entendimento está correto e, se não, por favor, você poderia corrigi-lo. / p>

Pergunta: Um programa P rodando em um sistema Linux pega o nome e o caminho de um arquivo no disco contendo texto como argumento; ele abre o arquivo e lê o primeiro caractere dele. Supondo que o programa já esteja em execução e o arquivo exista, liste as solicitações de leitura de disco que podem ocorrer, descrevendo:

• A finalidade de cada acesso ao disco.

• Por que a solicitação de leitura do disco nem sempre ocorre.

Tentativa: Uma solicitação de leitura de disco nem sempre pode ocorrer porque um acerto de cache pode ocorrer e, portanto, o arquivo pode ser lido do cache sem uma solicitação de leitura de disco. Se isso não acontecer, ocorrerão acessos ao disco. Um para obter o nome do arquivo, outro para obter o caminho do arquivo e o final para ler o primeiro caractere do arquivo

    
por TheRapture87 14.05.2015 / 11:05

1 resposta

1

A disk read request might not always occur because a cache hit may occur and so the file can be read from cache without a disk read request.

Correto e completo.

If this does not happen disk accesses will occur. One to get the file's name, another to get the path of the file and the final one to read the first character from the file

Este está longe de ser completo e parcialmente incorreto. Na verdade, pode haver acessos para:

  • O inode do diretório raiz no sistema de arquivos.
  • Pelo menos um dos blocos que contém a lista de arquivos no diretório raiz.
  • Repita para cada diretório no caminho para o arquivo. (Além da passagem simbólica de links, se aplicável.)
  • O inode do arquivo.
  • O primeiro bloco do conteúdo do arquivo.

Dependendo do sistema de arquivos, cada uma dessas entradas pode envolver uma ou mais leituras de disco, pois o conteúdo pode ser distribuído em vários blocos. Acessar um bloco de um arquivo pode exigir o acesso a um bloco onde a lista de blocos está contida, algumas vezes com vários níveis de profundidade.

Além desses acessos, pode haver acesso ao disco para carregar partes do código do programa e dados para a RAM a partir do swap. Não está claro a partir da formulação da questão se é assumido que o programa está rodando e os bits relevantes estão na RAM . Pode haver outras sutilezas que, com certeza, não foram planejadas pelo examinador, como um arquivo que já existe no disco, mas em um diretório montado automaticamente que não está montado no momento, o que requer que o driver seja carregado antes da montagem .

    
por 15.05.2015 / 03:59