- •Змістовий модуль 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. Ос однопроцесорних кс. Класифікація ос.
- •Режими організації обчислювального процесу. (Немає) Основні принципи побудови операційних систем.
- •Принцип модульності.
- •Принцип функціональної вибірковості.
- •Принцип генерування ос.
- •Принцип відкритої і нарощуваний ос.
- •Принцип мобільності.
- •Принцип забезпечення безпеки обчислень.
Програми-фільтри. (немає) Командний інтерпретатор.
Оболонкою (shell) у системі Unix називають механізм взаємодії між користувачами і системою. Це інтерпретатор команд, що зчитує набрані користувачем рядки і запускає виконання запитаних системних функцій.
(Повна командна мова багата по можливостях і досить складна, однак більшість команд прості у використанні і запам'ятати їх не важко.)
Командний рядок складається з імені команди (тобто імені виконуваного файлу), за яким стоїть список аргументів, розділених пробілами. Оболонка розбиває командний рядок на компоненти. Зазначений у команді файл завантажується, і йому забезпечується доступ до заданих в команді аргументів.
Люба командна мова сімейства Unix фактично складається з трьох частин:
• службових конструкцій, що дозволяють маніпулювати з текстовими рядками і будувати складні команди на основі простих команд;
• убудованих команд, виконуваних безпосередньо інтерпретатором командної мови;
• команд, що представляються окремими виконуваними файлами.
У свою чергу, набір команд останнього виду включає стандартні команди і команди, створені користувачами системи.
Для того щоб виконуваний файл, розроблений користувачем ОС Unix, можна було запускати як команду shell, досить визначити в одному з вихідних файлів функцію з ім'ям main. Якщо ужити як ім'я команди ім'я такого виконуваного файлу, командний інтерпретатор створить новий процес і запустить у ньому зазначену виконувану програму, починаючи з виклику функції main.
Змістовий модуль 2
Основи побудови компіляторів
Не 2.1. Загальна схема роботи компіляторів Визначення транслятора, компілятора, інтерпретатора.
Компілятор– це транслятор, що здійснює переклад вхідної програму в еквівалентно їй об’єктну програму мовою машинних команд або мовою асемблера. Процес компіляції складається з двох частин:
Аналіз.
В процесі аналізу компілятор розбиває програму на складові елементи і створює проміжне представлення вхідної програми.
Синтез.
Синтезуюча частина з проміжного представлення створює нову програму, яку розуміє комп’ютер. Така програма називається об’єктною і може на далі виконуватися без пере трансляції.
Інтерпретатор – це програма, що сприймає вхідну програму і виконує її; він на відміну від компілятора не породжує об’єктну програму і ніякого проміжного коду.
Недолік такого інтерпретатора в тому, що користувач повинен почекати компіляцію всієї програми перш ніж почнеться виконання програми.
Компілятор.
Інтерпретаторимають важливу перевагу: відкомпільований код прив’язаний до архітектури обчислювальної системи. Цей аспект не брали до уваги і тому раніше більше розвивались компілятори, тепер ситуація змінилася. З розвитком мережі Інтернет здобуває актуальність питання про переміщувальність програм і їх апаратно незалежність. Тому почали сполучати компіляцію і інтерпретацію.
Різниця між інтерпретаторами і трансляторами.
Дивись попередній пункт.
Етапи трансляції.
аналіз
На етапу аналізу виконується розпізнавання тексту, створення і заповнення таблиць ідентифікаторів. Результати роботи є деяке внутрішнє представлення програми зрозуміле компілятору. На етапі синтезу на підставі внутрішнього представлення програми і інформація, що міститься в таблиці ідентифікаторів породжується текст результуючої програми. Результатом цього етапу є об’єктний код. Аналіз помилок може бути:
просто повідомлення про помилку
повідомлення про місце помилки і яка помилка
підказка що до виправлення помилки
Етапи компіляції поділяються на більш дрібні етапи, які називаються фазами компіляції. Склад фаз компіляції приведений в загальному вигляді і можуть здійснюватись розробниками.
Таблиці ідентифікаторів або таблиці символів – це організовані спеціальним чином набори даних, які служать для збереження інформації про елементи початкової програми. Таблиця може бути одна або їх може бути декілька. Елементи початкової програми, які зберігаються в таблиці ідентифікаторів може зберігати константи, змінні процедури, і не обов’язково мають бути таблиці або масиви.
На фазі лексичного аналізу розбирається вхідний ланцюжок і виділяється найбільше одиниці, тобто лексеми (ідентифікатор, ключові слова, константи, позначки операцій, розділювачі і коментарі). Також тут видаляються коментарі, і виконується обробка директив умовної компіляції. Наприклад: s:=s+d*60;
Синтаксичний аналіз– це основна частина на етапі аналізу, вона виконує виділення синтаксичних конструкцій відповідно до деякої граматики і на цьому етапі будується частково проміжне представлення програми.
відомі наступні основні форми внутрішнього представлення програми:
синтаксичні дерева (зв’язані облікові структури)
тетради (багато адресний код з явно іменованим результатом) операція(оп1, оп2, оп3)
тріади : операція(операнд1, операнд2) – багато адресний код з неявним результатом.
обернений або постфікс ний польський запис.
S=S-d*60 лексичний аналіз id=id2+id3*60 синтаксичний аналіз …
Після синтаксичному аналізу вхідна програма формує деяке проміжне представлення
Семантичний аналізперевіряє крім правильності тексту вхідної програми перевіряє правильність типів даних при дотриманні визначені контексні умови, опис ідентифікатора, число і атрибути фактичних параметрів, виклику процедури повинні співпадати з визначенням цієї процедури а також виконуються додавання функцій неявного перетворення типів
Підготовка до генерації коду– це фаза, на який компілятором виконуються попередні дії безпосередньо зв’язані із синтезом тексту результуючої програми, в якій є ідентифікація елементів, розподіл пам’яті і т.д. ця фаза містить оптимізацію, основна мета оптимізації полягає в перетворенні проміжного представлення програми з метою ефективності результуючої програми. Критерії ефективності: швидкість і обсяг пам’яті.
Деякі оптимізації тривіальні, а деякі вимагають аналіз потоків керування програм і потоків даних. Найбільш розповсюджені константні обчислення, зменшення сили операцій, виділення загальних під виразів, чищення циклів, команди асемблера або проміжні команди.
Генерація коду– фаза пов’язана з породженню команд результуючого коду. Тут виконується розподіл пам’яті, тобто відображення імен, розподіл регістрів для змінних, вибір та поділ послідовності запису значень регістру для оптимального результату.
Temp1=id3*60.0
Id1=id2+temp1 генерація коду mov al,00 add ax,al mov id1,ax