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

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

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

5.2. Каталоги

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

5.2.1. Иерархические системы каталогов

обычно каталог содержит некоторое число записей, по одной записи на файл. Один из вариантов показан на рис. 5.3, а, где каждая запись каталога включает в себя имя файла, его атрибуты и адрес данных файла на диске. Другой вариант представлен на рис. 5.3, б. Здесь запись каталога хранит имя файла и указатель на структуру данных с атрибутами и дисковыми адресами. Широко применяются оба этих варианта.

games

1 Атрибуты

mail

1 Атрибуты

news

] Атрибуты

work

1 Атрибуты

games

mail

news

work


Структура данных, содержащая атрибуты

Рис. 5.3. а - атрибуты хранятся в каталоге; б - атрибуты хранятся отдельно

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

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



Развитием этой идеи является двухуровневая иерархия, когда каждому пользователю выделяется отдельный каталог (рис. 5.4, б). Благодаря двухуровневой иерархии исчезают конфликты имен файлов между различными пользователями, но ее недостаточно для пользователей с большим числом файлов. Обычно пользователям бывает необходимо логически группировать свои файлы. Например, у профессора может быть набор файлов, образующих книгу, которую он пишет для одного курса, другое множество файлов, содержащее программы студентов для иного курса. Третий набор файлов может содержать исходные тексты разрабатываемого профессором нового компилятора, четвертая группа файлов - предложения различных грантов, а также электронная почта, расписание встреч, статьи, игры и т. д. Требуется некий гибкий способ, позволяющий объединять эти файлы в группы.

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

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

Каталог Файл

Корневой


С \<- Каталог-Н А пользователя

Корневой каталог


Подкаталоги пользователя

Рис. 5.4. Три варианта устройства файловой системы: а - один каталог на всех пользователей; б - отдельный каталог для каждого пользователя; а - дерево каталогов для каждого из пользователей. Буквами обозначены владельцы каталога или файла



5.2.2. Пути

При организации файловой системы в виде дерева каталогов требуется некоторый способ указания файла. Для этого обычно используется два различных метода. В первом случае обращение к файлу выполняется по абсолютному имени пути, составленному из имен всех каталогов от корневого до того, в котором содержится файл, и имени самого файла. Например, путь/usr/ast/mailbox означает, что корневой каталог содержит подкаталог usr, в который, в свою очередь, вложен подкаталог ast, где находится файл mailbox. Абсолютные имена путей всегда начинаются от корневого каталога и являются уникальными. В системе UNIX компоненты пути разделяются косой чертой /. В Windows в качестве разделителя принята обратная косая черта \. В системе MULTICS использовался символ >. Таким образом, одно и то же имя пути в этих трех операционных системах будет выглядеть следующим образом:

Wi ndows\usr\ast\mai1 box

UNIX/usr/ast/mailbox

MULTICS>usr>ast>ma1lbox

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

Применяется и относительное имя пути. Оно используется вместе с концепцией рабочего каталога (также называемого текущим каталогом). Пользователь может назначить один из каталогов текущим рабочим каталогом. В этом случае все имена путей без начального символа разделителя считаются относительными и отсчитываются относительно текущего каталога. Например, если текущим каталогом является /usr/ast, тогда к файлу с абсолютным путем /usr/ast/mailbox можно обратиться просто как к mailbox. Другими словами, команда UNIX

ср /usr/ast/mailbox /usr/ast/mailbox.bak

и команда

ср mailbox mailbox.bak

выполнят одно и то же действие, если рабочим каталогом является /usr/ast. Относительная форма часто оказывается более удобной, но она подразумевает то же самое, что и абсолютная.

Некоторым программам бывает нужно получить доступ к файлам независимо от того, какой каталог является в данный момент текущим. В этом случае они всегда должны указывать абсолютные имена. Например, программе проверки правописания может понадобиться для выполнения работы прочитать файл /usr/lib/dictionary. В этом случае она должна использовать полное, абсолютное имя файла, так как она не знает, каким будет рабочий каталог при ее вызове. Абсолютное имя файла будет работать всегда, независимо от того, какой каталог является текущим в данный момент.

Если программе проверки правописания понадобится большое количество файлов из каталога /usr/lib, она может, обратившись к операционной системе, поменять рабочий каталог на /usr/lib, после чего указывать просто имя dictionary для первого аргумента системного вызова open. Явно указав свой рабочий каталог.



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.
Копирование материалов разрешено исключительно при условии цититирования.