
- •Керування процесами й потоками.
- •Керування пам'яттю
- •Керування введенням-виведенням
- •Керування файлами та файлові системи
- •Мережка підтримка
- •Безпека даних
- •Інтерфейс користувача
- •Механізми і політика
- •Ядро системи. Привілейований режим і режим користувача
- •2. Реалізація архітектури операційних систем
- •IV) Концепція віртуальних машин
- •1. Засоби апаратної підтримки операційних систем
- •2. Засоби перемикання задач, захист пам'яті, системний таймер.
- •Взаємодія ос і виконуваного програмного коду
- •Види паралелізму
- •Переваги і недоліки багатопотоковості
Види паралелізму
Можна виділити такі основні види паралелізму:
паралелізм багатопроцесорних систем:
паралелізм операцій введення-виведення;
паралелізм взаємодії з користувачем;
паралелізм розподілених систем.
Перший з них є справжнім паралелізмом, тому що у багатопроцесорних системах інструкції виконують декілька процесорів одночасно.
Під час виконання операції шзедонпя-виведення _ (наприклад, обміну д'їними із диском^ низькорівневий код доступу до диска і код застосування не можуть виконуватись одночасно. У цьому разі застосуванню треба почекати завершення операції введення-виведення, звільнивши на цей час CPU. Природним вважається зайняти на цей час CPU інструкціями іншої задачі.
Щоб розв'язати паралелізм взаємодії з користувачем можна виділити окремі потоки для безпосередньої взаємодії із користувачем (наприклад, один потік може очікувати введення з клавіатури, інший — від миші, додаткові потоки — відображати інтерфейс користувача). Основні задачі застосування (розрахунки, взаємодія з базою даних тощо) у цей час виконуватимуть інші потоки.
Паралелізм розподілених систем можна розглянути на прикладі серверного застосування, яке очікує запити від клієнтів і виконує дії у відповідь на запит. Якщо тривалість обробки запиту перевищує інтервал між запитами, сервер буде змушений поміщати запити в чергу, внаслідок чого знижується продуктивність. При цьому використання потоків дає можливість організувати паралельне обслуговування запитів.
Переваги і недоліки багатопотоковості
Переваги, які можуть бути вирішені за допомогою потоків:
реалізуються різні види паралелізму, що дозволяє застосуванню масштабуватися із ростом кількості CPU;
підтримка потоків - потрібно менше ресурсів, ніж для підтримки процесів (немає необхідності
виділяти для потоків адресний простір);
для обміну даними між потоками може бути використана спільна пам'ять (адресний простір їхнього процесу). Це ефективніше, ніж застосовувати засоби міжпроцесової взаємодії.
Недоліки використання потоків:
розробляти і налагоджувати складніше. Багатопотоковость призводить до зниження надійності застосувань. Потрібні програмісти високої кваліфікації;
може спричинити зниження продуктивності застосувань. Це трапляється в однопроцесорних системах (перемикання між потоками відбувається, але кількість виконаних корисних інструкцій залишиться тією ж самою).
Стани процесів і потоків
Для потоку дозволені такі стани:
створення (new) — потік перебуває у процесі створення;
виконання (ranning) — інструкції потоку виконує CPU;
очікування (waiting) — потік очікує деякої події (наприклад, завершення операції введення- виведення); такий стан називають також заблокованим, а потік — припиненим;
готовність (ready) — потік очікує, що планувальник перемкне CPU на нього, при цьому він має всі необхідні йому ресурси, крім процесорного часу;
Рис. 4. Стани потоку
завершення (terminated) — потік завершив виконання (якщо при цьому його ресурси не були BiLrr-'чені з системи, він переходить v додатковий стан — стан зомбі).
Перехід потоків між станами очікування і готовності реалізовано на основі планування задач, або планування потоків. Для здійснення переходу потоків між станами готовності та виконання необхідне планування процесорного часу. На основі алгоритмів такого планування визначають, який з готових потоків потрібно
виконувати в конкретний момент, коли потрібно перервати виконання потоку, щоб перемкнутися на інший готовий потік тощо.
Опис процесів і потоків
Основне завдання ОС - розподіл ресурсів між процесами і потоками. Такими ресурсами є насамперед процесорний час, засоби введення-виведення, оперативна пам'ять (їх розподіляють між процесами).
Для керування розподілом ресурсів ОС повинна підтримувати структури даних, які містять інформацію, що описує процеси, потоки і ресурси. До таких структур даних належать:
таблиці розподілу ресурсів: таблиці пам'яті, таблиці введення-виведення, таблиці файлів тощо;
таблиці процесів і таблиці потоків, де міститься інформація про процеси і потоки, присутні у системі в конкретний момент.
Керуючі блоки процесів і потоків
Інформацію про процеси і потоки в системі зберігають у спеціальних структурах даних, які називають кер\точими блоками процесів і керуючими блоками потоків. Ці структури дуже важливі для гоботи ОС. оскільки на підставі їхньої інформації система здійснює керування процесами і потоками.
бг.ок ттоку Thread Control Block, ТСВ) відповідає активному потоку, тобто тому, який переб>зає у стані готовності, очікування або виконання. Цей блок може містити таку інформацію:
ідентиф ікаційні пан: потоку ( зазвичай його унікальний ідентифікатор);
стан процесора потоку, шо складається з користувальнишжіхрегістрф'^ CPU, лічильник іш:ір>кшн. покажчик на стек:
інформацію птя планування потоків.
Таттипя п:т::-ав — пе зв'язний список або масив керуючих блоків потоку. Вона розташована в захищеній області пам'яті ОС.
Керуючий блок процеа (Process Control Block, РСВ) відповідає процесу, що присутній у системі. Такий блок може містити:
ідентифікаційні дані процесу (унікальний ідентифікатор, інформацію про інші процеси, пов'язані з даним);
інформацію про потоки, які виконуються в адресному просторі процесу (наприклад, покажчики на їхні керуючі блоки):
інформацію, на основі якої можна визначити права процесу на використання різних ресурсів наприклад, ідентифікатор користуъача, який створив процес);
інформацію з розподілу адресного простору процесу;
інформацію про ресурси введення-виведення та файли, які використовує процес. Таблицю процесів організовують аналогічно до таблиці потоків.
Образи процесу і потоку Сукупність інформації, що відображає процес у пам'яті, називають образом процесу (process image), а всю інформацію про потік — образом потоку (thread image).
До образу процесу належать: До образу потоку належать:
керуючий блок процесу; • керуючий блок потоку;
програмний код користувача; • стек ядра (стек потоку, який використовується
дані користувача (глобальні дані програми, під час виконання коду потоку в режимі ядра); загальні для всіх потоків); • + стек користувача (стек потоку, доступний у
інформація образів потоків процесу. режимі користувача.).