Własny system operacyjny

Odpowiedz Nowy wątek
2019-04-02 15:51
0

Cóż. Dzisiaj chciałbym poruszyć pewien temat który nurtuje mnie od pewnego czasu. Mianowicie do napisania własnego systemu operacyjnego w stylu np. linuxa androida czy windowsa jakiego języka się najlepiej uczyć ?

Pozostało 580 znaków

2019-04-02 15:54
2

Większość kodu jest napisana w C. Jednak na początek może napisz sobie jakieś kółko krzyżyk bo to nie takie hop siup napisać system ;P

Pozostało 580 znaków

2019-04-02 16:17
5

Większość kodu systemu operacyjnego to C i częściowo Assembly. Generalnie to ze swojej strony napiszę, że odkąd wszedłem w nisko-poziomowe programowanie to moim celem jest napisanie jakiegoś własnego OS'a. (oczywiście mniej zaawansowanego) Niestety, ale jest to bardzo trudna sprawa i myślę, że jeszcze dużo przede mną, żeby stworzyć coś co miałoby ręce i nogi.

Dla przykładu trzeba zaimplementować bezpieczne i wydajne zarządzanie pamięcią, przejść z trybu 16-bitowego do trybu 32-bitowego, żeby załadować kernela (16-bitowy Assembly tam wchodzi w grę). Ciekawe są też na przykład biblioteki dynamiczne i linkery, kompilatory, a dodatkowo na Twoim OS'ie przecież będzie całkiem czysto więc jest możliwość, że trzeba by zaimplementować bibliotekę - coś jak libc. Dochodzi do tego multitasking, logowanie użytkowników, oddzielenie sesji, obsługa wątków. (scheduler) Najciekawsza może być np. bezpośrednia interakcja ze sprzętem, a co za tym idzie implementacja user-mode i kernel-mode. Generalnie bardzo trudną sprawą jest też bezpieczeństwo takiego OS'a.

Podsumowując: Pisanie OS'a to chyba jeden z najtrudniejszych projektów do napisania, ale według mnie też jeden z najciekawszych. Jest to do zrobienia i bardzo wiele można się przy tym nauczyć, ale na początek lepiej zająć się "mniejszymi rzeczami". Możesz pobawić się na przykład projektami, które pozwolą na niskie zarządzanie pamięcią w C, napisać coś w Assembly - zrozumieć mniej więcej jak działa procesor, stos, sterta, ale na pewno zabieranie się od razu za OS to nie jest zbyt dobry pomysł.
Niemniej powodzenia jeśli chciałbyś się w to bawić!

W każdym razie jeśli chciałbyś looknąć jak zacząć tworzyć taki OS i jakie trudności możesz napotkać to polecam krótką serię od @Gynvael Coldwind -> https://www.youtube.com/watch[...]qiD7wAd5D-fe-Qz027_1yAH3rFMYF + https://wiki.osdev.org/Main_Page.
Myślę, że ciekawa jest również strona odnośnie kernela Linuxa dla początkujących - taka mini seria poradników -> https://kernelnewbies.org/


Pozostało 580 znaków

2019-04-02 16:24
2

przełączanie do 32 bitów można szybko załatwić użyciem gotowego bootloadera takiego jak GRUB :) ale bez assembly i tak się nie obejdzie

Pozostało 580 znaków

2019-04-02 16:49
0

Ok dzięki wszystkim za pomoc. Dzięki wam już wiem od czego mam zacząć. Jeszcze raz wielkie dzięki.

Pozostało 580 znaków

2019-04-02 16:58
3

A ja dla odmiany proponuję "wejść w temat", masz przewagę, że nie wiesz czego jeszcze nie wiesz :) Bo gdybyś wiedział z czym to się je to oczywiście temat byś sobie odpuścił.

A tak bardziej na serio to proponuję zacząć od stworzenia własnej dystrybucji Linux, tak od zera. Chodzi mi o zbudowanie wszystkiego łącznie z bootloader'em ze źródeł, skonfigurowanie kernela i poskładanie w działającą całość. Najlepiej na jakąś platformę nie-x86, np. RPi, tak aby korzystać z cross-compiler'a. Zdobędziesz mnóstwo wiedzy, zrozumiesz dlaczego koledzy napisali takie a nie inne porady i zorientujesz się że język programowania to akurat najmniejszy problem.


Pozostało 580 znaków

2019-04-02 17:27

Moim zdaniem szkoda życia na pisanie własnego OSa, czy języka programowania. Świata tym nie zawojujesz. W przypadku tak zaawansowanych tworów, najlepiej dołożyć cegiełkę do istniejących produkcji, czy to w postaci jakiejś aplikacji, czy usprawnień na niższym poziomie, zamiast budować cały chiński mur z ciężkich cegieł...

edytowany 1x, ostatnio: Spine, 2019-04-02 17:28

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0