Rambler's
Top100

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

Автор: lonesome [TSH/Digital Daemons]
Дата: 26.07.2003
Раздел: Разработка ОС

ПРЕДЫДУЩИЙ ВЫПУСК      СЛЕДУЮЩИЙ ВЫПУСК

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

Выпуск 17 от 2003-06-23

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

Intro

Рад приветствовать вас, уважаемые подписчики, в юбилейном 17-ом выпуске нашей рассылки (почему юбилейном? - Число мне это нравится :)). Первым делом напомню про идеи для операционной системы, поток которых практически прекратился. Это не есть хорошо, так что... поактивнее, товарищи :). С другой стороны, идеи периодически обсуждаются в нашем форуме на http://www.lowlevel.ru/cgi-bin/yabb/YaBB.cgi?board=programming.

И еще - после прошлого выпуска многие просили показать исходники микроядерной системы Tyros, про которую я заикнулся. Взять исходники (система разрабатывается на C и Objective-C) вы можете по адресу http://sf.net/projects/tyros/ (сегодня мы как раз выложили свежий снапшот).

А теперь вас ждет отложенный в прошлый раз рассказ об экзоядерных операционных системах

Экзоядерные операционные системы

Экзоядерная архитектура - наиболее молодая из всех типов архитектур ядра операционной системы. Чтобы понять суть экзоядер, нам необходимо вспомнить основные задачи, которые выполняет операционная система. Как было сказано в одном из первых выпусков - это задача распределения ресурсов и задача создания "виртуальной машины", использовать и программировать которую намного проще, чем реальную. Кратко эти задачи называются принципом защиты (да-да, в данном случае распределение и защита - одно и то же) и принципом абстракции

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

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

Вы спросите - неужели в экзоядерных системах нет, к примеру, файловой системы, а программист вынужден программировать диск напрямую? На самом деле, все там есть :) Все реализуется с помощью обычных библиотек. По сути дела, такая библиотека и составляет операционную систему. Причем в экзоядерной системе могут быть несколько таких "систем-библиотек", причем они все могут быть одновременно использованы пользовательским приложением (или приложение может их не использовать вовсе, а содержать в себе, скажем, свою файловую систему...). Представьте себе программу, которая одновременно использует API системы UNIX (воплощенной в виде одной библиотеки) и системы Windows (воплощенной в другой библиотеке). Такое в экзоядерных системах - вполне обычное явление.

И самое главное - зачем все это нужно? Ключевой фактор - производительность, как следствие невероятной гибкости. Веб-сервер Cheetah на экзоядерной ОС XOK по скорости обработки запросов опережает своих братьев с обычных систем в 8 (ВОСЕМЬ!) раз.

И еще один плюс - некоторые программисты еще со времен DOS приходят в восторг от возможности прямого доступа к аппаратуре :)

Outro

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


[Главная] [Другие статьи] [Обсудить в форуме]
©2003-2004 Lowlevel.RU

Rambler's Top100