Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Операционные системы » Другие ОС » Микроядро L4

Модерирует : lynx, dg

 Версия для печати • ПодписатьсяДобавить в закладки

Открыть новую тему     Написать ответ в эту тему

mandrookin

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Пользует ли кто микроядро L4? Если да, давайте делиться опытом.
Вообще, интересно кто, как и для чего его использует.  
 
Если кто в не в курсе что такое L4, читать и смотреть здесь http://www.l4hq.org
 
 

Всего записей: 21 | Зарегистр. 29-04-2006 | Отправлено: 21:27 01-05-2006
mandrookin

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Таки никто не пользует? А зря! Очень перспективная разработка.
Автором концепции L4 является ныне покойный Jochen Liedtke.
L4- микроядро второго поколения, которое, как утверждается, избавлено от основного недостатка микроядер первого поколения - медленной скорости работы.
 
Концепция L4 основана на нескольких базовых понятиях - поток, адресное пространство, виртуальные страницы и IPC.
 
Понятие потока и адресного пространства, в приницпе, не отличаются от аналогичных понятий в других системах.  
 
Однако, виртуальные страницы разработаны весьма оригинально - микроядро поддерживает размеры виртуальных страниц, которые могут не совпадать с размером физических страниц, поддерживаемых процессором. Накладывается лишь ограничения на минимальный размер страницы (который не может быть меньше минимального размера, поддерживаемого процессором).  
 
Самая главная изюминка L4 - его IPC. Взамидомействие между потоками реализовано исключительно через IPC. Более того, исключения неотображенной страницы и нарушение защиты тоже реализованы посредством потоков.
Но это ещё не всё - обработчики прерывания - это потоки, которые получают сигналы о прерываниях через IPC. Наконец, операции по отображению страниц из одного адресного пространства в другое реализовано посредством IPC.
 
В результате получилась строго типизированная система с миниммальным, но достаточным, набором системных вызовов микроядра.
 
Одним из основополагающих свойст L4 IPC  является их синхронность. То есть для того, чтобы сообщение было передано от отного потока другому, принимающий пототк должен находиться в фазе приёма, а передающий в фазе передачи.
Новичку может показаться, что синхронная передача сообщений плохо сказажется на производительности. Но это не так - существует как минимум два способа сделать передачу сообщений асинхнронной. Первый - реализация критических секций, мютексов и прочих объектов синхронизации посредством примитивов L4. Второй способ - системному программисту предстоит немного поменять представления о многопоточных приложениях. Но об этом в другой раз.
 
В настоящее время существует несколько реализаций L4. Пожалуй, самыми известными являются разработка университета Karlsrue - Pistachio и разработка Дрезденского университета - Fiasco. Все разработки, в целом, поддерживают концепцию L4. Однако отличаются в реализации. Лично мне по душе Pistachio за великолепную документацию. Впрочем, это тема для хорошей и долгой holy war. Жаль, спорить не с кем.
 
p.s. Информация подготовлена в надежде что кто-нить заинтересуется.
 

Всего записей: 21 | Зарегистр. 29-04-2006 | Отправлено: 14:31 03-05-2006 | Исправлено: mandrookin, 14:41 03-05-2006
fractal

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
так ось с этим ядром стоит или нет?

Всего записей: 63 | Зарегистр. 18-02-2006 | Отправлено: 10:13 05-05-2006
mandrookin

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Родной и полноценной оси пока не существует.  
Есть порт линукса, который называется L4Linux.  
Также на микроядро L4 портируется GNU Hurd.
Есть ещё несколько академических разработок различных систем, но в настоящее время они пока не дотягивают до уровня полноценной ОС.

Всего записей: 21 | Зарегистр. 29-04-2006 | Отправлено: 14:34 05-05-2006 | Исправлено: mandrookin, 14:36 05-05-2006
Rush

Уже за тридцать...
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
Есть ещё несколько академических разработок различных систем, но в настоящее время они пока не дотягивают до уровня полноценной ОС.

Так и разовор о нем тогда еще рано вести...

Всего записей: 3547 | Зарегистр. 20-11-2003 | Отправлено: 14:40 05-05-2006
mandrookin

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
Так и разовор о нем тогда еще рано вести...  

 
Не совсем - дело в том, что уже сейчас L4 может (и начинает) успешно использоваться в различных микроконтроллерах и специализированных устройствах. Благо, что это микроядро уже портировано под все наиболее распространённые на настоящий момент микропроцессоры.
 
 
Добавлено:
Немного о процессе загрузки систем на базе L4Ka::Pistachio для архитектур IA32 и AMD64 и об общих приницпах организации L4.
 
Разработчики Pistachio не стали изобратеть велосипед и в качестве загрузчика выбрали GNU grub. Типичный пример menu.lst  
 
title = L4Ka::Pistachio/ia32 demo
  kernel=/boot/kickstart bootinfo=on mbi=on decode-all=on
  module=/boot/ia32-kernel
  module=/boot/sigma0
  module=/demotask
 
Как видно, первым загружается модуль kickstart. На самом деле это не ядро, а дополнительный загрузчик. Если указанные модули содержат ELF сигнатуру, то kickstart парсит их и готовит в памяти исполняемый образ модуля. Если какой-либо модуль не является исполняемым файлом, он остаётся в памяти без изменения. Затем kickstart стартует ядро.
 
Следующий модуль - ia3-kernel. Собственно, микроядро. О нём расскажу позже.
 
Третий модуль - sigma0. Это диспетчер памяти. Он спроектирован таким образом, что первоначально обладает всей доступной в системе памятью. Различные процессы, в том числе и ядро, запрашивают память у sigma0. Процесс запроса памяти, как вы уже поняли, происходит посредством IPC. Запрошенные страницы отображаются в адресное пространство запрашиваюшего процесса. Имеется возможность запросить определённую физическую страницу памяти или же любую свободную.  
 
Четвёртый модуль - demotask. В терминологии L4 называется roottask. Это первая пользовательская задача. Если проводить аналогию, это нечто программы init в юниксах. Этой задаче передаётся управление после старта и инициализации ядра.
 
Конечно, вы имеете возможность добавить ещё любое колчиство модулей. Однако, автоматически они стартоваться не будут. Процедуру старта модулей, указанных после roottask, должна выполнять сама roottask. Информацию о загруженных модулях любезно предоставляет grub, поддерживающщий MBI протокол.
 
Пожалуй, следует более внимательно рассмотреть процесс старта дополнительных модулей. Существует два пути их исполнения - в том же адресном пространстве, что и roottask и в своём собственном адресном пространстве.
 
Первый случай наиболее простой. Однако, все модули должны быть слинкованы в непересекющихся диапазонах адресов. В этом случае исполнение модулей будет очень похоже на потоки (threads). Любая ошибка в таком модуле способна "положить" систему.
 
Второй способ более сложный. Необходимо создать новое адрессное пространство и запустить модуль в этом адресном пространстве. Кроме того, потребуется pager. Pager - это такая задача, которая получает сигналы при обращении задачи к неотображённой странице памяти. Получив такой сигнал, pager выделяет память (например, запросив её у sigma0) и отображает её в адресное пространство задачи. Преимущества такого подхода очевидны - процесс не может обратиться к памяти, которая ему не принадлежит. Точнее, pager строго следит за тем, чтобы задача обращалась только к своей памяти.
 
Продолжение следует. :)

Всего записей: 21 | Зарегистр. 29-04-2006 | Отправлено: 15:55 05-05-2006 | Исправлено: mandrookin, 17:37 05-05-2006
fractal

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
То есть на этом ядре будут создаваться узкоспециализированные оси?

Всего записей: 63 | Зарегистр. 18-02-2006 | Отправлено: 08:25 10-05-2006
mandrookin

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
То есть на этом ядре будут создаваться узкоспециализированные оси?

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

Всего записей: 21 | Зарегистр. 29-04-2006 | Отправлено: 18:37 10-05-2006
mandrookin

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
А теперь немного о ядре.
 
Прежде всего стоит упомянуть о Kernel Interface Page (KIP) - страница памяти, которая отображается во все адресные пространства. Эта страница содержит базовую информацию о ядре - версию ядра, тип и тактовую частота процессора, поддерживаемые размеры страниц, номер первого пользовательского потока и номер потока sigma0, указатель на блок описания загруженных модулей, а также адреса точек входа в системные вызовы микроядра.  
Всего pistachio поддерживает 11 системыех вызовоа, причём, для пользовательских процессов, как правило, достаточно двух из них, остальные вызовы используются операционной системой. Рассмотрим внимательнее эти вызовы:
 
1)    space_control_syscall - позволяет создавать и удалять адресные пространства
2)    thread_control_syscall - используется для создания и удаление потоков (threads)
3)    processor_control_syscall - используется для управления процессором  
4)    memory_control_syscall - используется для управления кэш памятью
 
5)    ipc_syscall - основной вызов взаимодействия между потоками
6)        lipc_syscall - быстрая версия вызова межпоточного взаимодействия (только для потоков в пределах одного адресного пространства)
7)    unmap_syscall - снимает отображение страницы памяти из других адресных пространств
8)    exchange_registers_syscall - читает/устанавливает значение регистров потока
     
9)    system_clock_syscall - возвращает число тиков таймера с момента старта микроядра
10)    thread_switch_syscall - принудительно передаёт управление другому потоку  
11)    schedule_syscall - используется для управления поанировщиком
 
Как видим, вызовов не так уж и много. Пользовательской задаче необходимы только ipc_syscall и lipc_syscall. Впрочем, иногда может оказаться полезен и system_clock_syscall. Также, возможен дизайн системы когда прикладная задача может использовать и остальные системные вызовы, за исключением первых четырех.
 
Первые четыре системных вызова являются привелегированными. Это значит что их могут вызывать только потоки, находящиеся в адресном пространстве roottask (смотрите в предыдущем постинге).
 
Что же такое адресное пространство? Это виртуальная память в которой исполняется процесс, т.е. один или несколько потоков. После инициализации ядро создаёт адресное пространство задачи roottask и передаёт управление этой задаче. Программист имеет возможность создавать новые потоки в адресном пространстве roottask и создавать новые адресные пространства, а затем потоки во вновь созданных адресных пространств. Как вы уже поняли, именно для этого используются системные вызовы space_control_syscall и thread_control_syscall.
 
Наступило время пристальнее всмотреться в потоки. Одним из базовых понятий L4 является идентификтор потока - ThreadId. Каждый поток имеет уникальный номер, который используется при создании, удалении потоков, обмене регистров потока и для IPC. Более того, разработчики L4 решили не плодить лишних сущностей и используют идентификатор потока для определния адресных пространств. Подробнее об этом можно прочитать в спецификации микроядра.
Ознакомившись со спецификацией L4, попробовав его в деле, вы навсегда полюбите его за красоту и стройность.
 
Продолжение следует :)

Всего записей: 21 | Зарегистр. 29-04-2006 | Отправлено: 01:26 14-05-2006
lolachka

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
а когда будет продолжение? мне понравилось) интересное ядро

Всего записей: 5 | Зарегистр. 13-03-2009 | Отправлено: 23:51 02-02-2011
Открыть новую тему     Написать ответ в эту тему

Компьютерный форум Ru.Board » Операционные системы » Другие ОС » Микроядро L4

Имя:
Пароль:
Сообщение

Для вставки имени, кликните на нем.

Опции сообщенияДобавить свою подпись
Подписаться на получение ответов по e-mail
Добавить тему в личные закладки
Разрешить смайлики?
Запретить коды


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.Board
© Ru.Board 2000-2018

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru

Рейтинг.ru