Por que criar um arquivo precisa de pelo menos cinco E / Ss de disco separados no Unix FFS?

4

Em O projeto e a implementação de um sistema de arquivos estruturados em log , diz:

It takes at least five separate disk I/Os, each preceded by a seek, to create a new file in Unix FFS: two different accesses to the file’s attributes plus one access each for the file’s data, the directory’s data, and the directory’s attributes.

Quais são os "dois acessos diferentes para os atributos do arquivo"? Eu posso contar apenas uma vez qual é o inode que foi criado.

    
por shaoyihe 17.04.2018 / 07:55

1 resposta

4

Prof. O livro de Remzi Arpaci-Dusseau Sistemas operacionais: três peças fáceis tem um aparte sobre a criação de arquivos:

As an example, think about what data structures must be updated when a file is created; assume, for this example, that the user creates a new file /foo/bar.txt and that the file is one block long (4KB). The file is new, and thus needs a new inode; thus, both the inode bitmap and the newly allocated inode will be written to disk. The file also has data in it and thus it too must be allocated; the data bitmap and a data block will thus (eventually) be written to disk. Hence, at least four writes to the current cylinder group will take place (recall that these writes may be buffered in memory for a while before they take place). But this is not all! In particular, when creating a new file, you must also place the file in the file-system hierarchy, i.e., the directory must be updated. Specifically, the parent directory foo must be updated to add the entry for bar.txt; this update may fit in an existing data block of foo or require a new block to be allocated (with associated data bitmap). The inode of foo must also be updated, both to reflect the new length of the directory as well as to update time fields (such as last-modified-time). Overall, it is a lot of work just to create a new file! Perhaps next time you do so, you should be more thankful, or at least surprised that it all works so well.

Comparando os dois, especulo que os autores incluíram a atualização do bloco de dados com acesso ao atributo de arquivo (mesmo que explicitamente digam que o que eles querem dizer com atributos de arquivo é o "inode", não parece razoável considerar a localização dos dados como um atributo de arquivo). De qualquer forma, parece que eles subestimaram os acessos ao disco: precisa de pelo menos 6 da descrição do Prof. Arpaci-Dusseau:

  1. bitmap de inode
  2. inode
  3. bitmap de dados
  4. dados do arquivo
  5. dados do diretório
  6. atributos de diretório
por 17.04.2018 / 09:30