Как операционные системы вычисляют размер файла? - PullRequest
3 голосов
/ 01 мая 2011

Если я правильно понимаю, большинство языков программирования, которые предоставляют библиотечную функцию для получения размера файла, используют системный вызов. Но тогда, что система делает под капотом? Зависит ли это от файловой системы? Сохраняется ли информация о размере в каком-либо заголовке файла?

Ответы [ 3 ]

6 голосов
/ 01 мая 2011

Да, это зависит от файловой системы, но многие файловые системы делают это примерно одинаково: для каждого файла на жестком диске есть блок, в котором хранятся метаданные о файле, включая его размер.

Например, для многих файловых систем, используемых в Linux / UNIX, этот блок называется inode . Обратите внимание, что inode на самом деле не является частью файла, поэтому он не является заголовком; он существует в области диска, зарезервированной для хранения метаданных, а не данных файла.

На NTFS , файловая система, используемая Windows, данные о размере файла хранятся в таблице основных файлов. Это примерно эквивалентно таблице inode в файловой системе Linux.

2 голосов
/ 01 мая 2011

Они хранятся в структуре, называемой Inode: http://en.wikipedia.org/wiki/Inode

. Содержит все метаданные вашего файла;когда вы изменяете содержимое файла (или действительно что-то делаете с ним), ваш Inode обновляется.

2 голосов
/ 01 мая 2011

Он хранится в метаданных файла, которые вы можете получить с помощью stat в системах POSIX.Метаданные также включают, например, дату последнего изменения или обращения к файлу.

...