
- •Змістовий модуль 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. Ос однопроцесорних кс. Класифікація ос.
- •Режими організації обчислювального процесу. (Немає) Основні принципи побудови операційних систем.
- •Принцип модульності.
- •Принцип функціональної вибірковості.
- •Принцип генерування ос.
- •Принцип відкритої і нарощуваний ос.
- •Принцип мобільності.
- •Принцип забезпечення безпеки обчислень.
Поняття проходу. Багатопрохідні і однопрохідні компілятори.
Реальні компілятори як правило виконують трансляцію тексту початкової програми за декілька проходів. Прохід – це процес послідовного читання компілятором даних з зовнішньої пам’яті, їх обробки і розміщення результату в зовнішню пам’ять. Частіше всього один прохід включає в себе виконання однієї або декількох фаз компілятора. Результатом проміжних проходів є внутрішнє представлення початкової програми а результатом останнього проходу є результуюча об’єктна програма. При зменшенні кількості проходів збільшується кількість роботи компілятора і зменшується об’єм пам’яті. Чим складніша граматика, тим більше проходів виконує компілятор. Реальні компілятори проходять від 2 до 5 проходів.
Не 2.2. Таблиці ідентифікаторів. Призначення та особливості побудови таблиць ідентифікаторів.
Організація таблиці ідентифікаторів. Призначення і особливості побудови.
Перевірка правильності семантики і генерації коду вимагають знання характеристик змінних, констант, функцій і інших елементів, що зустрічаються в програмі, вхідною мовою. Усі ці елементи як правило позначаються ідентифікаторами. Виділення ідентифікаторі а також інших елементів вхідною мовою відбуваються на фазі лексичного аналізу. Їх характеристики визначаються на інших фазах. Склад можливих характеристик залежать від мови. Тому компілятор повинен мати можливість зберігати всі знайдені ідентифікатори та їх характеристики на протязі всього процесу компіляції, щоби мати можливість використовувати їх на різних фазах. Для цієї мети у компіляторі використовуються спеціальні сховища даних, які називаються таблиця ідентифікаторів або таблицю символів. Будь-яка таблиця ідентифікаторів складається з набору полів, кількість яких рівна кількістю полів знайдених в програмі. Кожний елемент містить інформацію про поле (ім’я, тип, область пам’яті).
ім’я |
тип |
область пам’яті |
|
|
|
Для констант:
Назва |
значення |
тип |
|
|
|
Для функцій:
Ім’я Функції |
Ім’я і типи формальних параметрів |
Тип результату |
Адреса коду функції |
|
|
|
|
Найпростіші методики побудови таблиць ідентифікаторів.
Найпростіший спосіб таблиць ідентифікаторів полягає, щоб додавати елементи в порядку їх надходження. Тоді таблиця ідентифікаторів буде являти собою не впорядкований масив інформації. Пошук потрібного елемента в таблицю буде полягати послідовному порівнянні шуканого елемента, з кожного елемента таблиці доки не буде знайдено потрібний. Якщо за одиницю прийняти час, що затрачується на порівняння двох елементів, то для таблиці, що містить N елементів, в середньому буде виконано N/2 порівняння.
Заповнення таблиці виконується шляхом додавання нового елемента і час заповнення не буде залежити від кількості елементів у таблиці, а час пошуку буде залежити від N. Але пошук в таблиці ідентифікаторів є операція, яке виконується найчастіше, тому використання таблиці заповненою в порядку надходження є неефективною. – це спосіб в порядку надходження.
Пошук може бути виконано більш ефективно, якщо елементи таблиці відсортовані за якоюсь ознакою. В нашому випадку – це за алфавітом. Тоді по відсортованому списку ефективним буде метод бінарного пошуку (логарифмічний). Символ, який варто знайти порівнюється з елементом (N+1)/2. якщо цей елемент не є шуканим, то ми повинні переглянути тільки блок елементів, або від 1 до (N+1)/2 – 1 або (N-1)/2 – N. тому максимальне число порівнянь буде 1+log2(N) a T=O/log2(N); при N=128 у впорядкованому 8 порівнянь, а в непорядковому необхідно виконати 64 порівнянь.
Недоліком методу є вимога впорядкування таблиці ідентифікаторів. Таблиця ідентифікаторів проглядається ще до того як вона заповнена повністю, тому потрібно, щоб умова впорядкованості виконувалася на всіх етапах звертання до неї. Отже для побудови таблиці можна користуватись тільки алгоритмом прямого впорядкованого включення елементів.
При додаванні кожного нового елементу в таблицю спочатку потрібно визначити місце куди потрібно помістити елемент, а потів виконати перенос частини ін формації в таблиці. Тоді час на заповнення такої таблиці: T=O(N+log2N)-k*O(N2). К –к оефіцієнт… таким чином при організації логарифмічного пошуку таблиці ідентифікаторів ми отримуємо істотне скорочення часу потрібного елемента і оскільки додавання нових елементів в таблицю відбувається істотно менше ніж звертання до них, то цей метод більш ефективним нід метод організації невпорядкованої таблиці.