В данном случае применимы все рассуждения из приложения А к главе 1, "Обзор компьютерных систем". Проблема производительности кэша сводится к вопросу о том, можно ли достичь заданной результативности поиска. Ответ на этот вопрос зависит от локализации дисковых обращений, алгоритма замещения и других факторов проектирования. В первую очередь результативность поиска, конечно, зависит от размера дискового кэша. На рис. 11.12 приведены итоги ряда исследований с использованием LRU (одно для операционной системы UNIX, работающей на платформе VAX [OUST85], а два других — для операционных систем мэйнфреймов IBM [SMIT85]). На рис. 11.13 показаны результаты имитационного моделирования алгоритма замещения на основе частоты обращений. Сравнение этих двух графиков указывает на одну из опасностей такой оценки эффективности. Из графиков следует, что LRU выигрывает у алгоритма замещения на основе частоты обращений. Однако при сравнении идентичных последовательностей обращений с использованием одной и той же структуры кэша выясняется, что алгоритм замещения с учетом частоты обращений оказывается лучшим. Следовательно, влияние на достигаемую производительность, кроме прочего, оказывает конкретная последовательность обращений.
Рис.11.12.Производительность дискового кэша при использовании LRU
Рис. 11.13. Производительность дискового кэша при использовании алгоритма замещения с учетом частоты обращений [ROBI90]
11.8. ВВОД-ВЫВОД В UNIX SVR4
В UNIX каждое устройство ввода-вывода рассматривается как специальный файл. Эти файлы управляются файловой системой, и чтение и запись осуществляются так же, как и чтение и запись обычных пользовательских файлов данных. Тем самым обеспечивается ясный и однородный интерфейс для пользователей и процессов. Для осуществления чтения из устройства или записи в него соответствующие запросы направляются к специальному файлу, связанному с устройством.
На рис. 11.14 показана логическая схема средств обслуживания ввода-вывода. Файловая подсистема управляет файлами на устройствах вторичной памяти, а кроме того, она служит интерфейсом процесса к устройствам, поскольку они рассматриваются как файлы.
В UNIX существуют два вида ввода-вывода: с буферизацией и без нее. Буферизированный ввод-вывод выполняется через системные буфера, в то время как небуферизированный ввод-вывод обычно включает средства DMA, которые обеспечивают передачу данных между устройством ввода-вывода и областью ввода-вывода процесса. При буферизированном вводе-выводе используются два вида буферов: системные буфера и очереди символов.