Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Метлабораторн.ОС.doc
Скачиваний:
28
Добавлен:
13.04.2015
Размер:
346.11 Кб
Скачать

Лабораторна робота № 2 Вивчення засобів реалізації багатозадачності та синхронізації взаємодіючих потоків.

Мета роботи:

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

Обладнання:

ПК, ОС Windows, середовище для відлагодження програмного коду (MS Visual Studio, С++ Builder та ін.).

Методичні вказівки з організації самостійної роботи студентів:

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

Зміст звіту:

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

Теоретичні положення:

Багатозадачність (multitasking) – це можливість операційної системи виконувати декілька програм одночасно. У основі цього принципу полягає використання операційною системою апаратного таймера для визначення відрізків часу для кожного з одночасно виконуваних процесів. Якщо ці відрізки часу достатньо малі, і машина не перевантажена великою кількістю програм, користувачеві здається, що ці програми виконуються паралельно.

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

В лабораторній роботі вивчаються функції, що породжують і завершують процес CreateProcess, ExitProcess, TerminateProcess, а, також, створюють і завершують потік CreateThread, ExitThread.

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

Windows надає дві спеціальні можливості синхронізувати паралельно виконувані задачі – це семафори та події.

Семафор діє як звичайний прапор і використовується для того, щоб визначити – вільний або ні у цей час потрібний потокові або процесові ресурс. Користувач може визначити для семафора кількість ресурсів, доступних для використання паралельними задачами. Коли потік займає будь-яку кількість вільних ресурсів, відбувається декрементація кількості ресурсів, також, якщо кількості ресурсів, що залишилася, недостатньо для наступного потоку, він призупиняє свою дію до вивільнення необхідної кількості ресурсів. Для управління семафорами використовують функції CreateSemaphore, ReleaseSemaphore, OpenSemaphore, WaitForSingleObject.

Події є самим примітивним різновидом об’єктів синхронізації. Вони використовуються для того, щоб повідомити потік про те,що настала очікувана подія. Ці об’єкти зазвичай використовують для синхронізації потоків, які працюють за принципом конвеєра. Наприклад, один потік опитує датчики і завантажує прочитані значення до буфера. Другий потік зчитує ці дані з буфера і обробляє їх. Перший потік може сигналізувати другому про те, що подія – заповнення буфера – настала. Другий потік може сигналізувати першому про те, що настала друга подія – дані з буфера зчитані, очікується нова порція даних. Подія може мати два стани – "зайнято" або "вільно". Робота з подіями відбувається за допомогою наступних функцій: CreateEvent, ResetEvent, PulseEvent, SetEvent.

Порядок виконання роботи:

  1. Створити свою робочу директорію.

  2. Виконати завдання згідно з варіантом.