OSFree Arch

Материал из Русский WINE
Перейти к: навигация, поиск

Микроядро L4

Система работает поверх микроядра L4 и l4env.

L4 — микроядро второго поколения, разработанное Йохеном Лидтке в 1993 году.

L4/Fiasco

В 1998 году группа Operating Systems Group, входящая в состав технического университета Дрездена, начала разработку собственной реализации микроядра L4, получившую название «L4/Fiasco».

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

  • L4Env - набор компонентов, работающих поверх микроядра «Fiasco» в пространстве пользователя:
    • консоль, поддержка виртуальных консолей
    • сервер логов. Позволяет собирать в одном месте отладочные сообщения от различных сервисов. В сочетании с libc и службой имен l4vfs реализует поддержку stderr/stdout для неинтерактивных сервисов.
    • l4vfs - иерархический Name server, который интегрирует в одно дерево службы, файлы, терминалы и позволяет реализовать в libc файловые функции типа open(), read(), write() через специальные бэкенды. Поддерживаются две реализации libc - порты dietLibc и uCLibc.
    • поддержка простейшей работы с файлами без использования файловой системы, например, получение файлов с tftp-сервера или с файловой системы L4Linux.
    • Поддержка запуска исполняемых файлов формата ELF.
    • Управление памятью. Реализуются свои примитивы работы с памятью поверх примитивов микроядра: концепция Dataspaces и dataspace managers.
    • поддержка примитивов синхронизации, работа с таймерами, семафорами.
    • Менеджер задач
    • доступ к оборудованию
    • Подсистема драйверов DDE (Device Driver Environment) [включает в себя поддержку драйверов Linux (DDE/Linux) и FreeBSD (DDE/FreeBSD)][1]
  • L4 Runtime Environment (L4Re) — каркас, работающий поверх микроядра «Fiasco» и предназначенный для создания компонентов в пространстве пользователя. L4Re предоставляет функционал для создания клиент-серверных приложений, реализации файловых систем и реализует популярные библиотеки (стандартную библиотеку языка C («libc»), стандартную библиотеку языка C++ («libstdc++») и библиотеку pthreads).
  • Nitpicker - графический сервер, реализующий минимальные примитивы для отрисовки окон и интеграции различных оконных систем в один рабочий стол. Nitpicker сделан так, что различные оконные системы (родной оконный менеджер DoPE системы DROPS, X Window из L4Linux, PM из OsFree) работают через примитивы, предоставляемые аналогом Nitpicker. Примитивами для отрисовки являются buffers и views.
  • Device Driver Environment - обертка для драйверов Linux/FreeBSD/и т.д. для работы на l4env/l4re/Genode
  • Genode - фреймворк для построения операционной системы на базе микроядра.[2]

L4Linux

L4Linux - модифицированная версия ядра Linux, адаптированная для того, чтобы запускаться на микроядре L4.

L4Linux не является форком Linux, но двоично совместим с ним. Благодаря этому оно может заменить Linux/x86 ядро в любом основанном на нём дистрибутиве.

L4Linux разрабатывался проектом Dresden Real-Time Operating System Project (DROPS)[3] c целью позволить «вычислениям в реальном времени» и программам «разделенного времени» работать на компьютере параллельно и одновременно.

Микроядро может служить основой для параллельных API, реализованных поверх него. Эти API могут существовать независимо, имея минимальную общую базу, состоящую из самого микроядра и некоторого набора общих сервисов (называемых personality-нейтральными сервисами). Это позволяет иметь независимую (non-layered) реализацию параллельных API.


Personality-Neutral Services

Personality-Neutral Services - тонкий слой API между микроядром и операционными системами (состоящих из библиотек и серверов).

  • Корневой сервер (Root server)
  • Сервер ввода-вывода порта (Port Input Output server)
  • Сервер KBD (KBD server)
  • VIO сервер (VIO server)
  • Серверы виртуальной файловой системы (Virtual File System servers) - для построения виртуальной файловой системы Neutral personality использует набор серверов L4VFS.
    • L4VFS — это набор серверов, обеспечивающих виртуальное дерево различных файлов и каталогов.

Device Driver Environment

Device Driver Environment - Среда драйверов устройств - прослойка для драйверов Linux/FreeBSD и т.д., обеспечивающие работу в средах l4env/l4re/Genode.

Multiple Virtual Machines (MVM) personality

Personality Multiple Virtual Machines - Множественных виртуальных машин - (MVM)

Историческая справка

Термин «MVM» происходит от OS/2 (PowerPC). Он заменяет термин «MVDM» (Multiple Virtual DOS Machines — несколько виртуальных машин DOS). Платформа PowerPC не могла так легко эмулировать реальный режим процессора Intel, поэтому требовалась более интенсивная эмуляция. Тем не менее, следует отметить, что это работало отлично, быстро и теоретически могло использоваться не только для DOS. (У IBM были планы обеспечить бинарную совместимость с OS /2 (Intel) на основе того же компонента, который использовался для запуска приложений DOS).

Подробнее см. MVM/DOS/Win16 personality

OS/2 Personality

Архитектурные идеи, лежащие в основе архитектуры ОС/2 от osFree.


Совместимость с OS/2

Разработчики планируют использовать большинство принципов построения системы, заложенных в OS/2, с некоторыми уточнениями. Поскольку поддержка OS/2 является первичной целью, то, в готовом виде будет использовано большинство OS/2 технологий.

Совместимость с OS/2 планируется только на уровне API. Совместимость на уровне драйверов не планируется, т.к. по мнению разработчиков драйверы OS/2 все больше устаревают. Согласно своей идее, osFree может работать поверх множества ядер, таких как L4, Linux, Windows, etc. В результате, можно использовать подсистему драйверов этих ядер.

Поддержка всей 16-битной части OS/2 не планируется, так как существует не так уж и много приложений, которые являются чисто 16-битными. Для большинства смешанных 16/32-разрядных приложений разработчики планируют сделать автоматическую замену 16 битных вызовов на чисто 32-битный API. Как результат, получатся чисто 32-битные приложения (вместо многолетней практики использования "смешанных" 16/32 приложений).

Первоочередной задачей проекта является поддержка запуска большинства консольных приложений OS/2 под OS/2 Server.

Обратите внимание! Для запуска программы в последней опубликованной версии (0.0.4.7) нужно указать в консоли полный путь до приложения (например, c:\scanenv.exe). В транке этот недочет уже исправлен.

"Индивидуальные ОС"

В основе системы, будет микроядро L4 как база. Поверх L4 планируется построить следующие OS personalities (индивидуальные ОС):

  • Нейтральная personality - базовое ОС API. Это набор серверов и библиотек, предоставляющие разные сервисы. Все другие personalities построены поверх Нейтральной Personality. API нейтральной personality можно сравнить с Native NT API – они почти функционально эквивалентны.
  • OS/2 personality - должна предоставлять полное (или подмножество) OS/2 API.
    • Пишется разработчиками osFree
OsFree architecure.png

Серверы OS/2 personality:

  • Os2fs - файловый сервер. Реализует файловые API и врапперы для l4vfs для поддержки семантики файловой системы OS/2. (вводятся буквы дисков, файловый доступ к пайпам в ветке \pipe\.., устройствам в \dev\.. и т.п.
  • Os2exec - сервер для загрузки исполняемых файлов и DLL различных форматов. Также реализуются различные API для работы с исполняемыми модулями. Поддержка исполняемых форматов отделена от самого сервера, и выделена в отдельную библиотеку. Т.е., есть например, lx.ixf для поддержки исполняемых файлов формата LX. Предполагается написать аналогичный драйвер elf.ixf для формата ELF – аналогично OS/2 Warp (PowerPC edition), будет рализована поддержка EXE и DLL формата ELF. Как известно, формат LX заточен под платформу Intel и хотя он хорошо оптимизирован под ее возможности, но для других платформ его использование может быть проблематичным. Формат ELF напротив, абстрагирован от платформы, поддерживает как 32-битный, так и 64-битный вариант.
  • Os2srv - главный сервер OS/2 personality. Координирует запуск других серверов OS/2 personality, при старте системы обрабатывает файл config.sys и запускает остальные серверы. При запуске задаются пути поиска программ и библиотек, запускаются другие серверы через оператор runserver=, затем запускаются OS/2 программы (не серверы) через run= (асинхронно) и call= (синхронно) и, наконец, запускается программа, прописанная как protshell=.
    • Как и в обычной OS/2, protshell это программа, запускающая оболочку, стартующую пользовательский интерфейс системы. В случае OsFree это программа minicmd.exe.
  • Os2app - это не сервер, а специальное приложение l4env, которое представляет собой своеобразный враппер для OS/2 приложения. Каждое OS/2 приложение запускается в контексте своей копии os2app. При запуске minicmd.exe, например, стартуется os2app, которому передаются параметры командной строки: '–stdin /dev/vc0 –stdout /dev/vc0 –stderr /dev/vc0 c:\minicmd.exe'. – Таким образом, в командной строке передается, к какой консоли цепляться в качестве stdin/stdout/stderr и какое OS/2 приложение запускать.
  • Linux personality - должна предоставить полную функциональность ядра Linux. Будет использован дистрибутив на ядре L4Linux.
    • Судя по скриншотам, в качестве Linux-personality используется Debian 3.0 на ядре L4
  • MVM/DOS/Win16 personality - среда для запуска множества виртуальных машин с немодифицированными ОС. Данное направление очень перспективно для разработчиков, хотя и имеет меньший приоритет, чем разработка OS/2 personality, поэтому они возможно, воспользуются наработками других проектов, например QEMU, DosBox, DosEmu, FreeDOS.
    • Пока отсутствует
  • Win16 personality
    • Пока отсутствует
  • Win32 personality - должна предоставлять частичный или полный набор Win32 API. Если получится паравиртуализировать ReactOS (есть идея насчет написания HAL-а, работающего поверх l4env/l4re), то разработчики будут использовать этот результат для поддержки Win32 API. В противном случае, будут использованы результаты проекта WINE.[4]

Q: Теоретически, как сложно написать такой HAL для L4?
A: Это около года работы до выпуска работоспособной альфа\бета версии, если за дело возьмутся человек пять программистов уровня Алексея Брагина и Алекса Ионеску. [5]

  • Пока отсутствует

При желании, вы можете сюда добавить нужную вам personality.


OSFree
Search.png
osFree Архитектура • План работ • Компоненты • Используемые проекты • Экраны • FreePM • L4 • Скриншоты
Загрузчик [ Последовательность загрузки: поток выполнения • изменение карты памяти ] • Загрузочный сектор • L4Ka::Kickstart
Personalities Win16 personality • MVM/DOS/Win16 personality
Разработка Получение исходных кодов • Сборка • Отладка • Отправка отчетов
API TPCrt • FamilyAPI • Win16API • VIO API • MVM API
Сообщество IRC
OS/2 Presentation Manager • IFS • Петиции к IBM