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.