Pergunta

É possível criar um dispositivo de bloco Linux (2.6) (como um dispositivo de loopback) com um tamanho ímpar? Eu não poderia fazer isso acontecer. losetup Parece completar para 512 limites de byte. o ubd Dispositivos do modo de usuário Linux ubd Os dispositivos parecem arredondar até 512 limites de bytes. Dentro struct request, temos sector_t __sector Para o deslocamento do bloco para operações de leitura/gravação.

Estou fazendo essa pergunta apenas para fins educacionais. Posso lidar com o limite de 512 bytes, mas ainda estou interessado se fosse possível ignorá -lo. Nesta pergunta, não estou interessado em outras camadas de abstração (como usar arquivos regulares ou dispositivos de caracteres).

Foi útil?

Solução

Não. A camada de bloco Linux 2.6 não compreende nada menor que 512 bytes. Qualquer coisa menor (especialmente uma potência de 2) exigiria uma grande reescrita de um monte de código.

Outras dicas

É isso que faz com que um dispositivo bloco em vez de um dispositivo de caractere: a granularidade do bloco. A dicotomia existe porque é muito mais eficiente modelar hardware real que funciona um bloco de cada vez como uma abstração que também lida com blocos. Fazer o contrário transformaria todas as operações em um cálculo muito mais caro.

A maneira de ignorá -lo é, como você menciona, usar um dispositivo ou abstração orientado para o caractere. Isso é central para o modelo do dispositivo UNIX: tudo é uma série de octetos, exceto as coisas que só podem ser virtualizadas como uma.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top