Cтраница 2
И, наконец, записи порождаются и запоминаются последовательно в виде файла данных на некотором физическом носителе, таком, как бобина с магнитной лентой или диск. При этом для хранения какого-либо большого файла может потребоваться несколько бобин или дисков, и, наоборот, несколько небольших файлов данных могут быть размещены на одной бобине или одном диске. Записи могут быть разной длины, но длина всех записей одного и того же типа одинакова. [16]
В силу особенностей рекурсивных алгоритмов можно быть уверенным в том, что все они основную часть своего времени будут заняты решением небольших задач; в любом случае для работы с небольшими файлами в нашем распоряжении имеются алгоритмы решения в лоб с низкими непроизводительными затратами. [17]
![]() |
Каталоговая запись файловой системы UNIX V7. [18] |
Для учета дисковых блоков файла используется обобщение схемы, показанной на рис. 6.12, позволяющее работать с очень большими файлами. Первые 10 дисковых адресов хранятся в самом i-узле. Таким образом, для небольших файлов вся необходимая информация содержится прямо в i-узле, считываемом с диска при открытии файла. Для файлов большего размера один из адресов в i-узле представляет собой адрес блока диска, называемого одинарным косвенным блоком. Этот блок содержит дополнительные дисковые адреса. Если и этого недостаточно, используется другой адрес в i-узле, называемый двойным косвенным блоком, и содержащий адрес блока, в котором хранятся адреса однократных косвенных блоков. Если и этого мало, используется тройной косвенный блок. [19]
Чтобы ускорить выполнение некоторых заданий, которые используют исходные данные на устройствах чтения карт, эти данные размещаются в библиотеке вводных данных. Файлы, размещенные в этой библиотеке, имеют последовательную организацию и доступны проблемной программе обычным образом. В библиотеке вводных данных размещаются небольшие файлы, сформированные отдельными компонентами ОС. [20]
Наибольшей популярностью среди пользователей персональных компьютеров пользуется командный процессор Norton Commander фирмы Peter Norton Computing, Inc. Распространяемая в настоящее время фирмой версия командного процессора 3.0 позволяет либо работать в обычном режиме ввода команд в командной строке, либо с помощью оконно-ориентированного интерфейса, дающего возможность использовать ручной манипулятор мышь, непосредственно выполнять наиболее употребительные команды управления файловой системой - просматривать графическое представление структуры и содержимое каталогов на дисках, выбирать новый текущий каталог, искать, копировать, перемещать и удалять группы файлов, запускать исполняемые программы. В Norton Commander имеется встроенный текстовый редактор, в котором можно быстро откорректировать небольшие файлы. Командный процессор также позволяет обмениваться данными между двумя компьютерами. Для неопытных пользователей предусмотрена возможность получения справочной информации. [21]
Выбрав команду [ Правка-Копировать в файл... С помощью этой операции, в частности, вы легко можете сохранять в небольших файлах фрагменты графической картинки, снятой с экрана клавишей PrintScreen, если хранение всей картинки нежелательно. [22]
Такой подход максимизирует количество счастливых обслуженных клиентов и кажется прекрасным. Теперь рассмотрим, что произойдет в сильно загруженной системе, когда один из процессов должен распечатать огромный файл. Каждый раз, когда принтер освобождается, система выбирает процесс с наиболее коротким файлом. Если в системе есть постоянный поток процессов с небольшими файлами, принтер никогда не будет предоставлен процессу с огромным файлом. [23]
Чтобы добиться высокой производительности конкретного приложения, использующего поразрядную сортировку, следует ограничить число пустых корзин за счет выбора соответствующего значения как основания системы счисления, так и значения, в соответствии с которым отсекаются подфайлы небольших размеров. В качестве конкретного примера предположим, что требуется отсортировать 216 ( что-то около шестнадцати миллионов) 64-разрядных чисел. Чтобы поддерживать таблицу числа повторов, намного меньшую по размерам, чем размер файла, мы можем выбрать основание R - 216, для чего требуется проверка значений 16 разрядов, составляющих ключи. Но после первого разделения средний размер файла составит всего лишь 28, и выбранное основание системы счисления для таких небольших файлов становится слишком большим. Положение усугубляет еше и то обстоятельство, что таких файлов может быть очень много: порядка 216 в рассматриваемом случае. [24]
Его можно заменить заглушкой, игнорирующей пересылаемый ей список ввода и возвращающей список, содержащий заранее отсортированные элементы. Или рассмотрим модуль, читающий входные записи и обновляющий уже существующий файл. Для каждой входной записи последовательно проверяется попадание элементов в заданные диапазоны. Заменяющая его заглушка могла бы читать небольшой файл, в котором все записи содержат данные, уже лежащие в соответствующих диапазонах. [25]
Главная плата взимается за время подключения к Интернету. Обычно указывает ся плата за каждый час подключения. Плата берется за все время от установлени связи до ее разрыва. При этом совершенно не важно, чем вы занимались: перего сывали большие файлы, посылали электронные письма или читали одну Wet страницу, то есть практически не использовали ресурсы Интернета. Кстати, есл-из-за плохого качества связи вы несколько часов безуспешно пытались переписат небольшой файл, с вас все равно возьмут плату за эти несколько часов. [26]
Ассоциативный процессор просматривает плоские файлы, поэтому гаждое слово ассоциативной памяти должно содержать один и тот же набор типов элементов данных. Следовательно, данные должны быть представлены в реляционной ( нормализованной) форме, рассмотренной в гл. Некоторые из нормализованных отношений могут иметь больше битов в кортежах, чем их содержится в слове ассоциативной памяти. Отношения такого большого размера следует физически разделить на группы доменов, соответствующие разрядности слов ассоциативной памяти. Веооятно, что используемая в системах управления базами данных ассоциативная память пригодна скорее для операций над сравнительно небольшими файлами связей, чем над файлами самих данных, которые имеют обычно существенно большие размеры. Можно, например, представить себе индексный блок, построенный по ассоциативному принципу для поиска в первичных и вторичных индексах. [27]
Необходимо также рассмотреть новый класс операций над записями переменной длины. Такие операции не имеют аналогов для записей фиксированной длины. Обсудим включение и удаление экземпляров в повторяющейся группе. Эти операции соответствуют модификации связи, если она представлена логическим файлом. Независимо от того, представляются ли повторяющиеся группы методом зарезервированного пространства, методом указателей или комбинированным, мы можем считать саму по себе повторяющуюся группу небольшим файлом. Пусть для повторяющейся группы, как и для главного файла, существует ключ. Этот ключ формируется из полей повторяющейся группы, но не включает никаких полей указателей. [28]
Архитектуры команд различных процессоров могут иметь весьма существенные различия. В качестве примера сравним архитектуры IA-32 и Version 9 SPARC. Первая реализуется в таких процессорах фирмы Intel, как 8086, 8088, Pentium, Celeron и др. Вторая архитектура используется в процессорах SPARC. Набор команд IA-32 характерен для CISC-процессоров, хотя, как уже отмечалось, начиная с семейства процессоров Pentium, внутри ядра команды CISC разбиваются на операции RISC. А это все оборачивается дополнительными аппаратными затратами и в итоге - увеличением площади кристалла. Архитектура IA-32 поддерживает двухадресные команды и небольшой файл регистров. CISC-команды имеют разную длину, большое количество различных форматов, и, следовательно, их сложно декодировать. Способы адресации весьма нерегулярны. [29]
Многие программы кэширования могут обеспечивать не только кэширование операций чтения, но и операций записи на диски. А именно, при выполнении операций записи на диск данные не записываются сразу на диск, а помещаются в кэш. После этого программе, осуществляющей запись, сообщается об окончании записи, и она продолжает работу. А уж затем, в наиболее удобные моменты ( скажем, при паузах в работе остальных программ), данные сбрасываются из кэша на диск. Это ускоряет работу программ, позволяет оптимизировать операции записи на диск и даже, как правило, уменьшить их количество. Так, при записи на дискету множества небольших файлов кэширование ускоряет запись в несколько раз. [30]