Also ein Buch zum OS-Dev gibts so nicht...Es gibt höchstens das PC-Hardwarebuch von Tannenbaum (oder so ähnlich) das hat dann etwa 2000 Seiten und ist vergriffen...
Das "PC-Hardwarebuch - Aufbau, Funktionsweise, Programmierung" ist von Hans-Peter Messmer und Klaus Dembowski. Es ist in der 7ten Auflage
bei amazon zu finden. Leider haben die in dieser Auflage einige Themen einfach weggelassen (und dafür andere breiter erklärt) und das sind vor allem die Sachen die am Anfang interessieren: PS/2 Maus/Tastatur und Diskettenlaufwerk. Deswegen kann ich es auch in der 6ten Auflage empfehlen (siehe
amazon).
Das andere Buch ist von Andrew S. Tanenbaum und heißt "Moderne Betriebssysteme". Das Buch beschäftigt sich eher mit der theoretischen Seite: also was sind Prozesse/Threads, wie kann IPC aussehen, wo liegen Probleme dabei, wie kann man Threads schedulen, was sind Deadlocks, wie kann man sie verhindern, wie sieht eine Speicherverwaltung aus, generelles zu Dateisystemen, etwas zu Multiprozessorsystemen, etwas zu IT-Sicherheit und ein Kapitel zum Design/Implementation von Unix/Linux und eins zu Windows2000. Ich muss leider sagen, dass das Buch beim Programmieren eines OS nicht so hilfreich ist.
Welchen Emulator soll ich verwenden
Die meisten hier nehmen bochs und qemu.
Ich würde mal sagen so viele du finden kannst. Es gibt noch VMWare Server (ist auch kostenlos), VirtualBox und VirtualPC. Am Anfang wird bochs jedoch die weit besten Debuggingmöglichkeiten bieten. Mein Tipp hier wäre, dir diese Debuggingmöglichkeiten mal zuerst anzuschauen (evtl. musst du dir dazu einen handkonfigurierten bochs bauen).
Und wenn ich dann was in C programmier, kann ich das doch eh wieder in Maschienencode umwandeln? Dann müsste es genauso effizient sein, wie Assembler?
Darüber kann man lang und breit diskutieren. Ich halt das mal so fest: Was du in C ausdrücken kannst, schreibst du auch in C. [...]
Ein Grund dafür ist, dass der (sowieso schon langsame) Entwicklungsprozess in einer höheren Sprache schneller geht als in Assembler. Außerdem ist meistens sowieso der Algorithmus und die Datenstruktur die benutzt werden weit entscheidender für die Geschwindigkeit als die Programmiersprache. Dazu kommt noch, dass es in Assembler mittlerweile extrem schwer geworden ist zu optimieren, da viel zu viele Dinge bedacht werden müssen: Caches, mehrere Pipelines, verschiedene Instruktionen sind langsamer/schneller auf einer bestimmten Prozessorgeneration.
Das soll nicht heißen, dass man Assembler nicht mehr braucht. Ab und an muss man schon mal seinen C/C++ Kernel disassemblieren und schauen was da überhaupt vor sich geht.
Zum Thema GUI kann ich taljeth nur zustimmen: Vergiss es für die ersten 1-2 Jahre. Und nach 1-2Jahren ist das beste was du erstmal kriegen kannst VESA und das hat einfach keine 2/3d Beschleunigung und ist deshalb saulahm. Danach kannst du dir mal die open-source 2D-Treiber in X.org, Haiku oder anderen OS anschauen/portieren.
An der Zeitangabe solltest du schon sehen, dass das Programmieren eines OS kein Job ist, den man in mehreren Wochen machen kann. Es geht vielmehr um Jahre. Schau dir am besten dazu mal die HobbyOS an, die von Leuten in diesem Forum geschrieben werden/wurden und wie lang die Personen gebraucht haben um dahin zu kommen.
Jetzt schonmal viel Spaß und Erfolg. Mögest du es besser/schneller machen als wir.
edit: Family Guy?
Oh Mist... Die Simpsons.