RU/2: Форум. Общение пользователей и разработчиков OS/2 (eCS). : Ответить на сообщение
Имя:
e-mail:
FIDO:
Home page:
сохранить данные о вас
Тема:
> > Вот мне как раз кажется, что после декабря 2006 года IBM отдаст сорцы. > > Будем надеяться. Один человек говорил, что он писал в IBM насчет открытия сорцов, ему ответили, > что рассмотрят вопрос, если наберется достаточное количество голосов в предварительном опросе, > в результате опрос состоялся (на os2world), и, может быть, что-то и будет открыто, хотя на 100% > быть уверенным невозможно, ведь до этого уже было несколько петиций, и их не удовлетворили, что ж, > будем надеяться на лучшее... > > > Конечно весьма желательно, чтоб это были сорцы OS/2PPC, т.к. там избавились от многих паталогий. > > > > Да, там, конечно, все было переписано заново, даже разработаны кое-какие технологии, например GRADD. > Еще кажется, введена 32-битная подсистема VIO, и система стала потенциально переносимой на другие > платформы. Я даже скачал копию os2ppc, пощупать толком не удалось, так как нету соотв. железа, но все > равно интересно было залезть кое в какие файлы. :) Жаль что это не самая последняя версия системы... > > > А чем Pistachio лучше MACH? > > Прежде всего L4 -- это микроядро второго поколения, а Mach -- предыдущего. Оно (Mach) было хуже преж- > де всего своей тормознутостью. Так, MkLinux, построенный на базе Mach, был процентов на 20 медленнее > обычного линукса. А вот уже L4linux практически так же быстр, как простой, монолитный линукс. (разница в несколько %) > Mach был очень громоздким микроядром, приставка "микро" тут довольно условна, так, я посмотрел, в дистрибу- > тиве OS/2 PPC, само микроядро весит аж 500 килобайт! Хотя тут стоит учесть, что оно в формате ELF и для RISC- > процессора, то есть, должно быть заметно обьемней, чем такое же, но для интела. L4 же (Pistachio) весит (для > интела) 160-190 Кбайт вместе со встроенным kernel debugger'ом, а минимально где-то на уровне 80-100-120 Кбайт. > А вот в памяти оно занимает всего 12 Кбайт! (Объем исходников под все платформы -- около 8 Мбайт вснго) Настоящее > "микро", даже, наверное, "нано"! > Потом, L4 это ядро, реализующее минимальный набор абстракций и функций. Я признаюсь, что все же больше читал про L4, > но немного успел прочитать и в редбуке про OS/2 PPC (называется "OS/2 Warp Connect, PowerPC Edition: first look", > скачать можно на Хоббесе, информация открытая). Так, (может чего путаю, но по памяти) в IBM-овском микроядре > (построенном на базе Mach) были следующие абстракции: 1)тред-единица диспетчеризации процессорного времени. > 2)Задача (task) -- единица аллокации ресурсов, имеет адресное пространство и набор прав доступа к портам (port > rights), 3)Порт (Port) -- абстракция канала для взаимодействия процессов. 4) Memory object -- единица выделения па- > мяти. > В L4 3 абстракции: 1)Тред (thread), 2)Адресное пространство (address space) -- единица выделения областей > памяти. Адресное пространство, вместе с работающими в нем несколькими тредами, эквивалентно понятию задачи (task). > 3) IPC (Inter-process Communication) -- межпроцессная коммуникация, процесс обмена сообщениями между тредами > Большую роль играет UID -- (Universal Identifier) -- универсальный идентификатор процесса. Он однозначно > идентифицирует тред для ядра. Когда треды обмениваются сообщениями, они идентифицируют друг друга по UID'ам. > Но в Mach есть достаточное количество понятий, от которых можно избавиться для минимизации, что и было сделано в L4. > У L4 очень компактное API, в нем всего 7 функций (но каждая функция объединяет в себе много вариантов ее > использования). -- Это в отличие от Mach, которое более сложно устроено. > Потом, в L4 реализовано сверхбыстрое IPC, которое было достигнуто благодаря особым ухищрениям, типа передачи > маленьких сообщений внутри регистров процессора, копирования больших сообщений между адресными пространствами при > помощи временного отображения адресного пространства передающего процесса в адресное пространство получателя, и др. > В Mach IPC во много раз медленнее, примерно в 200 раз медленнее. Это достигается в L4 за счет новой операции > отображения (mapping) и предоставления (granting) адресных пространств. Причем в L4 эти операции осуществляются > рекурсивно, то есть, процесс A может передать насовсем (grant), или отобразить (map) часть своего адр. пространства > процессу B, а процесс B -- процессу C, и т. д., причем процесс, осуществивший маппинг другому процессу, может забрать > обратно свое адр. пространство, а тот, кто сделал операцию grant -- не может, но может забрать обратно процесс, сделавший map тому процессу, что сделал grant. В общем, эти операции позволяют одним процессам (исполняющимся в user space!) являться пейджерами (pagers), то есть обрабатывать page fault'ы для других юзерских процессов. Эта фича (user space pagers) отличает L4 от Mach и позволяет, в частности, просто реализовать виртуальные машины и такую вещь как > orthogonal persistence (не знаю, к сожалению, русского эквивалента этого названия). Как я это понимаю -- это заключается в том, что система сохраняет свое состояние, причем оно восстанавливается после сбоев (типа трапа и > внезапного нажатия кнопки Reset)(persistence), причем состояние каждого процесса сохраняется независимо от других > (ортогональность) -- сразу скажу, что это только мое понимание, может быть, неполное, или не совсем верное :) На такой > идее основан проект Unununium (http://unununium.org/). > Потом, для L4 разработана интересная технология виртуализации. Называется "Pre-virtualisation with compiler after- > burning", суть в том, что компилятор gcc (а точнее -- binutils, а еще точнее, ассемблер as) патчится специальным > образом, что он создает специальный код для ОС, откомпилированной этим компайлером, и сама ОС тоже патчится. Затем > ОС компилируется (проверялось на Linux 2.6.9) и получается ядро, которое без изменений работает на голом железе, > над виртуализатором Xen, и над L4! И последняя составляющая -- виртуализатор, спец. layer над L4, под названием > wedge, создает спец. виртуальную машину для нашей ОС, ограничивая, например, количество доступной ОС памяти. > Я скачал Линух, wedge и L4, скомпилировал, все даже вроде заработало, только там все собирается с такими параметрами, > что с системой можно взаимодействовать только через com-порт (для кернел-дебуггера), а все это дело у меня под VPC, > так что взаимодействолвать с системой не получилось, не знаю как перенаправить com-порт вирт. машины на терминалку :) > Но система вроде грузится... (Окончательного успеха я пока не достиг). > Эта технология, кстати, позволяет запустить несколько OS Personalities над L4, причем можно сделать так, что одна > ОС может использовать драйвера устройств другой ОС и наоборот, причем сами драйвера не требуют перекомпиляции (например, можно использовать драйвера Linux, поставляющиеся в бинарной форме, в другой ОС). Это позволяет пользовать- > ся драйверами другой ОС, богатой на драйвера (Линукс прежде всего), причем без изменений, в нашей ОС, урезав до мини- > мума ОС-"донор". > > Наконец, то, что L4 "минимальнее" Mach, означает, что оно надежнее, так как меньший объем кода исполняется на > высшем уровне привилегий, и, всё, кроме самогО микроядра, исполняется как юзерские процессы, даже Pager'ы и драйвера! > А это значит, что трап или паника в драйвере никогда не вызовет останов системы, драйвер можно просто перезапустить, > как обычный процесс! > > Кстати, сейчас IBM занимается разработкой нового мультисерверного (то есть, не монолитного, а модульного) линукса > под названием SawMill над L4. Так что делаем выводы. IBM не принимает поспешных решений... > > Наконец, L4Ka::Pistachio -- это только одна из реализаций L4 API, причем реализует самую последнюю версию этого API, > и реализовано на наибольшем числе аппаратных платформ -- Alpha, AMD64, ARM, IA-32, IA-64, MIPS64, PowerPC, PowrPC64, > SPARCv9. То есть, написав ОС над L4, мы получаем автоматически уже готовую поддержку всех этих процессоров и реализа- > цию SMP "Out of the box", и возможность легко строить кластерные системы. (Что, в принципе, умел и Mach тоже). > > Так что список преимуществ достаточно большой... > > PS: > Полезные ссылки: > http://l4ka.org/ -- страница Университета Карлсруэ -- разработчики L4Ka::Pistachio и L4Ka::Hazelnut > http://www.disy.cse.unsw.edu.au/ -- Университет Нового Южного Уэльса (Австралия) -- второй разработчик L4Ka > http://os.inf.tu-dresden.de/ -- сайт Дрезденского Университета -- разработчики ядра Fiasco (другая реализация L4) > http://l4hq.org/ -- Центральная страница сообщества L4 > > PPS: > Сорри если что не так в этом тексте, я сам только начинаю знакомиться с L4, возможны неточности... > > WBR, > Валерий > > >
_, _, _, _, _ _, _,_
(_ | / \ |\ | / \ |_/
, ) | , \ / | \| \ / | \
~ ~~~ ~ ~ ~ ~ ~ ~
Programmed by
Dmitri Maximovich
,
Dmitry I. Platonoff
,
Eugen Kuleshov
.
25.09.99 (c) 1999,
RU/2
. All rights reserved.
Rewritten by
Dmitry Ban
. All rights ignored.