RSS

Jak napisać system operacyjny

Liczba odsłon: 458

te­le­dy­sku gru­py Inter­mission sprzed prze­szło dwu­dzie­stu lat uoso­bie­nie Stwórcy czy­ta w cza­sie ką­pie­li po­rad­nik „Jak stwo­rzyć świat”. Ja mam dla Was dzi­siaj lek­tu­rę na pew­no nie tak po­tęż­ną, jed­nak nie­sa­mo­wi­cie am­bit­ną i eks­cy­tu­ją­co kon­kret­ną.

The Little Book About OS Develop­ment to kwin­te­sen­cja te­go, czym po­wi­nien być Inter­net. Zwięzła, jed­no­stro­ni­co­wa publi­kac­ja za­wie­ra wszyst­kie in­for­mac­je po­trzeb­ne do stwo­rze­nia włas­ne­go sys­te­mu opera­cyj­ne­go.

Kurs za­czy­na­my od poz­na­nia na­rzę­dzi, za po­mo­cą któ­rych mo­że­my stwo­rzyć na­sze dzie­ło. Następ­nie two­rzy­my ty­po­wy przy­kład Hello world, naj­pierw ogra­ni­czo­ny do za­pi­sa­nia za­da­nej war­toś­ci do re­je­stru pro­ce­so­ra, a póź­niej fak­tycz­nie ko­mu­ni­ku­ją­cy się z użyt­kow­ni­kiem za po­śred­nic­twem kla­wia­tu­ry i ekra­nu. Z po­zio­mu asem­ble­ra szyb­ko prze­cho­dzi­my do ję­zy­ka C. Kolejne przy­kła­dy pi­sa­ne są już w tym ję­zy­ku wy­so­kie­go po­zio­mu i za­poz­na­ją nas z me­cha­niz­ma­mi seg­men­tac­ji, stro­ni­co­wa­nia i po­zio­mów do­stę­pu mi­kro­pro­ce­so­rów z ro­dzi­ny IA-32. Na ko­niec do­wia­du­je­my się, jak two­rzyć i uru­cha­miać włas­ne pro­gra­my po­zio­mu użyt­kow­ni­ka oraz po­zwo­lić im na ko­mu­ni­ko­wa­nie się z sys­te­mem.

Nie ma dzi­siaj więk­sze­go sen­su pi­sać włas­ne­go sys­te­mu opera­cyj­ne­go od pod­staw. Powody ku te­mu przed­sta­wi­łem już dzie­sięć lat te­mu, a obec­na do­mi­nac­ja sys­te­mów Win­dows, macOS oraz GNU/Linux sta­no­wi naj­lep­szy do­wód ich słusz­noś­ci. Warto jed­nak po­znać „wnętrz­noś­ci” każ­de­go sys­te­mu opera­cyj­ne­go oraz spo­sób, w ja­ki kom­pu­ter roz­po­czy­na swo­ją pra­cę i nad­zo­ru­je dzia­ła­nie uru­cha­mia­nych pro­gra­mów.


A co sądzi Pan o systemie takim jak Redox? Pokaz możliwości języka?
Istnieje wiele eksperymentalnych systemów operacyjnych. Z bardziej znanych należy wymienić Microsoft Singularity i Midori. Istnieją systemy otwarte pisane w Javie (JavaOS) i C# (Cosmos). Kiedyś bardzo mocno rozwijane były SkyOS czy TriangleOS. Częściowo stanowią one pokaz możliwości języka, a częściowo po prostu wprawkę jakiegoś zespołu chcącego przetestować, czy koncepcja napisania systemu w ulubionym języku jest sensowna i realna.
Z punktu widzenia entuzjasty programowania i komputeryzacji trzeba takim inicjatywom przyklasnąć, aczkolwiek nie wolno zapominać, że tego typu działania są z góry skazane na niepowodzenie. Nawet Microsoft traktuje Singularity i Midori nie jako następców Windows (przynajmniej na razie), a jedynie wylęgarnię pomysłów trafiających potem drobnymi kroczkami do istniejących systemów i środowisk programowania.
Oczywiście, w czasach CP/M też niektórzy mówili, że bezwładność rynku jest taka, że MS-DOS nigdy nie zdobędzie popularności ;) Ale jednak dzisiaj mamy nieco inne czasy i nawet względnie popularne systemy *BSD stanowią niszę.
Gdyby jednak jakiś marzyciel tu trafił i chciał spróbować :) to polecam kurs o systemie Xv6 z MIT, dołączony jest podręcznik i oczywiście kod, jeśli kogoś strona z tego wpisu zainspiruje, żeby pogrzebać.
Dziękuję za cenną informację i również zachęcam w takim razie marzycieli do zapoznania się z tym systemem – szczególnie, że ma charakter mocno dydaktyczny. Sam chętnie się zapoznam w wolnej chwili.

Dodatkowo, osoby ciekawe budowy systemów operacyjnych (nawet nie dlatego, żeby chciały same je budować) mogą upolować książkę "Podstawy systemów operacyjnych" Abrahama Silberschatza. "Ciężka" lektura, ale wszystkie koncepcje opisano w niej bardzo dokładnie.
W ramach ciekawostek i aktualizacji:

1. Wyszła nowa wersja Redox: http://www.osnews.com/story/29589/Rust-based_Redox_OS_0_0_6_Released

2. Kolejnym eksperymentalnym systemem operacyjnym napisanym w języku Rust jest Rux: http://www.osnews.com/story/29596/Rux_a_hobbyist_microkernel_written_in_Rust