207
Выполнение такого вызова включает в себя позиционирование файлового
курсора на запись, определяемую ключом key, и собственно обмен. Ключ может
входить в состав записи как одно из ее полей (например, поле фамилии в списке
личного состава) или не содержаться в составе записи (например, ключ – порядковый
номер записи).
Файлы комбинированного доступа допускают как прямой доступ по
ключу (keyRead/keyWrite), так и последовательный (read/write) в
порядке возрастания ключей. Системный вызов, например, для чтения по
ключу 'Коваль' обеспечит считывание записи, относящейся к
сотруднику Ковалю, последующие системные вызовы последовательного
чтения будут считывать записи, относящиеся к сотрудникам, следующим
за Ковалем в принятом (например, в алфавитном) порядке.
Какой организации отдать предпочтение: байт– или записе–
ориентированной? Как мы уже отмечали, байт–ориентированная
организация гибче, но при ней задача структурирования файла
перекладывается на приложения – а задача эта не всегда простая. Фирма
IBM, не желая, с одной стороны, отказываться от преимуществ записе–
ориентированной организации, а с другой, – желая обеспечить
совместимость своих ОС со стандартами, обеспечивает поддержку обеих
структур, и такое решение представляется нам оптимальным.
Интересной, хотя пока несколько экзотической формой файлов
являются файлы отображаемого доступа. Такие файлы при открытии
отображаются в виртуальное адресное пространство процесса. Операция
open может возвращать дескриптор сегмента в виртуальной памяти, и в
дальнейшем все манипулирование с данными файла будет выполняться,
как манипулирование с данными в памяти. Хотя такое решение является
весьма элегантным, его реализация требует значительного расширения
разрядности представления виртуального адреса и реализуется пока только
в 64-разрядных клонах Unix.