Unix,
базові принципи та особливості
Що
входить в ядро
Що
знаходиться в оперативній пам'яті
Засоби
економії пам'яті. Віртуальна пам'ять
Файлова
система Unix
Внутрішня
структура файлової системи Unix
Формат
індексного описувача файлу
Всі системні дії виконує ядро операційної системи Unix. Ядро - звичайний виконуваний файл, розташований у файлі/unix або/stand/unix або/vmunix
або/vmlinuz (в залежності від конкретної реалізації). Можете подивитися розмір цього файлу - не маленький. При початковому завантаженні системи ядро цілком
завантажується в оперативну пам'ять, і надалі резидентної знаходиться в ній, виконуючи всі необхідні роботи. p>
Що входить в ядро. b> p>
драйвери пристроїв. І тих, які є, і тих, яких немає, але можуть бути, а так само й такі, які ніколи вам не знадобляться. p>
КЕРУЮЧІ підпрограм: частини коду, відповідальні за забезпечення роботи користувача програм - поділ часу і інших ресурсів системи. p>
СЛУЖБОВІ ТАБЛИЦІ І ДАНІ ядра: таблиці поточних процесів, відкритих файлів, керуючі структури ... p>
СИСТЕМНІ ВИКЛИКИ. (Те, що MS-DOSе називається "21 переривання" - можна вважати певною аналогією/пародією на системні виклики.) З точки зору
програміста це звичайна си-шная функція, тільки виконує вона системно-залежні дії, наприклад: прочитати дані з файлу, встановити мережне
з'єднання, створити каталог, і т.д. і т.п. Усі системні виклики (а всього їх більше 1500 штук) вкомпіліровани в тіло ядра unix. Користувацькі програми,
викликають функції, які є системними викликами, насправді містять тільки jump'и на відповідні адреси пам'яті в ядрі. У налаштовувану
програму системні виклики не влінковиваются. p>
Що знаходиться в оперативній пам'яті. b> p>
ЯДРО ОПЕРАЦІЙНОЇ СИСТЕМИ. p>
Буферні КЕШ. Частина оперативної пам'яті резервується під кешування читання і запису на диск. Будь-яка операція читання з диска призводить до того, що
прочитані з блоки поміщаються в буферний кеш, а з нього вже передаються запросив дані програмами. Якщо блок потрапив в кеш, то всі наступні
звернення до нього будуть отримувати образ блоку з кеша, причому не залежно, від того - та ж сама програма, звертається до блоку, або будь-яка інша.
Кешується так само і запис на диск, знову ж таки, Колективна між всіма виконуваними програмами. p>
ПРОЦЕСИ. Процесом в Unix'е називається виконується програма p>
Засоби економії пам'яті. Віртуальна пам'ять. B> p>
РЕЕНТЕРАБЕЛЬНОСТЬ КОДА. Коли одна й та сама програма (виконуваний файл) запущена в кількох примірниках, то в оперативну пам'ять завантажується тільки
одна копія виконуваного асемблерні коду на всіх. Кожен виконуваний процес використовує один і той же текст програми, просто у кожного процесу є
свій власний вказівник на поточний оператор. p>
отеки. (У Windows є схоже поняття DLL - динамічно бібліотекою). Деяка кількість часто виконуваних функцій
(наприклад printf, та й багато інших) оформляється у вигляді спеціальним чином підготовленої бібліотеки (SHARED LIBRARY). При компіляції програми,
використовує колективні бібліотеки, ці функції не лінкуются всередину коду програми. Вони "висмикуються" з бібліотеки на стадії виконання
програми. Цим ми економимо місце на диску і в оперативній пам'яті: у програмах відсутній код поділюваних функцій, а в оперативній пам'яті ця функція
присутня в одному примірнику на всіх. p>
SWAPING. Кожен Unix-процес функціонує у своєму власному 32-х бітному віртуальному адресному просторі, не перетинається з іншими. Адресне
простір процесу може бути більшим, ніж фізична оперативна пам'ять. Віртуальна пам'ять підтримується за допомогою PAGING'а - дозволу віртуальних
адрес у фізичні "на льоту", з підкачкою відсутніх сторінок пам'яті з swap-області на жорсткому диску. p>
Насправді SWAPING'а як такого в Unix'е немає, замість нього застосовується набагато більш гнучкий PAGING. (swaping - за визначенням, це ПОВНА вивантаження
програми на swap-область з метою звільнення місця в оперативній пам'яті). p>
Область пам'яті, зайнята програмою розділена на три частини: TEXT (виконувані коди програми), DATA (статичні дані програми), STACK (динамічні
дані). Коли операційка звільняє місце в пам'яті за рахунок TEXT'а, то вона не займається скиданням його на диск. Вона одразу позначає його як вільний.
Дійсно, коли буде потрібно завантажити TEXT назад в пам'ять, його можна буде взяти з самого виконуваного файлу з програмою. Така економія має
один побічний ефект. Файл програми, яка в даний момент виконується, неможливо знищити. Операційна система повідомить в цьому випадку: "text
file busy ", і відмовиться виконувати видалення. p>
БІТ нав'язливим. (sticky bit). Виконувана програма може мати додатковий атрибут. Так званий "біт нав'язливості". Коли
така програма закінчує виконання, операційка (якщо можливо) намагається не займати пам'ять, в якій знаходився текст програми. Відповідно,
повторний її запуск відбудеться дуже швидко - адже програма все ще завантажена в пам'ять, її не потрібно зачитувати з диска. Потрібно просто передати на неї
управління. p>
Файлова система Unix. b> p>
Файлова система в Unix - "дерев'яна", складається з файлів і каталогів. На кожному розділі диску створюється власна незалежна файлова
система. Окремі файлові системи "зчіплюються" разом, в єдине спільне дерево директорій. Така операція називається "монтуванням".
Виглядає це приблизно так: p>
mount-F ufs/dev/dsk/m197_c0d0s5/home1 mount-F ufs/dev/dsk/m197_c0d0s4/usr df
Отримати доступ до файлів "несмонтірованной" файлової системи, неможливо. Порочний пракіка MS-DOSа - скільки розділів, стільки й "дисків"
(A: b: c: d: e: ... k: l: m: n:) у Unix не застосовується. У Unix завжди є рівно одне спільне дерево каталогів, і, за великим рахунком, користувачам
абсолютно все одно, на якому саме диску або розділі диска розташовані його файли/usr/spool/moshkow або/home1/moshkow/bin/mcopy ... p>
Файлова система Unix кешується буферним кешем. Операція запису на диск виконується не тоді, коли це наказує виконуваний процес, а коли
операційна система вважатиме за потрібне це зробити. Це різко піднімає ефективність і швидкість роботи з диском, і підвищує небезпеку її
використання. Вимкнення живлення на "гарячій", що працює Unix-машині призводить до руйнувань структури файлової системи. p>
При кожній початковій завантаженні Unix перевіряє - чи коректно була вимкнена машина минулого разу, і якщо ні - автоматично запускає утиліту fsck (File
System Check) - перевірку та ремонт файлових систем .. p>
Внутрішня структура файлової системи Unix. b> p>
Розділ диску, в якому створена файлова система, розбитий на три частини. p>
суперблоку. Займає 1 Kb. Містить службову інформацію: p>
Тип файлової системи,
Розмір
Початок списку вільних блоків.
. . . щось ще
ОБЛАСТЬ INOD-ів. Займає приблизно 8% загального розміру розділу. inode - Index-node - описувач файлу. Він містить всю інформацію про файл, за
винятком імені файлу, і власне даних файлу. У inod'е зберігається: p>
тип файлу (файл, каталог, іменований канал, спеціальний файл)
хто власник
права (атрибути) файлу
час модифікації/створення файлу
адреси блоків, з яких складається файл
что-то еще ...
ОБЛАСТЬ ДАНИХ. У цій області розташовані блоки з даними фай лов. Незайняті блоки провязани в ПЕРЕЛІК ВІЛЬНИХ БЛОКІВ p>
Файли бувають двох основних типів. ФАЙЛ, КАТАЛОГ. p>
ФАЙЛ - він і є файл. p>
КАТАЛОГ - файл фіксованого формату: складається з рядків з іменами файлів, що входять до каталогу p>
імя_файла1 Номер_Інода1 імя_файла2 Номер_Інода2. . .
Щоб отримати доступ до файлу по імені, операційна система p>
знаходить це ім'я в каталозі, що містить файл,
бере Номер_Інода файлу,
за номером знаходить inod в області inod'ов,
з inod'а бере адреси блоків, в яких розташовані дані файлу,
за адресами блоків зчитує блоки з області даних.
Все. p>
Формат індексного описувача файлу. b> p>
Область Інода розбита на 64-х байтним структури - inod'и. У inod'е зберігається: p>
Тип файлу (файл/каталог/спеціальний файл/fifo/socket)
Атрибути (права доступу)
Власник файлу
Група-власник файлу
Часи створення, модифікації, останнього доступу до файлу
Довжина файлу
Адреса 1-го блоку файлу
Адреса 2-го блоку файлу
...
Адреса 10-го блоку файлу
Адреса блоку непрямої адресації (блоку за 256 адресами блоків)
Адреса блоку 2-й непрямої адресації (блоку за 256 адресами блоків з
адресами)
Адреса блоку 3-й непрямої адресації (блоку з адресами блоків з адресами
блоків з адресами)
Точний формат структури файлової системи див. man fs p>