Разработка программ в среде операционной платформы Inferno

       

Портирование ядра


Сердцем системы есть связка ядро и подчиненный ему коммуникационный протокол Styx. Нижний уровень Inferno - очень малых размеров традиционное монолитное ядро, отвечает за такие задания, как управление данными и ресурсами, сеть, защиту, создание и поддержку пространств имен.

Исходный код ядра написан на ANSI C, как результат этого - портирование Inferno на новую архитектуру, для которой доступен компилятор с C, является сравнительно простым занятием. В общем и целом, код ядра состоит из портабельной части, совместно-используемой всеми архитектурами, и процессоро-специфической части - для каждой поддерживаемой архитектуры. Портабельный код часто транслируется и размещается в библиотеке, связанной с конкретной архитектурой. Построение ядра выполняется путем трансляции архитектуро-специфического кода и загрузки его с библиотеками, содержащими портабельный код. Поддержка для новой архитектуры обеспечивается либо приобретением или построением компилятора с языка C платформы и использованием его для трансляции портабельного кода в библиотеки, либо написанием собственного архитектуро-специфического кода с последующей загрузкой его с библиотеками. Архитектуро-специфический код характеризуется несколькими простыми функциями (test-and-set, управления уровнем прерываний, управления информацией метки планировщика, устройств плавающей точки), которые необходимо реализовать на манер платформо-специфической модели. Новому порту также понадобятся драйверы устройств для соответствующей конфигурации. Они могут быть взяты из уже доступного набора драйверов и адаптированы, или же написаны с нуля. Ядро требует загрузки на целевую платформу, она обычно выполняется платформо-специфическим начальным загрузчиком, обеспечивающим также функции инициализации памяти и уровня прерываний. Загрузка ядра завершается началом инициализации интегрированных в него драйверов.



Содержание раздела