Студопедия — Процеси і потоки
Студопедия Главная Случайная страница Обратная связь

Разделы: Автомобили Астрономия Биология География Дом и сад Другие языки Другое Информатика История Культура Литература Логика Математика Медицина Металлургия Механика Образование Охрана труда Педагогика Политика Право Психология Религия Риторика Социология Спорт Строительство Технология Туризм Физика Философия Финансы Химия Черчение Экология Экономика Электроника

Процеси і потоки






Розрізняють два способи реалізації багатозадачності:

· створити один процес, що має декілька потоків виконання (threads);

· створити декілька процесів, кожен з яких має один або декілька потоків виконання.

Багатозадачна (multi-process) система дозволяє двом або більш програмам виконуватися одночасно. Багатопотокова (multi-threaded) система дозволяє одній програмі виконувати відразу декілька потоків одночасно. Сучасні операційні системи поєднують в собі обоє ці властивості. Додаток Win32 може складатися з одного або більш за процеси. Наприклад, додаток за розрахунком параметрів турбогенератора може складатися із зручної оболонки, написаної на мові C++ (головний процес), і обчислювальних модулів, що написаних на мові FORTRAN і запускаються у вигляді окремих (породжених) процесів. При цьому можливий варіант, коли один процес (модуль програми) зайнятий виведенням геометрії розрахункової області, а інший одночасно виробляє розрахунок електромагнітного поля.

Процес - це поняття, що відноситься до операційної системи. Кожного разу, як ви запускаєте додаток, система створює і запускає новий процес. Процес можна грубо ототожнити з ехе-кодом, що виконується в окремому процесорі. З кожним процесом система пов'язує такі ресурси, як:

віртуальний адресний простір;

здійснимий код і дані;

базовий пріоритет;

описувачі об'єктів;

змінні оточення.

Windows NT/2000 відводить для кожного процесу віртуальний адресний простір в 4 Гбайт, захищений від інших процесів, які виконуються в системі в той же самий час.

Кожен процес обов'язково створює первинний потік (primary thread) виконання. Він робить це автоматично і, якщо програміст не робить яких-небудь спеціальних зусиль по створенню другого потоку, то первинний потік і породжувач його процес зазвичай ототожнюються в свідомості користувача, а, часто і в свідомості програміста. Але останній може створити ще один або декілька потоків, які розміщуються в одному і тому ж адресному просторі, що належить процесу. Коли вони створюються, батьківський процес починає виконуватися не послідовно, а паралельно. Так реалізується потокова багатозадачність. Говорять, що потоки виконуються в контексті процесу.

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

Порівняно недавно з'явилося ще декілька термінів, пов'язаних з цією ж тематикою. Ниткою (fiber) потоку називається виконуваний блок код, який «уручну» (manually) уривається або планується (scheduled) додатком. Нитка виконується в контексті потоку, який її планує. Завданням (job object) називається група процесів, об'єднаних в загальний блок (unit). Завдання в ОС має своє ім'я, атрибути захисту і здатність управляти загальними (що розділяються) ресурсами. Операції, вироблювані системою або програмістом над завданнями, впливають на всі складові його процеси.

Всі потоки (threads) одного процесу користуються ресурсами породжувача їх процесу. Крім того, кожному потоку система і програміст приписує пріоритет виконання і набір структур мови З, що описують контекст потоку. Система використовує їх для запам'ятовування контексту потоку, коли його виконання уривається. У контекст входять:

· стан регістрів;

· системний стек ядра ОС (kernel stack);

· стек користувача (user stack), розташований в адресному просторі процесу;

· блок змінних оточення потоку.

Потоки подібні до процесів, але вимагають менших витрат при своєму створенні. Вони у меншій мірі, чим процеси, захищені один від одного, але дозволяють поєднати виконання операцій і виграти в загальній продуктивності процесу. Перерахуємо найбільш типові випадки, коли слід застосовувати мпогопоточность:

· управління введенням в різні документи МШ-интерфейса. Введення даних кожного документа додатка організоване у вигляді окремого потоку;

· управління введенням даних з декількох пристроїв телекомунікації;

· розмежування пріоритетів виконання завдань. Потокам, що вимагають високої швидкості реакції, привласнюється високий пріоритет, а іншим потокам нижчий;

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

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

· контексти потоків займають менший об'єм, чим контексти процесів і система перемикає їх швидше;

· взаємодія потоків простіша, оскільки вони можуть користуватися глобальними змінними загалом для них адресному просторі процесу;

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

Якщо один потік виконує повільні операції введення-виводу, а інший виконує обчислення, використовуючи лише процесор, то ефективність процесу, що поєднує два потоки, буде значно вища, ніж ефективність двох процесів, виконаних послідовно. Типовим багатопотоковим застосуванням є сервер, обслуговуючий багато користувачів. Кожен новий користувач обслуговується окремим потоком одного процесу. Замість чекань, які пов'язані з дисковими операціями, система може перейти до виконання іншого потоку.

Проте в разі помилкового проектування потоки можуть і погіршити загальний показник ефективності процесу. Наприклад, час виконання процесу з двома потоками буде нижчий, ніж ефективність двох послідовних однопо-токовых процесів, якщо обоє потоку виконуються в пам'яті і не вимагають інтерфейсу з користувачем. Система вимушена постійно переривати ефективно працюючі потоки і перемикатися між ними. Ці перемикання ведуть до непотрібних втрат або зайвих операцій (overheads) по завантаженню в пам'ять і подальшому вивантаженню структур даних, необхідних для обслуговування потоків. Наявність призначеного для користувача інтерфейсу наводить до того, що вказані дії виконуються під час неминучих пауз, пов'язаних з операціями введення-виводу, що створює ілюзію поєднання в часі.

Створення багатопотокових процесів вимагає ретельного попереднього аналізу з тим, аби належним чином скоординувати дії операційної системи і інших програмних компонентів. Відстежування станів багаточисельних потоків вимагає значних тимчасових витрат, тому слід пам'ятати, що Win32-API надає і інші засоби реалізації асинхронное™ виконання операцій. Наприклад: асинхронне уведення-виведення (I/O), спеціальні порти I/O (completion ports), асинхронні виклики видалених процедур (asynchronous procedure calls - АРС), функції чекання системних подій (wait functions).

Спільний доступ потоків до ресурсів, що розділяються: описувачам файлів, портів, глобальним змінним, може створити конфлікти. Наприклад, один потік читає дані, а інший намагається одночасно їх змінити або один потік чекає завершення певної операції іншим потоком, а той, у свою чергу, чекає відробітку першого потоку. Таке зациклення називається тупиковою ситуацією (deadlock). Для попередження конфліктів такого роду існують спеціальні синхронізуючі об'єкти ядра системи:, семафори, мьютексы, події.

№3

Шина 1- Wіre є основою мереж MіcroLAN і розроблена наприкінці 90- х років фірмою Dallas Semіconductor [8].

Шина 1- Wіre побудована за технологією Master/Slave. На шині повинний бути хоча б один провідний пристрій (Master). Всі інші пристрої повинні бути веденими (Slave). Провідний пристрій ініціює всі процеси передачі інформації в межах шини. Master може прочитати дані з будь-якого Slave пристрою або записати їх туди. Передача інформації від одного Slave пристрою до іншого безпосередньо неможлива. Для того, щоб Master міг звертатися до кожного з ведених пристроїв по шині, кожний ведений пристрій містить у собі індивідуальний код (ІD-код).

Протокол l-Wіre містить у собі спеціальну команду пошуку, за допомогою якої провідний пристрій (Master) може здійснювати автоматичний пошук ведених пристроїв. У процесі пошуку Master визначає ІD коди для всіх підключених до мережі мікросхем. Пошук відбувається шляхом поступового відсіювання неіснуючих адрес. Тому для того, щоб знайти всі пристрої, що підключені до шини, потрібно досить значний час. Середня швидкість пошуку елементів у мережі MіcroLAN становить близько 75 вузлів за секунду.

Обмін інформацією по шині 1- Wіre відбувається за такими правилами:

1. Обмін завжди ведеться з ініціативи одного провідного пристрою, що у більшості випадків є мікроконтролером.

2. Будь-який обмін інформацією починається з подачі імпульсу скидання (" Reset Pulse" або просто RESET) у лінію 1- Wіre провідним пристроєм.

3. Для інтерфейсу 1- Wіre у загальному випадку передбачається " гаряче" підключення й відключення пристроїв. 4. Будь-який пристрій, підключений до 1-Wіre після одержання живлення видає в лінію DQ імпульс присутності, який називається 73 " Presence pulse". Цей же імпульс пристрій завжди видає в лінію, якщо виявить сигнал RESET.

5. Поява в шині 1-Wіre імпульсу PRESENCE після видачі RESET однозначно інформує про наявність хоча б одного підключеного пристрою. 6. Обмін інформації ведеться так званими тайм-слотами: один тайм-слот служить для обміну одним бітом інформації.

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

На рисунку 1.69 показана діаграма сигналів RESET і PRESENCE, з яких завжди починається будь-який обмін даними.

Імпульс RESET формує МК, що переводить в низький логічний рівень шину 1-Wіre і втримує її в цьому стані мінімум 480 мікросекунд. Далі МК повинний " відпустити" шину. Через якийсь час, що залежить від ємності лінії й опору резистора, що підтягує, у лінії встановиться високий логічний рівень. Протокол 1-Wіre обмежує цей час " релаксації" діапазоном від 15 до 60 мікросекунд, що і є визначальним для вибору резистора, що підтягує.

Виявивши імпульс RESET, ведений пристрій (Slave) приводить свої внутрішні вузли у вихідний стан і формує відповідний імпульс PRESENCE, не пізніше 60 мікросекунд після завершення імпульсу RESET. Для цього пристрій переводить у низький рівень лінію і втримує її в цьому стані від 60 до 240 мікросекунд. Після цього пристрій так само " відпускає" шину.

Але після завершення імпульсу PRESENCE пристрою дається ще якийсь час для завершення внутрішніх процедур ініціалізації, таким чином, МК повинен приступити до будь-якого обміну із пристроєм не раніше, ніж через 480 мікросекунд після завершення імпульсу RESET.

Отже, процедура ініціалізації інтерфейсу, з якої починається будь-який обмін даними між пристроями, триває мінімум 960 мікросекунд, складається з передачі від МК сигналу RESET і прийому від пристрою сигналу PRESENCE. Якщо сигнал PRESENCE не виявлений – значить на шині 1- Wіre немає готових до обміну пристроїв.

Обмін бітами інформації здійснюються певними тайм-слотами. Тайм-слот – це певна, досить жорстко лімітована за часом послідовність зміни рівнів сигналу в лінії 1-Wіre. Розрізняють 4 типи тайм-слотів: передача " 1" від МК, передача " 0" від МК, прийом " 1" від Slave пристрою, прийом " 0" від Slave пристрою.

Будь-який тайм-слот завжди починає МК шляхом переведення шини 1- Wіre у низький логічний рівень. Тривалість будь-якого тайм- слота повинна перебувати в межах від 60 до 120 мікросекунд. Між окремими тайм-слотами завжди повинний передбачатися інтервал не менш 1 мікросекунди.

Тайм-слоти передачі відрізняються від тайм-слотів прийому поводженням МК: при передачі він тільки формує сигнали, при прийманні, крім того, ще й опитує рівень сигналу в лінії 1- Wіre. Рисунок 1.70 демонструє часові діаграми тайм-слотів всіх 4-х типів: угорі показані тайм-слоти передачі від МК, унизу - прийому від Slave пристрою.







Дата добавления: 2014-12-06; просмотров: 3378. Нарушение авторских прав; Мы поможем в написании вашей работы!



Функция спроса населения на данный товар Функция спроса населения на данный товар: Qd=7-Р. Функция предложения: Qs= -5+2Р,где...

Аальтернативная стоимость. Кривая производственных возможностей В экономике Буридании есть 100 ед. труда с производительностью 4 м ткани или 2 кг мяса...

Вычисление основной дактилоскопической формулы Вычислением основной дактоформулы обычно занимается следователь. Для этого все десять пальцев разбиваются на пять пар...

Расчетные и графические задания Равновесный объем - это объем, определяемый равенством спроса и предложения...

Репродуктивное здоровье, как составляющая часть здоровья человека и общества   Репродуктивное здоровье – это состояние полного физического, умственного и социального благополучия при отсутствии заболеваний репродуктивной системы на всех этапах жизни человека...

Случайной величины Плотностью распределения вероятностей непрерывной случайной величины Х называют функцию f(x) – первую производную от функции распределения F(x): Понятие плотность распределения вероятностей случайной величины Х для дискретной величины неприменима...

Схема рефлекторной дуги условного слюноотделительного рефлекса При неоднократном сочетании действия предупреждающего сигнала и безусловного пищевого раздражителя формируются...

ОСНОВНЫЕ ТИПЫ МОЗГА ПОЗВОНОЧНЫХ Ихтиопсидный тип мозга характерен для низших позвоночных - рыб и амфибий...

Принципы, критерии и методы оценки и аттестации персонала   Аттестация персонала является одной их важнейших функций управления персоналом...

Пункты решения командира взвода на организацию боя. уяснение полученной задачи; оценка обстановки; принятие решения; проведение рекогносцировки; отдача боевого приказа; организация взаимодействия...

Studopedia.info - Студопедия - 2014-2024 год . (0.012 сек.) русская версия | украинская версия