To, co musisz zrobić, to zaprojektować system operacyjny. Nawet jeśli na przykład zdecydujesz, że powinien to być system podobny do systemu UNIX, wciąż musisz podjąć wiele decyzji. Jak bardzo chcesz mieć UNIX? Które części UNIXa lubisz i które według ciebie wymagają poprawy?
Jeśli nie jesteś nastawiony na to, że jest podobny do systemu UNIX, otrzymasz jeszcze więcej pytań, na które odpowiesz: czy procesy powinny tworzyć drzewo, czy też są „płaskie”? Jakie rodzaje komunikacji między procesami chcesz wspierać? Czy chcesz, aby był wielozadaniowy, czy tylko wielozadaniowy (a może jednozadaniowy)? Czy chcesz, aby był to system czasu rzeczywistego? Jaki stopień izolacji chcesz zapewnić między zadaniami? Gdzie chcesz, aby spadał w skali monolitycznej vs. mikrojądra? W jakim stopniu (jeśli w ogóle) chcesz, aby wspierał on operację rozproszoną?
Ja zazwyczaj doradzają przed studiowania jądra dla inspiracji. To nic przeciwko samemu jądru Linuksa, ale prosty fakt, że Linux jest przeznaczony głównie do użytku produkcyjnego, a nie edukacyjnego. Ma wiele optymalizacji, włamań do kompatybilności wstecznej itp., Które są niezwykle przydatne w produkcji, ale bardziej rozpraszają niż edukują.
Jeśli możesz go znaleźć, kopia książki Lwa ( Komentarz Lionsa do UNIX 6th Edition , z kodem źródłowym , autorstwa Johna Lionsa) jest znacznie łatwiejszym punktem wyjścia. 6. edycja UNIX był wciąż mały i wystarczająco prosty, aby czytać i rozumieć dość szybko, nie będąc nadmiernie uproszczonym systemem zabawek.
Jeśli planujesz wycelować w x86 (przynajmniej przede wszystkim), możesz także spojrzeć na MMURTL V 1.0 autorstwa Richarda Burgessa. Prezentuje to system dla x86, który wykorzystuje sprzęt x86 w znacznie większym stopniu, niż pierwotnie zamierzali projektanci CPU - coś, co najbardziej realne systemy unikają przenośności na inne procesory. Jak można się domyślać, jest to znacznie bardziej zorientowane na sprzętowy koniec rzeczy. Wydrukowane kopie wydają się drogie i trudne do znalezienia, ale możesz pobrać tekst i kod za darmo.
Na szczęście istnieje również kilka innych możliwości - na przykład Projektowanie i wdrażanie systemu operacyjnego , na przykład Andrew Tanenbaum i Albert Woodhull.