Что такое ядро операционной системы

Интересное

Гибридное ядро

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

Ключевой принцип архитектуры ядра windows

Это принцип подсистем окружения (или персоналий).

Программы пользователя НЕ используют сервисы ОС напрямую. Даже когда мы запускаем любое приложение под Windows напрямую, оно никогда не использует ядро напрямую, только через подсистему окружения Windows API, нет вызова ядра напрямую.

Библиотека подсистемы неким образом транслирует документированную API функцию в вызов недокументированной функции ОС.

За счет этого функции ОС можно менять под «сегодняшний» день, при этом оставлять обратную совместимость с теми приложениями, которые уже разработаны под ОС, за счет того, что есть документированное API, которое обязано работать.

Вначале было три подсистемы окружения: Windows, OS/2, POSIX

В Windows 2000 исчезла OS/2

В Windows XP исчезла POSIX

Компоненты системы ядра

Kernel – самые низкоуровневые функции ОС: планирование потоков, обработка прерываний, мультипроцессорная синхронизация.

Kernel предоставляет низкоуровневые примитивы, на которые Executiveреализует высокоуровневые конструкции

HAL – прослойка между аппаратным обеспечением и ядром.

Executive – стоит выше и реализует основные сервисы ОС: управление памятью, процессами, потоками, безопасность, ввод/вывод, межпроцессорное взаимодействие.

Драйвера устройств – реальные устройства – работа с аппаратурой, виртуальные устройства – драйвера (например сетевого стэка).

Другие модули ядра

  • Реализуют функции графического интерфейса
  • Реализуют оконную подсистему

Менеджер объектов

Это часть execute, сокращенное название OB(Object Manager) – эти же самые названия используются в языке СИ.

— Управляет ресурсами

  • Физ. файлы и директории;
  • Элементы реестра;
  • Процессы (поток).

Каждый ресурс предоставляется объектом

Операции над объектами:

  • Создание/удаление;
  • Защита доступа;
  • Подсчет ссылок (Reference counting).

Микроядро

В классическом понимании ядро Windows далеко не микроядро, так как нет защиты между компонентами ОС, они не работают в изолированных адресных пространствах, не работают в других режимах, а только в режиме ядра.

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

В Windows используется Гибридное ядро, так как обладает некоторыми характеристиками микроядра:

  • Подсистемы(персоналии) работают в собственных адресных пространствах
  • Компоненты ядра архитектурно изолированы, т.е.  менеджер памяти, в его внутреннюю структуру из вне никто не вторгается, все пользуются тем API, которое предоставляет ММ. Тоже самое касается управлением процессами, потоками, конфигурациями, они архитектурно изолированы.

На рисунке выше «Упрощенная схема ядра» Kernel по сути и есть это микроядро, которое можно было бы Executive вынести в режим пользователя и разбить его на отдельные процессы. В ядре осталась бы только часть и это было бы классическое микроядро.

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

Поэтому В Windows ядро Гибридное и достаточно интересно организовано.

Переносимость (портируемость) — это ключевая особенность ОС Windows.

Код ядра написан на языке высокого уровня (С/С ) — переносим, на Ассемблере кода нет.

В ядре и HAL есть небольшие включения на Ассемблере внутри слоя абстракции аппаратного обеспечения.

Последние 20лет ПК работают на х86 платформе, поэтому вопрос о переносимости перед разработчиками ОС не стоял.

Обработка прерываний

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

Объектно-ориентированный подход

Ключевой принцип при проектировании Windows.

Любой ресурс системы представляется как некий объект. Ресурс – это любой ресурс который должен разделяться и к которому может быть доступ от нескольких процессов. Если ресурс используется в рамках одного процесса, то выделять его как объект не имеет смысла.

В основе Windows NT – объекты, унифицированная форма, имеющая:

  • Именование
  • Совместное использование
  • Учет

Зачем все так сделано?

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

Любой разделяемый ресурс системы – это объект.

Внутри структуры самого execute – не объекты.

Подсистема windows

Состоит из:

CSRSS.EXE – процесс подсистемы окружения Windows, который управляет консольными приложениями и реализует вспомогательные функции

Win32K.SYS – драйвер режима ядра, реализуется:

  • Оконный менеджер;
  • Обработка ввода с клавиатуры/мыши;
  • Обмен сообщениями между окнами;
  • Графическая подсистема (GDI).

Подсчет ссылок (reference counting)

При создании или открытии объекта создается ссылка на объект, называемая хэндлом. 

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

По иерархии объектов существуют два класса объектов:

  1. executive – используются пользовательскими приложениями и компонентами самого executive (исполнительной подсистемы), их большинство, они общие.
  2. Kernel – представляют базовые ресурсы – физические устройства, примитивы синхронизации… Могут использоваться только в режиме ядра. Используются только ядром, т.е. с ними работает только ядро и больше никто.

Типы объектов windows

Класс Executive

  • Process – процесс (множество потоков, виртуальное адр.пространство и управляющая информация)
  • Thread — поток
  • Job – множество процессов
  • File – открытый файл или устройство ввода/вывода
  • File mapping object – область памяти отображаемая в файл
  • Access token – права доступа
  • Event — событие
  • Semaphore/mutex – семафор/мьютекс (высокоуровневые примитивы синхронизации)
  • Timer — таймер
  • Key – ключ реестра
  • Desktop – логический дисплей (раб.стол)
  • Clipboard – временный репозиторий для других объектов
  • Windows Station – множество объектов типа desktop/clipboard
  • Symbolic link – символьная ссылка на другие объекты
  • Можно создавать свой тип объекта.

Типы ядер в операционной системе

Как выше было сказано ядро – это программа, которая является основным компонентом операционной системы. Теперь давайте рассмотрим типы ядер.

Ядро подразделяется на два основных типа:

  • монолитное ядро
  • Микро-Ядра

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

Управление памятью

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

Управление процессами

Создание, выполнение и завершение процессов выполняются внутри системы всякий раз, когда система находится во включенном состоянии (режиме ON). Процесс содержит всю информацию о задаче, которую необходимо выполнить. Таким образом, для выполнения любой задачи внутри системы создается процесс. В то же время существует множество процессов, которые находятся в активном состоянии внутри системы.

Управление устройствами

Ядро также управляет всеми различными устройствами, подключенными к системе, такими как устройства ввода и вывода и т. д.

Операции ввода/вывода

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

Оцените статью
Obzorka24.ru