
- •Практичне заняття 7
- •Введення
- •Розділи носія інформації (partitions) в unix
- •Логічна структура файлової системи і типи файлів в unix
- •Організація файлу на диску в unix на прикладі файлової системи s5fs. Поняття індексного вузла (inode)
- •Організація директорій (каталогів) в unix
- •Поняття суперблоку
- •Операції над файлами і директоріями
- •Системні виклики і команди для виконання операцій над файлами і директоріями
- •Спеціальні функції для роботи з вмістом директорій
- •Поняття про файли, що відображаються в пам'ять (memory mapped файлах). Системні виклики mmap(), munmap()
- •Аналіз, компіляція і прогін програми для створення memory mapped файлу і запису його вмісту Аналіз, компіляція і прогін програми для створення memory mapped файлу і запису його вмісту
- •Питання до захисту роботи
Практичне заняття 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 Мбайт.
Для простоти далі в цих практичних заняттях вважатимемо, що у нас є тільки один розділ і, отже, одна файлова система. Питання взаємного співіснування декількох файлових систем в рамках однієї операційної системи ми зачепимо дещо пізніше.