- •Змістовий модуль 1
- •Не 1.1. Структура системного програмного забезпечення Структура спз.
- •Місце ос в спз.
- •Поняття операційного середовища.
- •Операційні системи.
- •Системи керування файлами.
- •Інтерфейсні оболонки для взаємодії користувача з ос і програмні середовища.
- •Системи програмування.
- •Утиліти.
- •Основні функції ос.
- •Не 1.1. Базові поняття сучасних операційних систем Базові поняття операційної системи Linux. Файли, каталоги, робота з файлами. Права доступу до файлів і каталогів.Інструментарій.
- •Програми-фільтри. (немає) Командний інтерпретатор.
- •Змістовий модуль 2
- •Не 2.1. Загальна схема роботи компіляторів Визначення транслятора, компілятора, інтерпретатора.
- •Компілятор.
- •Різниця між інтерпретаторами і трансляторами.
- •Етапи трансляції.
- •Поняття проходу. Багатопрохідні і однопрохідні компілятори.
- •Не 2.2. Таблиці ідентифікаторів. Призначення та особливості побудови таблиць ідентифікаторів.
- •Найпростіші методики побудови таблиць ідентифікаторів.
- •Побудова таблиць ідентифікаторів методом бінарного дерева.
- •Не 2.3 Хеш-функції та хеш–адресація. Принципи роботи хеш-функцій.
- •Побудова таблиць ідентифікаторів на основі хеш-функцій.
- •Побудова таблиць ідентифікаторів методом ланцюжка.
- •Комбіновані способи побудови таблиць ідентифікаторів.
- •Змістовий модуль 3. Не 3.1.Кінцеві автомати. Визначення.
- •Детерміновані і недетерміновані кінцеві автомати.
- •Модель ка.
- •Розпізнавачі і перетворювачі. Визначення. Загальні поняття.
- •Класифікація розпізнавачів.
- •Не 3.2.Формальні мови та граматики. Способи завдання мов.
- •Операції над ланцюжками символів.(немає) Поняття мови.
- •Визначення формальної мови.
- •Визначення грамматики.
- •Класифікація граматик.
- •Способи задання схем грамтик Символічна, форма Наура-Бекуса, ітераційна форма й синтаксичні діаграми.
- •Чотири типи граматик по Хомському.
- •Правила побудови граматики із ланцюжка символів. (немає)
- •Змістовий модуль 4.
- •Не 4.1 Лексичні аналізатори (сканери).
- •Принципи побудови сканерів.
- •Призначення лексичного аналізатору.
- •Принципи побудови лексичних аналізаторів.
- •Граф кінцевого детермінованого автомата, що розпізнає граматику цілих чисел мови Сі(Немає) не 4.2.Синтаксичний та семантичний аналіз. Синтаксично-керований переклад.
- •Основні принципи роботи синтаксичних аналізаторів.
- •Дерево розбору. Перетворення дерева розбору в дерево операцій.
- •Призначення семантичного аналізу.
- •Етапи семантичного аналізу.
- •Ідентифікація лексичних одиниць мов програмування.
- •Розподіл пам’яті.
- •Не 4.3. Способи внутрішнього представлення програм Зв'язані облікові структури, що представляють синтаксичні дерева.
- •Багатоадресний код з явно іменованим результатом (тетради).
- •Багатоадресний код з неявно іменованим результатом (тріади).
- •Обернений (постфиксна) польський запис операцій.
- •Алгоритм Дейкстри.
- •Асемблерний код або машинні команди.
- •Розбір арифметичного виразу. Алгоритм Рутисхаузера.
- •Не 4.4 Генерація коду. Методи генерації коду.
- •Загальні принципи генерації коду.
- •Синтаксично керований переклад.
- •Змістовий модуль 5
- •Не 5.1. Керування процесами та ресурсами. Поняття обчислювального процесу та ресурсу.
- •Класифікація ресурсів.
- •Загальна схема виділення ресурсу.
- •Однопрограмний і мультипрограмний режими.
- •Основні риси мультипрограмного режиму.
- •Обчислювальні процеси.
- •Діаграма станів процесу.
- •Реалізація поняття послідовного процессу в ос.
- •Процеси і треди. (немає) Блок керування процесом.
- •Процеси в ос unix.
- •Події (переривання) - рушійна сила, що змінює стан процесів.
- •Механізм обробки переривань.
- •Функції механізму переривань.
- •Групи переривань.
- •Розподіл переривань по рівнях пріоритету.
- •Дисципліни обслуговування переривань.
- •Обробка переривань за участю супервізорів ос.
- •Не 5.2. Планування процесів та диспетчеризація задач. Функції ос, пов’язані з керуванням задач.
- •Організація черг процесів та ресурсів.
- •Priority queuing - (pq)
- •Стратегії планування.
- •Якість диспетчеризації та гарантії обслуговування.(Немає)
- •Безпріоритетні до: лінійні та циклічні.
- •Пріоритетні до: до з фіксованим пріоритетом та до з абсолютним пріоритетом.
- •Адаптивні до. (Немає) Визначення середнього часу знаходження заявки в системі. (Немає) Недоліки до з фіксованим пріоритетом.
- •Динамічне планування (диспетчеризація). (Немає) Диспетчеризація задач з використанням динамічних пріоритетів. Переваги і недоліки.
- •Критерії ефективності обчислювального процесу. (Немає) Методи підвищення продуктивності системи для багатопроцесорних систем.
- •Механізм динамічних пріоритетів в ос unix.
- •Змістовий модуль 6
- •Не 6.4. Керування пам’яттю. Пам'ять і відображення, віртуальний адресний простір.
- •Простий безперервний розподіл і розподіл з перекриттям (оверлейні структури).
- •Розподіл статичними і динамічними розділами.
- •Розділи з фіксованими границями. Розділи з рухливими границями.
- •Виділення пам'яті під новий розділ: перша придатна ділянка; сама придатна ділянка; сама невідповідна ділянка.
- •Сегментна, сторінкова і сегментно-сторінкова організація пам'яті. Сегментний спосіб організації віртуальної пам'яті.
- •Дисципліни заміщення: fifo; lru (1еаst recently used,); lfu (1еаst frequently used); random.
- •Сторінковий спосіб організації віртуальної пам'яті.
- •Сегментно-сторінковий спосіб організації віртуальної пам'яті.
- •Змістовий модуль 7
- •Не 7.1. Ос однопроцесорних кс. Класифікація ос.
- •Режими організації обчислювального процесу. (Немає) Основні принципи побудови операційних систем.
- •Принцип модульності.
- •Принцип функціональної вибірковості.
- •Принцип генерування ос.
- •Принцип відкритої і нарощуваний ос.
- •Принцип мобільності.
- •Принцип забезпечення безпеки обчислень.
Дисципліни заміщення: fifo; lru (1еаst recently used,); lfu (1еаst frequently used); random.
Для рішення проблеми заміщення (визначення того сегмента, який повинний бути або переміщений у зовнішню пам'ять, або просто заміщений новим) використовуються наступні дисципліни (їх наз. дисципліни заміщення):
• правило FIFO (first in — first out, що означає: «перший прийшов першим і вибуває»);
• правило LRU (1еаst recently used, що означає «останній з недавно використаних» чи, інакше кажучи, «довше всього невикористовуваний»);
• правило LFU (1еаst frequently used, що означає: «використовуваний рідше всіх інших»);
• випадковий (random) вибір сегмента.
Перша й остання дисципліни є найпростішими в реалізації, але вони не враховують, наскільки часто використовується той чи інший сегмент і, отже, диспетчер пам'яті може чи вивантажити розформувати той сегмент, до якого в самому найближчому майбутньому буде звертання. Безумовно, достовірної інформації про те, який із сегментів буде потрібно в найближчому майбутньому, у загальному випадку мати не можна, але імовірність помилки для цих дисциплін вище, ніж у другої і третьої дисципліни, що враховують інформацію про використання сегментів.
Алгоритм FIFO асоціює з кожним сегментом час, коли він був поміщений у пам'ять. Для заміщення вибирається найбільш старий сегмент. Облік часу необов'язковий, коли всі сегменти в пам'яті зв'язані в FIFO-чергу і кожен сегмент, що поміщається в пам'ять, додається в хвіст цієї черги. Алгоритм враховує тільки час перебування сегмента в пам'яті, але не враховує фактичне використання сегментів. Наприклад, перші завантажені сегменти програми можуть містити перемінні, використовувані протягом роботи всієї програми. Це приводить до негайного повернення до тільки що заміщеного сегмента.
Для реалізації дисциплін LRU і LFU необхідно, щоб процесор мав додаткові апаратні засоби. Мінімальні вимоги — досить, щоб при звертанні до дескриптора сегмента для одержання фізичної адреси, з якого сегмент починає розташовуватися в пам'яті, відповідний біт звертання змінював своє значення (скажемо, з нульового, яке встановила ОС, в одиничне). Тоді диспетчер пам'яті може час від часу переглядати таблиці дескрипторів задач, що виповнюються, і збирати для відповідної обробки статистичну інформацію про звертання до сегментів. У результаті можна скласти список, упорядкований або по тривалості не використання (для дисципліни LRU), або по частоті використання (для дисципліни LFU).
Найважливішою проблемою, що виникає при організації мультипрограмного режиму, є захист пам'яті. Для того щоб додатки, що виконуються, не змогли зіпсувати саму ОС і інші обчислювальні процеси, необхідно, щоб доступ до таблиць сегментів з метою їхньої модифікації був забезпечений тільки для коду самої ОС. Для цього код ОС повинний виконуватися в деякому привілейованому режимі, з якого можна здійснювати маніпуляції з дескрипторами сегментів, тоді як вихід за межі сегмента в звичайній прикладній програмі повинний викликати переривання по захисту пам'яті. Кожна прикладна задача повинна мати можливість звертатися тільки до своїх власних сегментів.
При використанні сегментного способу організації віртуальної пам'яті з'являється кілька цікавих можливостей. По-перше, з'являється можливість при завантаженні програми на виконання розміщати її в пам'яті не цілком, а «у міру необхідності». Дійсно, оскільки в переважній більшості випадків алгоритм, по якому працює код програми, є розгалуженим, а не лінійним, то в залежності від вихідних даних деякі частини програми, розташовані в самостійних сегментах, можуть бути і не задіяні; виходить, їх можна і не завантажувати в оперативну пам'ять.
По-друге, деякі програмні модулі можуть бути поділюваними. Ці програмні модулі є сегментами, і в цьому випадку відносно легко організувати доступ до таких сегментів. Сегмент із поділюваним кодом розташовується в пам'яті в єдиному екземплярі, а в декількох таблицях дескрипторів сегментів задач, що виконуються, будуть знаходитися покажчики на такі поділювані сегменти.
Однак у сегментного способу розподілу пам'яті є і недоліки. Для одержання доступу до шуканої комірки пам'яті необхідно витратити набагато більше часу. Ми повинні спочатку знайти і прочитати дескриптор сегмента, а вже потім, використовуючи дані з нього про місцезнаходження потрібного нам сегмента, можемо обчислити і кінцеву фізичну адресу.
Для того щоб зменшити ці втрати, використовуються кешування — тобто ті дескриптори, з якими ми маємо справу в даний момент, можуть бути розміщені у сверхоперативній пам'яті (спеціальних регістрах, розташовуваних у процесорі).
Незважаючи на те, що цей спосіб розподілу пам'яті приводить до істотно меншої фрагментації пам'яті, ніж способи з нерозривним розподілом, фрагментація залишається. Крім цього, ми маємо великі втрати пам'яті і процесорного часу на розміщення й обробку дескрипторних таблиць. Адже на кожну задачу необхідно мати свою таблицю дескрипторів сегментів. А при визначенні фізичних адрес необхідно виконувати операції додавання .
Тому наступним способом розривного розміщення задач у пам'яті став спосіб, при якому усі фрагменти задачі однакового розміру і довжини, кратного ступеня двійки, щоб операції додавання можна було замінити операціями конкатенації (злиття). Це — сторінковий спосіб організації віртуальної пам'яті. |
Прикладом використання сегментного способу організації віртуальної пам'яті є операційна система для ПК OS/2 першого покоління (1984-1987рр.), що була створена для процесора і80286.