Strona używa cookies (ciasteczek). Dowiedz się więcej o celu ich używania i zmianach ustawień. Korzystając ze strony wyrażasz zgodę na używanie cookies, zgodnie z aktualnymi ustawieniami przeglądarki.    X

COSMOS - System operacyjny w kodzie zarządzanym

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:

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:

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! 

Komentarze

0 nowych
TestamenT   11 #1 01.09.2011 10:04

Skoro w java można było napisać system operacyjny to i również w C#.

Tylko szkoda że do zabawy z COSMOS jest wymagany Windows.
Mimo to projekt bardzo ciekawy i skoro można używać C# to również Python. Skoro jest implementacja dla .Net

No ja niestety widzę haczyk bo w FAQ pisze że wersja Milestone 5 na Visual Studio Express nie będzie działać.

mcywinski   3 #2 01.09.2011 11:05

FAQ jest nieaktualny. Do wersji Express wymagany jest Visual Studio 2010 Shell Integrated.

Draqun   9 #3 02.09.2011 00:36

Pomysł fajny. Wreszcie jest powód dla mnie aby nauczyć się C# :).

@TestamenT
@Skoro w java można było napisać system operacyjny to i również w C#.

Można więcej? Jaki system, jakie środowisko najlepiej link do wiki :)

Draqun   9 #4 02.09.2011 00:36

Pomysł fajny. Wreszcie jest powód dla mnie aby nauczyć się C# :).

@TestamenT
@Skoro w java można było napisać system operacyjny to i również w C#.

Można więcej? Jaki system, jakie środowisko najlepiej link do wiki :)

TestamenT   11 #5 02.09.2011 01:12

@Draqun
System zwie się JNode
http://www.jnode.org/
http://en.wikipedia.org/wiki/JNode

I nawet wzmianka o tym systemie na dp
http://www.dobreprogramy.pl/JNode,Aktualnosc,9969.html

MiL-   8 #6 02.09.2011 09:33

Trochę to bez sensu, niedługo będą systemy pisane w Basicu i na nowoczesnym sprzęcie będą działały jak Windows na XT 4.77MHz. Po co? Chyba tylko dla sportu.

TestamenT   11 #7 02.09.2011 10:44

@MiL-
Jest to możliwe bo basic wciąż żyje a przykładem tego jest FeeBasic

System jaki znalazłem
FROST http://sourceforge.net/projects/frostkernel/

Jakby ktoś pytał to w FreePascal również da się napisać OS :)
Zresztą tu pisze co i jak na temat pisania własnego systemu operacyjnego http://wiki.osdev.org/Main_Page

Ja czekam na szaleńca który napiszę własny system w python+asembler :D

  #8 02.09.2011 10:48

bez sensu pomysł, marnowanie czasu. zajęli by się czymś pożytecznym, tyle genialnych projektów opensource nie jest rozwijanych bo brak developerów... to zaczynają nową pierdołę do niczego.

TestamenT   11 #9 02.09.2011 10:52

Taka mała literówka nie FeeBasic tyko FreeBasic :)

  #10 02.09.2011 11:34

Ja podziwiam tego, kto napisał ten system:
http://pl.wikipedia.org/wiki/MenuetOS

TestamenT   11 #11 02.09.2011 11:52

@Nietoperz75 (niezalogowany) a co powiesz na to http://fresh.flatassembler.net/ :D

mcywinski   3 #12 02.09.2011 14:47

Dla tych co nie widzą sensu w takim OS: Wyobraźcie sobie OS wyspecjalizowany w konkretnej rzeczy: Bez narażenia na dziury w innym sofcie. Mnóstwo wirtualnych maszyn z różnym OS od różnego zadania :)

wojtekadams   18 #13 02.09.2011 19:06

@mcywinski
troche przesada :) towrzyc x virtualnych maszyn zeby jedna robila kawe a druga myka kubek...

mcywinski   3 #14 02.09.2011 19:54

Być może przesadziłem, ale nadal wierzę że można zrobić OSy z wyspecjalizowanymi zestawami narzędzi. A nawet jak nie to, to jest to choćby świetne narzędzie edukacyjne przed tworzeniem OSa z pełnego zdarzenia.

Draqun   9 #15 02.09.2011 23:08

Bardzo dobrą sprawą jest możliwość pisania OS w taki sposób. Oczywiście największe są zalety edukacyjne ale jeśli ktoś potrzebuje zrobić sobie system co będzie mu siedział w zmywarce to niech sobie zrobi. Mnie się bardzo podobają takie projekty. Zarówno wyżej wspomniane Menuet jak i JNode. Jeśli taki JNode dojrzeje do miana pełnoprawnego systemu to może się okazać, że będzie to najlepsza platforma dla aplikacji Java :)

4lpha   9 #16 02.09.2011 23:18

@mcywinski | 02.09.2011 14:47
Dobry przykład ;)

TestamenT   11 #17 02.09.2011 23:40

A tak odnośnie systemu edukacyjnego to przypomniał mi się MikeOS http://mikeos.berlios.de/

Który tak jak MenuetOS jest napisany w asemblerze tylko że jako kompilatora używa nasm

  #18 06.09.2011 22:27

Da się to uruchomić jako standalone?

mcywinski   3 #19 15.09.2011 12:51

Oczywiście, system może bez problemu stać na maszynie rzeczywistej.

  #20 02.03.2012 16:27

Witam, Mam pytanie:
Załóżmy że z grupą informatyków napiszę jakiś OS - to będę go mógł potem rozpowrzechniać za pieniądze (jako produkt płatny) ?

  #21 20.05.2012 19:14

Tak będziesz mógł. Jednak to bez sensu

  #22 16.05.2014 08:02

A czy pod Cosmos da sie otwierać programy Windowsowe ? Czy trzeba specjalnie do tego dostosowywać nowy system ?