Tudo é arquivo ou processo - Linux [closed]

0

No mundo Linux, aprendi que existe um arquivo correspondente com o qual o programa do espaço do usuário se comunica, para realmente se comunicar com qualquer dispositivo de hardware, por exemplo, abaixo estão os arquivos para dispositivos,

Hard disk: /dev/sd*

CD and DVD drives : /dev/sr*

PATA hard disks: /dev/hd*

Terminals: /dev/tt*, /dev/pts/* and /dev/tty

Serial ports: /dev/ttyS*

Parallel ports: /dev/lp0 and /dev/lp1

Audio devices: /dev/snd/*, /dev/dsp/, dev/audio and more

Meu entendimento é

No mundo Linux (ao contrário do Windows), além do armazenamento de arquivos, o sistema de arquivos também é usado para comunicação IO.

Portanto, o driver de dispositivo para qualquer dispositivo de hardware correspondente realmente preenche os dados em tais arquivos (digamos, /dev/sd* ), que são os dados enviados / recebidos de / para o dispositivo. Isso permite que o programa de espaço do usuário leia / grave de / para dispositivos usando esses arquivos. por exemplo, abaixo está o programa de espaço do usuário usando C,

int fd;
struct termios *oldser,*newser,*oldter,*newter;
oldser=(struct termios *)malloc(sizeof(struct termios));
newser=(struct termios *)malloc(sizeof(struct termios));
oldter=(struct termios *)malloc(sizeof(struct termios));
newter=(struct termios *)malloc(sizeof(struct termios));

fd=openSerial("/dev/ttyS1");
setSerial(fd,oldser,newser);
/* next stop echo and buffering for stdin */
tcgetattr(0,oldter);
tcgetattr(0,newter); /* get working stdtio */

Pergunta:

Quando você diz, Tudo é arquivo ou processo ,

Isso significa o meu entendimento acima sobre a execução do IO usando o arquivo no kernel do Linux (ou UNIX)? Por favor, corrija-me.

    
por overexchange 26.02.2017 / 22:47

1 resposta

1

In Linux world, I learnt that there is corresponding file that user space program communicates with, in order to actually communicate with any hardware device

Esse é o paradigma do Unix, mas nem sempre é verdade no Linux (e embora eu não tenha familiaridade com o Unix original, duvido que seja verdade mesmo lá).

In Linux world(unlike windows), apart from file storage, file system is also used for IO communication.

Não realmente. Por exemplo, um pipe anônimo não tem presença no sistema de arquivos e, mesmo com um pipe nomeado, os dados em si não passam pelo sistema de arquivos.

So, device driver for any corresponding hardware device actually populates the data in such files(say /dev/sd*)

Não preenche os arquivos, apenas lida com leitura / gravação / ioctl para o arquivo especial. O sistema de arquivos nunca vê essas operações.

When you say, Everything is file or process, Is this the approach of performing IO using file in Linux kernel(or UNIX)?

Classificar de. O paradigma é que, em vez de ter funções separadas para ler e gravar de um disco, ele deve implementar a interface do arquivo para que você possa passar um disco para programas que possam manipular arquivos. Portanto, por exemplo, você pode hexdump do conteúdo de um disco, embora hexdump provavelmente não tenha nenhum código específico para manipular discos.

    
por 27.02.2017 / 00:22