64bit Kernel Development
-
Guten Abend Forengemeinde,
ich beschäftige mich sehr lange schon mit dem Thema Kernel Development und habe viele Tutorials gelesen und einiges zu den wesentlichen Konzepten, wie z.B. Paging, Multithreading, I/O, ... in unserer Betriebssystem-Vorlesung gehört. Mir fällt auf, dass in absolut jedem Tutorial für x86 mit 32 Bit gecoded wird und ich wollte nun genau nachfragen, ob ihr denkt, dass es gute Gründe gibt einfach mal 64 Bit als Ziel zu wählen.
Darüber hinaus würde es mich interessieren, da ich doch etwas verwirrt bin, was es genau bedeutet, von 32 auf 64 Bit in einem Kernel überzugehen. Mal davon abgesehen, dass ich mehr virtuellen Speicher habe. Was sind da so die wesentlichen Aspekte, die sich beispielsweise am vorhandenen Code verändern und dessen Konsequenzen?
Für Informationen bin ich euch dankbar.
-
Du musst in den sogenannten "Long mode" statt in den "Protected mode" wechseln. Dann steht dir eine AMD64-Architektur zur Verfügung, die zwar in Bezug auf den Befehlssatz dem x86 sehr ähnelt, aber z.B. beim Paging durchaus Unterschiede aufweist.
Ich selbst habe keine Erfahrung damit, kann dir aber zwei Links für den Einstieg geben:
http://www.lowlevel.eu/wiki/Long_Mode
http://www.lowlevel.eu/wiki/Kategorie:X86-64Auch auf osdev.org wirds was zu finden geben. Die Spezifikation findest Du bei AMD: http://developer.amd.com/documentation/guides/Pages/default.aspx#manuals
-
Schau Dir mal Pedigree an: http://www.pedigree-project.org/projects/pedigree/wiki