1.3. Анатомія процесу
А
дресний
простір процесу поділяється на три
логічних розділи: текстовий
(для коду програми), інформаційний
(для даних програми) і стеків (для
стеків програми). Логічна структура
процесу показана на рис. 1. Текстовий
розділ (розміщений в нижній частині
адресного простору) містить інструкції
що будуть виконуватися, і які
називаються програмним кодом. Розділ
даних (розміщений над текстовим
розділом) містить ініційовані глобальні,
зовнішні і стати-
чні змінні процесу. Розділ стеків містить локально створювані змінні і параметри, які передаються функціям. Оскільки процес може викликати як системні функції, так і функції, визначені користувачем, в стековому розділі підтримуються два стеки: стек користувача і стек ядра. При виклику функції створюється стеків фрейм функції, якій розміщується в стек користувача або стек ядра в залежності від того, в якому режимі перебуває процес в даний час: в користувацький або привілейований (режим ядра). Стеків розділ має тенденцію рости в напрямі розділу даних. При виході з функції її стеків фрейм виймається з стеку. Розділи коду, даних і стеків, а також блок керування процесом створюють частину того, з чого складається образ процесу (process image).
Адресний простір процесу віртуальний. Застосування віртуальної пам’яті дозволяє відокремити адреси, що використовуються в біжучому процесі, від адрес, реально доступних у внутрішній пам’яті. Тим самим значно збільшується задіяний адресний простір пам’яті у порівнянні з реально доступними адресами. Розділи віртуального адресного простору процесу являють собою суміжні блоки пам’яті. Кожний такий розділ і фізичний адресний простір розділені на ділянки пам’яті, які називаються сторінками. У кожної сторінки є унікальний номер сторінкового блоку (page frame number). В якості індексу для входу в таблиці сторінкових блоків (page frame table) використовують номер віртуального сторінкового блоку. Кожен елемент таблиці сторінкових блоків містить номер фізичного сторінкового блоку, що дозволяє встановити відповідність між віртуальними і фізичними сторінковими блоками. Така відповідність показана на рис. 2. Як бачите, віртуальний адресний простір неперервний, але відповідність яка встановлюється між фізичним сторінками не є впорядкованою. Іншими словами, при послідовних віртуальних адресах відповідні їм фізичні сторінки не будуть послідовними.
Не дивлячись на те що віртуальний адресний простір кожного процесу захищено, тобто прийнято заходи по запобіганню доступу до нього зі сторони іншого процесу, текстовий розділ процесу може спільно використовуватися декількома процесами. На рис. 2 також показано, як два процеси можуть поділяти один і той же програмний код. При цьому в елементах таблиць сторінкових блоків обох процесів зберігається один і той же номер фізичного сторінкового блоку. Як показано на рис. 2, віртуальний сторінковий блок з номером 0 процесу А відповідає фізичному сторінковому блоку з номером 5, що також справедливо і для віртуального сторінкового блоку з номером 2 процесу В.
Щ
об
операційна система могла керувати всіма
процесами, які зберігаються у внутрішній
пам’яті, вона створює і підтримує
таблиці процесів (process table). В дійсності
операційна система містить окремі
таблиці для всіх об’єктів, якими вона
керує. Необхідно розуміти, що операційна
система керує не тільки процесами, але
і всіма ресурсами комп’ютера, тобто
пристроями вводу-виводу, пам’яттю
і файлами. Частина пам’яті, пристроїв
і файлів керуються від імені користувацьких
процесів. Ця інформація відображається
в БУП-блоках як ресурси, виділені
процесу. Таблиця процесів повинна мати
відповідну структуру для кожного образу
процесу в пам’яті. Кожна така структура
містить ідентифікатори (id) самого
процесу і батьківського процесу,
ідентифікатори реального і ефективного
користувачів, ідентифікатори груп,
список вивішених сигналів, місцезнаходження
текстового і стекового розділів, а також
біжучий стан процесу. Якщо операційній
системі необхідний доступ до певного
ресурсу, в таблиці процесів розшукується
інформація про нього, а потім в пам’яті
розміщується його образ (рис. 3).
