Blog (12)
Komentarze (42)
Recenzje (0)
@mcywinskiCOSMOS - System operacyjny w kodzie zarządzanym

COSMOS - System operacyjny w kodzie zarządzanym

01.09.2011 01:31

W skrócie

System operacyjny pisany w języku C# albo Visual Basic.net? Wydaje się niemożliwe, prawda? W końcu kod źrodłowy pisany w tych językach jest kompilowany do kodu pośredniego IL w sposób podobny do Javy. To oznaczałoby, że stworzenie w nich własnego OS jest niemożliwy, bo IL wymaga środowiska uruchomieniowego.

A jednak idea pisania systemu operacyjnego w wysokopoziomowym języku programowania jest możliwa dzięki projektowi COSMOS. W skrócie: przekształca on IL na ASM x86, dorzuca loader na PXE/floppy/cd/dvd/pendrive/inne urządzenie i voila! - Nasz najprostszy OS może być napisany w zaledwie kilku(nastu) liniach kodu źródłowego w dowolnym języku programowania wspieranym przez platformę .net Framework. Oczywiście, w praktyce prawdziwy system będzie oznaczał dla nas tysiące linii kodu źródłowego.

W szczegółach

Dlaczego nazwa COSMOS? Pochodzi ona od C# Open Source Managed Operating System. Dlaczego nie Visual Basic Open Source...? Bo COSMOS brzmi po prostu fajniej od VBOSMOS.

Dzięki COSMOS pisania własnego OSa może spróbować każdy, kto zna choć trochę język C# i programowanie konsolowe! Zapraszam do zapoznania się ze szczegółami

W praktyce

COSMOS, jak rozwinięcie nazwy mówi, jest projektem Open Source, w którym uczestniczyć może każdy. Na stronie stronie internetowej projektu znajduje się aktualna lista developerów, dyskusje, linki do bugtrackera i tak dalej. Można też stamtąd ściągnąć userkit (gotowy kernel, do której sami piszemy elementy) lub devkit (kernel, w którym możemy dowolnie „grzebać” i dostosowywać do swoich wymagań).

Do uruchomienia UserKitu/DevKitu wymagane jest Visual Studio 2010 w dowolnej edycji, w tym darmowej Express Edition. Przyda się także dowolna wspierana wirtulna maszyna: QEMU, VMWare Player/Workstation, MS Virtual PC lub inna.

W kodzie

Kod naszego systemu operacyjnego piszemy w Visual Studio, tak jak zwykłą aplikację. Bez haczyków, bez ukrytych, drobnych druczków. Po prostu:

Console.WriteLine(„Hello!”);

I na ekranie wyświetla się „Hello!”. Kompilacja? Standardowo dla VS: klawisz F5. Odpala on automatycznie wirtualną maszynę z debuggerem:

393767

Jak to się dzieje, że w Visual Studio możemy debugować nasz system operacyjny, a co za tym idzie podglądać zawartość naszych zmiennych i zatrzymywać jego działanie na wybranej linii kodu? Używane są do tego wirtualizowane w wirtualnych maszynach porty COM. Dzięki temu w Visual Studio możemy zrobić „myk” jak na obrazku poniżej:

393769

I tyle. Bez kruczków i drobnych druczków. Możemy także do debuggera prostym kodem (Debugger.Send(„Witaj moje IDE!”);) wysyłać komunikaty.

W ustawieniach kompilacji naszego systemu operacyjnego można także wybierać opcję czy system ma być w wersji Debug/Release, jakiego rodzaju ma być odpalanie (PXE/obraz ISO z bootsectorem który jest automatycznie tworzony/inny).

Jaki jest haczyk?

Nie ma haczyka. Piszesz, działa! Co więcej, możesz używać specjalnej wersji języka ASM‑o podobnego, którego specyfikacja jest na stronie projektu. Wszystko jest już tylko ograniczone Twoją inwencją i umiejętnościami programisty.

Projekt jest wciąż we wczesnej fazie rozwoju, a potrafi wiele. Praktycznie wprowadzona jest obsługa FAT i ext2, obecnie opracowywane są Sockety i inne funkcje. Pomimo, że na razie nie można tego traktować jako narzędzia potężniejszego od języka C w połączeniu z ASM, ani też jako rozwiązania do tworzenia poważnego systemu, to patrzę z dużą nadzieją na ten projekt. Sam zacząłem pisać swój miniaturowy klon DOSa. Co z tego wyjdzie – zobaczymy! Na razie zachęcam do zabawy z COSMOSem. Wciąga!

Wybrane dla Ciebie
Komentarze (22)