Quarn OS 0.0.90
22 lutego 2009
Po długim okresie prac nad Quarnem (niestety nie obyło się bez przerw), w końcu zdecydowałem się na wydanie wersji 0.0.90. Warto zaznaczyć, że nie jest to wersja nadająca się do użytkowania. Jej głównym zadaniem jest wyznaczenie osiągniętego milestone.
Zainteresowani mogą ściągnąć Quarna tutaj lub bezpośrednio tutaj. Możliwe jest także ściągnięcie gotowego obrazu dyskietki w tym miejscu. Uprzedzam, że w wielu częściach kod jest jeszcze niedopracowany i czasami wręcz razi błędami, jednak głównym celem tego wydania było ustabilizowanie pewnej podstawy na bazie której będą prowadzone dalsze prace. W najbliższej przyszłości planuję po kolei zająć się poszczególnymi elementami systemu znacząco je dopracowując. Obecnie, są one jedynie zalążkami, których głównym zadaniem jest wykorzystanie możliwości podsystemu Manes.
Quarn w wersji 0.0.90 posiada zaimplementowane między innymi:
- Managed Execution System
- Execution Flow Controller
- podstawowe sterowniki (klawiatura, dma, fdc, pic, pit, rs232, pci)
- wielozadaniowość z planistą round-robin (wywłaszczanie)
- alokator pamięci O(1)
- podstawowe elementy interfejsu Hydra
- port Hydry do POSIX
- podstawowe wsparcie dla FAT12
- wsparcie dla RTTI w C++
- wsparcie dla plików ELF, dynamiczny konsolidator
- ładowanie modułów kernela
- wykonywanie zewnętrznych plików
- systemu zasobów, urządzeń i usług
W tym momencie należą się pewne wyjaśnienia co do niektórych elementów Quarna. Co prawda w przyszłości zamierzam napisać o nich dużo więcej, jednak teraz przynajmniej podam ogólny zarys ich działania.
Manes
Managed Execution System (Manes) jest systemem rozproszonej dystrybucji obiektów i komponentów (przypomina systemy typu CORBA czy COM). Jest sercem Quarna, rozwiązującym wszelkie kwestie związane z modułowością i komunikacją pomiędzy poszczególnymi elementami systemu. W przyszłośći Manes wspierać będzie także szereg dodatkowych technologii jak na przykład programowanie aspektowe.
Kolejnym elementem bardzo mocno związanym z Manes jest Execution Flow Controller. Wykorzystuje on tablice metod wirtualnych do wstrzykiwania kodu, który zostanie wykonany przed wywołaniem takiej funkcji składowej. Pozwala to na implementację większości funkcji dostarczanych przez Manes.
Hydra
Innym istotnym elementem Quarna jest Hydra czyli główne API jakie jest dostarczane aplikacjom. Obejmuje między innymi interfejs użytkownika (obecnie tylko w trybie tekstowym, w przyszłości także i w graficznym), operacje wejścia-wyjścia, wielowątkowość itp. Możliwe jest uruchomienie programów napisanych przy wykorzystaniu Hydry na każdym systemie zgodnym z POSIX dzięki specjalnej warstwie pośredniczącej. W Quarnie 0.0.90 jest to zaprezentowane za pomocą domyślnego shella.
Podsumowanie
Quarn jest projektem amatorskim w związku z czym prace nad nim czasowo ulegają większemu spowolnieniu. Nie skupiam się w nim na uzyskiwaniu jak największej funkcjonalności lecz na zastosowaniu ciekawych, nowych rozwiązań. Dlatego też obecna wersja nie powala swoimi możliwościami i służy głównie ułatwieniu w utrzymaniu porządku w kodzie.
Komentarze do wpisu "Quarn OS 0.0.90":
1.
hells.of.iron napisał(a):
22 lutego 2009, 11:24:47
Zapoznałem się z celami, które chcesz osiągnąć w następnych wydaniach i robią one wrażenie jeśli się weźmie pod uwagę, że projekt jest jak sam piszesz "amatorski". Ktoś inny nad tym z Tobą pracuje, czy jest to jednoosobowy projekt?
2.
Paweł Dziepak napisał(a):
22 lutego 2009, 11:28:21
Jest to projekt jednoosobowy, który pełni także funkcję edukacyjnego (oczywiście nie ma to najmniejszego związku ze szkołą). Trudno znaleźć lepszą motywację do poznawania nowych rzeczy niż ciekawy projekt do rozwijania.
3.
hells.of.iron napisał(a):
22 lutego 2009, 11:34:05
To życzę powodzenia i sporo radości z projektu :)
(Może kiedyś też znajdę czas na swój mały OS - na razie mam detox od tych rzeczy...)
4.
Michał Cywiński napisał(a):
22 lutego 2009, 12:24:56
Ja proponuję połączenie sił :)
5.
hells.of.iron napisał(a):
22 lutego 2009, 12:49:52
Jak już pisałem – mam detox od OS'ów - czyli jeszcze przez najbliższe kilkanaście miesięcy (im dłużej, tym lepiej) nie będę się tym zajmował.
Druga ważna sprawa wygląda tak, że Paweł robi Swój OS i na pewno nie chce, żeby mu ktoś przy tym grzebał, coś doradzał etc. Gdyby było inaczej, zająłby się jakimś BSD czy innym Linuksem.
Trzecia mało ważna sprawa jest taka, że nie będę brał udział w żadnych przedsięwzięciach open source, bo jak znikam, to później pojawiają się różne żale i tym podobne. Ludzie oczekują, że będę im coś wyjaśniał i się z czegokolwiek tłumaczył *.
* To akurat bardzo popularne zajęcie dla różnych pa... - ostatnio widziałem jak obsmarowali niejakiego Korneliusza Jarzębskiego na forum popularnej strony, bo kiedyś tam zniknął i teraz znowu pisze swojego bloga. Cóż - tak wygląda wolność ludzi w "otwartym" świecie :) Ja nie chcę mieć z nią nic wspólnego.
6.
Bartek napisał(a):
22 lutego 2009, 14:31:18
"Compiling Quarn OS...
Makefile:91: *** You have to configure Quarn OS first.. Stop."
Pewnie jestem ślepy, ale niegdzie na stronie ani w docsach nie znalazłem żadnych instrukcji, jak to zrobić.
7.
radex napisał(a):
22 lutego 2009, 14:49:47
Brawo ;) Obserwuję ten projekt od pewnego czasu i bardzo mi się on podoba, tak więc życzę powodzenia ;)
8.
Paweł Dziepak napisał(a):
22 lutego 2009, 16:30:32
@Bartek: rzeczywiście powinienem dorzucić jakiś README albo przynajmniej umieścić w tym komunikacie informację jak go skonfigurować. make defconf załatwi sprawę. Pełną listę możliwości wyświetla make help z tym że nie wszystkie opcje konfiguracyjne są przetestowane (w końcu to wersja rozwojowa).
9.
Elwis napisał(a):
22 lutego 2009, 16:36:32
To jesteśmy o krok bliżej. Teraz jak to uruchomić pod qemu. Z tego co widzę, plik wynikowy jest w formacie ELF, co zupełnie zbiło mnie z tropu.
10.
Dominik Porada napisał(a):
22 lutego 2009, 16:38:13
Gratulacje i powodzenia w planowaniu kolejnych deadline’ów. ;-)
11.
Paweł Dziepak napisał(a):
22 lutego 2009, 16:39:58
Cóż... napiszę na szybko README i podmienię paczkę na sf.net bo jakoś tak nie uświadomiłem sobie, że nie każdy jest jasnowidzem i może nie przewidzieć odpowiedniego sposobu uruchamiania quarna.
Polecenie make qemu tworzy obraz dyskietki i uruchamia go przy użyciu tego emulatora. Z tym, że na chwilę obecną ten skrypt wymaga prawa administratora i w trakcie swojego działania wykona polecenie z sudo. Jeżeli jest to problem to wkrótce wrzucę na sf.net gotowy obraz dyskietki.
12.
radex napisał(a):
22 lutego 2009, 16:40:03
Elwis -
make fd_img
qemu -fda fd.img
Dodaj komentarz: