Настройка и работа в Linux
adb5321d

Кунсткамера


Отдельные возможности можно обнаружить только в определенной операционной системе (в частности, конкретном диалекте Unix), однако они могут быть достаточно забавны в своих проявлениях и, тем самым, интересны широкой публике.

Некоторое время назад автор услышал на семинаре, что в одной из операционных систем (не станут ее называть – быть может, ее создатели стали осмотрительнее) имеется исключительно разумный компилятор и ассемблер (именно отдельно стоящий компилятор, ассемблер и т.п.). Компилятор, судя по скорости повторной компиляции, как-то учитывает свой предыдущий опыт и в несколько раз быстрее выполняет ту же задачу. Пройти мимо такого чуда было невозможно. Дополнительные тесты подтвердили, что происходит ускорение в несколько раз. В чем же дело? Как компилятор мог учесть произвольные изменения в тексте программы?

Ларчик открылся достаточно просто. Как большинство систем указывает на то, какие блоки принадлежат файлу? Используются самые разнообразные способы. Например, можно хранить ссылки на блоки в описателе файла и каком-то количестве индексов:

бi – указатель на конечный (содержащий данные) блок файла

Можно хранить информацию не об отдельных файлах, а о сегментах:

На этой картинке дi – количество последовательно хранящихся блоков.

Можно хранить информацию о первом блоке и отдельно связанный список блоков:

В упомянутой системе был использован следующий метод:

В каждом блоке содержалось по две ссылки (соответственно на предыдущий и следующий блок). Поскольку это была система реального времени, то, как это обычно бывает в системах этого типа, никакого кэширования данных не предусматривалось. Любые действия над файлами были достаточно утомительными; в частности, для того чтобы просто позиционироваться в конец файла, требовалось прочитать его целиком. Трудной процедурой было и обычное выделение места под файл. Чтобы уменьшить затраты на повторное выделение места под файл, было принято следующее решение: при повторном открытии файла на запись место не освобождается, а просто изменяется счетчик длины. Как вы уже догадались, вероятно, именно этим и объяснялась уникальная "разумность" средств разработки в этой системе.



Содержание раздела