Ta wikiHow uczy, jak planować i rozwijać system operacyjny, jeśli nie wiesz, jak kodować w C lub C++. Systemy operacyjne zarządzają sprzętem komputerowym i zapewniają zasoby potrzebne aplikacjom do działania. Napisanie systemu operacyjnego od podstaw wymaga silnej znajomości informatyki, języka programowania takiego jak C lub C++, asemblera i praktyk zarządzania kodem.
Kroki
Część 1 z 2: Nauka podstaw
Krok 1. Weź udział w kilku podstawowych kursach informatyki
W przeciwieństwie do tworzenia aplikacji internetowych, tworzenie systemu operacyjnego wymaga dobrego zrozumienia algorytmów, struktur danych, sprzętu komputerowego i zarządzania zasobami. Ludzie zdobywają stopnie naukowe w tej dziedzinie, więc nie oczekuj, że napiszesz cały system operacyjny po przeczytaniu samouczka online! Kurs Harvard Wprowadzenie do informatyki jest dostępny online za pośrednictwem EDX bez żadnych kosztów.
Krok 2. Naucz się języka programowania wysokiego poziomu, takiego jak Python
Kiedy już zdobędziesz solidną podstawową wiedzę na temat informatyki, następnym krokiem jest opanowanie C i/lub C++. Podobnie jak nauka informatyki, opanowanie języka nie jest opcjonalne - nie będziesz w stanie zakodować systemu operacyjnego, jeśli nie będziesz potrafił pisać solidnych aplikacji.
Jeśli jesteś nowicjuszem w C, zapoznaj się z kursem Dartmouth C Programming: Getting Started, który jest bezpłatny przez EDX. Po ukończeniu tego kursu możesz wziąć udział w następnym kursie z serii: Programowanie w języku C: podstawy języka. Następnie przejdź do kolejnych kursów, takich jak Programowanie modułowe i zarządzanie pamięcią oraz Wskaźniki i zarządzanie pamięcią
Krok 3. Naucz się języka asemblera
Języki asemblera to języki niskiego poziomu zaprojektowane do komunikacji z różnymi procesorami. Ponieważ asembler różni się dla różnych typów procesorów (np. język asemblera x86 dla procesorów Intel, AMD, VIA i innych), będziesz musiał nauczyć się wersji dla typu procesora, dla którego kodujesz.
- Ta książka o otwartym kodzie źródłowym, jeśli zostanie przeczytana w całości, może dać ci wystarczająco solidną wiedzę na temat budowania systemu operacyjnego.
- The Art of Assembly Language to bardzo polecana książka o asemblerze dostępna zarówno w trybie online, jak i offline.
- Powinieneś także przeprowadzić wiele badań na temat typu procesora (procesorów), na którym powinien działać twój system operacyjny. Instrukcje dotyczące architektury procesora można łatwo znaleźć, korzystając z wyszukiwarki Google ("Intel Manuals", ""ARM Manuals, "itp.).
Krok 4. Wypełnij samouczek dotyczący systemu operacyjnego
Samouczki dotyczące systemu operacyjnego przeprowadzą Cię przez proces tworzenia podstawowego systemu operacyjnego. Dzięki temu przyzwyczaisz się do procesu i pomożesz dowiedzieć się, czy brakuje jakichś elementów. Po ukończeniu jednego lub dwóch samouczków będziesz na dobrej drodze do stworzenia własnego systemu operacyjnego.
- Bare Bones to samouczek, który pomoże Ci napisać pierwsze proste 32-bitowe jądro. Po ukończeniu samouczka następnym krokiem jest użycie Meaty Skeleton do stworzenia własnego systemu operacyjnego.
- Linux od Scratch to internetowa książka, która przeprowadzi Cię przez proces tworzenia własnego systemu operacyjnego Linux.
- Systemy operacyjne od 0 do 1 to darmowa książka o tworzeniu różnych systemów operacyjnych od początku do końca.
Krok 5. Ustal cele systemu operacyjnego
Co chcesz, aby twój system operacyjny robił? Jak to powinno wyglądać? Czy naprawdę potrzebujesz napisać cały system operacyjny, czy po prostu chcesz stworzyć określony wygląd swojego pulpitu? To wszystko, co należy wziąć pod uwagę przed rozpoczęciem kodowania.
- Rozważ rozwój z zespołem innych programistów. Posiadanie zespołu programistów pracujących nad projektem znacznie skróci czas rozwoju.
- Dodaj cele projektu, plany i pytania do swojego publicznego repozytorium, aby inni mogli Ci łatwo pomóc.
Część 2 z 2: Budowanie systemu operacyjnego
Krok 1. Wybierz środowisko programistyczne
To jest platforma, której będziesz używać do kodowania nowego systemu operacyjnego. To kwestia osobistych preferencji, ale większość ludzi albo używa Windowsa, albo odmiany UNIXa. Jeśli używasz systemu Windows, dobrym pomysłem jest zainstalowanie środowiska UNIX, takiego jak Cygwin lub MinGW. Ogólnie rzecz biorąc, upewnij się, że środowisko, którego używasz, zawiera następujące elementy:
- GCC (kompilator Gnu). Jeśli używasz systemu Windows, możesz zainstalować go w Cygwin lub MinGW.
- Binutils to zbiór narzędzi używanych do manipulowania plikami obiektów. Ponownie, jeśli używasz systemu Windows, możesz zainstalować go w Cygwin.
- Dobry edytor tekstu. Vim i emacs są powszechnie używane w środowiskach UNIX. Użytkownicy systemu Windows mogą korzystać z Notatnika lub sprawdzić Notepad ++, aby uzyskać aktualizację wielokartową.
- Perl i/lub Python. Jeden lub oba są zalecane do manipulacji ciągami.
Krok 2. Skonfiguruj system kontroli wersji
Pisanie systemu operacyjnego oznacza, że prawdopodobnie będziesz tworzył setki (lub tysiące!) linijek kodu. Kiedy pracujesz nad poprawkami, może to być mylące. Niektóre opcje do sprawdzenia to CVS, Mercurial i Subversion.
Krok 3. Zdecyduj się na bootloader
Jeśli nie chcesz tworzyć własnego, możesz użyć istniejącego, takiego jak Grand Unified Bootloader (GRUB). Jeśli czujesz się na tyle odważny, aby zakodować bootloader, sprawdź Rolling Your Own Bootloader na OSDev.org.
Krok 4. Wybierz projekt jądra
Jądro stanowi rdzeń systemu operacyjnego, zapewniając interfejs między użytkownikiem a sprzętem komputerowym. Istnieją jądra monolityczne i mikrojądra. Jądra monolityczne implementują wszystkie usługi w jądrze, podczas gdy mikrojądra mają małe jądro połączone z demonami użytkownika implementującymi usługi. Ogólnie rzecz biorąc, jądra monolityczne są szybsze, ale mikrojądra mają lepszą izolację błędów i niezawodność.
Krok 5. Zacznij od małych
Zacznij od drobnych rzeczy, takich jak wyświetlanie tekstu i przerwań, zanim przejdziesz do takich rzeczy, jak zarządzanie pamięcią i wielozadaniowość. Możesz także spróbować stworzyć prosty 16-bitowy system operacyjny, zamiast robić duży skok.
Za dwa tygodnie nie będziesz miał pełnego systemu. Zacznij od systemu operacyjnego, który się uruchamia, a następnie przejdź do fajnych rzeczy
Krok 6. Przetestuj nowy system operacyjny na maszynie wirtualnej
Zamiast ponownego uruchamiania komputera za każdym razem, gdy wprowadzasz zmiany lub musisz przenieść pliki z komputera deweloperskiego na maszynę testową, użyj aplikacji maszyny wirtualnej. VMWare to powszechna opcja, która działa zarówno w systemie Windows, jak i Linux, podobnie jak Bochs. Sprawdź potencjalne zakleszczenia i inne błędy i napraw je w razie potrzeby.
Krok 7. Zwolnij „kandydata do wydania
Możesz to zrobić, przesyłając przetestowany kod do publicznego repozytorium. Umożliwi to użytkownikom testowanie Twojego systemu operacyjnego i zgłaszanie wszelkich napotkanych problemów.
Krok 8. Sieć z innymi twórcami systemów operacyjnych
Cała społeczność twórców systemów operacyjnych gromadzi się na różnych forach, w tym /r/osdev na Reddicie i Software Engineering Stack Exchange. Jeden, w którym opanujesz tworzenie podstawowego systemu operacyjnego, przeczytaj istniejące posty, aby zobaczyć, jakie rzeczy pojawiają się podczas procesu rozwoju.
Wideo - Korzystając z tej usługi, niektóre informacje mogą być udostępniane YouTube
Porady
- Pamiętaj, aby zaimplementować funkcje bezpieczeństwa jako swój najwyższy priorytet, jeśli kiedykolwiek chcesz, aby Twój system był opłacalny.
- Po zakończeniu całego rozwoju zdecyduj, czy chcesz wydać kod jako open source, czy jako zastrzeżony.
- Aby system operacyjny mógł obsługiwać wiele procesorów, Menedżer pamięci musi mieć mechanizmy „blokujące”, aby uniemożliwić wielu procesorom dostęp do tego samego zasobu w tym samym czasie. „Blokady” używane do tego będą wymagały obecności programu planującego, aby upewnić się, że tylko jeden procesor uzyskuje dostęp do krytycznego zasobu w danym momencie, a wszystkie inne muszą czekać. Jednak harmonogram zależy od obecności Menedżera Pamięci. Jest to przypadek zakleszczonej zależności. Nie ma standardowego sposobu rozwiązania takich problemów; jako programista oczekuje się od ciebie umiejętności wystarczających do wymyślenia własnego sposobu radzenia sobie z tym problemem.
- System operacyjny może być również przyjazny dla użytkownika. Pamiętaj, aby dodać przyjazne dla użytkownika funkcje, dzięki czemu będą one integralną częścią Twojego projektu.
- Nie dołączaj forum OSDev.org i zacznij zadawać oczywiste pytania. Spowoduje to po prostu „Przeczytaj instrukcję” odpowiedzi. Powinieneś spróbować przeczytać Wikipedię i podręczniki do różnych narzędzi, których chcesz używać.
- Nie zaczynaj projekt systemu operacyjnego, aby rozpocząć naukę programowania. Jeśli nie znasz jeszcze C, C++, Pascal lub jakiegoś innego odpowiedniego języka na wylot, włączając w to manipulację wskaźnikiem, manipulację bitami niskiego poziomu, przesuwanie bitów, wbudowany język asemblera itp., nie jesteś gotowy na rozwój systemu operacyjnego.
- Jeśli zrobisz coś nierozważnego, na przykład zapisujesz losowe bajty do losowych portów I/O, spowodujesz awarię systemu operacyjnego i (teoretycznie) możesz usmażyć swój sprzęt.