Операційна система OS/2 Warp
OS/2 – сімейство операційних систем компанії IBM. Вперше OS/2 була розроблена як 16-розрядна операційна система для мікропроцесора i80286. За нею були розроблені 32-розрядна версія, а також останнє покоління цього сімейства – OS/2 Warp.
Архітектура
Для операційних систем OS/2 Warp притаманна витісняюча багатозадачність для 16- та 32-розрядних програм OS/2 а також підтримка виконання DOS та Win16 програм в режимі невитісняючої багатозадачності. Ядро операційної системи побудоване на основі мікроядерного підходу. Воно надає базові сервісні функції API (єдиний інтерфейс прикладного програмування, сумісний з рядом операційних систем), що забезпечують підтримку файлової системи, управління пам’яттю, тощо. Ці функції забезпечуються з допомогою системних бібліотек DLL, до яких можна звертатись без затрат часу для переходу між кільцями захисту (рівнями привілей).
Ядро саме є структуроване як процес з потоками, і більшість системних служб реалізовані як механізми IPC-звертань до ядра, а не як прямі системні виклики. Для підтримки операцій вводу/виводу та доступу до зовнішніх пристроїв ядро забезпечує доступ до ресурсів вводу/виводу, таких як пристрої з відображаючою пам’яттю, порти вводу/виводу та канали прямого доступу до пам'яті (Direct Memory Access, DMA), а також можливість відображати преривання на драйвери пристроїв, використовувані в користувацькому просторі. Ядро дозволяє приоритетним програмам отримувати пристрої в своє розпорядження: такими програмами зазвичай є програми, не пов’язані з процесами, типу серверів драйверів пристроїв, працюючих як додатки.
Поверх ядра операційної системи OS/2, як мікроядерної операційної системи розміщується ряд службових додатків, надаючих системі ряд послуг спільного призначення, серед яких є пейджер замовчення, майстер-сервер, який завантажує інші сервери в пам'ять, служба низькорівневих імен, служба захисту, ініціалізації, набір драйверів пристроїв зі зв’язаним кодом підтримки а також бібліотечні підпрограми для стандартного програмного середовища.
Ядро OS/2 та задачно-нейтральні сервіси дозволяють забезпечити емуляцію середовища для виконання програм, написаних для різних операційних систем, зокрема UNIX, і забезпечити їх одночасне виконання.
В операційній системі повністю реалізована підтримка мережевих технологій Інтернет та Інтранет. Наявні засоби побудови однорангових мереж та клієнтські частини для багатьох операційних систем. Зокрема була спеціально розроблена серверна версія OS/2 WarpServer for e-Business (Aurora).
До комплекту операційної системи входить система програмування високого рівня REXX, а також його версії: Visual REXX, об’єктно-орієнтована версія.
Емуляція DOS та процесора 8086 здійснюється в ядрі віртуальних DOS-машин VDM. Віртуальні машини OS/2 Warp підтримують повноцінний динамічний обмін даними та зв’язки OLE 2.0 для DOS та Win16 програм а також DDE з 32-розрядними програмами OS/2. В системі присутня міжплатформова технологія OpenDoc, що дозволяє об’єднувати функції різних прикладних програм, переміщуючи необхідні фрагменти за допомогою механізму drag-and-drop.
Сумісність файлових систем забезпечує диспетчер IFS, що дозволяє працювати будь-якій прикладній програмі з будь-якою файловою системою.
Розподіл оперативної пам’яті
Модуль реалізації механізмів віртуальної пам’яті в ядрі OS/2 підтримує великі посторінкові розкидані адресні простори, складені з об’єктів пам’яті. Кожний об’єкт пам’яті керується пейджером – задачею поза ядром, яка забезпечує резервне збереження сторінок об’єкта пам’яті. Адресні простори керуються шляхом відображення чи розміщення об’єктів пам’яті всередині них. Усі версії OS/2 Warp крім серверної могли надавати програмісту не більше 512 Мбайт адресного простору. Так як це рахувалося недоліком в серверній версії об’єм віртуального адресного простору був збільшений до 2 Гбайт, більше того за бажанням його можна було збільшити до 3 Гбайт.
Ядро керує захистом пам’яті та її розподілом на основі об’єктів пам’яті абстрактним чином. Ядро інтенсивно використовує режим копіювання при записі для надання програмам можливості ділити об’єкти пам’яті, не копіюючи численну кількість сторінок, коли новий адресний простір отримує доступ до об’єкту пам’яті. Нові копії сторінок створюються лише тоді, коли програма в одному з адресних просторів оновлює їх. Коли ядро приймає сторінковий збій, пейджер повідомляється про об’єкт пам’яті, де відбувся збій і визначає яким чином подати чи зберегти дані. Це дозволяє системі встановити різні семантики для об’єктів пам’яті, основуючись на потребах програм, які їх використовують.Ядро керує засобами виконання програм, забезпечуючи одночасне виконання багатьох процесів та потоків виконання. Кожен процес має свій власний адресів простір, чи відображення. Ядро розподіляє об’єкти пам’яті, які відобразив процес на діапазон адресів в середині адресного простору. Процес також виступає блоком розміщення ресурсів та захисту, при цьому процесам надаються права доступу до засобів IPC системи. Для підтримки паралельного виконання декількох програм в межах одного адресного простору ядро відділяє сферу виконання від реально виконуючогося потоку. Таким чином програма може бути завантажена та виконана в декількох різних місцях коду в один і той же час на мультипроцесорі чи паралельній машині. Це може призвести до підвищення швидкодії додатку.