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

Архитектура микроядра L4 оказалась успешной. Было создано множество реализаций ABI и API микроядра L4. Все реализации стали называть семейством микроядер L4. Реализация Лидтке неофициально была названа «L4/x86»Семейство микроядер L4. Обзор // Сайт технического университета Дрездена (Германия)..

История

L1 В 1977 году Йохен Лидтке защитил дипломный проект по математике в университете города Билефельд (Германия). В рамках проекта Лидтке написал компилятор для языка . Язык ELAN создан в 1974 году на основе языка Алгол 68 для обучения программированиюЯзык ELAN // Сайт технического университета Дрездена.. Лидтке назвал свою работу «L1»: буква «L» — первая буква фамилии автора (Liedtke); цифра «1» — порядковый номер работы.

L2

В 1977 году Лидтке получил диплом математика, остался в университете города Билефельд и приступил к созданию среды выполнения для языка ELAN.

8‑битные микроконтроллеры стали широко доступными. Требовалась операционная система, способная работать на небольших рабочих станциях в средних школах и вузах. CP/M не подходила. Национальный исследовательский центр компьютерных наук и технологий Германии GMD и университет города Билефельд решил разработать новую операционную систему с нуля.

В 1979 году Йохен Лидтке начал разработку новой операционной системы и назвал её «» от . Операционная система «Eumel» также называлась «L2», что означает «2‑я работа Liedtke». Новая ОС поддерживала 8-битовые процессоры Zilog Z80, была многопользовательской и многозадачной, была построена на основе микроядра, поддерживала . Поддержка orthogonal persistence заключалась в следующем: ОС периодически сохраняла на диск своё состояние (содержимое памяти, регистров процессора и др.); после перебоев в подаче электроэнергии ОС восстанавливалась из сохранённого состояния; программы продолжали работать так, будто бы сбоя не происходило; терялись только изменения, внесённые с момента последнего сохранения. ОС Eumel проектировалась под влиянием ОС Multics и содержала много общего с ядрами и Mach.

Позднее ОС Eumel была портирована на процессоры Zilog Z8000, Motorola 68000 и Intel 8086. Эти процессоры были 8‑ и 16‑битовыми, не содержали MMU и не поддерживали механизма защиты памяти. ОС Eumel эмулировала виртуальную машину, имеющую 32‑битовую адресацию и MMU . Несмотря на использование эмуляции, к одной рабочей станции с ОС Eumel можно было подключить до пяти терминалов.

Поначалу писать программы для ОС Eumel можно было только на языке ELAN. Позднее были добавлены компиляторы для языков , Pascal, Basic и , но массово они не применялись.

С 1980 года началось применение ОС Eumel сначала для обучения программированию и обработки текста, а затем — и в коммерческих целях. Так, в середине 1980‑х годов ОС Eumel работала уже на более чем 2000 компьютеров в юридических и других фирмах.

L3

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

В 1984 году Йохен Лидтке перешёл на работу в исследовательский центр GMD для создания ОС, аналогичной ОС Eumel, но работающей без эмуляции. В настоящее время GMD входит в состав организации «Общество Фраунгофера».

С 1987 года Йохен Лидтке и его команда из института SET, входящем в состав GMD, приступили к разработке нового микроядра, получившего название «L3» («L3» от «3‑я работа Liedtke»).

Йохен Лидтке хотел проверить, возможно ли добиться высокой производительности компонента IPC, если выбрать для ядра подходящую архитектуру и в реализации использовать особенности архитектуры. Реализация механизма IPC оказалась удачной (по сравнению со сложной реализацией IPC в микроядре Mach). Позднее был реализован механизм изоляции областей памяти процессов, работающих в пространстве пользователя.

В 1988 году разработка была завершена и была выпущена одноимённая операционная система. Микроядро L3 было написано на языке ассемблера, задействовало особенности процессоров архитектуры Intel x86, не поддерживало другие платформы, по производительности обогнало микроядро Mach. ОС L3 была совместима с ОС Eumel: программы, созданные для ОС Eumel, работали под управлением ОС L3, но не наоборот.

Компоненты микроядра L3: компонент IPC (реализовывал механизм для синхронного обмена сообщениями); компонент, обеспечивающий работу со страницами памяти и работающий в пространстве пользователя; компонент, реализующий механизм обеспечения безопасности, называемый («tasks», «clans» и «chiefs»).

С 1989 года ОС стала применяться: в школах (заменила свою предшественницу — ОС Eumel); на примерно 3000 компьютерах, установленных в юридических фирмах ГерманииIn Memoriam Jochen Liedtke (1953—2001) ..

L4 Во время работы над микроядром L3 Йохен Лидтке обнаружил недостатки микроядра Mach. Желая повысить производительность, Лидтке стал составлять код нового микроядра на языке ассемблера с использованием особенностей архитектуры процессоров Intel i386. Новое микроядро получило название «L4» (от «4‑я работа Liedtke»).

В 1993 году реализация микроядра L4 была закончена. Компонент IPC оказался в быстрее IPC из микроядра Mach .

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

Исследователи искали причины низкой производительности микроядра Mach и тщательно анализировали компоненты, важные для обеспечения хорошей производительности. Анализ показал, что ядро выделяло процессам слишком большой working set (много памяти), в результате чего при обращении ядра к памяти постоянно происходили кэш‑промахи () . Анализ позволил сформулировать новое правило для разработчиков микроядер — микроядро должно проектироваться так, чтобы компоненты, важные для обеспечения высокой производительности, помещались в кэш процессора (желательно, первого уровня (, L1) и желательно, чтобы в кеше ещё осталось немного места).

Из-за резкого скачка в производительности компонента IPC существующие ОС оказались неспособны обработать возросший поток сообщений IPC. Несколько университетов (например, технический университет Дрездена, университет Нового Южного Уэльса), институтов и организаций (например, IBM) начали создавать реализации L4 и строить на их основе новые ОС.

В 1996 году Лидтке защитил диссертацию на степень PhD в техническом университете Берлина по теме «защищённые таблицы страниц»Jochen Liedtke. Page table structures for fine-grain virtual memory . Technical report 872. German national research center for computer science (GMD). Октябрь 1994 года..

С 1996 года в Лидтке с коллегами продолжил исследования микроядра L4, микроядер вообще и операционной системы «Sawmill OS» в частности. Из-за отсутствия коммерческого успеха у ОС «», построенной на третьей версии микроядра Mach от CMU и разрабатываемой фирмой IBM с января 1991 года по 1996 год, вместо понятия «микроядро L4» использовалось понятие «Lava Nucleus» или, кратко, «LN».

Со временем код микроядра L4 был избавлен от привязки к платформе, были улучшены механизмы обеспечения безопасности и изоляции.

В 1999 году Лидтке стал работать профессором по операционным системам в технологическом институте Карлсруэ (Германия).

Микроядро L4Ka::Hazelnut В 1999 году Йохен Лидтке был принят в состав группы «Systems Architecture Group» (SAG), работающей в технологическом институте Карлсруэ (Германия), и продолжил исследования микроядерных ОС. Группа SAG также известна как группа «L4Ka».

Желая доказать возможность реализации микроядра на высокоуровневом языке, группа SAG разработала микроядро «L4Ka::Hazelnut». Работа велась в технологическом институте Карлсруэ при поддержке DFGСтраница группы «L4Ka» // archive.org.. Реализация была написана на языке C++ и поддерживала процессоры архитектур IA-32 и ARM. Производительность нового микроядра оказалась приемлемой, и разработка ядер на языке ассемблера была прекращена.

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

В то время микроядро L4Ka::Hazelnut не поддерживало concurrency в пространстве ядра, а микроядро «L4Ka::Pistachio» поддерживало прерывания в пространстве ядра только в особых точках preemption. Разработчики микроядра «L4/Fiasco» реализовали полную вытесняющую многозадачность (за исключением некоторых атомарных операций). Это усложнило архитектуру ядра, но снизило задержки при прерываниях, что важно для операционной системы реального времени.

Микроядро «L4/Fiasco» использовалось в ОС «DROPS»Drops overview . — ОС «жёсткого» реального времени (когда крайне важно, чтобы на событие реагировали в строго установленные сроки), также разработанной в техническом университете Дрездена.

Ввиду усложнения архитектуры микроядра в поздних версиях ОС «Fiasco» разработчики вернулись к традиционному подходу — запуску ядра с выключенными прерываниями (за исключением нескольких точек preemption).

Независимость от платформ

Микроядро L4Ka::Pistachio Реализации микроядра L4, созданные до выпуска микроядра L4Ka::Pistachio и поздних версий микроядра «Fiasco», использовали особенности архитектуры компьютера (были «привязаны» к архитектуре процессора). Был разработан API, не зависимый от архитектуры. Несмотря на добавление переносимости, API обеспечивал высокую производительность. Идеи, лежащие в основе микроядерной архитектуры, не изменились.

В начале 2001 года новое L4 API было опубликовано, сильно отличалось от L4 API предыдущей версии, получило номер версии 4 («version 4», также известно как «version X.2») и отличалось: лучшей поддержкой многопроцессорных систем; «looser ties» между потоками и адресным пространством; добавлением к потокам, работающим в пространстве пользователя, блоков UTCBs (); добавлением виртуальных регистров.

После выпуска новой версии API группа SAG приступила к созданию нового микроядра, получившего название «L4Ka::Pistachio»Микроядро «L4Ka::Pistachio» .Команда разработчиков «L4Ka» .. Код составлялся с нуля на языке C++, использовался опыт проекта L4Ka::Hazelnut. Внимание уделялось высокой производительности и переносимости.

10 июня 2001 года доктор Йохен Лидтке погибSystem architecture group. About us. People. Liedtke. Архивная копия. в автокатастрофе. После этого скорость развития проекта заметно снизилась.

В 2003 годуThe L4Ka::Pistachio Microkernel. Белая книга. PDF. 1 мая 2003 года // archive.org. работа была завершена благодаря усилиям студентов Лидтке: Volkmar Uhlig, Uwe Dannowski и Espen Skoglund. Исходный код был выпущен под лицензией 2‑clause BSD.

Новые версии Fiasco Параллельно продолжалось развитие микроядра L4/Fiasco. Была добавлена поддержка нескольких аппаратных платформ (x86, AMD64, ARM). Примечательно, что версия Fiasco, названная «FiascoUX», могла работать в пространстве пользователя под управлением ОС Linux.

Разработчики микроядра L4/Fiasco реализовали несколько расширений к L4v2 API. Исключение IPC позволило ядру передавать обработку исключений процессора в пространство пользователя. Добавление (потока, выполняемого одним ядром процессора от имени процесса, запущенного на другом ядре процессора) позволило реализовать детальное управление системными вызовами. Добавление UTCB (таких же, как в L4 API версии X.2). Кроме того, микроядро «Fiasco» предоставляло механизмы управления правами коммуникации. Такие же механизмы существовали для управления потребляемыми ядром ресурсами.