Проблема, над которой я работала, недавно заставила меня позаботиться о том, чтобы я мог убрать перед собой файл. Похоже на "усечение спереди", если хотите. Усечение файла на задней панели является общей операцией - что-то мы делаем, даже не задумываясь об этом. Но вырвать фронт файла? Сначала звучит смешно, но только потому, что мы были обучены думать, что это невозможно. Но в некоторых ситуациях операция lop может быть полезна.
Простым примером (конечно, не единственным или обязательно лучшим примером) является очередь FIFO. Youre добавляет новые элементы в конец файла и вытаскивает элементы из файла с фронта. Файл растет с течением времени, а theres - огромное пустое пространство спереди. С текущими файловыми системами существует несколько способов решения этой проблемы:
- По мере удаления каждого элемента скопируйте оставшиеся предметы, чтобы заменить его, и усечь файл. Хотя он работает, это решение очень дорого Время-накрест.
- Следить за размером пустого места в фронт, и когда он достигает конкретный размер или процент весь размер файла, переместить все вверх и обрезать файл. Это много более эффективны, чем предыдущие решение, но все же стоит время, когда элементы перемещаются в файл.
- Реализация круговой очереди в файл, добавив новые предметы в отверстие в перед файлом в качестве элементов удален. Это может быть довольно эффективным, особенно если вы не возражаете против возможность выхода из порядок в очереди. Если вы заботитесь о порядке, то потенциал вынуждены перемещать предметы вокруг. Но в общий, круговая очередь довольно легко реализовать и управлять диском пространство хорошо.
Но если была операция lop, удаление элемента из очереди было бы так же просто, как обновление маркера начала файла. Как легко, на самом деле, как обрезание файла. Почему тогда нет такой операции?
Я немного разбираюсь в реализации файловых систем и не вижу особых причин, по которым это будет сложно. Мне кажется, что все, что потребуется, - это другое слово (возможно, слово?) Для каждой записи выделения, чтобы сказать, где начинается файл в блоке. При использовании емкостей емкостью 1 терабайт до 100 долларов США, это выглядит довольно маленькой ценой за такую функциональность.
Какие другие задачи будут упрощены, если вы сможете вырвать фронт файла так же эффективно, как вы можете усечь в конце?
Можете ли вы придумать какие-либо технические причины, по которым эта функция не может быть добавлена в современную файловую систему? Другие, нетехнические причины?