Mac OS X: сила
двох ядер
Ядро Mac OS X скорочено позначається як XNU - X is Not
Unix. Ця абревіатура відповідає дійсності, тому що ядро операційної системи
Apple скомбіновано з двох джерел, і лише його частина має відношення до Unix
(див. рис.). Останнє компанія взяла з проекту Mach - класичний приклад
мікроядра (див. рис.). При цьому Mach використовується тільки для передачі
повідомлень (message passing), тобто ефективної комунікації між окремими
частинами ядра. Крім Mach XNU містить код проекту FreeBSD, який заснований на
Unix. Ця частина відповідає за взаємодію з користувачем, обробку сигналів і
сумісність зі стандартами POSIX. Остання гарантує, що більшість програм для
Unix будуть функціонувати і в Mac OS X.
Важливим компонентом Mach є система введення-виведення
(I / O Kit). Саме тут полягає істотна відмінність від Windows і Linux: I / O
Kit являє собою додатковий шар абстракцій між обладнанням і рештою системи. Тут
знаходяться стандартні моделі драйверів, на основі яких розробники пишуть
спеціалізовані драйвери. Це сприяє стабільності і підвищує обчислювальну
потужність.
Крім служб ядра Mac OS X дозволяє також
використовувати розширення ядра. Система завантажує їх динамічно по мірі
необхідності. Часто в таких випадках говорять про гібридний ядрі, однак експерти
відносять ядро Mac OS X скоріше до монолітним через особливості його будови.
Процеси: цифровий
підпис як засіб захисту
Важливим завданням ядра є управління процесами. Під
цим мається на увазі не тільки розстановка пріоритетів, але й забезпечення безпеки.
У класичному варіанті в Windows процеси запускаються і управляються через
інтерфейс Win32 API. У ядрі цим займається виконавча система NTOS. Доступ до
об'єктів ядра, що відносяться до про цес забезпечують так звані дескриптори
(handles). Процеси в Windows можуть запускати нові процеси. Так, Word (процес
1) може відкрити новий документ (процес 2). У класичній моделі Windows Word має
право також стерти або змінити новий документ. Іншими словами, за загальним
правилом процес може розпоряджатися породженими собою ж процесами.
Проте в стандартних процесах є одна лазівка, що
дозволяє обійти структуру доступу. Це можливо при наявності повноважень на
налагодження програм - у даному випадку адміністратору надається повний доступ
до процесу. Так він може заглянути в адресний простір процесу, рахувати і
змінювати використовуються в процесі дані. Зловмисникам це дає можливість
додати в процес нові потоки.
У зв'язку з цим Vista переглянула процесну модель
спеціально для мультимедійних файлів і ввела новий тип процесів - захищені.
Можливості маніпулювання ними істотно обмежені: хоч ядро і надає діагностичну
інформацію про такі процеси, але безпосередній доступ закритий навіть для
адміністраторів.
Відповідно до цього методу, кодек для перегляду
фільму, наприклад, може працювати як захищений процес тільки за однієї умови -
його повний виконуваний код повинен бути підписаний цифровим підписом.
Захищені процеси - показовий приклад того, як
Microsoft пристосовує застарілу архітектуру Windows до сучасних проблем.
У Linux і Mac OS X процесна модель схожа з моделлю
Windows: процеси-«батьки» контролюють породжених ними «дітей». Однак захищених
процесів, таких як в Vista, немає. Це не дивно: Microsoft використовує цю
технологію в першу чергу для цифрового керування правами (Digital Rights
Management). Таким чином, при наявності адміністраторських (root) прав в Linux
і Mac OS X можна робити все, навіть аналізувати процеси і маніпулювати ними.
|