Студенческий сайт КФУ - ex ТНУ » Учебный раздел » Учебные файлы »Информатика

Особливості багатозадачності в середовищі Windows

Тип: контрольная работа
Категория: Информатика
Скачать
Купить
Контрольна роботаз інформатикиОсобливості багатозадачності в середовищі WindowsВступОсновні поняття багатозадачності в Windows 95 - процес (задача) і потік (нитка). Під процесом розуміється виконання програми в цілому (WinWord, Excel, Visual C++ і т.д.) Потоками у свою чергу є частини процесу, що виконуються паралельно. Процесом звичайно називають екземпляр програми, що виконується.Хоча на перший погляд здається, що програма і процес поняття практично однакові, вони фундаментально відрізняються один від одного. Програма представляє собою статичний набір команд, а процес це набір ресурсів і даних, що використовуються при виконанні програми. Процес в Windows складається з наступних компонентів:- Структура даних, що включає в себе всю інформацію про процес, в тому числі список відкритих дескрипторів різних системних ресурсів, унікальний ідентифікатор процесу, різноманітну статистичну інформацію і т.д.;- Адресний простір - діапазон адресів віртуальної пам‘яті, яким може користуватися процес;- Програма, що виконується і дані, що проектуються на віртуальний адресний простір процесу.Будь який процес має хоча б один потік (у цьому випадку його можна ототожнити з потоком). Це первинний потік створюється системою автоматично при створенні процесу. Далі цей потік може породити інші потоки, ті в свою чергу нові і т.д. Таким чином, один процес може володіти декількома потоками, і тоді вони одночасно виконують код в адресному просторі процесу. Windows краще всього працює, коли всі потоки можуть займатися своїм ділом, не взаємодіючи один з одним. Але така ситуація дуже рідкісна. Звичайно потік створюється для виконання певної роботи, про завершення якої, ймовірно, захоче узнати інший потік. Приклад: один потік підготовляє дані, інший їх сортує, а третій виводить результат у файл. Передавши готові дані другому потоку на сортування, перший починає обробку нового блоку. Тим часом другий потік повідомляє третьому, що можна виводити результати. Роботу цих трьох потоків необхідно синхронізувати.Всі потоки в системі повинні мати доступ до системних ресурсів — кучам, послідовним портам, файлам, вікнам і т д. Якщо один із потоків запросить монопольний доступ до якого-небудь ресурсу, іншим потокам, яким теж потрібен цей ресурс, не вдасться виконати свої задачі. А с другої сторони, просто недопустимо, щоб потоки безконтрольно користувались ресурсами. Інакше може статися так, що один потік пише в блок пам‘яті, з якого інший щось зчитує. Потоки повинні взаємодіяти один з одним в двох основних випадках: 1) спільно використовуючи один і той же ресурс (щоб не розрушити його); 2) коли треба повідомити інші потоки про завершення яких-небудь операційВ Windows є маса засобів, що спрощують синхронізацію потоків. Але точно спрогнозувати, в який момент потоки будуть робити то-то и то-то, надзвичайно складно.Механізми синхронізаціїНайбільш простим механізмом синхронізації є використання Interlocked-функцій. Використання цих функцій гарантує “атомарне” виконання потрібних операцій, тобто потоки не будуть заважати один одному.Пояснимо на прикладі:// definition of global viriable lorig g_x = 0; DWORD WINAPI ThreadFunc1(PVOID pvParam) { g_x++; return(0); } DWORD WINAPI ThreadFunc2(PVOID pvParam} { g_x++; return(0); } Нема ні якої впевненості, що отримаємо двійку, тому що ми не управляємо механізмом витіснення потоків.// definition of global viriable long g_x = 0; DWORD WINAPI ThreadFunc1(PVOID pvParam) { InterlockedExchangeAdd(&g_x, 1); return(0); } DWORD WINAPI ThreadFunc2(PVOID pvPararr) { InterlockedExchangeAdd(&g_x, 1); return(0); } Тут вже можна бути впевненим, що значення g_x=2.Розглянемо ці функції більш детальноЯкщо кілька потоків мають доступ до однієї змінного, те немає ніякої гарантії, що в процесі зміни значення цієї змінний одним потоком не відбудеться переключення на інший потік, що може читати її значення. Інший потік у цьому випадку одержить невірну інформацію. Для запобігання таких конфліктів у Windows 95 уведений ряд функцій, що дозволяють коректно змінювати змінні, доступ до яких мають кілька потоків. Перелічимо функції, що охороняють від переключення під час зміни значення змінної: LONG InterlockedIncrement (LPLONG lpAddend) - збільшує значення за адресою lpAddend на одиницю; LONG InterlockedDecrement (LPLONG lpAddend) - зменшує значення за адресою lpAddend на одиницю; LONG InterlockedExchange (LPLONG Target, LONG Value) - заміняє значення, що знаходиться за адресою Target, на значення, передане в параметрі Value; LONG InterlockedExchangeAdd (PLONG Addend, LONG Increment) - додає до значення за адресою Addend значення Increment; PVOID InterlockedCompareExchange (PVOID *Destination, PVOID Exchange, PVOID Comperand) - порівнює значення за адресою Destination зі значенням, переданим у параметрі Comperand, і якщо ці значення рівні, то за адресою Destination міститься значення, передане в параметрі Exchange. Іншим...
Другие файлы:

Реалізація багатозадачності в Windows Vista
Властивості багатозадачного середовища. Історія розвитку багатозадачних операційних систем. Моделювання режиму, процеси і потоки. Відповідність пріори...

Естетичне виховання учнів середнього шкільного віку в полікультурному середовищі на Закарпатті (1919–1939 рр.)
Наукові пошуки вітчизняних дослідників у галузі теорії та практики естетичного виховання. Регіональні особливості естетичного виховання учнівської мол...

Панель керування в ОС Windows Панель управління пристороями Пк у середовищі Windows

Розробка гри "Lines" в середовищі С++
Сутність та характерні особливості системного програмування. Історія розвитку комп'ютерних ігор. Створення програми, що реалізує гру "Lines" в середов...

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