Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

Разработка операционных систем - для начинающих и не только!


Информационный Канал Subscribe.Ru

Разработка операционных систем

Выпуск 15 от 2003-06-16

Сегодня в номере:

Intro

Один вопрос мне задают столь часто, что придется ответить на него в интре :)

Q: где взять под Windows GCC, ld и objcopy?
A: все эти программы есть в комплекте MinGW (Minimalist GNU for Win32), который находится по адресу:
http://mingw.sourceforge.net/. Для самых ленивых привожу ссылку на то, что именно нужно качать: http://prdownloads.sf.net/mingw/MinGW-2.0.0-3.exe?download

Различные типы архитектур ядра ОС

Как вы помните, в прошлом выпуске мы вкратце разобрали то, каким образом может реализовываться многозадачность. Более подробно мы поговорим об этом, когда будем изучать практическую реализацию многозадачности на процессорах архитектуры IA-32 (x86), а сейчас мы рассмотрим один из самых главных аспектов разработки ОС, который иногда ошибочно понимается (или вовсе не понимается) юными осеписателями :).

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

Самое первое, что приходит в голову - "слоеная" организация ОС. В гипотетической системе это может выглядеть, например, вот так (если вы вдруг случайно забыли, что такое уровень супервизора и уровень пользователя - напоминаю, что об этом было написано в пятом выпуске):

[Аппаратная часть компьютера]
 ^
 |
 v
==========================================
========= уровень супервизора ============
[уровень аппаратной абстракции]

 ^
 |
 v
[основные механизмы ядра]
 ^
 |
 v
[распределение ресурсов, вспомогательные модули (ФС и пр.)]
 ^
 |
 v
[системные вызовы ядра]

 ^
======================================
========= уровень пользователя =======
 v

[пользовательские приложения]

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

Все вышеперечисленные компоненты операционной системы в общем случае присутствуют в любой ОС. Чем же тогда "глобально" могут различаться архитектуры их ядер?

Основной критерий разделения - это как раз те самые уровни привилегий кода (пользователь/супервизор). По тому, какие части ядра в каком уровне привилегий работают, все архитектуры подразделяются на три типа: архитектуры с монолитным ядром, микроядерные и экзоядерные.

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

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

В системах с экзоядерной (наиболее новой из всех) архитектурой на уровне супервизора не работает практически ничего :) В настоящий момент такие системы активно ислледуются, и полноценно работающих прототипов, насколько я знаю, не существует

В следующем выпуске мы подробно рассмотрим микроядерную архитектуру и немного коснемся экзоядерной. Монолитная же нас особенно не интересует - во первых, она достаточно проста для понимания, во вторых она уже сильно устарела (хотя все современные популярные системы: Windows NT, Linux и пр. представляют собой именно монолитные архитектуры).

Outro

На сегодня все, уважаемые подписчики.
Как всегда, мой почтовый ящик открыт для вас:
lonesome@lowlevel.ru
Также вы можете задавать интересующие вас вопросы в форуме lowlevel.ru
Предыдущие выпуски рассылки вы можете найти по этому адресу:
http://subscribe.ru/archive/comp.soft.prog.osdev
А все, исходники, опубликованые в рассылке, располагаются здесь:
http://www.lowlevel.ru/osdev/sources.htm
Всего наилучшего!
Lonesome



http://subscribe.ru/
E-mail: ask@subscribe.ru
Отписаться
Убрать рекламу

В избранное