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

Материал из Википедии — свободной энциклопедии
Перейти к: навигация, поиск
Cosmos
Cosmos Logo
Cosmos Test Shell
Скриншот оболочки Cosmos из-под QEMU
Разработчик

Cosmos Project

Последняя версия

103291 — 6 августа 2013

Тип ядра

микроядро

Лицензия

BSD

Состояние

Бета-тестирование

Веб-сайт

Cosmos.Codeplex.com

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 является бэкронимом от 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.

Примечания[править | править вики-текст]

См. также[править | править вики-текст]

Ссылки[править | править вики-текст]