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

Практичне заняття 7

Організація файлової системи в UNIX. Робота з файлами і директоріями. Поняття про memory mapped файли

Мета: розглянути та практично опрацювати наступні питання: Розділи носія інформації (partitions) в UNIX. Логічна структура файлової системи і типи файлів в UNIX. Організація файлу на диску в UNIX на прикладі файлової системи s5fs. Поняття індексного вузла (inode). Організація директорій (каталогів) в UNIX. Поняття суперблоку. Операції над файлами і директоріями. Системні виклики і команди для виконання операцій над файлами і директоріями. Системний виклик open(). Системний виклик close(). Операція створення файлу. Системний виклик creat(). Операція читання атрибутів файлу. Системні виклики stat(), fstat() і lstat(). Операції зміни атрибутів файлу. Операції читання з файлу і запису у файл. Операція зміни покажчика поточної позиції. Системний виклик lseek(). Операція додавання інформації у файл. Прапор O_APPEND. Операції створення зв'язків. Команда ln, системні виклики link() і symlink(). Операція видалення зв'язків і файлів. Системний виклик unlink(). Спеціальні функції для роботи з вмістом директорій. Поняття про файли, що відображаються в пам'ять (memory mapped файлах). Системні виклики mmap(), munmap(). Отримати практичні навички написання відповідних системних викликів та їх аналогів для різних операційних систем.

Введення

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

Розділи носія інформації (partitions) в unix

Фізичні носії інформації – магнітні або оптичні диски, стрічки і т.д., що використовуються як фізична основа для зберігання файлів, в операційних системах прийнято логічно ділити на розділи (partitions) або логічні диски. Причому слово "ділити" не слід розуміти буквально, в деяких системах декілька фізичних дисків можуть бути з'єднано в один розділ. Про це докладніше розказується в лекції 12 в розділі "Загальна структура файлової системи".

В операційній системі UNIX фізичний носій інформації звичайно є одним або декількома розділами. В більшості випадків розбиття на розділи проводиться лінійно, хоча деякі варіанти UNIX можуть допускати якусь подібність деревовидного розбиття (Solaris). Кількість розділів і їх розміри визначаються при форматуванні диска. Оскільки форматування диска відноситься до області адміністрування операційних систем, воно в нашому курсі розглядатися не буде.

Наявність декількох розділів на диску може визначатися вимогами операційної системи або побажаннями користувача. Припустимо, користувач хоче розмістити на одному жорсткому диску декілька операційних систем з можливістю поперемінної роботи в них, тоді він розміщує кожну операційну систему в своєму розділі. Або інша ситуація: необхідність роботи з декількома видами файлових систем. Під кожний тип файлової системи виділяється окремий логічний диск. Третій варіант – це розбиття диска на розділи для розміщення в різних розділах різних категорій файлів. Скажімо, в одному розділі поміщаються всі системні файли, а в іншому розділі – всі призначені для користувача файли. Прикладом операційної системи, внутрішні вимоги якої приводять до появи декількох розділів на диску, можуть служити ранні версії MS-DOS, для яких максимальний розмір логічного диска не перевищував 32 Мбайт.

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