Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
вступ, ст 22-93.doc
Скачиваний:
5
Добавлен:
02.09.2019
Размер:
1.62 Mб
Скачать

Iink ("/ usr/jim/memo", "/ usr / ast / note"): то файл memo в каталозі Джима з'явиться у каталозі Аста під назвою note.

Відповідно, / usr / jim / memo та / usr / ast / note тепер будуть посилатися на один і той же файл. Зберігаються каталоги користувачів в каталозі / usr, / user, / home або де-небудь ще, визначається локальним системним адміністратором.

Можливо, стане зрозуміліше, що робить системний виклик link, якщо розібратися

в тому, як він працює. Кожний файл у UNIX має унікальний номер - заходів, який ідентифікує файл (identification - ідентифікація). 1-номер - це індекс в таблиці i-вузлів (i-nodes), що містить по одному на файл. Кожен i-сайт включає в себе інформацію про господаря файлу, про те, які блоки на диску він займає і т. д. Каталог представляє собою просто файл, що містить набір пар (i-номер, ASCII-ім'я). У першій версії UNIX під кожен елемент каталогу було відведено 16 байт: два байти для i-номери та 14 байт для назви. Хоча тепер для підтримки довгих імен використовується складніша структура, концептуально каталог все ще залишається набором пар (i-номер, ASCII-ім'я). На рис. 1.19 файл mail має номер, рівний 16 і т. д. Виклик link просто створює новий елемент каталогу, можливо, з новим ім'ям, використовуючи i-номер існуючого файлу. На рис. 1.19, б два елементи мають однаковий i-номер G0) і, таким чином, посилаються на один і той же файл. Якщо згодом один з них буде видалений за допомогою системного виклику uni i nk, інший елемент залишиться. Якщо будуть вилучені обидва файлу, UNIX переконається, що більше немає записів, які відповідають цього файлу (поле в таблиці i-вузлів зберігає дані з номером елемента каталогу, вказують на файл), і видалить файл з диска.

Рис. 1.19. Два каталогу до приєднання / usr / jim / memo до каталогу ast (а); ті ж каталоги

після виклику link (б)

Як згадувалося вище, системний виклик mount дозволяє об'єднувати в одну

дві файлові системи. Звичайна ситуація така: На жорсткому диску знаходиться

коренева файлова система, яка містить виконавчі (виконавчі) версії загальних

команд і найбільш часто використовуються файли. При цьому користувач може

вставити в дисковод дискету для читання файлів.

За допомогою системного виклику mount файлову систему з гнучкого диска

можна приєднати до кореневої файлової системи, як показано на рис. 1.20.

Типовий оператор на мові С, що виконує монтування, виглядає так:

mount ("/ dev / fdO", "/ mnt". 0);

де першим параметром є ім'я спеціального блокового файлу на диску 0,

другий параметр - це місце в дереві, куди буде вмонтована файлова система,

а третій параметр говорить про те, монтується чи вбудована файлова система

для читання і запису або тільки для читання.

Рис. 1.20. Файлова система: до виклику mount (а); після виклику mount (б)

Після виклику mount доступ до файлу на диску 0 можна отримати, просто вказавши його шлях з кореневого або робочого каталогу, незалежно від того, на якому диску він знаходиться. Насправді другий, третій і четвертий диски теж можна вбудувати в будь-який зручний місце в дереві. Виклик mount дозволяє об'єднати знімні носії в єдину інтегровану файлову структуру, не піклуючись про те, на якому з пристроїв фактично знаходиться файл. Хоча в нашому прикладі

розглядалися гнучкі диски, жорсткі диски або їх частини (часто звані розділами (partition) або молодшими пристроями (minor devices)) монтуються аналогічно. Коли файлова система більше не потрібна, її можна демонтувати за допомогою системного виклику umount.