Мое понимание состоит в том, что «файлы» фактически просто указывают на ячейку памяти, соответствующую содержимому файлов.
Будьте осторожны с вашей терминологией. Файлы (и указатели) находятся на диске, а не в памяти (ОЗУ).
Если вы 'rm' файл, вы обязательно должны удалить этот указатель.
Да. То, что происходит, сильно зависит от файловой системы. У некоторых есть растровое изображение, из которого блок свободен/занят. Таким образом, он должен будет перевернуть бит для каждого освобожденного блока. Другие файловые системы используют более сложные методы отслеживания свободного пространства.
, который предполагает, что ничто не фактически переписаны ...
Correct. Вы можете найти различные утилиты «восстановить». Но в зависимости от файловой системы он может стать довольно сложным. Но материал, который вы спасли много лет назад, все еще может сидеть, или он может быть перезаписан. Все зависит от мельчайших деталей. Например, см. (E2fsprogs) [http: //e2fsprogs.sourceforge.net /]
Итак, удаляет указатель на адрес памяти, только что делает rm?
Ну, он также должен удалить «запись в каталоге», которая дает метаданные о файле. (Иногда он просто вытирает первый байт имени файла).
Являются ли данные все еще сидят там в смежном блоке, как это было раньше?
Да, данные по-прежнему существуют. Но не предполагайте, что это смежный блок. Файлы могут быть размещены на диске по всему диску с большим количеством указателей, которые рассказывают, как их собирать. И если вы используете RAID, все становится очень сложным.
Интересно. Как ОС отслеживает, есть ли какие-либо активные указатели на блок? – DilithiumMatrix
Использование inodes. Все это обрабатывается файловой системой. Если вы создаете файл ('cat 'thing'> testfile') и используете' ls -i testfile', вы увидите inode, ответственный за указание на данные. Если вы создадите жесткую ссылку с другим именем ('ln testfile anothertest'), вы увидите, что они имеют один и тот же индекс (' ls -i anothertest'). – Jon
Вы должны добавить ОС, чтобы повторно использовать блоки только в том случае, если в процессе все еще нет указателя открытого файла в полностью отслаиваемом файле. – jlliagre