O Linux usa os arquivos do dispositivo para as partições do HDD para acessar o HDD?

0

Encontrei a seguinte imagem na web:

Oqueeuentendodestaimageméquese,porexemplo,oProcesso1quiserleralgumarquivo,elefaráoseguinte:

  • Chameread()epasseodescritordearquivoparaoarquivocomoargumentopararead().
  • OVirtualFileSystemiráverificaremqualtipodesistemadearquivosarquivoreside,digamosqueeleresideemumsistemadearquivosext2.
  • Odriverext2(nãoseiseéchamadode"driver") perguntará ao driver de dispositivo apropriado para recuperar o arquivo do HDD.

Agora, o que eu quero saber é: o que a caixa "Device driver" na imagem representa, representa arquivos de dispositivos como /dev/sda1 , /dev/sda2 , /dev/sdb1 , etc?

Então, basicamente, o Linux realmente usa esses arquivos de dispositivo para acessar o HDD (ou seja, quando o Linux quer ler algum arquivo, ele chama open() no arquivo de dispositivo /dev/sda1 e lê a partir do descritor de arquivo retornado) ou Esses arquivos de dispositivos só estão disponíveis para os usuários e programas para usá-los, e o Linux usa alguns outros meios para acessar as partições do disco rígido?

    
por Paul 28.09.2017 / 20:57

1 resposta

3

So basically does Linux actually uses these device files to access the HDD (i.e. when Linux wants to read some file, does it call open() on the /dev/sda1 device file and then read from the returned file descriptor), or are these device files only available for the users and programs to use them, and Linux uses some other means to access the HDD partitions?

Não.

O kernel do Linux está implementando syscalls (2) ; é não diretamente usando-os .

Chamadas de sistema fazem sentido somente em user-mode . O código do kernel está sendo executado no modo kernel. Leia sobre modos de CPU .

Claro, aberto (2) -em então read(2) - usar uma partição de disco como /dev/sda1 indiretamente envolve alguns código kernel que é compartilhado e usado por outro código do kernel (por exemplo, pelo cache de páginas e código do sistema de arquivos .

are these device files only available for the users and programs to use them, and Linux uses some other means to access the HDD partitions?

Sim, o código do kernel não usa arquivos de dispositivo como sd (4) (mas alguma camada de código é compartilhada em algum lugar). O kernel não usa (mas apenas fornece aos processos do usuário quando eles usam chamadas do sistema) descritores de arquivos e lidar com inodes do kernel e outros dados (dentries, vfsmounts, ...). Alguns outros tipos de inodes são escritos no disco pela camada do sistema de arquivos.

what does the "Device driver" box in the image represent,

Ele representa o código do kernel (leia o driver do dispositivo na wiki) relacionado a SATA e ao seu chipset .

Leia Sistemas operacionais: três peças fáceis (livre para download) desde que um livro inteiro é necessário para explicar tudo isso. Então veja kernelnewbies para coisas específicas do kernel Linux e estude o código-fonte do kernel (é software livre ) em kernel.org

(isso é uma simplificação grosseira; o código do kernel é modular e organizado em camadas de software, como VFS , Ônibus SATA, etc ....)

    
por 28.09.2017 / 21:01