WWW.REFERATCENTRAL.ORG.UA - Я ТУТ НАВЧАЮСЬ

... відкритий, безкоштовний архів рефератів, курсових, дипломних робіт

ГоловнаІнформатика, Компютерні науки → Концепція процесу - Реферат

Концепція процесу - Реферат

передача управління підпрограми.
Семафори. Вони є механізмами передачі повідомлень від одного потоку до іншого про настання деякої події. Розрізняють семафори системні і ОП. Семафор ОП - двійкове слово в пам'яті системи, його описувач, адреса місця в пам'яті. Такі семафори не створюються і не відкриваються, а встановлюються певний стан. Процеси, які використовуються семафори ОП повинні мати доступ до відповідного сегмента пам'яті. ОС такі семафори не обслуговує і не повідомляє про їх звільнення або зайняття. При створенні семафора або його відкритті, повертається описувач семафора, який включає його ім'я. ОС контролює завершення кожного процесу, який володіє системним семафором і звільняє його для процесів. Якщо семафор вільний, то він захоплюється викликаючим його процесом, якщо семафор зайнятий, то викликаючий його потік переходить в режим очікування звільнення семафора або чекає закінчення часу. Якщо семафор звільняється всіма використовуючими його процесами, то видаляється з системи. Управління семафором реалізується за допомогою функцій:
1. Установки семафора з метою сигналізації;
2. Очікування викликаючим потоком поки семафор не буде виключений;
3. Очікування потоку виключення одного із декількох семафорів.
Для роботи з семафорами вводять два значення, позначені P i V. Нехай деяка S представляє собою семафор. Тоді дії P(S) i V(S) визначаються наступним чином:
1. Дія V(S). Деяка S збільшується на одиницю єдиною дією. Збільшення та запам"ятовування не можуть бути перерваними. До деякої S немає доступу другим потокам під час виконання даної операції.
2. Дія P(S). Відбувається зменшення S на одиницю, якщо це можливо. Якщо S=0, тобто неможливо зменшити S, залишаючись в області цілих невід"ємних значень, то в цілому випадку потік викликаючий операцію Р, чекає поки це зменшення стане дійсним.
Успішна перевірка і зменшення також являються нероздільною операцією.
В цілому випадку, якщо семафор S може приймати 0 і 1, він перетворюється в блокуючу змінну, яку по цій причині часто називають подвійним семафором.
Розглянемо використання семафорів накласичному прикладі: взаємодія двох виконуючих в режимі мультипрограмування потоків, один з яких пише дані в буфер, а другий зчитує з буферного пула.
Нехай буферний пул складається з N буферів, кожний з яких може містити один запис. В загальному випадку потік-записувач і потік-читач можуть мати різні швидкості і звертатися до буферного пулу з різною інтенсивністю. В один період швидкість запису може перевищувати швидкість читання, в другий навпаки. Для правельної спільної роботи потік-записувач повинен призупинитися, коли всі буфери опиняються зайнятими і активовується при звільненні хотя би одного і навпаки, коли потік-читача повинен призупинитися, коли всі буфери поржні і активуватися при появі хоч би одного запису.
Введемо два семафори: е - число порожніх буферів, f - число заповнених буферів, при чому у вихідному стані e=N, а f=0. Тоді робота потоків з загальним буферним пулом може бути описана наступним чином:
Використання семафорів для синхронізації потоків.
Потік-записувач спершу виконує операцію P(e) з допомогою якої він перевіряє наявність незаповнених буферів у буферному пулі. У відповідності із значенням операції P, якщо семафор e=0 (тобто вільних буферів в даний момент немає), то потік-записувач переходить в стан очікування. Якщо ж значення е являється позитивне число, то він зменшує число вільних буферів, записує дані в наступний вільний буфер і після цього збільшує число зайнятих буферів, а після зчитування даних, збільшується кількість вільних буферів.
В даному випадку краще використовувати семафори замість блокуючих змінних. Отже, семафори дозволяють ефективно вирішувати задачу синхронізації доступу до ресурсних пулів, таких як, наприклад, набір ідентичних в функціональному призначенні внутрішніх пристроїв (модемів, прінтерів і т.д.) або набір областей пам'яті одинакової величини, набір інформаційних структур. В усіх цих випадках і подібних їм з допомогою семафорів можна організувати доступ до роздільних ресурсів зразу на декілька потоків.
4.1. Методи і засоби синхронізації
Існує досить великий клас засобів ОС, за допомогою яких забезпечується взаємна синхронізація процесів і потоків. Потреба в синхронізації потоків виникає тільки в мультипрограмній ОС і зв'язана зі спільним використанням апаратних і інформаційних ресурсів обчислювальної системи. Синхронізація необхідна для виключення гонок і тупіків при обміні даними між потоками, поділі даних, при доступі до процесора і пристроїв в/в.
У багатьох ОС ці засоби називаються засобами міжпроцесорного взаємодії - Intel Process Communications (IРС), що відбиває історичну первинність поняття "процес" стосовно поняття "потік". Звичайно до засобів ІРС відносять не тільки засоби міжпроцесорної синхронізації, але і засоби міжпроцесорного обміну даними.
Виконання потоку в мультипрограмному середовищі завжди має асинхронний характер. Дуже складно з повною визначеністю сказати, на якому етапі виконання буде знаходитися процес у визначений момент часу. Навіть в однопрограмному режимі не завжди можна точно оцінити час виконання задачі. Це час у багатьох випадках істотно залежить від значення вихідних даних, що впливають на кількість циклів, напрямку розгалуження програми, час виконання операцій в/в і т.п. Тому що вихідні дані в різні моменти запуску задачі можуть бути різними, тому і час виконання окремих етапів і задачі в цілому є дуже невизначеною величиною.
Ще більш невизначеним є час виконання програми в мультипрограмній системі. Моменти переривання потоків, час перебування їх у чергах до поділюваних ресурсів, порядок вибору потоків для виконання - усі ці події є результатом збігу багатьох обставин і можуть бути інтерпретовані як випадкові. У кращому випадку можна оцінити можливі характеристики обчислювального процесу, наприклад імовірність його завершення за даний період часу.
Будь-яка взаємодія процесів чи потоків зв'язано з їхньою синхронізацією, що полягає в узгодженні їхніх швидкостей шляхом припинення потоку до настання деякої події і наступної його активізації при настанні цієї події. Синхронізація лежить в основі будь-якої взаємодії потоків, чи зв'язана ця взаємодія з поділом ресурсів чи з обміном даними. Наприклад, потік-одержувач повинен звертатися за даними тільки після того, як вони поміщені в буфер потоком-відправником. Якщо ж потік-одержувач звернувся до даних до моменту їхнього надходження в буфер, то він повинний
Loading...

 
 

Цікаве