Chengcheng OS (CCOS) ist ein 64 -Bit -Betriebssystem von Hobby. Ich schreibe es auf x86, weil ich Traurigkeit und Elend mag. Dieses Projekt war noch in der Entwicklung. Ich bin ein Anfänger für das Betriebssystemdesign. Viele der Designkonzepte, die ich implementiert habe, sind von Windows NT wie CCLDR (OS -Loader für Chengcheng OS) und Speichermanager inspiriert. Und es gibt noch viele weitere Kurse, die ich in den kommenden Monaten lernen muss. Ich werde das Projekt also nicht häufig aktualisieren.

Uefi
CCOS verwendet UEFI, um ccoskrnl zu starten. UEFI ermöglicht die Entwicklung der Betriebssystemlader erheblich. Der Entwickler kann die von UEFI bereitgestellten Schnittstellen direkt aufrufen (verwenden Sie die C -Sprache anstelle von Assembly). Hier gibt es eine Sache, dass CCOs noch CCLDR (eine andere binäre ausführbare Datei) benötigen, um Ccoskrnl zu laden. Es ist ein bisschen wie "ein Bootloader der zweiten Stufe". Tatsächlich teilt BOOTX64.EFI einfach den Kernelraum und sucht nach einem geeigneten physischen Speicherraum für das Laden von CcosKRNL -Bild. Dann wird CCLDR Kernelraum in eine hohe Adresse des virtuellen Adressraums und in der GDT (Global Descriptor Table, eine signifikante Struktur für die X86 -Architektur) abbilden.
Mehrprozessoren
Die Unterstützung von Multi-Processoren ist eine enorme Herausforderung für mich. Ich garantiere keine gute Implementierung des Multi-Processor-Systems. Im Moment können CCOs andere Anwendungsprozessoren korrekt aktivieren. CCOS nicht wie bei einer anderen Demo des Betriebssystems und lädt die Initialisierungsroutine für die Initialisierung von Anwendungen an einer isolierten Binärdatei ein und lädt sie in die erste 1 MIB des physischen Speichers und konstruieren die Seitentabelle für den Speicherraum separat. Vor der laufenden Bewerbungsprozessoren repariert CCOs das Zitat der relativen Adresse des Binärprogramms. Ich muss zugeben, das ist ein dummes Design.
Apik
APIC (Advanced Programmierbares Interrupt -Controller) ist eine kritische Komponente im modernen Computersystem. Es bietet die Möglichkeit für das Multi-Processors-System und unterstützt die Priorität für mehrstufige Interrupt auf der Hardwareebene. Leider ist APIC kompliziert. Da APIC das vollständige Kenntnis von Computersystemen erfordert, implementiere ich nur den grundlegenden Treiber von APIC.
TrueType
CCOS zeigt Zeichen auf dem Bildschirm an, indem sie TrueType -Schriftarten rendern (Standardschrift in CCOS ist Adobe Source Han sans sc vf ). Es lohnt sich nicht, Zeichen mit TrueType Rendering auszugeben. Für die Entwicklung eines frühen Betriebssystems ist die Verwendung von Bitmap -Schriftarts eine empfohlene Methode der Zeichenausgabe.
Das Wahrscheinlich am größten am Speichern von Charakteren als Umrisse ist, dass nur ein Umriss pro Charakter erforderlich ist, um alle Größen dieses Charakters zu erzeugen, das jemals benötigt wird. Ein einzelner Umriss kann zu einer enormen Reihe verschiedener Größen skaliert werden, von denen einige unten dargestellt werden. Auf diese Weise kann der gleiche Charakter auf Monitoren verschiedener Auflösungen angezeigt und in einer großen Anzahl unterschiedlicher Größen ausgedruckt werden. Um einen Charakterumriss zu skalieren, ist eine einfache mathematische Operation, wie in der Tat andere Transformationen wie Rotation und Reflexionen.
Die Struktur des Truetyps ist komplex, ich habe den Schriftrasterer nur implementiert, ohne auf TrueType zu deuten. Das Hinweis ist das Herzstück des Truetyps. Seine Erfinder, die sich an die Vielfalt der Meinung über den "korrekten" Weg zum Hinweis zum Hinweis machten, entschieden, dass es kein einzelnes Hinweis auf Paradigma gibt, das sie den Typentwicklern auferlegen würden. Stattdessen haben sie einen relativ einfachen Rasterizer mit einer neuen interpretierten Programmiersprache verknüpft. Für die Schriftfähigkeit der Schriftart reicht dies jedoch aus.
Dies ist hier ein kirtischer ISSUS, der ist, dass die Vorinformz der Textausgabe von CCOs sehr Pool ist. Die schlecht durchgeführte Leistung wird den Laufen von CCOs ernsthaft verlangsamen. Ich weiß nicht, wie man die Funktion optimiert, da die Schriftart zeichnet ein relativ komplexer Prozess. Eine andere Methode ist die Verwendung von Bitmap -Schriftarten, um stattdessen die TrueType -Schriftart zu verwenden.
Breiter Char
CCOS bietet zwei Charaktertypen, "char" und "wch_t" (Wide Char, 4-Bytes), um alle Zeichen zu speichern. Unabhängig vom Zeichentyp konvertiert CCOs immer zuerst WCH_T und geben dann eine breite Zeichenfolge aus. Tatsächlich verwendet TrueType Parser in CCOs nur "Unicode 2.0 und weiters Semantik", die Plattform -ID = 0 und Codierungs -ID = 3 in CMAP (CMAP - Zeichen für Glyphen -Indexzuordnungstabelle, eine Strudel in TrueType.). Daher unterstützt es ausschließlich Unicode Basic mehrsprachige Ebenenzeichen (U+0000 bis U+FFFF).
Speichermanager
Die Entwurfsideen des Speichermanagements sind von Windows NT inspiriert, das die PFN-Datenbank, den Lookside, das Self-Self-Self-Self-Schema von Site, das Lamination Memory Pool Management und so weiter, aber nicht alle enthält.
Grafikausgabe mit Multi-Windows
CCOs unterstützt Multi-Windows, was bedeutet, dass es auf dem Bildschirm Text in verschiedenen Fenstern ausgeben kann. Es ist utfug, Multi-Processoren durch ein Text-Output-Fenster für jeden Prozessor zu debuggen. Auch wenn sie keinen Maus -Treiber haben, kann der Benutzer auch die Tastatur verwenden, um auszuwählen, welches Fenster Zeichen eingeben muss.
Fehlerbehebung: Fügen Sie Spinlock hinzu, um Konflikte mehrerer Windows -Ausgaben zu verhindern
Dynamischer Speichermanager mit Speicherleckerkennung
System PTE Management
PCIe -Management
NVME -Treiber
Tastaturtreiber (nicht dringend)
Qemu mit 2 Gib RAM oder höher
Ich teilen den Speicherraum nur grob so auf, dass der Kernelraum nur das Viertel des Avelalbe RAM nutzt. Ein Problem muss jedoch festgestellt werden, dass GetMemoryMap () Routine die falschen Speicherkarteinformationen zurückgegeben hat, als er versuchte, einen höheren RAM (größer als 2 Gib) für QEMU zuzuweisen. Ich probiere keine andere OVMF -Firmware aus, daher kann ein solcher Fehler von meinem OVMF zurückzuführen sein.
x86_64 CPU (Intel oder AMD) mit AVX -Befehlssatz
Es gibt geringfügige Unterschiede zur X86_64 -Architekturprogrammierung zwischen Intel 64 und AMD64. Ich entwickle CCOs basierend auf AMD-CPU, verwende aber Intel® 64- und IA-32-Architektur-Softwareentwicklerhandbücher als mein x86_64-Archisch-Referenzhandbuch. Im Moment jedoch, was auch immer der CPU -Anbieter ist.
Zur Installation finden Sie im CCOSKRNL -Build
Die Mathematikbibliothek (Reflibs/libm.a) wurde von @Estrella zur Verfügung gestellt
Keine Lizenz.
E-Mail: [email protected]
Chengcheng OS: https://github.com/ccoskrnl/ccoskrnl
Intel® 64- und IA-32 Architekturen-Softwareentwicklerhandbücher
Handbuch von AMD64 Architekturprogrammierer Volume 2: Systemprogrammierung
Die C -Programmiersprache
Osdev Wiki
ACPI -Spezifikation
UEFI -Spezifikation