Cosmos (операционная система)

Cosmos — операционная система с открытым кодом, написанная на языке программирования C#. Кроме того, она содержит компилятор языка Microsoft Intermediate Language (IL2CPU), позволяющий формировать законченные программные модули, включающие в себя библиотеки .NET Framework и саму операционную систему Сosmos, что позволяет создавать загрузочные модули, не требующие для своей работы внешней ОС. Может загружаться с дискеты, USB флеш-накопителя, CD-ROM или в виртуальной машине. В настоящее время поддерживается архитектура только x86, хотя система направлена на C#, она может быть использована с большинством совместимых языков .NET (требуется «чистая» компиляция CIL без использования P/Invoke). Cosmos в первую очередь предназначен для использования только с Microsoft .NET Framework, но может быть скомпилирована с использованием Mono с опорой на блок System.Threading, класса ReaderWriterLockSlim.

Cosmos

Скриншот оболочки Cosmos из-под QEMU
Разработчик Cosmos Project
Последняя версия 20200708 (8 июля 2020)
Тип ядра микроядро
Лицензия BSD
Состояние Бета-тестирование
Репозиторий исходного кода github.com/CosmosOS/Cosm…
Веб-сайт github.com/CosmosOS
 Медиафайлы на Викискладе

По информации с веб-сайта Cosmos, Cosmos является бэкронимом от C# Open Source Managed Operating System (рус. «Управляемая операционная система с открытым кодом на C#»). Cosmos в настоящее время не стремится стать полноценной операционной системой, а скорее набором инструментальных средств, позволяющим другим разработчикам легко и просто создавать свои собственные операционные системы, или, как сказал один из руководителей проекта, действовать в качестве «операционной системы типа Lego». Он также функционирует как абстракционный слой, скрывающий значительную часть работы внутренних аппаратных средств.

Текущий выпуск Cosmos — Milestone 5, однако работа над будущими релизами идёт полным ходом. Большинство работ над Cosmos в настоящее время направлены на развитие сетевого интерфейса, однако система уже поддерживает некоторые сетевые карты и некоторые черты TCP/IP. В настоящее время существуют две версии Cosmos, (более поздняя) версия с исходным кодом и релизная версия (известная как пользовательский комплект). Версия с исходным кодом предназначена для тех, кто хочет помочь разработать ядро, в то время как пользовательский комплект предназначен для тех, кто просто хочет использовать Cosmos для развития своей собственной операционной системы. За некоторое время до выхода Milestone 3 было рекомендовано, чтобы все пользователи скачали исходный код, так как предыдущий комплект от Milestone 2 устарел.

Cosmos использует Syslinux в качестве загрузчика, однако ранее использовался также GRUB.

Написание кода

Интерфейс Cosmos Builder

Операционная система, построенная на Cosmos, начинает жизнь как .NET проект (в частности, консольные приложения). Разработчик вначале добавляет специальный код, который позволяет системе Cosmos скомпилироваться и запуститься. Пользователь добавляет следующий код в метод Main():

Cosmos.Compiler.Builder.BuildUI.Run()

Этот код открывает окно Cosmos Builder, которое используется разработчиками для компиляции кода в машинный код операции. Оно вызывается при запуске .NET приложения, но исключается из возможных операционных систем.

Затем разработчик добавляет новый метод к классу Program, называемый Init(). Метод выглядит следующем образом:

public static void Init()
{
   Cosmos.Sys.Boot xBoot = new Cosmos.Sys.Boot();
   xBoot.Execute();
   //Остальной код сюда...
}

Этот метод будет вызван первым при загрузке операционной системы. Первые две строки настраивают систему, на загрузку драйверов и подготовку машины. В практической операционной системе, разработчик заменит //Остальной код сюда… кодом своей операционной системы. Этот код может использовать любые объекты библиотек .NET Framework, которые поддерживает Cosmos (либо переводом объекта в машинный код, либо каждую из его частей). Он также может вызвать любую библиотеку, встроенную в Cosmos.

Пользовательский комплект и Visual Studio

Пользовательский комплект является частью Cosmos, направленный на упрощения использования Cosmos для разработчиков, использующих Microsoft Visual Studio. При установке комплекта добавляется новый тип проекта в Visual Studio, под названием Cosmos Project. Представляет собой модифицированную версию консольного приложения, с уже добавленным компилятор Cosmos и незавершённым кодом загрузки.

Компиляция проекта

Как только код будет завершён, пользователь может скомпилировать проект, используя предпочтительный компилятор .NET. Это превращает приложения из оригинального исходного кода (C# или другого) в Microsoft Intermediate Language, на родном языке .NET Framework. Далее следует запустить приложение, с указанием окна Cosmos Builder, которое представляет разработчику параметры, которые определяют, как именно компилировать проект. Эти параметры включают загрузку проекта — через эмуляторы такие как QEMU, Virtual PC и VMWare, запись в образ диска (ISO-файл), который впоследствии может быть записан на CD-ROM, или загружен через сеть PXE, а также параметр отладки Cosmos с использованием встроенного отладчика, и другие параметры.

Когда пользователь выбрал желаемые параметры, он нажимает кнопку «Build». Это приводит к вызову компилятора IL2CPU, который систематически просматривает все приложения CIL-кода (за исключением кода компилятора Cosmos), превращая его в язык ассемблера для выбранной архитектуры процессора. Далее, Cosmos вызывает выбранный ассемблер для преобразования этого кода с языка ассемблера на родной код операции процессора. Наконец, активизируются желаемые результаты, будь то запуск эмулятора, запуск PXE движка, или чтение с ISO-файла.

Функции отладки

Cosmos предлагает несколько вариантов отладки вывода.

Виртуализация

Стандартный загрузочный экран Cosmos.

Cosmos позволяет пользователю загрузить свою операционную систему с помощью виртуальной машины. Это позволяет разработчикам тестировать систему на своём компьютере без необходимости перезагрузки, давая преимущества, не требующие дополнительных аппаратных средств и не требующий от разработчика покинуть свою среду разработки. Чтобы разрешить это, Cosmos делает возможным использовать одного из трёх эмуляторов. QEMU, параметр загрузки по умолчанию, является свободным эмулятор, который поставляется вместе с Cosmos. VMWare — эмулятор, который может быть загружен с сайта компании VMware, со свободными и платными версиями. Virtual PC — бесплатный эмулятор, который может быть загружен с веб-сайта Майкрософт [1]. А также эти эмуляторы имеют функцию компиляции образа диска, которая позволяет проекту Cosmos быть загруженным в любом эмуляторе, который позволяет загружать образ диска.

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

Образы дисков

Этот параметр записывает операционную систему на образ диска (ISO-файл), который может быть загружен в некоторых эмуляторах (например, Virtual PC) или записать на CD-ROM и загрузиться на реальном оборудовании.

Сетевая загрузка PXE

Этот параметр позволяет устанавливать операционную систему для загрузки на реальном оборудовании. Данные передаются через сеть LAN на клиентскую машину. Это требует наличия двух компьютеров — одного в качестве клиентской машины (на которой загружается операционная система) и одного в качестве сервера (как правило, машина разработчика). Также требуется сеть, соединяющая два компьютера, и клиентская машина должна иметь сетевую карту и BIOS, которые поддерживают загрузку PXE.

Ассемблер

Основным сборщиком систем Cosmos должен был стать специально разработанный ассемблер. Однако, из-за его неэффективности и медлительности используется ассемблер NASM.

Примечания

См. также

Ссылки

This article is issued from Wikipedia. The text is licensed under Creative Commons - Attribution - Sharealike. Additional terms may apply for the media files.