
- •Методичні вказівки
- •Загальні положення
- •1 Структура windows - додатків. Віконна процедура. Обробка повідомлень
- •1.1 Мета роботи
- •1.2 Вказівки з підготовки до виконання лабораторної роботи
- •1.4 Завдання на лабораторну роботу
- •1.5 Контрольні запитання і завдання
- •2 Контексти пристроїв. Вивід тексту
- •2.1 Мета роботи
- •2.2 Вказівки з підготовки до виконання лабораторної роботи
- •2.3 Суть роботи
- •2.4 Завдання на лабораторну роботу
- •2.5 Контрольні запитання і завдання
- •3 Графічний інтерфейс користувача (graphical user interface, gui)
- •3.1 Мета роботи
- •3.2 Вказівки з підготовки до виконання лабораторної роботи
- •3.3 Суть роботи
- •3.4 Завдання на лабораторну роботу
- •3.5 Контрольні запитання та завдання
- •4 Засоби введення інформації
- •4.1 Мета роботи
- •4.2 Вказівки з підготовки до виконання лабораторної роботи
- •4.3 Огляд теми роботи
- •4.4 Завдання на лабораторну роботу
- •Варіант 6
- •4.5 Контрольні запитання та завдання
- •5 Використання ресурсів
- •5.1 Мета роботи
- •5.2 Вказівки з підготовки до виконання лабораторної роботи
- •5.3 Суть роботи
- •5.4 Завдання на лабораторну роботу
- •Варіант 9
- •5.5 Контрольні запитання і завдання
- •6 Багатозадачність та багатопотоковість
- •6.1 Мета роботи
- •6.2 Вказівки з підготовки до виконання лабораторної роботи
- •6.3 Суть роботи
- •6.4 Завдання на лабораторну роботу
- •6.5 Контрольні запитання і завдання
- •7 Багатовіконний інтерфейс
- •7.1 Мета роботи
- •7.2 Вказівки з підготовки до виконання лабораторної роботи
- •7.3 Суть роботи
- •7.4 Завдання на лабораторну роботу
- •7.5 Контрольні запитання та завдання
- •8.4 Завдання на лабораторну роботу
- •8.5 Контрольні запитання і завдання
- •Список літератури
- •Методичні вказівки
6 Багатозадачність та багатопотоковість
6.1 Мета роботи
Ознайомлення з концепцією багатозадачності і багатопотоковості сучасних операційних систем, одержання практичних навичок з упорядкування, написання і налагодження програм, що містять паралельно функціонуючі процедури і функції.
6.2 Вказівки з підготовки до виконання лабораторної роботи
Багатозадачність на сьогоднішній день - одна з визначальних особливостей операційних систем. При підготовці до лабораторної роботи необхідно ознайомиться з теоретичним описом принципу багатозадачності й особливостями її апаратної реалізації. Уважно проробити питання забезпечення багатозадачності (multitasking) і багатопотоковості (multithreading) додатків Windows.
При підготовці до роботи необхідно вивчити конспект лекцій за зазначеною темою, методичні вказівки, а також розділи, зазначені в [16, c. 763-809], [17, c. 59-87].
6.3 Суть роботи
Багатозадачність (multitasking) - це спроможність операційної системи виконувати декілька програм одночасно. Основою цього принципу є використання операційною системою апаратного таймера для виділення відрізків часу для кожного з одночасно виконуваних процесів. Якщо ці відрізки часу достатньо малі, і машина не перевантажена занадто великим числом програм, то користувачу здається, що всі ці програми виконуються паралельно.
Багатопотоковість - це можливість програми самою бути багатозадачною. Програма може бути розділена на окремі потоки виконання, що, як здається, виконуються паралельно.
У лабораторній роботі вивчаються функції породження і завершення процесу CreateProcess, ExitProcess, TerminateProcess, створення і завершення потоку CreateThread, ExitThread.
Особлива увага в лабораторній роботі приділяється дослідженню можливостей синхронізації процесів і потоків. Існує великий клас задач (наприклад, в керуванні базами даних, рівнобіжних обчисленнях), у котрих паралельно функціонуючі програми (або їхні модулі) потребують обміну інформації або порядок виконання одних із програмних модулів залежить від виконання інших.
Windows надає дві спеціальні можливості синхронізувати паралельно виконувані задачі - це семафори і події.
Семафор діє як звичайний прапорець, і використовується для того, щоб визначити вільний або ні у даний час ресурс, що є потрібним потокові або процесу. Користувач може визначати для семафора кількість ресурсів, доступних для використання рівнобіжними задачами. При занятті потоком якоїсь кількості вільних ресурсів відбувається декриментація кількості ресурсів, і якщо, що залишилося число ресурсів недостатньо такому потокові, він припиняється до моменту звільнення необхідного числа ресурсів. Для керування семафорами використовуються функції CreateSemaphore, ReleaseSemaphore, OpenSemaphore, WaitForSingleObject.
Події є найпримітивнишим різновидом об'єктів синхронізації. Вони використовуються для того, щоб повідомити потік про те, що настала очікувана подія. Ці об'єкти звичайно використовуються для того, щоб синхронізувати потоки, що працюють за принципом конвеєра. Наприклад, один потік опитують датчики і завантажує лічені значення в буфер. Інший потік бере ці дані з буфера і робить їхнє опрацювання. Перший потік може сигналізувати другому про те, що подія - заповнення буфера - настало. Другий потік може сигналізувати першому про те, що наступила інша подія - дані з буфера лічені, очікується нова порція даних. Подія може мати два стани - зайняте і вільне. Робота з подіями здійснюється за допомогою таких функцій: CreateEvent, ResetEvent, PulseEvent, SetEvent.