
- •Операційні системи
- •Функціонування комп'ютерної системи
- •Обработка переривань
- •Структура пам'яті
- •Лекція 5: Архітектура ос. Управління процессами: Основні поняття. Семафори і монітори План
- •2. Керування процесами
- •Віртуальні машини - інший розповсюджений підхід до розробки операційних систем й їхніх користувальницьких інтерфейсів
- •Механізми й політики
- •Реалізація операційних систем
- •Генерація операційної системи
- •Перемикання з одного процесу на інший
- •Планувальники, що виконують диспетчеризацію процесів
- •Лекція 10. Методи синхронізації процесів План
- •Алгоритм рішення проблеми критичної секції
- •Алгоритм «в пиріжковій» (bakery algorithm)
- •Синхронізація на основі загальних семафорів
- •Реалізація семафорів
- •Рішення за допомогою семафорів завдання
- •Рішення за допомогою семафорів завдання "читачі - письменники"
- •Рішення за допомогою семафорів завдання " філософи, що обідають,"
- •Монітори
- •Лекція № 11. Управління памяттю План
- •Динамічне завантаження й динамічна лінковка
- •Оверлейна структура програми
- •Відкачка й підкачування
- •Лекція 13. Сегментна організація пам’яті. Віртуальна пам’ять
- •Оптимальний алгоритм заміщення сторінок
- •Сторінкова організація на вимогу в Windows nt
- •Лекція № 14. Системи файлів План
- •Типова організація файлової системи зображена на мал. 19.3.
- •Логічна організація директорій
- •Монтування файлових систем
- •Структура файлової системи
- •Лекція № 15. Віртуальні файлові системи План
- •Лекція 17. Системи вводу-виводу План
- •Опитування пристроїв
- •Переривання
- •Ввід-вивід із прямим доступом до пам'яті (dma)
- •Блокові й символьні пристрої
- •Мережні пристрої істотних відрізняються від блоків і символьних; мають свій власний інтерфейс і систему команд
- •Годинники й таймери
- •Блокуємий (синхронний) і не блокуємий (асинхронний) ввід-вивід
- •Структури даних для вводу-виводу в ядрі ос
- •Життєвий цикл запиту на ввід-вивід
- •Продуктивність вводу-виводу
- •Лекція 18. Мережі й мережеві структури. Класичні и сучасні мережеві комунікаційні протоколи План
- •Мережі Ethernet
- •Протокол tcp/ip
- •Функционирование Ethernet-мереж
- •Лекція 19: Безпека операційних систем і мереж. План
- •Лекція 20. Огляд архітектури й можливостей системи Linux: архітектура, ядро, поширення й ліцензування, принципи проектування, керування процесами План
- •Історія Linux
- •Ядро Linux
- •Сучасний стан Linux, дистрибутиви й ліцензування
- •Принципи проектування й компоненти системи Linux
- •Модулі ядра, що завантажують, Linux
- •Керування процесами в Linux
- •Планування завдань ядра й синхронізація в ядрі
- •Лекція 21. Огляд архітектури й можливостей системи Linux: керування пам'яттю, ресурсами, файлові системи, драйвери пристроїв, мережі, безпека План
- •Керування фізичною пам'яттю в Linux
- •Віртуальна пам'ять в Linux
- •Виконання й завантаження користувальницьких програм в Linux
- •Системи файлів Linux
- •Ввод й вивід в Linux
- •Взаємодія процесів в Linux
- •Структура мережі в Linux
- •Безпека в Linux
- •Розвиток і використання Linux
- •Лекція 22. Огляд архітектури й можливостей систем Windows 2000/xp/2003/Vista/2008/7 План
- •Система Windows 2000
- •Історія Windows
- •Принципи проектування Windows 2000 - розширюваність, переносимость, надійність, безпека, сумісність, продуктивність, підтримка інтернаціоналізації й локалізації.
- •Архітектура Windows 2000
- •Ядро Windows 2000
- •Обработка переривань у ядрі
- •Виконавча підсистема (executive) ос Windows 2000
- •Підсистеми оточення в Windows 2000
- •Лекція 23. Системні механізми Windows План
- •Система файлів Windows
- •Рограммный інтерфейс Windows
- •Програмний інтерфейс Windows: Керування процесами
- •Керування віртуальною й фізичною пам'яттю й робочими наборами в Windows
- •Лекція 24. Ос для мобільних пристроїв. Windows Mobile План
- •Особливості ос для мобільних пристроїв
- •Ринок ос для мобільних пристроїв
- •Перспективи ос для мобільних пристроїв
- •Лекція 25. Перспективи операційних систем і мереж План
- •Операційні системи інших великих фірм
- •Solaris - операційна система розробки фірми Oracle / Sun
- •Сучасні тенденції в розвитку ос
- •Нові ос сімейства Windows
- •Нові тенденції в розвитку ос
- •Графічні оболонки ос
- •Підтримка паралельних обчислень
- •Розвиток бездротових мереж
- •Перспективи розвитку ос
Відкачка й підкачування
Користувальницький процес може перебувати в різних станах під час обробки системою. Зокрема, процес може бути якийсь час неактивним, якщо, наприклад, він виконується в режимі поділу часу, і користувач за терміналом обмірковує наступну команду або редагує вихідний код своєї програми. У подібних випадках процес може бути відкачаний операційною системою на диск, у зв'язку з тим, що займана ним пам'ять виявляється необхідною в цей момент для іншого, активного, процесу.
Відкачка й підкачування (swapping) – це дії операційної системи по відкачці (запису) образа неактивного процесу на диск або підкачуванню (зчитуванню) активного процесу в основну пам'ять. Необхідність виконання подібних дій викликана недостачею основної пам'яті.
Файл відкачки (backing store) - область дискової пам'яті, використовувана операційною системою для зберігання образів відкачаних процесів. Файл відкачки організується максимально ефективно: забезпечується прямий доступ до всіх образів процесів у пам'яті (наприклад, через таблицю по номеру процесу).
Популярний різновид стратегії відкачки й підкачування – roll out / roll in: відкачка й підкачування на базі пріоритетів; більш пріоритетні процеси виконуються, менш пріоритетні – відкачуются на диск.
Найбільші часові витрати на відкачку - це витрати на передачу даних: повний образ процесу може займати велику область пам'яті. Загальний час відкачки пропорційний розміру даних, що відкачуються.
У розповсюджених ОС - UNIX, Linux, Windows й ін. - реалізовані різні стратегії відкачки й підкачування.
Рис. 16.1. Схема відкачки й підкачування.
Суміжний розподіл пам'яті
Найбільш проста й розповсюджена стратегія розподілу пам'яті – суміжний розподіл пам'яті – розподіл пам'яті для користувальницьких процесів в одній суміжній області пам'яті. Основна пам'ять розбивається на дві суміжних частини (partitions), які "ростуть" назустріч один одному: резидентна частина ОС і вектор переривань – по менших адресах, користувальницькі процеси – по адресах. Для користувальницьких процесів пам'ять розподіляється в тій самій суміжній ділянці пам'яті. Для кожного процесу регістр переміщення вказує на початок виділеної йому області пам'яті, регістр границі містить довжину діапазону логічних адрес. Кожна логічна адреса повиннна бути менше значення регістра границі. Фізична адреса обчислюється апаратно як сума логічної адреси й значення регістра переміщення. Схема адресації з апаратною підтримкою регістрів переміщення й границі зображена на рис. 16.2.
Рис. 16.2. Адресація з апаратною підтримкою регістрів переміщення й границі.
Загальне завдання розподілу пам'яті й стратегії її рішення
У загальному випадку, в операційних системах може використатися суміжний розподіл пам'яті в декількох суміжних областях. Вільна область – це суміжний блок вільної пам'яті. Вільні області можуть бути довільно розкидані по пам'яті. При завантаженні процесу йому надається пам'ять із будь-якої вільної суміжної області, що достатня для його розміщення. При цьому операційна система зберігає список вільних областей пам'яті й список зайнятих областей пам'яті. Всі ці області можуть бути довільно розташовані в пам'яті й мати різну довжину.
Виникає загальне завдання розподілу пам'яті: Є список вільних областей пам'яті й список зайнятих областей різного розміру. Розробити й реалізувати оптимальний (за деяким критерієм) алгоритм виділення вільної суміжної ділянки пам'яті довжини n (слів або байтів).
Для рішення даного завдання застосовуються наступні стратегії: метод першого підходящого (first-fit), метод найбільш підходящого (best-fit) і метод найменш підходящого (worst-fit). Розглянемо кожну з них докладніше.
Метод першого підходящого: Вибирається перший за списком вільна ділянка підходящого розміру (не меншого, чим n ). На перший погляд, дана стратегія оптимальна, але далі ми побачимо, що це не завжди так.
Метод найбільш підходящого: Вибирається зі списку найбільш підходяща вільна ділянка (мінімального розміру, не меншого, чим n ). На відміну від попереднього методу, вимагає перегляду всього списку, якщо список не впорядкований по розміру областей. Застосування методу приводить до утворення частини, що залишилася, самого маленького розміру.
Метод найменш підходящого: Вибирається зі списку підходяща область найбільшого розміру. Чому найбільшого? Щоб уникнути фрагментації (проблема фрагментації докладно розглянута далі в даній лекції).
Застосування першої й другої стратегій краще з наступних точок зору: швидкість виконання й мінімальність обсягу використаної пам'яті. Однак їхнє застосування може створити фрагментацію.
Фрагментація
Фрагментація – це дроблення пам'яті на дрібні не суміжні вільні області маленького розміру. Фрагментація виникає після виконання системою великої кількості запитів на пам'ять, таких, що розміри підходящих вільних ділянок пам'яті виявляються трохи більше, ніж необхідні. Наприклад, якщо є 100 суміжних вільних областей пам'яті по 1000 слів, те після виконання 100 запитів на пам'ять по 999 слів кожний у списку вільної пам'яті залишаться 1000 областей по одному слову.
Фрагментація буває внутрішня й зовнішня. При зовнішній фрагментації є досить більша область вільної пам'яті, але вона не є безперервною. Внутрішня фрагментація може виникнути внаслідок застосування системою специфічної стратегії виділення пам'яті, при якій фактично у відповідь на запит пам'ять виділяється трохи більшого розміру, чим потрібно, - наприклад, з точністю до сторінки (аркуша ), розмір якого – ступінь двійки. Сторінкова організація пам'яті докладно розглядається далі в даній лекції.
Зовнішня фрагментація може бути зменшена або ліквідована шляхом застосування компактировки (compaction) – зміщення або перемішування пам'яті з метою об'єднання всіх не суміжних вільних областей в один безперервний блок. Компактировка може виконуватися або простим зміщенням всіх вільних областей пам'яті, або шляхом перестановки зайнятих областей, з вибором на кожному кроці підходящої вільної області методом найбільш підходящого. Компактировка можлива, тільки якщо зв'язування адрес і переміщення відбувається динамічно. Компактировка виконується під час виконання програми.
При компактировці пам'яті й аналізі вільних областей може бути виявлена проблема завислого завдання: яке-небудь завдання може "застрягти" у пам'яті, тому що виконує ввод-вивід у свою область пам'яті (із цієї причини відкачати її неможливо). Рішення даної проблеми: ввод-вивід повинен виконуватися тільки в спеціальні буфери, виділювані для цієї мети операційною системою.
Сторінкова організація (paging) – стратегія керування пам'яттю, при якій:
логічна пам'ять ділиться на сторінки – суміжні області однакової довжини, звичайно – ступінь 2 (наприклад, 512 слів);
фізична пам'ять, відповідно, ділиться на фрейми такого ж розміру;
розподіл логічної пам'яті відбувається з точністю до сторінки;
фізична пам'ять процесу може не бути безперервної;
зв'язок між логічною й фізичною пам'яттю процесу здійснюється за допомогою таблиці сторінок – системної структури, виділюваної процесу для трансляції його логічних адрес у фізичні.
При сторінковій організації ОС зберігає інформацію про всі вільні фрейми. Оскільки пам'ять виділяється з точністю до сторінки, можлива внутрішня фрагментація.
Мети сторінкової організації - забезпечити можливість не суміжного розподілу фізичної пам'яті для процесів, а також розширити простір логічної пам'яті.
При сторінковій організації логічна адреса обробляється системою особливим образом – як структура (p, d): його старші розряди позначають номер сторінки, молодші – зсув усередині сторінки. Номер сторінки (p) трактується як індекс у таблиці сторінок, що відповідає елемент якої містить базову адресу початку сторінки у фізичній пам'яті. Зсув усередині сторінки (d) додається до її базової адреси. У результаті формується фізична адреса, переданий у пристрій керування пам'яттю.
Архітектура трансляції адрес при сторінковій організації зображена на рис. 16.3.
Архітектура трансляції адрес при сторінковій організації.
На рис. 16.4 наведено приклад сторінкової організації, що демонструє, що, на відміну від безперервної логічної пам'яті процесу, що відповідають фрейми сторінок в основній пам'яті можуть бути розташовані не суміжно: логічній сторінці 0 відповідає фрейм 1, сторінці 1 - фрейм 4, сторінці 2 - фрейм 3, сторінці 3 - фрейм 7.
Рис. 16.4. Приклад сторінкової організації.
На рис. 16.5 наведено інший можливий приклад сторінкової організації: логічну й фізичну пам'ять розбита на блоки по 4 сторінки підряд; у таблиці сторінок зберігається не номер сторінки, а номер блоку сторінок. Наприклад, в елементі 0 таблиці сторінок зберігається номер блоку 5, по якому адреса початку блоку обчислюється домножением умісту елемента таблиці сторінок на розмір блоку, рівний 4 (результат - 20).
Рис. 16.5. Приклад сторінкової організації блоками по 4 сторінки.
Використання списку вільних фреймів ілюструється на рис. 16.6.
Рис. 16.6. Список вільних фреймів.
Спочатку список складається з 5 фреймів. При уведенні в систему нового процесу з логічною пам'яттю з 4 сторінок, після завантаження процесу на згадку, послідовні логічні сторінки процесу розміщаються в перші за списком фізичних фреймах. У результаті в списку вільних фреймів залишається один елемент.
Захист пам'яті
При адресації за допомогою сторінкової організації можливо, що логічна адреса сформована невірно, і її номер сторінки виходить за межі логічної пам'яті процесу. Захист від невірної адресації може бути реалізованийа зберіганням і перевіркою додаткового біта valid-invalid у кожному елементі таблиці сторінок. Значення valid указує, що сторінка з даним номером належить логічній пам'яті процесу, значення invalid – що це не так.
Структура таблиці сторінок
Ієрархічні таблиці сторінок. Таблиці сторінок в операційних системах можуть бути по-різному організовані, при збереженні загальних принципів їхнього використання, описаних раніше. Розглянемо далі три основних способи організації таблиць сторінок – ієрархічні таблиці сторінок, хешировані таблиці сторінок й інвертовані таблиці сторінок.
Найчастіше використаються ієрархічні таблиці сторінок. При їхньому використанні логічний адресний простір розбивається на кілька таблиць сторінок (інакше кажучи, використаються таблиці таблиць сторінок ). Найбільш простий і розповсюджений метод – дворівнева таблиця сторінок.
При звичайної організації таблиці сторінок, логічна адреса (для 32-розрядної архітектури, при розмірі сторінки 4 кілобайти = 4096 байтів) розбивається на номер сторінки (20 біт) і зсув усередині сторінки (12 біт).
При дворівневій организації таблиці сторінок, таблиця сторінок верхнього рівня сама ділиться на сторінки, тому логічна адреса буде мати вигляд: (p1, p2, d), де p1 – індекс у зовнішній таблиці сторінок, p2 – зсув усередині сторінки для зовнішньої таблиці сторінок, d – зсув усередині сторінки (адресовану по внутрішній таблиці сторінок). При тих же припущеннях про архітектуру й розмір сторінки, p1 й p2 будуть займати по 10 біт.
Організація дворівневих таблиць сторінок зображена на рис. 16.9.
Рис. 16.9. Організація дворівневих таблиць сторінок.
Інвертовані таблиці сторінок
Даний спосіб організації таблиць сторінок призначений для скорочення розмірів таблиць сторінок. У таблиці сторінок зберігається один елемент для кожної реальної сторінки, що перебуває в пам'яті. До логічної адреси додається номер процесу (pid) володіючого даною сторінкою. По парі (номер процесу = pid, номер сторінки = p) виконується асоціативний пошук у таблиці сторінок. Індекс знайденого елемента таблиці i конкатенується зі зсувом d усередині сторінки, у результаті виходить фізична адреса. Інвертовані таблиці сторінок ілюструються рис. 16.12.
Рис. 16.12. Інвертовані таблиці сторінок.
Поділювані сторінки
Поділювані (спільно використовувані) сторінки – логічні сторінки, використовувані декількома процесами й мають той самий номер у таблиці сторінок кожного із процесів. Даний механізм корисний для економії пам'яті, тому що дозволяє завантажувати в пам’ять в єдиному екземплярі незмінювану інформацію, необхідним декільком процесам - наприклад, код і масиви констант.