
- •Поняття операційної системи
- •Операційна система як розширена машина
- •Операційна система як менеджер ресурсів
- •Історія розвитку операційних систем
- •Перше покоління (1945-1955): електронні лампи і комутаційні панелі
- •Друге покоління (1955-1965): транзистори і системи пакетної обробки
- •Третє покоління (1965-1980): інтегральні схеми і багатозадачність
- •Четверте покоління (з 1980 року по наші дні): персональні комп'ютери
- •Історія minix 3
- •Основні концепції
- •Процеси
- •Оболонка
- •Системні виклики
- •Системні виклики для управління процесами
- •Системні виклики для управління сигналами
- •Системні виклики для управління файлами
- •Системні виклики для управління каталогами
- •Системні виклики для захисту
- •Системні виклики для управління часом
- •Структура операційної системи
- •1.5.2. Багаторівневі системи
- •1.5.3. Віртуальні машини
- •1.5.4. Екзоядра
- •1.5.5. Модель клієнт-сервер
- •2.1.1. Модель процесів
- •2.1.2. Створення процесів
- •2.1.3. Завершення процесів
- •2.1.4. Ієрархії процесів
- •2.1.5. Стани процесів
- •2.1.6. Реалізація процесів
- •2.1.7. Програмні потоки
- •2.2. Взаємодія між процесами
- •5.1. Файли
- •5.1.1. Іменування файлів
- •5.1.2. Структура файлу
- •5.1.3. Типи файлів
- •5.1.4. Доступ до файлів
- •5.1.5. Атрибути файлів
- •5.1.6. Операції з файлами
- •5.2. Каталоги
- •5.2.1. Прості каталоги
- •5.2.2. Ієрархічні системи каталогів
- •5.2.3. Шляхи
- •5.2.4. Операції з каталогами
- •5.3. Реалізація файлової системи
- •5.3.1. Структура файлової системи
- •5.3.2. Реалізація файлів
- •5.3.4. Організація дискового простору
2.2. Взаємодія між процесами
Процесам часто буває необхідно взаємодіяти між собою.
Наприклад, в конвеєрі ядра вихідні дані першого процесу повинні передаватися
другому процесу і далі по ланцюжку. Тому на перший план виходить завдання
правильно організувати взаємодію між процесами, по можливості не
використовуючи переривання. У цьому розділі ми розглянемо деякі аспекти
взаємодії між процесами (InterProcess Communication, IPC).
Якщо не вдаватися в подробиці, проблема має три аспекти. Про перший ми вже
згадали - це передача інформації від одного процесу до іншого. Другий
пов'язаний з контролем над діяльністю процесів: як гарантувати, що два
процесу не «перетнуться» в критичних ситуаціях (уявіть собі два
процеси, кожен з яких намагається заволодіти останнім мегабайтом пам'яті).
Третій стосується узгодження дій процесів: якщо процес А відповідає за
поставку даних, а процес В за їх виведення на друк, то процес В повинен чекати,
не починаючи друкувати, поки не надійдуть дані від процесу А. Всі три аспекти
розглядаються в цьому розділі.
Не можна не згадати про те, що два з перерахованих аспектів проблеми взаємодії
взаємодії в рівній мірі відносяться до програмних потокам. Перший -
передача інформації - не представляє великої складності, якщо всі програмні
потоки знаходяться в єдиному адресному просторі.
Розділ 5
Файлові системи
Всім комп'ютерним програмам потрібно зберігати і отримувати інформацію.
У власному адресному просторі працює процес може зберігати деякі обсяги даних, але місткість такого сховища обмежена розміром віртуального адресного простору. Для деяких програм цього розміру цілком достатньо, але для інших, наприклад систем резервування авіаквитків, систем банківського або корпоративного обліку, одного тільки
віртуального адресного простору недостатньо. Друга проблема - втрата інформації, що зберігається в адресному просторі процесу, після завершення його роботи. Для більшості додатків (Наприклад, баз даних) ця інформація повинна зберігатися тижнями, місяцями
або навіть вічно. Втрата даних після завершення роботи процесу для таких програм неприйнятна. Інформація повинна продовжувати існувати навіть при аварійному завершенні процесу в разі збою комп'ютера. Третя проблема полягає в тому, що часто виникає необхідність кільком процесам одночасно отримати доступ до одних і тих же даних (або частини даних). Якщо інтерактивний телефонний довідник зберігається в адресному просторі одного процесу, то доступ до нього є тільки у цього процесу.
Для вирішення проблеми необхідно відокремити інформацію від процесу.
Таким чином, до пристроїв довготривалого зберігання інформації пред'являються три важливі вимоги:
1 пристрої повинні забезпечувати зберігання дуже великих обсягів даних;
2 інформація повинна залишатися в цілості після припинення роботи
використовує її процесу;
3 кілька процесів повинні мати можливість паралельного доступу до
інформації.
Звичайне вирішення всіх цих проблем полягає в розміщенні інформації на дисках та інших зовнішніх хранителів в модулях, які називаються файлами.
Процеси можуть у міру потреби читати їх і створювати нові файли.
Інформація, що зберігається в файлах, повинна бути стійкою (persistent), тобто на неї
не повинно впливати створення або завершення якого процесу. Файл повинен зникати тільки тоді, коли його власник виконує команду його видалення. Файлами управляє операційна система. Їх структура, іменування, використання, захист і реалізація, а також доступ до них є важливими аспектами пристрої операційної системи. Частина операційної системи, працює з файлами, називається файловою системою. Їй і присвячена ця глава.
З точки зору користувача, найважливіше в файлової системи - це механізм
взаємодії з нею, тобто користувачеві важливо знати, як забезпечити іменування і захист файлів, як виконувати операції з файлами і т. д. Деталі внутрішнього устрою, вкрай важливі для розробників файлової системи, представляють для користувача набагато менший інтерес. Наприклад, користувачеві не важливо, що застосовується для відстеження вільних і зайнятих блоків диска, списки або бітові карти, також йому зовсім не цікаво, скільки фізичних секторів в логічному блоці. З цієї причини ми розбили голову на кілька частин. Перші два розділи присвячені користувача інтерфейсу файлів і каталогів. У наступних розділах ми розглянемо способи реалізації файлової системи. Після ознайомлення з механізмами безпеки і захисту ми завершимо главу описом файлової системи MINIX 3.