Главная страница  Межпроцессное взаимодействие (состязание) 

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 [ 145 ] 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187

иметь возможность получить доступ к нужной записи, не читая все тысячи предшествующих записей с информацией о других рейсах.

Место начала чтения указывается двумя способами. В первом случае каждая операция read неявно устанавливает позицию в файле. Во втором варианте используется специальная операция seek, устанавливающая новую текущую позицию. После выполнения операции seek файл можно читать последовательно с текущей позиции.

В некоторых старых операционных системах, работающих на мэйнфреймах, способ доступа к файлу (последовательный или произвольный) указывался в момент создания файла. Это позволяло операционной системе применять различные методы для хранения файлов разных классов. В современных операционных системах такого различия не проводится. Все файлы автоматически являются файлами произвольного доступа.

5.1.5. Атрибуты файла

у каждого файла есть имя и данные. Помимо этого, все операционные системы связывают с каждым файлом также и другую информацию, например дату и время создания файла, а также его размер. Мы будем называть эти дополнительные сведения атрибутами файла. Список атрибутов значительно варьируется от системы к системе. В табл. 5.2 показаны некоторые возможные атрибуты, однако существуют также и другие. На практике ни в одной операционной системе не используются сразу все приведенные в таблице атрибуты файлов, но каждый из них встречается в той или иной системе.

Первые четыре атрибута относятся к защите файла и содержат информацию о том, кто вправе получить доступ к файлу, а кто нет. Возможны различные схемы реализации защиты файла, несколько из них мы рассмотрим ниже. В некоторых системах пользователь должен для получения доступа к файлу указать пароль. В этом случае пароль должен входить в атрибуты файла.

Флаги представляют собой биты или короткие поля, управляющие некоторыми специфическими свойствами. Например, скрытые файлы не появляются в перечне файлов при распечатке каталога. Флаг архивации представляет собой бит, следящий за тем, была ли создана для файла резервная копия. Этот флаг очищается программой архивирования и устанавливается операционной системой при изменении файла. Таким образом, профамма архивирования может определить, какие файлы следует архивировать. Флаг временный позволяет автоматически удалять помеченный им файл по окончании работы создавшего файл процесса.

Атрибуты длины записи, позиции ключа и длины ключа присутствуют только у тех файлов, записи которых могут искаться по ключу.

Различные атрибуты, хранящие значения времени, позволяют следить за тем, когда файл был создан, в последний раз изменен и когда к нему в последний раз предоставлялся доступ. Эти сведения можно использовать в различных целях. Например, если исходный файл программы был модифицирован после создания соответствующего ему объектного файла, данный исходный файл должен быть перекомпилирован.



Таблица 5.2. Некоторые возможные атрибуты файлов

Атрибут

Значение

Защита Пароль Создатель Владелец

Флаг только чтение флаг скрытый Флаг системный Флаг архивный

Флаг ASCII/двоичный

флаг произвольного доступа

Флаг временный

Флаги блокировки

Длина записи

Позиция ключа

Длина ключа

Время создания

Время последнего доступа

Время последнего изменения

Текущий размер

Максимальный размер

Кто и каким образом может получить доступ к файлу Пароль для получения доступа к файлу Идентификатор пользователя, создавшего файл Текущий владелец

О - для чтения/записи; 1 - только для чтения

О - нормальный; 1 - не показывать в перечне файлов каталога

О - нормальный; 1 - системный

О - файл помещен в резервное хранилище; 1 - требуется резервное копирование

О - ASCII; 1 - двоичный

О - только последовательный доступ; 1 - произвольный доступ

О - нормальный; 1 - для удаления файла по окончании работы процесса

О - неблокированный; отличный от нуля для блокированного

Количество байтов в записи

Смещение до ключа в записи

Количество байтов в поле ключа

Дата и время создания файла

Дата и время последнего доступа к файлу

Дата и время последнего изменения файла

Количество байтов в файле

Количество байтов, до которого можно увеличивать размер файла

Текущий размер файла указывает количество байтов в файле в настоящий момент. В некоторых старых операционных системах мэйнфреймов при создании файла требовалось указать также максимальную длину файла, что позволяло операционной системе зарезервировать достаточно места для последующего увеличения файла. Современные операционные системы, работающие на персональных компьютерах, умеют обходиться без подобного резервирования.

5.1.6. Операции с файлами

Файлы позволяют сохранять информацию и получать ее позднее. В различных операционных системах имеются различные наборы файловых операций. Ниже перечислены наиболее часто встречаемые системные вызовы, имеющие отношение к файлам.



Create (создание). Файл создается без данных. Этот системный вызов объявляет о появлении нового файла и позволяет установить некоторые его атрибуты.

Delete (удаление). Когда файл уже более не нужен, его удаляют, чтобы освободить пространство на диске. Этот системный вызов присутствует в каждой операционной системе.

Open (открытие). Прежде чем использовать файл, процесс должен его открыть. Системный вызов open позволяет системе прочитать в оперативную память атрибуты файла и список дисковых адресов для быстрого доступа к содержимому файла при последующих вызовах.

Close (закрытие). Когда все операции с файлом закончены, атрибуты и дисковые адреса становятся не нужны, поэтому файл следует закрыть, чтобы освободить пространство во внутренней таблице системы. Многие операционные системы позволяют одновременно открыть лишь ограниченное количество файлов. Запись на диск производится поблочно, а закрытие файла вызывает запись последнего блока файла, даже если этот блок еще не заполнен до конца.

Read (чтение). Чтение данных из файла. Обычно байты поступают с текущей позиции в файле. Считывающий процесс должен указать количество требуемых данных и предоставить для них буфер.

Write (запись). Запись данных в файл, также в текущую позицию в файле. Если текущая позиция находится в конце файла, размер файла автоматически увеличивается. В противном случае запись производится поверх существующих данных, которые теряются навсегда.

Append (добавление). Этот системный вызов представляет собой усеченную форму вызова write. Он может только добавлять данные к концу файла. Данный вызов может отсутствовать в операционных системах с минимальным набором системных вызовов.

Seek (позиционирование). Для файлов произвольного доступа требуется способ указать, где располагаются данные в файле. Эта операция устанавливает указатель текущей позиции на определенное место файла. Последующие данные будут считаны из этой позиции и записаны в нее.

Get attributes (получение атрибутов). Процессам часто требуются атрибуты интересующих их файлов. Например, для сборки программ, состоящих из большого числа отдельных исходных модулей, в системе UNIX часто используется программа make. Эта программа исследует время изменения всех исходных и объектных файлов, благодаря чему система обходится обработкой минимального их количества. Для выполнения своей работы программе требуется знать атрибуты файлов.

Set attributes (установка атрибутов). Некоторые атрибуты файла могут устанавливаться пользователем после создания файла. Этот системный вызов предоставляет такую возможность. Например, для файла может быть установлен код защиты доступа и большинство других флагов.



1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 [ 145 ] 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187

© 2000 - 2018 ULTRASONEX-AMFODENT.RU.
Копирование материалов разрешено исключительно при условии цититирования.