Apesar da grande diversidade de dispositivos físicos existentes, o UNIX classifica a maioria dos dispositivos com os quais interage em três grandes grupos, cuja estrutura acaba se refletindo na organização do núcleo e nos drivers de dispositivos:
-
Dispositivos de caracteres (character devices): um dispositivo de caracteres pode ser acessado com um fluxo (stream) seqüencial de bytes, sendo visto da mesma forma que um arquivo de acesso seqüencial. Uma característica importante desse tipo de dispositivo é que, uma vez lido um byte, ele não pode ser “devolvido” ao dispositivo na mesma posição. São exemplos típicos desse tipo de dispositivo a console, os terminais e as portas seriais e paralelas. Um driver para dispositivos de caracteres implementa usualmente as chamadas de sistema open
, close
, read
e write
. Para alguns dispositivos a chamada lseek
também está disponível.
-
Dispositivos de blocos (block devices): um dispositivo de bloco permite acesso a informações em blocos de tamanho fixo (usualmente 512 ou 1024 bytes), permitindo o acesso a um ou mais blocos em cada operação. Como o acesso é aleatório, os dados podem fluir em ambas as direções a qualquer instante, Por permitir acesso aleatório e a transferência de dados em blocos, um dispositivo de blocos geralmente é adequado para a construção de um sistema de arquivos. Discos rígidos, disquetes e CDs são exemplos típicos de dispositivos de blocos. As mesmas chamadas de sistema acima citadas são oferecidas para dispositivos de blocos.
-
Interfaces de rede (network interfaces): uma interface de rede é capaz de enviar e receber informações de outros computadores. A informação é transportada em pacotes de dados de tamanho variável. Este modelo não se encaixa com o anteriores, por isso esses dispositivos são geralmente tratados à parte pelo sistema. Ao invés de ler e escrever blocos ou caracteres, as chamadas de sistema relacionadas às interfaces de rede estão relacionadas ao envio e recepção de pacotes de rede.
Além das classes tradicionais acima, uma nova classe de dispositivos vem ganhando espaço nos sistemas de computação, embora ainda seja vista como um caso especial de dispositivo de blocos:
-
Dispositivos de fluxo (
stream devices): um dispositivo de fluxo recebe ou produz dados em uma taxa regular e constante. Esta classe de dispositivos mapeia bem o comportamento de placas de som e de vídeo. O sistema operacional precisa gerenciar buffers para alimentar ou retirar dados desse tipo de dispositivo.
Fonte:
http://dainf.ct.utfpr.edu.br/~maziero/doku.php/pua:acesso_a_dispositivos