Byte Offsets para pipe / FIFO

1

Por que os byte offsets para um pipe / FIFO são mantidos no inode, e não na tabela de arquivos, como nos arquivos regulares?

Eu li esta linha na página 113 de O Design do Sistema Operacional Unix (1986) por Maurice Bach.

Maintaining the byte offsets in inode allows convenient FIFO access to the pipe data and differs from the regular files where the offset is maintained in the file table.

    
por Prakhar Singh 22.02.2017 / 17:02

1 resposta

3

Observe que esse livro descreve os sistemas internos do AT & T Unix como eram há 30 anos. Você não pode presumir que as coisas são feitas da mesma maneira nos sistemas Unix e Unix-like modernos.

Em qualquer caso, independentemente de como os pipes são implementados internamente, enquanto para arquivos regulares ou outros arquivos procurados, o deslocamento de bytes é algo que pertence à descrição do arquivo aberto (suponho que seja o que seu livro chama uma entrada da tabela de arquivos ). Ou seja, dois processos abrindo o mesmo arquivo independentemente terão cada um seu próprio deslocamento dentro do arquivo. Um processo de leitura do arquivo não afeta o deslocamento do outro processo.

Para pipes, todos os descritores de arquivos de todos os processos abertos em um pipe compartilham o mesmo offset. Ou em outras palavras, o deslocamento pertence ao pipe. Portanto, faz sentido armazená-lo no inode, em vez de copiá-lo em todas as descrições de arquivos abertos.

    
por 22.02.2017 / 17:51