Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Переклад_ФС.doc
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
1.75 Mб
Скачать

Мал. 6.3. Сегментований процес до відображення файлів на адресний простір (а); процес після відображення існуючого файлу abc на один сегмент і створення нового сегменту для файлу xyz (б)

У цей момент процес може скопіювати сегмент-джерело в сегмент-приймач за допомогою звичайного циклу копіювання пам'яті. При цьому не потрібно системні виклики read і write. Коли копіювання закінчене, процес може виконувати системний виклик unmap, щоб видалити ці файли з адресного простору, і завершити свою роботу. Вихідний файл, xyz, тепер існуватиме на диску, начебто він був створений звичайним шляхом.

Хоча відображення на пам'ять усуває необхідність звернення до системних викликів вводу-виводу, разом з ним з'являються нові проблеми. По-перше, в нашому прикладі операційній системі важко визначити довжину вихідного файлу xyz. Операційна система знає номер максимальної модифікованої сторінки, але вона не може визначити, скільки байтів було записано в цю сторінку. Припустимо, програма використовує тільки сторінку 0 і після виконання циклу копіювання усі байти залишилися рівні 0 (їх початковому значенню). Можливо, файл xyz складається з 10 нулів. Можливо, він повинен складатися з 100 нулів. Хто знає? Операційна система не може цього сказати. Усе, що вона може зробити - це створити файл, довжина якого дорівнює розміру сторінки.

Друга проблема може виникнути при спробі одного процесу відкрити файл, вже відображений на адресний простір іншого процесу. Якщо перший процес модифікує сторінку, ця зміна не відіб'ється на файлі до тих пір, поки ця сторінка не буде збережена у файлі. Операційна система повинна докладати особливі зусилля, щоб гарантувати, що обидва процеси не працюють із застарілими версіями файлу.

Третя проблема, пов'язана з відображенням файлів на пам'ять, викликана тим, що файл може виявитися більше сегменту пам'яті і навіть більше ніж увесь віртуальний адресний простір. При цьому єдиний спосіб роботи системного виклику map полягає у відображенні на пам'ять частини файлу. Хоча такий метод і працює, він все ж менш зручний, чим відображення усього файлу повністю.

Каталоги

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

Однорівневі каталогові системи

Проста форма системи каталогів полягає в тому, що є один каталог, в якому містяться усі файли. Іноді його називають кореневим каталогом, але оскільки він в таких системах єдиний, його назва не має значення. Така система була дуже поширена на ранніх персональних комп’ютерах, зокрема тому, що у них було всього по одному користувачеві. Перший у світі суперкомп'ютер CDC 6600також мав всього один каталог для усіх фай-лов, не дивлячись на те, що на нім одночасно працювало багато користувачів. Це рішення було прийняте для збереження простоти програмного забезпечення.

С хемний однокаталогова система показана на мал. 6.4. У цьому прикладі каталог складається з чотирьох файлів. На малюнку буквами А, В і С показані не імена файлів, а їх власники (оскільки саме наявність декількох користувачів в такій системі створює проблеми). Перевагою такої схеми є її простота і здатність швидко знаходити файли, оскільки вони можуть розташовуватися тільки в одному місці.

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

Мал. 6.4. Однокаталогова система, що містить чотири файли

Недолік системи з одним каталогом і декількома користувачами полягає в тому, що різні користувачі можуть випадково використовувати для своїх файлів однакові імена. Наприклад, якщо користувач А створить файл mailbox, а потім користувач В також створить файл mailbox, то файл, створений користувачем В запишеться поверх файлу, створеного користувачем А. Тому така схема більше не використовується в розрахованих на багато користувачів системах, але може застосовуватися в невеликих вбудованих системах, наприклад автомобільною системою, призначеною для зберігання профілів користувачів для невеликої кількості водіїв.

Дворівнева система каталогів

Першим етапом в справі вирішення проблеми однакових імен файлів, створених різними користувачами, можна рахувати систему, в якій кожному користувачеві виділяється один каталог. При цьому імена файлів, створених одним користувачем, не конфліктують з іменами файлів іншого користувача. Схематично така дворівнева каталогова система проілюстрована на мал. 6.5. Букви означають власників каталогів і файлів. Така організація могла, наприклад, використовуватися на розрахованому на багато користувачів комп'ютері або в простій мережі персональних комп'ютерів, сполучених із загальним файловим сервером локальною мережею.

файли