Добавил:
twitch.tv Заведующий методическим кабинетом, преподаватель на кафедре компьютерного спорта и прикладных компьютерных технологий. Образование - Магистр Спорта. Суета... Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
9
Добавлен:
29.04.2022
Размер:
5.97 Mб
Скачать

Загальна схема трансляції

Програма, яка перетворює вихідний модуль в об’єктний на мові низького рівня або машинній мові називається транслятор.

В залежності від вхідної мови та порядку трансляції і виконання операторів програми всі транслятори поділяються на Асемблери, інтерпретатори, компілятори.

Асемблер – це транслятор з мови низького рівня. Вхідний модуль перетворюється Асемблером у об’єктний модуль, який є особливим записом об’єктної програми. Об’єктний модуль містить машинні команди та інформацію необхідну для об’єднання цього модуля з іншими незалежно – трансльованими модулями, а також і інформацію необхідну для розміщення цього модуля в оперативній пам’яті. Безпосередньо цей модуль не є виконуваною програмою – тому він потребує додаткової обробки компонувальниками.

Транслятор з мови високого рівня називається інтерпретатором або компілятором в залежності від порядку здійснення етапів трансляції і виконання операторів програми.

Схема інтерпретації програми

Схема компіляції програми

Інтерпретатор після трансляції кожного окремого оператора забезпечує його виконання. Тобто етапи трансляції і виконання почергово повторюються.

Компілятор транслює всі оператори програми, а виконання програми в цілому відбувається без його участі. Тобто етапи трансляції окремих операторів здійснюються безпосередньо один за одним і вони повністю ізольовані від процесу виконання програми.

Під час формування програми компілятор включає звернення до об’єктних модулів, які обчислюють значення математичних функцій, виконують операції вводу/виводу, тощо. Ці модулі зберігаються в бібліотеках підпрограм і автоматично вибираються з них компонувальником. Приклад звернення до об’єктного модуля з бібліотеки підпрограм в тексті програми:

uses crt;

#include <dos.h>

Компонувальник об’єднує декілька об’єктних модулів в один виконуваний (завантажувальний модуль), який готовий до безпосереднього виконання ЕОМ після його завантаження і розміщення в оперативній пам’яті (це файли з розширенням *.exe).

Схема компонування завантажуваного модуля

Необхідність об’єднання об’єктних модулів зумовлена наявністю майже в кожному модулі звертань до інших об’єктних модулів, які транслюються незалежно один від одного і зберігаються в бібліотеці підпрограми.

Компонувальник визначає в кожній машинній команді в кожному елементі даних певне місце в оперативній пам’яті і забезпечує об’єктним модулям можливість звернення між собою. Для того, щоб спростити і пришвидшити пошук і виправлення помилок в програмі, які складені користувачами, в системному програмуванні входять відлагоджувальники систем. Кожен відлагоджувальник орієнтований на сумісну роботу з програмою яка написана на певній мові програмування.

Відлагоджувальник надає засоби для перегляду на зміни значень змінних у програмі, оперативно керує ходом виконання програми, реалізує інші шляхи пошуку помилок в діалоговому режимі.

    1. Основні принципи розробки системного програмного забезпечення.

Розглянемо 10 принципів побудови системних програм:

  1. Частотний принцип.

Базується на розділенні програм і даних по частоті використання. Для операцій які часто використовуються створюються умови їх швидкого виконання. Найбільш часто виконувані операції створюються найкоротшими. До найбільш часто виконуваних даних забезпечується найшвидший доступ.

  1. Принцип модульності.

Модуль – це функціональний елемент певної системи, який має певне оформлення, закінчення та наповнення в рамках даної системи, а також засоби взаємозв’язку з аналогічними модулями, з модулями більш високого рівня, або з модулями іншої системи. По своєму визначенню модуль вказує на легкий спосіб його заміни іншим при наявності певних програмних інтерфейсів. Системні програми розділяються на модулі по функціональному призначенню. Як правило, модулі впорядковані ієрархічно, що дозволяє значно спростити експлуатацію та розробку програм, зменшити кількість проектних та інших помилок.

  1. Принцип функціональної вибраності.

Є логічним продовження попередніх двох принципів. Частина важливих модулів повинна бути постійно в активному стані з метою ефективної реалізації обчислювального процесу. Така частина модулів системної програми називається ядром. При формуванні ядра повинні бути забезпечені дві протилежності: з однієї сторони в склад ядра мають входити програми які використовуються найчастіше, з іншої сторони – розмір ядра повинен бути мінімальний.

  1. Принцип генерованості.

Дозволяє настроювати системні програми, виходячи з конкретної апаратної конфігурації обчислювальної системи та певного кола вирішуваних задач. Цей принцип реалізується окремою програмою чи утилітою, в результаті чого отримається повна версія системної програми.

  1. Принцип функціональної надлишковості.

Системна програма повинна мати можливість виконувати одну і ту ж саму дію різними способами.

  1. Принцип по замовчуванню.

Полягає у зберіганні в складі системної програми певних базових описів модулів, конфігурацій, даних які визначають прогнозовані параметри апаратного та програмного забезпечення.

  1. Принцип переміщуваності.

Полягає в проектуванні модулів системної програми таким чином, що їх виконання незалежить від їх розміщення в ОЗП. Налаштування модуля на конкретне розміщення в ОЗП відбувається перед виконанням програми і полягає у визначенні фактичних адрес команд програми, в залежності від типу використовуваної обчислювальної системи та моделі пам’яті.

  1. Принцип захисту.

Визначається необхідністю розробки засобів, які захищають програми і дані користувача від ушкоджень та будь – якого впливу інших користувачів або інших програм. Програми повинні бути захищені як на етапі виконання, так і під час зберігання. Цей принцип в тій чи іншій мірі реалізований в кожній мультипрограмній ОС.

  1. Принцип незалежності програм від зовнішніх пристроїв.

Дозволяє здійснювати управління та обмін даними із зовнішніми пристроями, незалежно від їх конкретних фізичних характеристик. Цей принцип в багатьох сучасних системах реалізований за допомогою механізму драйверів.

  1. Принцип відкритості і нарощуваності.

Відкрита системна програма доступна для аналізу спеціаліста. Нарощувана програма дозволяє виконувати не лише принцип генерованості, але й дозволяє вводити в склад системи нові модулі і нарощувати існуючі.

Тема 2. Концептуальні основи системних програм

  1. Визначення етапів та структури процесу.

  2. Властивості та класифікація процесу.

  3. Визначення ресурсу та класифікації.

  1. Визначення етапів та структури процесу.

Процес – це система дій, яка реалізує певну функцію в обчислювальній системі і оформлена так, що керуюча програма обчислювальної системи може перерозподіляти ресурси цієї системи з метою забезпечення багатопрограмного режиму роботи.

Ця система дій може відбуватися по різному. Програмі в деякий момент часу може бути наданий процесор для виконання або можуть бути надані результати роботи інших процесів або інших ресурсів. Одним словом ходом виконання програми (процесу) необхідно керувати. Функція системних програм в загальному випадку, а операційної системи зокрема – забезпечення ефективного керування процесами, як по відношенню до кожного процесу, так і до їх сукупності.

Стани процесів:

Рис. 1.

При виконанні програм на процесорі обчислювальної системи визначають наступні стани процесора:

  • Passive – процес завантаження в пам’ять, але його виконання ще неініційоване.

  • Ready – процес готовий до виконання (очікує ресурс центрального процесора).

  • Run – процес виконується на центральному процесорі.

  • Wait – процес очікує звільнення необхідного ресурсу.

В залежності від типу очікуваного ресурсу розрізняють системи:

  • з обмеженням по вводу/виводу (в таких системах найбільший час очікування витрачається процесом при зверненні до підсистем вводу/виводу);

  • з обмеженням по швидкодії (найбільший час витрачається на доступ до процесора).

Будь – який процес може знаходитись в одному з перерахованих станів один раз в певний момент часу.