- •1.1. Поняття операційної системи, її призначення та функції
- •1.1.1. Поняття операційної системи
- •1.1.2. Призначення операційної системи
- •1.1.3. Операційна система як розширена машина
- •1.1.4. Операційна система як розподілювач ресурсів
- •1.2. Історія розвитку операційних систем
- •1.3. Класифікація сучасних операційних систем
- •1.4. Функціональні компоненти операційних систем
- •1.4.1. Керування процесами й потоками
- •1.4.2. Керування пам'яттю
- •1.4.3. Керування введенням-виведенням
- •1.4.4. Керування файлами та файлові системи
- •1.4.5. Мережна підтримка
- •1.4.6. Безпека даних
- •1.4.7. Інтерфейс користувача
- •2.1. Базові поняття архітектури операційних систем
- •2.1.1. Механізми і політика
- •2.1.2. Ядро системи. Привілейований режим і
- •2.2. Реалізація архітектури операційних систем
- •2.2.1. Монолітні системи
- •2.2.2. Багаторівневі системи
- •2.2.3. Системи з мікроядром
- •2.2.4. Концепція віртуальних машин
- •2.3.1. Взаємодія ос і апаратного забезпечення
- •2.3.2. Взаємодія ос і виконуваного програмного коду
- •2.4.1. Базова архітектура unix
- •2.4.2. Архітектура Linux
- •2.5. Особливості архітектури: Windows хр
- •2.5.1. Компоненти режиму ядра
- •2.5.2. Компоненти режиму користувача
- •2.5.3. Об'єктна архітектура Windows хр
- •3.1. Базові поняття процесів і потоків
- •3.1.1. Процеси і потоки в сучасних ос
- •3.1.2. Моделі процесів і потоків
- •3.1.3. Складові елементи процесів і потоків
- •3.2. Багатопотоковість та її реалізація
- •3.2.1. Поняття паралелізму
- •3.2.2. Види паралелізму
- •3.2.3. Переваги і недоліки багатопотоковості
- •3.2.4. Способи реалізації моделі потоків
- •3.3. Стани процесів і потоків
- •3.4. Опис процесів і потоків
- •3.4.1. Керуючі блоки процесів і потоків
- •3.4.2. Образи процесу і потоку
- •3.5. Перемикання контексту й обробка переривань
- •3.5.1. Організація перемикання контексту
- •3.5.2. Обробка переривань
- •3.6. Створення і завершення процесів і потоків
- •3.6.1.Створення процесів
- •3.6.2.Ієрархія процесів
- •3.6.3.Керування адресним простором під час створення процесів
- •3.6.4. Особливості завершення процесів
- •3.6.5. Синхронне й асинхронне виконання процесів
- •3.6.6. Створення і завершення потоків
- •4.1. Загальні принципи планування
- •4.1.1. Особливості виконання потоків
- •4.1.2. Механізми і політика планування
- •4.1.3. Застосовність принципів планування
- •4.2. Види планування
- •4.2.1. Довготермінове планування
- •4.2.2. Середньотермінове планування
- •4.2.3. Короткотермінове планування
- •4.3. Стратегії планування. Витісняльна і невитісняльна багатозадачність
- •4.4. Алгоритми планування
- •4.4.1. Планування за принципом fifo
- •4.4.2. Кругове планування
- •4.4.3. Планування із пріоритетами
- •4.4.4. Планування на підставі характеристик подальшого виконання
- •4.4.5. Багаторівневі черги зі зворотним зв'язком
- •4.4.6. Лотерейне планування
- •4.5. Реалізація планування в Linux
- •4.5.1. Планування процесів реального часу в ядрі
- •6.1. Види міжпроцесової взаємодії
- •6.1.1.Методи розподілюваної пам'яті
- •6.1.2.Методи передавання повідомлень
- •6.1.3.Технологія відображуваної пам'яті
- •6.1.4.Особливості міжпроцесової взаємодії
- •6.2. Базові механізми міжпроцесової взаємодії
- •6.2.1. Міжпроцесова взаємодія на базі спільної пам'яті
- •6.2.2. Основи передавання повідомлень
- •6.2.3. Технології передавання повідомлень
- •8.1. Основи технології віртуальної пам'яті
- •8.1.1. Поняття віртуальної пам'яті
- •8.1.2. Проблеми реалізації віртуальної пам'яті. Фрагментація пам'яті
- •8.1.4. Підхід базового і межового регістрів
- •8.2. Сегментація пам'яті
- •8.2.1. Особливості сегментації пам'яті
- •8.2.2. Реалізація сегментації в архітектурі іа-32
- •8.3. Сторінкова організація пам'яті
- •8.3.1. Базові принципи сторінкової організації пам'яті
- •8.3.2. Порівняльний аналіз сторінкової організації пам'яті та сегментації
- •8.3.3. Багаторівневі таблиці сторінок
- •8.3.4. Реалізація таблиць сторінок в архітектурі іа-32
- •8.3.5. Асоціативна пам'ять
- •8.4. Сторінково-сегментна організація пам'яті
- •8.5. Реалізація керування основною пам'яттю: Linux
- •8.5.1. Використання сегментації в Linux. Формування логічних адрес
- •8.5.2. Сторінкова адресація в Linux
- •8.5.3. Розташування ядра у фізичній пам'яті
- •8.5.4.Особливості адресації процесів і ядра
- •8.5.5.Використання асоціативної пам'яті
- •8.6. Реалізація керування основною пам'яттю: Windows хр
- •8.6.1.Сегментація у Windows хр
- •8.6.2.Сторінкова адресація у Windows хр
- •8.6.3.Особливості адресації процесів і ядра
- •8.6.4. Структура адресного простору процесів і ядра
- •11.1. Поняття файла і файлової системи
- •11.1.1. Поняття файла
- •11.1.2.Поняття файлової системи
- •11.1.3.Типи файлів
- •11.1.4. Імена файлів
- •11.2. Організація інформації у файловій системі
- •11.2.1. Розділи
- •11.2.2. Каталоги
- •11.2.3. Зв'язок розділів і структури каталогів
- •11.3. Зв'язки
- •11.3.1. Жорсткі зв'язки
- •11.3.2. Символічні зв'язки
- •11.4. Атрибути файлів
- •11.5. Операції над файлами і каталогами
- •11.5.1. Підходи до використання файлів процесами
- •12.1. Базові відомості про дискові пристрої
- •12.1.1. Принцип дії жорсткого диска
- •12.1.2. Ефективність операцій доступу до диска
- •12.2. Розміщення інформації у файлових системах
- •12.2.1. Фізична організація розділів на диску
- •12.2.2. Основні вимоги до фізичної організації файлових систем
- •12.2.3. Неперервне розміщення файлів
- •12.2.4. Розміщення файлів зв'язними списками
- •12.2.5. Індексоване розміщення файлів
- •12.2.6. Організація каталогів
- •15.1. Завдання підсистеми введення-виведення
- •15.1.1. Забезпечення ефективності доступу до пристроїв
- •15.1.2. Забезпечення спільного використання зовнішніх пристроїв
- •15.1.3. Універсальність інтерфейсу прикладного програмування
- •15.1.4. Універсальність інтерфейсу драйверів пристроїв
- •15.2. Організація підсистеми введення-виведення
- •15.2.1. Символьні, блокові та мережні драйвери пристроїв
- •15.2.2. Відокремлення механізму від політики за допомогою
- •15.3. Способи виконання операцій введення-виведення
- •15.3.1. Опитування пристроїв
- •15.3.2. Введення-виведення, кероване перериваннями
- •15.3.3. Прямий доступ до пам'яті
- •15.4. Підсистема введення-виведення ядра
- •15.4.1. Планування операцій введення-виведення
- •15.4.2. Буферизація
- •15.7. Керування введенням-виведенням: unix і Linux
- •15.7.1. Інтерфейс файлової системи
- •15.7.2. Передавання параметрів драйверу
- •15.7.3. Структура драйвера
- •15.7.4. Виконання операції введення-виведення для пристрою
- •15.8. Керування введенням-виведенням: Windows хр
- •15.8.1. Основні компоненти підсистеми введення-виведення
- •15.8.2. Виконання операції введення-виведення для пристрою
- •15.8.3. Передавання параметрів драйверу пристрою
- •17.1. Термінальне введення-виведення
- •17.1.1. Організація термінального введення-виведення
- •17.1.3. Термінальне введення-виведення у Win32 api
- •17.2. Командний інтерфейс користувача 17.2.1.
- •17.2.2. Переспрямування потоків введення-виведення
- •17.2.3. Використання каналів
- •17.3. Графічний інтерфейс користувача
- •17.3.1. Інтерфейс віконної та графічної підсистеми Windows хр
- •17.3.2. Система X Window
- •17.4. Процеси без взаємодії із користувачем
- •17.4.1. Фонові процеси на основі posix
- •17.4.2. Служби Windows хр
- •16.1. Загальні принципи мережної підтримки
- •16.1.1. Рівні мережної архітектури і мережні сервіси
- •16.1.2. Мережні протоколи
- •16.2. Реалізація стека протоколів Інтернету
- •16.2.1. Рівні мережної архітектури tcp/ip
- •16.2.2. Канальний рівень
- •16.2.3. Мережний рівень
- •16.2.4. Транспортний рівень
- •16.2.5. Передавання даних стеком протоколів Інтернету
- •16.3. Система імен dns
- •16.3.1. Загальна характеристика dns
- •16.3.2. Простір імен dns
- •16.3.3. Розподіл відповідальності
- •16.3.4. Отримання ір-адрес
- •16.3.5. Кешування ір-адрес
- •16.3.6. Типи dns-ресурсів
- •16.4. Програмний інтерфейс сокетів Берклі
- •16.4.1. Особливості роботи з адресами
- •16.4.2. Створення сокетів
- •16.4.3. Робота з потоковими сонетами
- •16.4.4. Введення-виведення з повідомленням
- •19.1. Загальні принципи завантаження ос
- •19.1.1. Апаратна ініціалізація комп'ютера
- •19.1.2. Завантажувач ос
- •19.1.3. Двоетапне завантаження
- •19.1.4. Завантаження та ініціалізація ядра
- •19.1.5. Завантаження компонентів системи
- •19.2. Завантаження Linux
- •19.2.1. Особливості завантажувача Linux
- •19.2.2. Ініціалізація ядра
- •19.2.3. Виконання процесу init
- •19.3. Завантаження Windows хр
- •20.1. Багатопроцесорні системи
- •20.1.1. Типи багатопроцесорних систем
- •20.1.2. Підтримка багатопроцесорності в операційних системах
- •20.1.3. Продуктивність багатопроцесорних систем
- •20.1.4. Планування у багатопроцесорних системах
- •20.1.5. Спорідненість процесора
- •20.1.6. Підтримка багатопроцесорності в Linux
- •20.1.7. Підтримка багатопроцесорності у Windows хр
- •20.2. Принципи розробки розподілених систем
- •20.2.1. Віддалені виклики процедур
- •20.2.2. Використання Sun rpc
- •20.2.3. Використання Microsoft rpc
- •20.2.4. Обробка помилок і координація в розподілених системах
- •20.3. Розподілені файлові системи
- •20.3.1. Організація розподілених файлових систем
- •20.3.2. Файлова система nfs
- •20.3.3. Файлова система Microsoft dfs
- •20.4. Сучасні архітектури розподілених систем
- •20.4.1. Кластеры системи
- •20.4.2. Grid-системи
- •18.1. Основні завдання забезпечення безпеки
- •18.2. Базові поняття криптографії
- •18.2.1. Поняття криптографічного алгоритму і протоколу
- •18.2.2. Криптосистеми з секретним ключем
- •18.2.3. Криптосистеми із відкритим ключем
- •18.2.4. Гібридні криптосистеми
- •18.2.5. Цифрові підписи
- •18.2.6. Сертифікати
- •18.3. Принципи аутентифікаціїі керування доступом
- •18.3.1. Основи аутентифікації
- •18.3.2. Основи керування доступом
- •18.4. Аутентифікація та керування доступом в unix
- •18.4.1. Облікові записи користувачів
- •18.4.2. Аутентифікація
- •18.4.3. Керування доступом
- •18.5. Аутентифікація і керування доступом у Windows xp
- •18.5.1. Загальна архітектура безпеки
- •18.5.2. Аутентифікація
- •18.5.3. Керування доступом
- •18.6. Аудит
- •18.6.1. Загальні принципи організації аудиту
- •18.6.2. Робота із системним журналом unix
- •18.6.3. Журнал подій Windows xp
- •18.7. Локальна безпека даних
- •18.7.1. Принципи шифрування даних на файлових системах
- •18.7.2. Підтримка шифрувальних файлових систем у Linux
- •18.7.3. Шифрувальна файлова система Windows xp
- •18.8. Мережна безпека даних
- •18.8.1. Шифрування каналів зв'язку
- •18.8.2. Захист інформації на мережному рівні
- •18.8.3. Захист інформації на транспортному рівні
- •18.9. Атаки і боротьба з ними
- •18.9.1. Переповнення буфера
- •18.9.2. Відмова від обслуговування
- •18.9.3. Квоти дискового простору
- •18.9.4. Зміна кореневого каталогу застосування
20.4.2. Grid-системи
Останнім часом розвиток технологій розподілених систем привів до ситуації, коли стало можливим організовувати системи, що дають змогу використати вільні обчислювальні ресурси, розподілені по всьому світу. Розглянемо особливості таких grid-систем [48, 53, 72].
Обчислювальні grid-системи дають можливість спільно використовувати географічно та організаційно розподілені неоднорідні обчислювальні ресурси, відображаючи їх як єдиний, уніфікований обчислювальний ресурс. До ресурсів, які можна таким чином використовувати, належать окремі комп'ютери, кластери, засоби зберігання даних, мережні ресурси тощо.
Назва «grid» відображає аналогію між використанням такого уніфікованого ресурсу і доступом до електричної мережі (power grid). Користувачі електромережі отримують доступ до ресурсу (електроенергії) незалежно від конфігурації джерел енергії та ліній електропередачі. Аналогічно для користувачів grid-системи не має значення, який із компонентів надав їм обчислювальний ресурс.
Grid-системи містять такі компоненти:
♦ засоби, що транслюють запити користувачів у запити до ресурсів grid-системи (комп'ютерів, мереж, дискового простору, баз даних тощо);
♦ засоби, які виконують пошук ресурсів, їхній підбір і розміщення, планування і координацію обчислювальних задач, а також збирання результатів;
♦ засоби безпеки, які дають змогу керувати аутентифікацією та авторизацією користувачів. Вони мають підтримувати єдиний вхід у систему, відображення на механізми захисту локальних систем, можливість запуску застосувань із правами користувача;
♦ засоби розробки застосувань, що використовують особливості grid-архітектури. Основним призначенням grid-систем є підтримка розв'язування задач, що вимагають великих обчислювальних ресурсів. Цим вони подібні до обчислювальних кластерів. Але ці технології мають істотні відмінності [66].
♦ Grid-системи є географічно розподіленими (пов'язаними глобальними мережами) і неоднорідними (у них входять компоненти із різною апаратною і програмною архітектурою). Крім того, їхні компоненти можуть перебувати в різному адміністративному підпорядкуванні. Вузли кластерів зазвичай пов'язані локальною мережею, перебувають у централізованому підпорядкуванні та мають однакову архітектуру.
♦ Кластерна архітектура звичайно містить у собі централізований менеджер ресурсів. Для grid-архітектур внаслідок більшого масштабу системи кожний вузол має свій менеджер ресурсів.
♦ Вузли grid-систем завжди є невиділеними. Будь-який обчислювальний ресурс, що входить у таку систему, може водночас використовуватися для інших цілей. Для використання в межах grid-системи виділяються тільки ресурси, вільні в конкретний момент.
♦ Конфігурація grid-систем постійно змінюється. Хоча кластери розраховані на те, що їхня конфігурація може змінитися, такі зміни для них не є звичайною ситуацією.
♦ Grid-системи можуть розподіляти найрізноманітніші ресурси. Крім обчислювальних потужностей, до них належать мережні ресурси, ресурси зберігання даних, інформаційні ресурси (доступ до розподілених баз даних), програмні продукти і апаратні пристрої.
Оскільки grid-системи є неоднорідними, велике значення у їхній розробці відіграє стандартизація. Організовано спеціальний комітет зі стандартизації grid-розробок - Grid Forum, результатом роботи якого є загальноприйнятий стандарт Open Grid Service Architecture (OGSA). Існує програмна реалізація цього стандарту — Globus Toolkit, яку можна використати для практичної розробки grid-систем.
Є думка, що в найближчому майбутньому Інтернет буде перетворено у глобальну мережу, організовану відповідно до grid-архітектури.
Висновки
♦ Організація паралельного виконання коду на кількох процесорах - ефективний засіб підвищення продуктивності комп'ютерних систем. Основними архітектурами, що підтримують таке виконання, є багатопроцесорні та розподілені системи.
♦ Основним підходом до організації багатопроцесорних ОС є симетрична бага-топроцесорність (SMP), за якої одна копія ядра ОС виконується на всіх процесорах системи. Для організації підтримки SMP у ядрі ОС виділяють критичні ділянки, кожна з яких може бути виконана тільки одним процесором у конкретний момент часу.
♦ Планування у багатопроцесорних системах відрізняється тим, що потрібно визначати не лише потік, який має перейти до виконання, але й процесор, на якому цей потік має виконуватися.
♦ Розподілені системи відрізняються від багатопроцесорних тим, що в них процесори перебувають у складі окремих комп'ютерів, з'єднаних мережею. Основними технологіями розробки застосувань для таких систем є передавання повідомлень і віддалені виклики процедур.
♦ Важливим прикладом реалізації розподілених систем є розподілені файлові системи. Вони дають можливість прозоро для користувачів організувати роботу із віддаленими файлами.
♦ Сучасні архітектури розподілених систем (кластерні та grid-архітектури) дають змогу об'єднувати обчислювальні потужності багатьох комп'ютерних систем для розв'язування задач, які неможливо розв'язати на окремих комп'ютерах.
Контрольні запитання та завдання
1. Перелічіть переваги і недоліки використання кеша в багатопроцесорних системах.
2. Чому реалізація критичної секції через заборону переривань не може бути використана в багатопроцесорних системах?
3. Назвіть причини, через які планувальники в багатопроцесорних системах не використовують спільну для всіх процесорів чергу готових потоків?
4. У чому полягає потенційна небезпека передачі покажчиків як параметрів у віддалені виклики процедур? Які програмні вирішення можуть бути запропоновані в цьому випадку?
5. Які проблеми вирішує автоматична генерація заглушок для RPC?
6. Розробіть код віддаленої процедури на основі Sun RPC і Microsoft RPC, що приймає як параметр шлях до файла на віддаленій системі і повертає перші 100 байт цього файла. Розробіть клієнт-серверну систему, подібну до створеної у завданні 11 з розділу 11, з використанням цієї процедури. При цьому клієнт повинен формувати і виконувати виклик віддаленої процедури з використанням отриманого від користувача імені файла та інформації про сервер, одержувати результат і відображати його на стандартний вивід. Сервер повинен виконувати віддалену процедуру і повертати результат.
7. Скільки повідомлень має бути відправлено внаслідок виконання протоколу 2РС за наявності одного координатора і N учасників?
8. Запропоновано таку модифікацію протоколу 2 PC. На першому етапі координатор надсилає повідомлення МСомміт всім учасникам, потім очікує відповіді від кожного з них. Якщо хоча б один із них відішле повідомлення MAB0RT, координатор надсилає всім учасникам MGL0BAL_AB0RT, інакше додаткових повідомлень надіслано не буде. У чому недолік такого алгоритму?
9. У яких випадках кешування даних на клієнті може підвищити продуктивність розподіленої файлової системи, а в яких - знизити?
10. Поясніть, чому для розподілених файлових систем зменшення розміру блоку спричиняє зменшення навантаження на мережу, якщо використовують кешування даних на клієнті?
11. Які з перерахованих операцій є ідемпотентними:
а) записування блоку даних у файл;
б) запит списку користувачів, що працюють у цей момент на віддаленій системі;
в) поміщення грошей на банківський рахунок?
12. Процес на клієнтському комп'ютері викликав операцію читання з файла, що міститься на NFS-розділі. Опишіть етапи виконання цієї операції.
Розділ 18
Захист інформації в операційних системах
♦ Організація входу користувачів у систему
♦ Керування доступом користувачів до даних у UNIX і Windows XP
♦ Аудит подій у системі
♦ Безпека даних на локальному комп'ютері та у мережі
♦ Засоби захисту від атак на систему
У цьому розділі йтиметься про особливості розв'язання головних завдань забезпечення безпеки комп'ютерних систем.