Визначити основні завдання ОС по управлінню процесами(потоками).
Розрізняють два способи реалізації багатозадачності: · створити один процес, що має декілька потоків виконання (threads); · створити декілька процесів, кожен з яких має один або декілька потоків виконання. Багатозадачна (multi-process) система дозволяє двом або більш програмам виконуватися одночасно. Багатопотокова (multi-threaded) система дозволяє одній програмі виконувати відразу декілька потоків одночасно. Сучасні операційні системи поєднують в собі обоє ці властивості. Додаток Win32 може складатися з одного або більш за процеси. Наприклад, додаток за розрахунком параметрів турбогенератора може складатися із зручної оболонки, написаної на мові C++ (головний процес), і обчислювальних модулів, що написаних на мові FORTRAN і запускаються у вигляді окремих (породжених) процесів. При цьому можливий варіант, коли один процес (модуль програми) зайнятий виведенням геометрії розрахункової області, а інший одночасно виробляє розрахунок електромагнітного поля. Процес - це поняття, що відноситься до операційної системи. Кожного разу, як ви запускаєте додаток, система створює і запускає новий процес. Процес можна грубо ототожнити з ехе-кодом, що виконується в окремому процесорі. З кожним процесом система пов'язує такі ресурси, як: · віртуальний адресний простір; · здійснимий код і дані; · базовий пріоритет; · описувачі об'єктів; · змінні оточення. Windows NT/2000 відводить для кожного процесу віртуальний адресний простір в 4 Гбайт, захищений від інших процесів, які виконуються в системі в той же самий час.Кожен процес обов'язково створює первинний потік (primary thread) виконання. Він робить це автоматично і, якщо програміст не робить яких-небудь спеціальних зусиль по створенню другого потоку, то первинний потік і породжувач його процес зазвичай ототожнюються в свідомості користувача, а, часто і в свідомості програміста. Але останній може створити ще один або декілька потоків, які розміщуються в одному і тому ж адресному просторі, що належить процесу. Коли вони створюються, батьківський процес починає виконуватися не послідовно, а паралельно. Так реалізується потокова багатозадачність. Говорять, що потоки виконуються в контексті процесу.Потік (thread) - це основний елемент системи, якому ОС виділяє машинний час. Потік може виконувати якусь частину загальної коди процесу, у тому числі і ту частину, яка в цей час вже виконується іншим потоком. Наприклад, код функції, що відображує на екрані міру просування процесу передачі інформації, може одночасно виконуватися двома потоками, які обслуговують двох клієнтів одного сервера.Всі потоки (threads) одного процесу користуються ресурсами породжувача їх процесу. Крім того, кожному потоку система і програміст приписує пріоритет виконання і набір структур мови З, що описують контекст потоку. Система використовує їх для запам'ятовування контексту потоку, коли його виконання уривається. У контекст входять:
· стан регістрів; · системний стек ядра ОС (kernel stack); · стек користувача (user stack), розташований в адресному просторі процесу; · блок змінних оточення потоку. Потоки подібні до процесів, але вимагають менших витрат при своєму створенні. Вони у меншій мірі, чим процеси, захищені один від одного, але дозволяють поєднати виконання операцій і виграти в загальній продуктивності процесу. Перерахуємо найбільш типові випадки, коли слід застосовувати мпогопоточность: · управління введенням в різні документи МШ-интерфейса. Введення даних кожного документа додатка організоване у вигляді окремого потоку; · управління введенням даних з декількох пристроїв телекомунікації;
· розмежування пріоритетів виконання завдань. Потокам, що вимагають високої швидкості реакції, привласнюється високий пріоритет, а іншим потокам нижчий; · зниження часу реакції на дії користувача по введенню даних при одночасному виконанні фонових обчислень. Зазвичай ефективнішою є реалізація багатозадачності у вигляді одного процесу з декількома потоками, чим у вигляді багатьох процесів з одним потоком, оскільки: · контексти потоків займають менший об'єм, чим контексти процесів і система перемикає їх швидше; · взаємодія потоків простіша, оскільки вони можуть користуватися глобальними змінними загалом для них адресному просторі процесу; · потоки одного процесу легко синхронізувати, оскільки їм доступні описувачі об'єктів ядра із загального контексту процесу. Якщо один потік виконує повільні операції введення-виводу, а інший виконує обчислення, використовуючи лише процесор, то ефективність процесу, що поєднує два потоки, буде значно вища, ніж ефективність двох процесів, виконаних послідовно. Типовим багатопотоковим застосуванням є сервер, обслуговуючий багато користувачів. Кожен новий користувач обслуговується окремим потоком одного процесу. Замість чекань, які пов'язані з дисковими операціями, система може перейти до виконання іншого потоку. Проте в разі помилкового проектування потоки можуть і погіршити загальний показник ефективності процесу. Наприклад, час виконання процесу з двома потоками буде нижчий, ніж ефективність двох послідовних однопо-токовых процесів, якщо обоє потоку виконуються в пам'яті і не вимагають інтерфейсу з користувачем. Система вимушена постійно переривати ефективно працюючі потоки і перемикатися між ними. Ці перемикання ведуть до непотрібних втрат або зайвих операцій (overheads) по завантаженню в пам'ять і подальшому вивантаженню структур даних, необхідних для обслуговування потоків. Наявність призначеного для користувача інтерфейсу наводить до того, що вказані дії виконуються під час неминучих пауз, пов'язаних з операціями введення-виводу, що створює ілюзію поєднання в часі.Створення багатопотокових процесів вимагає ретельного попереднього аналізу з тим, аби належним чином скоординувати дії операційної системи і інших програмних компонентів. Відстежування станів багаточисельних потоків вимагає значних тимчасових витрат, тому слід пам'ятати, що Win32-API надає і інші засоби реалізації асинхронное™ виконання операцій. Наприклад: асинхронне уведення-виведення (I/O), спеціальні порти I/O (completion ports), асинхронні виклики видалених процедур (asynchronous procedure calls - АРС), функції чекання системних подій (wait functions).Спільний доступ потоків до ресурсів, що розділяються: описувачам файлів, портів, глобальним змінним, може створити конфлікти. Наприклад, один потік читає дані, а інший намагається одночасно їх змінити або один потік чекає завершення певної операції іншим потоком, а той, у свою чергу, чекає відробітку першого потоку. Таке зациклення називається тупиковою ситуацією (deadlock). Для попередження конфліктів такого роду існують спеціальні синхронізуючі об'єкти ядра системи:, семафори, мьютексы, події.
Читайте также: I. ОСНОВНІ ЗАДАЧІ І НАПРЯМКИ САМОСТІЙНОЇ НДР СТУДЕНТІВ Воспользуйтесь поиском по сайту: ©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...
|