Это вопрос довольно низкого уровня, и я понимаю, что это может быть не лучшее место, чтобы спросить. Но, это казалось более подходящим, чем любой другой сайт SE, так что здесь идет.
Я знаю, что в файловой системе Linux некоторые файлы действительно существуют , например, такие , /usr/bin/bashкоторые существуют. Тем не менее, (насколько я понимаю), некоторые из них также фактически не существует как таковой и более виртуальных файлов, например: /dev/sda, /proc/cpuinfoи т.д. Мои вопросы (они два, но слишком тесно связаны , чтобы быть отдельные вопросы):
- Как работает ядро Linux, являются ли эти файлы настоящими (и, следовательно, читают их с диска) или нет, когда выдается команда чтения (или такая)?
- Если файл ненастоящий: например, чтение из
/dev/randomвернет случайные данные, а чтение из/dev/nullвернетEOF. Как это работает, какие данные для чтения из этого виртуального файла (и, следовательно, что делать, когда / если данные также записываются в виртуальный файл) - существует ли какая-то карта с указателями для разделения команд чтения / записи, подходящих для каждого файла, или даже для самого виртуального каталога? Таким образом, запись для/dev/nullможет просто вернутьEOF.