Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Поняття операційної системи.docx
Скачиваний:
2
Добавлен:
26.11.2019
Размер:
124.7 Кб
Скачать

Види паралелізму

Можна виділити такі основні види паралелізму:

  • паралелізм багатопроцесорних систем:

  • паралелізм операцій введення-виведення;

  • паралелізм взаємодії з користувачем;

  • паралелізм розподілених систем.

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

Під час виконання операції шзедонпя-виведення _ (наприклад, обміну д'їними із диском^ низькорівневий код доступу до диска і код застосування не можуть виконуватись одночасно. У цьому разі застосуванню треба почекати завершення операції введення-виведення, звільнивши на цей час CPU. Природним вважається зайняти на цей час CPU інструкціями іншої задачі.

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

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

Переваги і недоліки багатопотоковості

Переваги, які можуть бути вирішені за допомогою потоків:

  • реалізуються різні види паралелізму, що дозволяє застосуванню масштабуватися із ростом кількості CPU;

  • підтримка потоків - потрібно менше ресурсів, ніж для підтримки процесів (немає необхідності

  • виділяти для потоків адресний простір);

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

Недоліки використання потоків:

  • розробляти і налагоджувати складніше. Багатопотоковость призводить до зниження надійності застосувань. Потрібні програмісти високої кваліфікації;

  • може спричинити зниження продуктивності застосувань. Це трапляється в однопроцесорних системах (перемикання між потоками відбувається, але кількість виконаних корисних інструкцій залишиться тією ж самою).

Стани процесів і потоків

Для потоку дозволені такі стани:

  • створення (new) — потік перебуває у процесі створення;

  • виконання (ranning) — інструкції потоку виконує CPU;

  • очікування (waiting) — потік очікує деякої події (наприклад, завершення операції введення- виведення); такий стан називають також заблокованим, а потік — припиненим;

  • готовність (ready) — потік очікує, що планувальник перемкне CPU на нього, при цьому він має всі необхідні йому ресурси, крім процесорного часу;

  • Рис. 4. Стани потоку

    завершення (terminated) — потік завершив виконання (якщо при цьому його ресурси не були BiLrr-'чені з системи, він переходить v додатковий стан — стан зомбі).

Перехід потоків між станами очікування і готовності реалізовано на основі планування задач, або планування потоків. Для здійснення переходу потоків між станами готовності та виконання необхідне планування процесорного часу. На основі алгоритмів такого планування визначають, який з готових потоків потрібно

виконувати в конкретний момент, коли потрібно перервати виконання потоку, щоб перемкнутися на інший готовий потік тощо.

Опис процесів і потоків

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

Для керування розподілом ресурсів ОС повинна підтримувати структури даних, які містять інформацію, що описує процеси, потоки і ресурси. До таких структур даних належать:

  • таблиці розподілу ресурсів: таблиці пам'яті, таблиці введення-виведення, таблиці файлів тощо;

  • таблиці процесів і таблиці потоків, де міститься інформація про процеси і потоки, присутні у системі в конкретний момент.

Керуючі блоки процесів і потоків

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

бг.ок ттоку Thread Control Block, ТСВ) відповідає активному потоку, тобто тому, який переб>зає у стані готовності, очікування або виконання. Цей блок може містити таку інформацію:

  • ідентиф ікаційні пан: потоку ( зазвичай його унікальний ідентифікатор);

  • стан процесора потоку, шо складається з користувальнишжіхрегістрф'^ CPU, лічильник іш:ір>кшн. покажчик на стек:

  • інформацію птя планування потоків.

Таттипя п:т::-ав — пе зв'язний список або масив керуючих блоків потоку. Вона розташована в захищеній області пам'яті ОС.

Керуючий блок процеа (Process Control Block, РСВ) відповідає процесу, що присутній у системі. Такий блок може містити:

  • ідентифікаційні дані процесу (унікальний ідентифікатор, інформацію про інші процеси, пов'язані з даним);

  • інформацію про потоки, які виконуються в адресному просторі процесу (наприклад, покажчики на їхні керуючі блоки):

  • інформацію, на основі якої можна визначити права процесу на використання різних ресурсів наприклад, ідентифікатор користуъача, який створив процес);

  • інформацію з розподілу адресного простору процесу;

  • інформацію про ресурси введення-виведення та файли, які використовує процес. Таблицю процесів організовують аналогічно до таблиці потоків.

Образи процесу і потоку Сукупність інформації, що відображає процес у пам'яті, називають образом процесу (process image), а всю інформацію про потік — образом потоку (thread image).

До образу процесу належать: До образу потоку належать:

  • керуючий блок процесу; • керуючий блок потоку;

  • програмний код користувача; • стек ядра (стек потоку, який використовується

  • дані користувача (глобальні дані програми, під час виконання коду потоку в режимі ядра); загальні для всіх потоків); • + стек користувача (стек потоку, доступний у

  • інформація образів потоків процесу. режимі користувача.).