Как на самом деле работает потоковая передача файлов?

Я уже некоторое время задавался вопросом, как именно работает потоковая передача файлов? Под потоковой передачей файлов я подразумеваю доступ к частям файла без загрузки всего файла в память.
Я (полагаю) знаю, что классы C ++ (i | o) fstream делают именно это, но как это реализовано? Можно ли самостоятельно реализовать потоковую передачу файлов?
Как это работает на самом низком уровне C / C ++ (или любом языке, поддерживающем потоковую передачу файлов)? Функции C fopen , fclose , fread и указатель FILE * уже заботятся о потоковой передаче (т. Е. Не загружают весь файл в память)? Если нет, то как бы вы читали прямо с жесткого диска и есть ли такая возможность уже реализована на C / C ++?

Любые ссылки, подсказки, указатели в правильном направлении уже были бы очень полезны. Я погуглил, но похоже, что Google не совсем понимает, что мне нужно ...


Ninja-Edit : Если кто-нибудь знает что-нибудь о том, как это работает, в код сборки / машины , и если это возможно реализовать самостоятельно или если вам придется полагаться на системные вызовы, это было бы здорово. : ) Не является обязательным требованием для ответа, хотя было бы неплохо дать ссылку в правильном направлении.

13
задан Xeo 20 May 2011 в 02:22
поделиться