Pull to refresh

COSMOS пишем небольшую ОС на C#

Здравствуй сообщество Хабрахабра, наверное многие слышали про проект COSMOS? Вот о нем и пойдет речь сегодня.

Предисловие


COSMOS это одна из немногих операционных систем написанных на C#, это даже не операционная система, а скорее фреймворк для программистов. Операционная система полностью открыта, и для создания ядра нам потребуется Visual Studio 2010 Express или Professional, конечно, желательней Professional.


Установка


Заходим на сайт проекта, если у Вас хорошо с английским можете прочитать документацию. Скачиваем последний билд (при написании этой статьи последним был 92560), затем загружаем Visual Studio 2010 с официального сайта Microsoft. Затем необходимо загрузить VMware Player (или Workstation) отсюда, а так же VIX API необходимый для тестирования нашей ОС.

Если Вы используете Express

Необходимо загрузить Microsoft Visual Studio 2010 Shell .

Пишем код


И так давайте создадим проект, при создании проекта в конце списка должно появится Cosmos C# Library, он то нам и нужен. При создании мы видим класс Kernel в котором две функции BeforeRun и Run, данные функции защищены поэтому вызвать их из другого класса не получиться. BeforeRun это нечто напоминающее приветствие, функция Run — само ядро. Хотя Run можно использовать в качестве простой передачи управления незащищенному классу для легкого доступа к нему из другого класса. Ну и в конце-концов, давайте напишем «Hello, World!»
using System;
using System.Collections.Generic;
using System.Text;
using Sys = Cosmos.System;

namespace CSharpKernel1
{
    public class Kernel : Sys.Kernel
    {
        protected override void BeforeRun()
        {
            Console.WriteLine("Hello, World! It's my OS!");
        }

        protected override void Run()
        {
            Console.Write("> ");
             var In = Console.ReadLine();
        }
    }
}


В системе работают только системные namespace's System, System.Text и System.Collections.Generic. В операционной системе реализована так же поддержка VGA и SVGA. Простой терминал пишется очень легко, давайте напишем простую команду help.
using System;
using System.Collections.Generic;
using System.Text;
using Sys = Cosmos.System;

namespace CSharpKernel1
{
    public class Kernel : Sys.Kernel
    {
        protected override void BeforeRun()
        {
            Console.WriteLine("Hello, World! It's my OS!");
        }

        protected override void Run()
        {
            Console.Write("> ");
            var In = Console.ReadLine();
            if (In == "help") {
                     Console.WriteLine("A basic terminal of my OS! Type 'help' again!");
        }
    }
}

Ну в принципе, вот и все, осталось только это все протестировать.

Тестирование


Конечно же не забываем построить проект в главном Visual Studio, а теперь открываем Visual Studio Shell. Ничего страшного в этом нету, так же создаем проект Cosmos Project. И видим что сбоку панель ссылок, нам она и понадобится. Добавляем ссылку (Project -> Add Reference) и выбираем получившийся dll в нашем проекте, который мы делали выше (C:\username\Documents\Visual Studio\Projects\project\bin\debug\). Запускаем. Проект собирается достаточно долго, но подождать можно. Вот перед нами и появилась наша новорожденная ОС.

image
Tags:
Hubs:
You can’t comment this publication because its author is not yet a full member of the community. You will be able to contact the author only after he or she has been invited by someone in the community. Until then, author’s username will be hidden by an alias.