Hi,
such' Dir ne technische Uni in Deiner Nähe und gehe zur Betriebssysteme-Vorlesung ;)
Für ein rudimentäres Betriebssystem brauchst Du noch nicht einmal einen richtigen Scheduler, wie in ArchEnema's Beitrag.
Die größte Schwierigkeit besteht tatsächlich erstmal darin, beim Starten des Rechners, Deine Bootroutinen aufzurufen. Die müssen nicht mal was kompliziertes tun.
Dies ist dann auch der einzige Part, in dem Du erstmal wirklich Assembler brauchst. Dann musst Du etwas proggen, das eine Ausgabe auf dem Textbildschirm erzeugen kann, damit Du erstmal überhaupt was sehen kannst. Das war damals in BS1 für uns auch erstmal Neuland, soweit ich weiß waren da aber nur ganz wenige Zeilen Assembler nötig, das meiste wurde in C geschrieben.
Wenn Du dann eine Ausgabe hast, brauchst Du eine Eingabe / Konsole. Hier brauchst Du nur noch C, weil man Eingaben dort recht einfach programmieren kann.
Wenn Du dann wirklich auch parallel laufende Prozesse programmieren willst, brauchst Du einen Scheduler. Das ist letztlich ein Programm, das regelmäßig von der CPU aufgeweckt wird, um zu bestimmen, welcher der laufenden Prozesse als nächstes ein paar Zyklen von der CPU zugeteilt bekommt.
An dieser Stelle ist definitiv etwas Assembler gefordert, denn das Festlegen, dass der Scheduler regelmäßig aufgeweckt werden soll, muss definitiv per Assembler direkt in die CPU programmiert werden. Zum sogenannten Kontextwechsel zwischen den laufenden Funktionen der Prozesse gehört dann, dass man den Laufzeitkontext der alten Funktion speichert ("Retten" des Stackpointers und Instruction Poiners, sowie des restlichen Registerkontextes) und dann wieder den Laufzeitkontext der jetzt laufenden Funktion wieder aufsetzt. Dazu wird der Instruction Pointer der CPU auf den als nächstes auszuführenden Befehl des Prozesses gesetzt und auch der Stackpointer auf den Aufrufstack der Funktion gesetzt. Dieser enthält dann die lokalen Variablen und Aufrufparameter.
Alles in allem: Allein Betriebssysteme 1 an meiner Uni war ein ganzes Semester mit einem Programmierpraktikum, an dem viele ohne Hilfe gescheitert wären. Vor allem: der Bootvorgang wurde schon vorgegeben, das hatte man uns nicht zugemutet. Man muss allerdings auch bedenken, dass es damals auch darum ging, Betriebssystemfunktionen zu lehren, während der Bootvorgang reine Fleißarbeit ist.
Letztlich hatten wir am Ende lediglich eine Textausgabe, die zeigen konnte, dass es 3 Prozesse gibt, die wirklich per Scheduler quasi-parallel ausgeführt werden, indem sie Zeitslots für die CPU zugeordnet bekamen.
Erst im Folgesemester in BS2 ging es dann an die Speicherverwaltung.