Студопедия.Орг Главная | Случайная страница | Контакты | Мы поможем в написании вашей работы!  
 

Процеси



Процес (комп.) — послідовність операцій при виконанні програми, що є наборами байтів, які інтерпретуються центральним процесором як машинні інструкції, дані та стекові структури.

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

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

Існування декількох процесів дозволяє комп'ютеру "одночасно" виконувати декілька завдань. Існування декількох потоків дозволяє процесу розділяти роботу для паралельного виконання. На багатопроцесорному комп'ютері процеси або потоки можуть працювати на різних процесорах. Це дозволяє виконувати реально паралельну роботу.

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

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

Підсистема управління процесами і потоками відповідальна за забезпечення процесів необхідними ресурсами. ОС підтримує в пам'яті спеціальні інформаційні структури, в які записує, які ресурси виділені кожному процесу. Вона може призначити процесу ресурси в одноосібне користування або в спільне користування з іншими процесами. Деякі з ресурсів виділяються процесу при його створенні, а деякі — динамічно по запитах під час виконання. Ресурси можуть бути приписані процесу на увесь час його життя або тільки на певний період. При виконанні цих функцій підсистема управління процесами взаємодіє з іншими підсистемами ОС, відповідальними за управління ресурсами, такими як підсистема управління пам'яттю, підсистема введення-виводу, файлова система.

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

Кожного разу, коли процес завершується, ОС робить кроки, щоб «зачистити сліди» його перебування в системі. Підсистема управління процесами закриває усі файли, з якими працював процес, звільняє області оперативної пам'яті, відведені під коди, дані і системні інформаційні структури процесу. Виконується корекція всіляких черг ОС і списків ресурсів, в яких були посилання на завешуваний процес.

Контрольні запитання

1. Дати визначення процесу

2. Як пов' язані процеси і потоки?

3. Що таке підсистема управління потоками і процесами?

Література

Їв. ресурс: http://vv 303.narod.ru/files/inst/olifer/chapter4/default.htm


Потоки

Потік даних (англ. stream) в програмуванні — абстракція, використовувана для читання або запису файлів, сокетів і т. п. в єдиній манері.

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

Підтримка потоків включена у більшість мов програмування і чи не в усі сучасні (на 2008 рік) операційні системи.

При запуску процесу йому надаються зумовлені стандартні потоки.

Можливість перенаправлення потоків дозволяє зв'язувати різні програми, і надає системі гнучкість, що є частиною філософії Unix.

Створення потоків вимагає від ОС менших накладних витрат, ніж процесів. На відміну від процесів, які належать різним, взагалі кажучи, конкуруючим застосуванням, усі потоки одного процесу завжди належать одному застосуванню, тому ОС ізолює потоки в набагато меншій мірі, ніж процеси в традиційній мультипрограмній системі. Усі потоки одного процесу використовують загальні файли, таймери, пристрої, одну і ту ж область оперативної пам'яті, одно і те ж адресний простір. Це означає, що вони розділяють одні і ті ж глобальні змінні. Оскільки кожен потік може мати доступ до будь-якої віртуальної адреси процесу, один потік може використовувати стек іншого потоку. Між потоками одного процесу немає повного захисту, тому що, по-перше, це неможливо, а по-друге, не треба. Щоб організувати взаємодію і обмін даними, потокам зовсім не вимагається звертатися до ОС, їм досить використовувати загальну пам'ять — один потік записує дані, а інший читає їх. З іншого боку, потоки різних процесів як і раніше добре захищені один від одного.

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

Використання потоків пов'язане не лише з прагненням підвищити продуктивність системи за рахунок паралельних обчислень, але і з метою створення більше читабельних, логічних програм. Введення декількох потоків виконання спрощує програмування. Наприклад, в завданнях типу «письменник-читач» один потік виконує запис у буфер, а інший прочитує записи з нього. Оскільки вони розділяють загальний буфер, не коштує їх робити окремими процесами. Інший приклад використання потоків — управління сигналами, такими як переривання з клавіатури (del або break). Замість обробки сигналу переривання один потік призначається для постійного очікування вступу сигналів. Таким чином, використання потоків може скоротити необхідність в перериваннях призначеного для користувача рівня. У цих прикладах не таке важливе паралельне виконання, наскільки важлива ясність програми.

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

Контрольні запитання

  1. Що таке потік?
  2. Чому створення потоків вимагає від ОС менших накладних витрат?
  3. З чим пов'язано створення потоків?

Література

Їв.ресурс: http://ru.wikipedia.org/wiki/Поток данных





Дата публикования: 2014-11-19; Прочитано: 1027 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!



studopedia.org - Студопедия.Орг - 2014-2024 год. Студопедия не является автором материалов, которые размещены. Но предоставляет возможность бесплатного использования (0.007 с)...