Современная операционная система большая и сложная, и если она должна функционировать должным образом и легко модифицироваться, она должна быть спроектирована очень тщательно.

Обычный подход заключается в разделении задачи на небольшие компоненты или модули, а не в одной монолитной системе.

Каждый из этих модулей должен иметь четко определенные входы, выходы и функции.

Ниже приведены различные структуры операционной системы.

  1. Простая структура
  2. Многоуровневый подход
  3. Микроядра
  4. Модули
  5. Гибридные системы

Простая структура

Многие операционные системы не имеют четко определенной структуры.

Такие системы начинались как маленькие, простые, а затем выросли за пределы своего первоначального масштаба.

Два примера простой структурированной операционной системы.

  • MS-DOS
  • UNIX

MS-DOS

Первоначально MS-DOS была разработана и реализована несколькими людьми, которые и не подозревали, что она станет настолько популярной.

Он был написан, чтобы обеспечить максимальную функциональность в наименьшем пространстве, поэтому он не был тщательно разделен на модули.

В MS-DOS интерфейсы и уровни функциональности разделены нечетко.

Например, прикладные программы могут получить доступ к базовым процедурам ввода-вывода для записи непосредственно на дисплей и дисковые накопители.

Такая свобода делает MS-DOS уязвимой для ошибочных (или вредоносных) программ, вызывая сбои всей системы при сбое пользовательских программ.

Intel 8088, для которого он был написан, не обеспечивает двойного режима и аппаратной защиты, у разработчиков MS-DOS не было другого выбора, кроме как оставить базовое оборудование доступным.

UNIX

Еще одним примером ограниченного структурирования является исходная операционная система UNIX.

Как и MS-DOS, UNIX изначально была ограничена аппаратной функциональностью.

Он состоит из двух отдельных частей: ядра и системных программ.

Ядро далее разделено на ряд интерфейсов и драйверов устройств, которые добавлялись и расширялись на протяжении многих лет по мере развития UNIX.

Ядро обеспечивает файловую систему, планирование ЦП, управление памятью и другие функции операционной системы посредством системных вызовов.

В сумме это огромное количество функций, которые нужно объединить на одном уровне. Эту монолитную структуру было сложно реализовать и поддерживать.

В системном вызове или обмене данными внутри ядра очень мало накладных расходов.

Многоуровневый подход

Систему можно сделать модульной разными способами. Одним из методов является многоуровневый подход, при котором операционная система разбивается на несколько уровней.

Нижний уровень (уровень 0) — это оборудование; самый высокий уровень (уровень N) — это пользовательский интерфейс.

Основным преимуществом многоуровневого подхода является простота построения и отладки.

Уровни выбираются таким образом, чтобы каждый из них использовал функции и услуги только более низких уровней.

Если во время отладки определенного уровня обнаруживается ошибка, она должна быть на этом уровне, потому что слои ниже него уже отлажены.

Последняя проблема с многоуровневыми реализациями заключается в том, что они, как правило, менее эффективны, чем другие типы.

Например, когда пользовательская программа выполняет операцию ввода-вывода, она выполняет системный вызов, перехваченный на уровне ввода-вывода, который вызывает уровень управления памятью, который, в свою очередь, вызывает уровень планирования ЦП, который затем перешел на аппаратную часть.

Каждый уровень добавляет нагрузку на системный вызов. Конечным результатом является системный вызов, который занимает больше времени, чем в неуровневой системе.

Микроядра

Этот метод структурирует операционную систему, удаляя все несущественные компоненты из ядра и реализуя их как системные и пользовательские программы. В результате получается меньшее ядро.

Микроядра обеспечивают минимальное управление процессами и памятью.

Основная функция микроядра — обеспечение связи между клиентской программой и различными службами, которые также работают в пользовательском пространстве.

Получившуюся операционную систему легче перенести с одного аппаратного обеспечения на другое.

Микроядро также обеспечивает большую безопасность и надежность, поскольку большинство служб выполняются от имени пользователя, а не от ядра.

В случае сбоя службы остальная часть операционной системы остается нетронутой.

Модули

Наилучшая современная методология проектирования операционной системы предполагает использование загружаемых модулей ядра.

Здесь ядро ​​имеет набор основных компонентов и ссылок на дополнительные службы через модули либо во время загрузки, либо во время выполнения.

Идея этой схемы заключается в том, что ядро ​​предоставляет основные службы, в то время как другие службы реализуются динамически по мере работы ядра.

Динамическое связывание сервисов предпочтительнее, чем добавление новых функций непосредственно в ядро, что потребует перекомпиляции ядра каждый раз, когда вносятся изменения.

Общий результат напоминает многоуровневую систему, в которой каждый раздел ядра имеет определенные защищенные интерфейсы; но она более гибкая, чем многоуровневая система, потому что любой модуль может вызывать любой другой модуль. Этот подход также похож на подход микроядра в том, что основной модуль имеет только основные функции и знания о том, как загружать и взаимодействовать с другими модулями; но это более эффективно, потому что модулям не нужно вызывать передачу сообщений для связи.

Структура операционной системы Solaris, показанная на диаграмме, организована вокруг основного ядра с семью типами загружаемых модулей ядра:

  • Расписание занятий
  • Файловые системы
  • Загружаемые системные вызовы
  • Исполняемые форматы
  • ПОТОКИ модули
  • Разное
  • Драйверы устройств и шин

Гибридные системы

На практике очень немногие операционные системы используют единую строго определенную структуру. Вместо этого они объединяют различные структуры, что приводит к гибридным системам, решающим проблемы производительности, безопасности и удобства использования.

Хорошо известны три гибридные системы: операционная система Apple Mac OS X и две наиболее известные мобильные операционные системы — iOS и Android.