Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекції_СПр.docx
Скачиваний:
37
Добавлен:
21.08.2019
Размер:
947.09 Кб
Скачать

Характеристики Кожному процесу мають бути виділені наступні ресурси: процесор, пам'ять, доступ до пристроїв вводу-виводу, файли

Кожен процес має «батька» (батьківський процес). Він також може мати (але не мусить) «нащадків» (синівські процеси). Таким чином створюється дерево процесів.

Керування процесами здійснює ядро операційної системи. Під час виконання процес може знаходитися в одному із станів:

  • виконання,

  • очікування на доступ до ресурсів, які надає операційна система,

  • готовності до виконання,

  • щойно створений,

  • завершений,

  • зомбі-процес.

Робочий цикл процесу

  • користувач з допомогою оболонки вказує програму, яку потрібно виконати; оболонка виконує виклик fork, чи аналогічний

  • операційна система створює адресний простір для процесу і структури, які описують новий процес

  • заповнюються структури, які описують новий процес

  • з файлу, який містить виконавчий файл, в адресний простір процесу копіюються код і дані

  • встановлюється стан процесу «готовий до виконання»

  • новий процес додається до черги процесів, які очікують на процесор

  • керування повертається оболонці користувача

Виконання процесів

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

Завершення процесів

  • Процес виконує останню інструкцію програми — повертає операційній системі код завершення. Якщо процес завершився нормально повертається значення 0, інакше повертається значення коду помилки.

  • операційна система встановлює стан процесу «завершений» і починає звільнення ресурсів, які були виділені процесу під час його виконання

  • операційна система по-черзі завершує усі синівські процеси даного батьківського

  • операційна система звільняє адресний простір процесу

  • операційна система усуває процес з черги готових процесів

  • процесор виділяється іншому процесу

Контрольні запитання:

  1. Поняття задачі.

  2. Поняття процесу.

  3. Характеристики задачі.

  4. Характеристики процесу.

  5. Робочий цикл процесу.

  6. Виконання процесів.

  7. Завершення процесів

Лекція 15 «Принципи побудови драйверів для пристроїв, що використовують ресурси операційнї системи»

  1. Драйвери пристроїв.

  2. Ідеологія побудови драйверів.

  3. Інтеграція драйверів.

  4. Компонувальник та DDK.

Навчальна мета: Засвоїти основні поняття знаписання драйверів для пристроїв. Вивчити ідеологію побудови драйверів, аспекти інтеграції драйверів та компонувальників DDK.

Виховна мета: Допомогти студентам зрозуміти роль та принципи роботи драйверів операційної системи.

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

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

Драйвер (driver) - програма, за допомогою якої ОС отримує доступ до керування апаратним забезпеченням. У загальному випадку для використання кожного пристрою, підключеного до комп'ютера, необхідний спеціальний драйвер. Зазвичай з ОС поставляються драйвери для ключових компонентів апаратного забезпечення, без яких система не зможе працювати. Однак для більш специфічних пристроїв (таких, як графічна плата або принтер) можуть знадобитися спеціальні драйвери, зазвичай надавані виробником пристрою.

Ідеологія побудови драйверів

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

  1. завантаження драйвера. Драйвер реєструється в системі, робить первинну ініціалізацію

  2. вивантаження. Драйвер звільняє захоплені ресурси - пам'ять, файли, пристрої

  3. відкриття драйвера. Початок основної роботи. Зазвичай драйвер відкривається програмою як файл, функціями CreateFile() в Win32 або fopen() в UNIX-подібних системах;

  4. читання;

  5. запис: програма читає або записує дані з/у пристрій, що обслуговує драйвером;

  6. закриття: операція, зворотна відкриттю, звільняє зайняті при відкритті ресурси й знищує дескриптор файлу;

  7. керування вводом-виводом-IO Control-IOCTL. Найчастіше драйвер підтримує інтерфейс вводу-виводу, специфічний для даного пристрою. За допомогою цього інтерфейсу програма може послати спеціальну команду, що підтримує даний пристрій.

Інтеграція драйверів

У міру розвитку систем, що сполучають у собі на одній платі не тільки центральні елементи комп'ютера, але й більшість пристроїв комп'ютерів у цілому, виникло запитання зручності підтримки таких систем, що одержали назву "апаратна платформа", або просто "платформа".

Спочатку виробники платформ поставляли набір окремих драйверів для операційних систем, зібраний на один носій (зазвичай CD), Потім з'явилися установні пакети, що називалися «4-in-1» та «One touch» і дозволяли спростити установку драйверів у систему. Однак єдиного, усталеного терміна довго не було. Сучасний термін, що описує такі набори драйверів пристроїв — Board Support Package, або "пакет підтримки платформи". Крім власне драйверів, він може, як і інші установні пакети, містити модулі операційної системи й програми.

DDK — Driver Development Kit

DDK (від англ. driver Development Kit) — набір із засобів розробки, утиліт і документації, який дозволяє програмістам створювати драйвери для пристроїв за визначеною технологією або для певної платформи (програмної або програмно-аппаратної).

Компонувальник

(також редактор зв'язків, лінкер - від англ. Link editor, англ. linker) - програма, яка виконує компонування - приймає на вхід один або кілька об'єктних модулів і збирає у виконуваний модуль.

Для зв'язування модулів компонувальник використовує таблиці імен ідентифікаторів, створені компілятором в кожному з об'єктних модулів. Такі імена можуть бути двох типів:

  1. Певні або експортовані назви функцій та змінних, визначені в даному модулі і надані для використання іншим модулям

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

Контрольні запитання:

  1. Драйвер. Основні поняття.

  2. Ідеологія побудови драйверів

  3. Інтеграція драйверів

  4. DDK — Driver Development Kit. Основні поняття.

  5. Компонувальники

Лекція 16 «Написання драйверів для операційної системи Windows»