Учебное пособие: Операционные системы "тонких" клиентов
Mach обеспечивает
вытесняющую многозадачность и многопоточность (API нитей в Mach соответствует
спецификациям POSIX). Как и во всех BSD-системах, нить обладает достаточно
полным набором ресурсов для выполнения, таким образом, в Mach нет необходимости
вводить легковесные процессы, как, например, в Open Unix. Все нити одной задачи
разделяют адресное пространство задачи и некоторые ресурсы задачи. Каждая нить
имеет собственный вектор состояния, стек, параметры планирования и
коммуникационные порты. Диспетчеризация нитей ведется по приоритетному
принципу, приоритеты назначаются и изменяются вне микроядра. Нить может быть
сделана "закрепленной" (wired). Такая нить является
привилегированной: она получает управление сразу же при достижении состояния
готовности и ей выделяется память даже при нехватке реальной памяти. Это
позволяет Mach обеспечивать процессы реального времени.
Многопоточность Mach
работает как на одном процессоре, так и на SMP конфигурациях.
Задачи в Mach
взаимодействуют через посылку сообщений и прием ответов. Сообщения передаются
через коммуникационные порты, которые представляют собой почтовые ящики или
очереди сообщений, описанные нами в главе 9 части I. При создании любой нити
для нее создаtтся также собственный порт для приема сообщений от других нитей и
порт для приема исключений. Собственный набор портов создается и для задачи.
Микроядро Darwin является
расширением Mach. Кроме Mach, Darwin содержит следующие основные компоненты:
Инструменты ввода-вывода
- объектно-ориентированный каркас для разработки драйверов устройств, создания
драйверов и обеспечения требуемой для драйверов инфраструктуры.
Файловая система -
основывается на виртуальной файловой системе VFS и обеспечивает возможность
добавлять новые файловые системы. В настоящее время поддерживаются HFS, HFS
Plus, ufs и ISSO 9660 - файловая система для CD.
Расширенные сетевые
средства Network Kernel Extensions (NKE), позволяющие разработчикам как
добавлять поддержку новых протоколов, так и расширять функциональность уже
поддерживаемых.
BSD - оболочка BSD 4.4
вокруг ядра. Реализация BSD в Darwin включает в себя много API POSIX,
обеспечивает модель процессов, базовые политики безопасности и поддержку нитей
для Mac OS X.
Службы ядра
Службы ядра содержат те
системные сервисы, которые не связаны с графическим интерфейсом пользователя.
Основные компоненты этих служб - менеджеры среды Carbon, а также Core
Foundation и Open Transport.
Менеджеры среды Carbon
являются общесистемными и обеспечивают низкоуровневый сервис для всех
прикладных сред. В число этих менеджеров входят, например:
Collection Manager -
обеспечение абстрактных типов для коллекций данных.
Component Manager -
обеспечение для приложения возможности находить во время выполнения различные
программные объекты (компоненты), а также создавать компоненты.
Date, Time, and
Measurement Utilities - работа с датой, временем, географическими местами,
временными зонами и т.п.
File Manager - файловый
API для всех файловых систем.
Folder Manager -
обеспечение работы с папками.
Memory Manager -
выделение памяти в виртуальном адресном пространстве задачи и другие функции
управления виртуальной памятью.
Multiprocessing Services
- средства для создания нитей, управления ими и синхронизации.
Core Foundation - каркас,
который обеспечивает некоторые базовые программные службы, полезные для более
высоких уровней программного обеспечения. Core Foundation использует
объектно-ориентированную парадигму "непрозрачных" типов, "черных
ящиков" для таких программных объектов как числа, строки, массивы,
словари, деревья и т.д. Этот компонент также обеспечивает работу с
подключениями (plug-in) и ряд других сервисов. Некоторые из сервисов,
обеспечиваемых Core Foundation:
String Services - набор
инструментов для манипулирования строками, включая поддержку Unicode.
Bundle Services -
средства организации и поиска различных типов программных ресурсов (исполняемых
кодов, графических и звуковых образов и т.п.).
Plug-in Services -
обеспечение архитектуры подключений.
Collection Services -
высокоуровневые абстракции коллекций.
URL Services - средства
доступа к локальным или удаленным ресурсам через URL.
Notification Services -
механизм обмена сообщениями (уведомлениями) между процессами.
Open Transport - основные
модули пользовательского уровня для обеспечения работы в сети и коммуникаций в
Mac OS X.
Прикладные службы
Главная задача прикладных
служб Mac OS X - обеспечение графического и оконного интерфейса. Главной частью
этих служб является набор модулей Quartz, который состоит из двух частей:
исполнения изображений (собственно Quartz) и базовых графических служб или
сервера окон (Core Graphics Services). Вторая часть представляет собой
библиотеку, обеспечивающую некоторые общие сервисы для других прикладных служб.
В сумме Quartz является
мощной графической системой, которая обеспечивает 2-мерную графику на основе
формата PDF и работу с окнами и составляет основу для формирования изображений
в Mac OS X - как для системных модулей, так и для приложений. Эта система
обладает такими свойствами, как независимость от разрешающей способности,
преобразование координат, сплайны, прозрачность, сглаживание и т.д., что
позволяет обеспечить системе и приложениям весьма изысканный графический
интерфейс.
Mac OS X реализует также
OpenGL - многоплатформенный промышленный стандарт для 3-мерного рисования и
ускорения работы аппаратуры. Использование OpenGL обеспечивает высокую
эффективность в создании анимации в реальном времени для игр и научной или
деловой визуализации.
Система QuickTime
предоставляет средства для эффективной работы с мультимедийной информацией,
такой как видеоролики, изображения, аудиозаписи. Компоненты QuickTime позволяют
приложениям не зависеть в работе с мультимедийной информацией от конкретных
типов устройств и памяти. Каждый компонент обеспечивает какой-то определенный
набор свойств и предоставляет определенный API для использующих его приложений.
Компонент является кодовым ресурсом, который регистрируется Менеджером
Компонентов, и Менеджер Компонентов обеспечивает его доступность в рамках всей
системы. Различные приложения могут использовать компоненты, не вникая в детали
их реализации.
Некоторые прикладные
службы Mac OS X (не показанные на рисунке 8.2) обеспечивают отображение
низкоуровневых объектов (объектов ядра) в объекты API. Менеджеры Carbon,
которые обеспечивают этот сервис, обслуживают все прикладные системы. Ниже мы
рассматриваем некоторые из этих служб.
Carbon Process Manager
(CPM) обеспечивает абстракцию процесса для прикладных сред. В ядре процесс
(задача) является сущностью, состоящей из набора нитей, адресного пространства
и пространства имен портов. CPM на базе задачи ядра создает CPM-процессы,
которые представляют процессы для прикладных сред. В средах Carbon, Cocoa и
Java каждому CPM-процессу соответствует одна задача ядра. Для среды Classic (с
невытесняющей многозадачностью) создается один CPM-процесс для каждого приложения,
но все CPM-процессы приложений отображаются на единственную задачу ядра.
Базовый механизм нитей в
микроядре Mach преобразуется в ядре в многопоточную среду POSIX. Нитям
микроядра соответствуют нити POSIX. Лежащие выше уровни программного обеспечения
создают прикладные модели многопоточных сред, а именно:
Multiprocessing Service -
диспетчеризация нитей с вытеснением в среде Carbon;
Tread Manager -
диспетчеризация нитей без вытеснения в среде Carbon;
NSThread - класс-оболочка
для представления нитей с вытеснением в среде Cocoa;
java.lang.Thread -
класс-оболочка для представления нитей с вытеснением в среде Java.
Во всех моделях, кроме
Tread Manager нити приложения соответствует нить POSIX, в модели Tread Manager
все нити приложения отображаются на одну нить POSIX.
Базовые механизмы в ядре,
обеспечивающие взаимодействие между процессами, - очереди сообщений,
передаваемых через коммуникационные порты. Прикладные службы строят на основе
этого механизма множественные прикладные модели взаимодействия, а именно:
события Apple;
простые уведомления
(simple notification) - передача сообщения в "центр уведомлений",
который распространяет сообщение для всех процессов, которые в нем
"заинтересованы";
передача
неструктурированных данных - быстрый низкоуровневый способ обмена данными между
локальными процессами;
сокеты BSD - основной
механизм Mac OS X для передачи данных в сети;
программные каналы
(pipe);
сигналы (набор сигналов
BSD);
разделяемые области
памяти с управлением доступом к ним через семафоры;
объектно-ориентированные
механизмы "стандартных служб" и "распределенных объектов" в
среде Cocoa;
обмен сообщениями через
порты микроядра Mach.
Прикладные среды
Прикладные среды Mac OS X
состоят из каркасов (framework), библиотек и сервисов, которые обеспечивают
выполнение приложений в той или иной модели API. Mac OS X в настоящее время
поддерживает следующие прикладные среды.
Carbon - развитие API Mac
OS для Mac OS X. Около 70% системных вызовов Carbon имеются и в Mac OS, таким
образом, может быть обеспечена переносимость приложений в обе стороны. Как было
показано выше, Менеджеры Carbon выполняют обслуживание также и других
прикладных сред. В Carbon часть менеджеров Mac OS подверглась
усовершенствованию, часть была заменена, некоторые были добавлены. Наиболее
существенные изменения произошли в управлении памятью (адаптация к более
развитой модели виртуальной памяти и к защите памяти), в интерфейсах
оборудования (менеджеры Mac OS X уже не выполняют низкоуровневые операции на
оборудовании непосредственно), полностью заменены менеджеры печати и управления
событиями.
Страницы: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27 |