Чтобы узнать ответ на этот вопрос, требуется некоторая предыстория.

1. Каждая операционная система, будь то Unix, Windows или Mac OS, имеет свой тип файловой системы. Файловая система определяет способ хранения файлов/каталогов в системе.

2. Все эти файловые системы имеют механизмы для привязки фактического места хранения файла к таблице (карте), которая является своего рода указателем на фактическое местоположение файла, содержащего данные. Эта карта необходима, поскольку файл хранится фрагментами в разных местах памяти, а не как непрерывные блоки памяти.

3. Когда вы удаляете файл, файловая система отмечает в первом блоке сохраненного файла, что этот файл был удален, и делает указатель доступным для других файлов.

4. Когда приходит новый файл, то фактические данные файла переопределяются, и указатель теперь указывает на этот новый файл, а старый файл полностью удаляется. Но до тех пор файл остается на своем месте со всеми данными нетронутыми.

5. В Unix один указатель (I-Node) может использоваться для нескольких файлов, каждый из которых является копией другого, и данные просто хранятся в одном месте. Чтобы полностью удалить файл, необходимо удалить все копии, чтобы можно было удалить этот I-узел.

Зачем эта статья?
Я пытаюсь углубиться в концепции разработки программного обеспечения и компьютерного программирования. Я буду переходить от базовых концепций, таких как ОС/СУБД, к сложным системным проектам. Я делаю это только для того, чтобы освежить память и стать лучшим разработчиком программного обеспечения.

Я попытаюсь это сделать в течение следующих 40 дней и опубликую важные идеи и ресурсы, которые я использовал. Будет также создавать видео на YouTube для вещей, которые я узнаю. Если хотите, можете следовать за ним.

Сегодня были файловые системы.
Примерный набор ресурсов: https://lnkd.in/eztTH_AZ