Операционная система Mach¶
Mach — это микроядерная операционная система реального времени, разработанная в Университете Карнеги — Меллон (США) в рамках проекта по созданию модульной и переносимой операционной системы. Mach была спроектирована как замена ядра BSD Unix, обеспечивающая поддержку многопроцессорных систем, распределённых вычислений и механизмов межпроцессного взаимодействия (IPC) на основе сообщений. Её архитектура легла в основу многих современных операционных систем, включая XNU (ядро macOS и iOS), GNU Hurd и некоторые версии NeXTSTEP.
¶История
Проект Mach начался в 1985 году в Университете Карнеги — Меллон под руководством Ричарда Рашида и Авива Теваняна. Основной целью было создание операционной системы, способной эффективно работать на многопроцессорных машинах, поддерживать распределённые вычисления и быть легко переносимой на разные аппаратные платформы. В отличие от монолитных ядер, таких как BSD Unix, Mach использовала микроядерную архитектуру, где минимальное ядро отвечало только за управление задачами, памятью, IPC и обработку прерываний, а все остальные службы (файловые системы, сетевые протоколы, драйверы) работали в пространстве пользователя.
Первая версия Mach (Mach 1.0) была выпущена в 1986 году и базировалась на коде BSD 4.2. В 1987 году вышла Mach 2.0, которая уже включала поддержку многопроцессорности и улучшенный IPC. В 1990 году была представлена Mach 3.0 — наиболее известная версия, которая стала полностью микроядерной: все компоненты BSD были вынесены из ядра в отдельные процессы (серверы). Эта версия легла в основу многих коммерческих и исследовательских проектов.
В 1994 году разработка Mach была передана Open Software Foundation (OSF), которая выпустила версию OSF Mach 3.0. Позднее, в 1996 году, проект был заморожен, но его идеи и код продолжали использоваться в других системах. В 2000-х годах развитие Mach продолжилось в рамках проекта GNU Mach (часть GNU Hurd) и в ядре XNU от Apple.
¶Архитектура
¶Микроядро
Mach является микроядерной операционной системой, что означает, что её ядро содержит лишь минимальный набор функций, необходимых для работы системы. В состав микроядра Mach входят:
- Управление задачами и потоками — создание, уничтожение, планирование и синхронизация потоков выполнения.
- Управление памятью — виртуальная память, отображение страниц, защита памяти.
- Межпроцессное взаимодействие (IPC) — передача сообщений между процессами с использованием портов.
- Обработка прерываний — минимальная обработка аппаратных прерываний.
Все остальные службы, такие как файловые системы, сетевые протоколы, драйверы устройств и системные вызовы, реализованы в виде отдельных процессов (серверов), работающих в пространстве пользователя. Это повышает модульность и надёжность системы, так как сбой в одном сервере не приводит к краху всего ядра.
¶Межпроцессное взаимодействие (IPC)
Основным механизмом взаимодействия между процессами в Mach является передача сообщений через порты. Каждый процесс имеет набор портов, через которые он может отправлять и получать сообщения. Порты могут быть как локальными, так и сетевыми, что позволяет организовывать распределённые вычисления. IPC в Mach поддерживает:
- Синхронную и асинхронную передачу — процесс может ждать ответа или продолжать работу.
- Передачу данных — сообщения могут содержать как простые данные, так и указатели на память, которые автоматически отображаются в адресное пространство получателя.
- Права доступа — порты могут быть защищены, что позволяет контролировать, какие процессы могут отправлять или получать сообщения.
¶Управление памятью
Mach использует модель виртуальной памяти, основанную на страницах. Каждый процесс имеет своё адресное пространство, которое может быть отображено на физическую память или на файлы. Особенностью Mach является поддержка:
- Разделяемой памяти — несколько процессов могут отображать одну и ту же физическую память в свои адресные пространства.
- Копирования при записи (copy-on-write) — при копировании данных реальное копирование происходит только при попытке записи, что экономит память.
- Отображения файлов в память (memory-mapped files) — файлы могут быть напрямую отображены в адресное пространство процесса, что ускоряет доступ к данным.
¶Потоки и задачи
В Mach различаются два понятия: задача (task) — это контейнер для ресурсов (адресное пространство, порты, потоки), и поток (thread) — это единица выполнения внутри задачи. Задача может содержать несколько потоков, которые разделяют её адресное пространство и ресурсы. Планирование потоков осуществляется ядром на основе приоритетов.
¶Версии и реализации
¶Mach 3.0
Mach 3.0, выпущенная в 1990 году, стала эталонной микроядерной реализацией. Она была полностью перенесена на архитектуры x86, MIPS, SPARC, PowerPC и другие. На её основе были созданы несколько исследовательских и коммерческих систем:
- OSF Mach — версия, разработанная Open Software Foundation, использовалась в коммерческих продуктах, таких как OSF/1.
- GNU Mach — свободная реализация, используемая в проекте GNU Hurd.
- XNU — ядро, используемое в macOS и iOS, основанное на Mach 3.0 и FreeBSD.
¶XNU (Apple)
XNU (X is Not Unix) — это гибридное ядро, разработанное Apple. Оно использует микроядро Mach для управления задачами, памятью и IPC, а также компоненты из FreeBSD для файловых систем, сетевых протоколов и системных вызовов. XNU также включает драйверы устройств, написанные на C++ (I/O Kit). Это ядро используется во всех операционных системах Apple: macOS, iOS, tvOS, watchOS и visionOS.
¶GNU Hurd
GNU Hurd — это свободная операционная система, основанная на микроядре GNU Mach. В Hurd все службы (файловые системы, сетевые протоколы, драйверы) реализованы в виде отдельных серверов, работающих в пространстве пользователя. Проект находится в стадии разработки с 1990-х годов и до сих пор не достиг стабильного релиза.
¶Другие реализации
- Lites — эмулятор Unix, работающий поверх Mach.
- MkLinux — версия Linux, портированная на микроядро Mach.
- Spring — исследовательская операционная система от Sun Microsystems, использовавшая идеи Mach.
¶Применение
Mach оказала значительное влияние на развитие операционных систем. Её основные применения:
- Исследования — Mach использовалась в университетах и исследовательских центрах для изучения микроядерных архитектур, распределённых систем и многопроцессорности.
- Коммерческие системы — ядро XNU от Apple является основой для macOS и iOS, которые используются миллиардами устройств по всему миру.
- Встраиваемые системы — некоторые версии Mach использовались в системах реального времени и встраиваемых устройствах.
- Образование — Mach часто изучается в курсах по операционным системам как пример микроядерной архитектуры.
¶Критика
Микроядерная архитектура Mach подвергалась критике по нескольким причинам:
- Производительность — из-за частого переключения между процессами и передачи сообщений через IPC, микроядерные системы могут быть медленнее монолитных ядер. В ранних версиях Mach это было особенно заметно.
- Сложность — реализация всех служб в пространстве пользователя требует сложной синхронизации и управления ресурсами.
- Фрагментация — из-за модульности системы, разные серверы могут иметь разные версии и интерфейсы, что усложняет разработку и отладку.
Тем не менее, идеи Mach, такие как IPC на основе сообщений, виртуальная память с копированием при записи и поддержка многопроцессорности, оказали значительное влияние на последующие операционные системы, включая Windows NT, Linux (частично) и Solaris.
¶Интересные факты
- Mach была названа в честь числа Маха (отношение скорости потока к скорости звука), что символизирует скорость и эффективность.
- Разработчики Mach получили премию ACM Software System Award в 1999 году за вклад в развитие операционных систем.
- Ядро XNU от Apple содержит около 10% кода, унаследованного от Mach, остальное — из FreeBSD и собственные разработки.
¶Источники
- Richard Rashid, Avie Tevanian. "Mach: A New Kernel Foundation for UNIX Development" (1986).
- Avie Tevanian, Richard Rashid. "Mach: A System Software Kernel" (1987).
- Open Software Foundation. "OSF Mach 3.0 Documentation" (1994).
- Apple Inc. "XNU Kernel Source Code" (2000–2023).
- GNU Project. "GNU Mach Reference Manual" (1996–2023).
BFOmetr — база данных и аналитика по компаниям России.
На главную BFOmetr →


