MS-DOS 2.0 хранит буфер чтения с диска, но не буфер записи. Буфер чтения важен: он позволяет избежать повторного чтения. И его можно аннулировать, когда том отмонтирован.
Но погодите, мы же не отмонтируем дискеты. Мы их просто вынимаем.
Дисководы той эпохи можно было открыть вручную и вынуть дискету в любое время. В спецификации были предусмотрены статусы для открытия дверцы дисковода, но IBM не реализовала эту часть спецификации, чтобы сэкономить один логический вентиль. Поставщики оборудования пойдут на всё, лишь бы сэкономить хотя бы цент.
Но этот буфер чтения критически важен для производительности. Без него вам придётся начинать с нуля каждую операцию ввода-вывода, перечитывая оглавление тома, находя записи каталога, просматривая таблицы распределения блоков в поисках следующего свободного кластера… и дискета точно не самый быстрый накопитель, поэтому все эти операции растягиваются на секунды.
Чтобы оставить хоть какой-то кэш, разработчики MS-DOS запустили бенчмарк: как быстро человек может сменить дискету в дисководе IBM PC?
Руководитель проекта MS-DOS 2.0 Марк Збиковски сидел с секундомером, пока Аарон Рейнольдс и Крис Питерс пытались как можно быстрее поменять дискеты на компьютере IBM.
Они не могли сделать это быстрее, чем за две секунды.
Таким образом, срок действия кэша MS-DOS был установлен в две секунды. Если два доступа к дискете происходят в двухсекундном интервале, то при второй попытке используется кэш от старой дискеты.
Я не знаю, является ли современная двухсекундная политика очистки кэша прямым следствием того соревнования в офисе, но мне нравится думать, что какая-то связь есть.
Автор: m1rko