PrettyOS — Änderungen 8134 → 8228

Zeile 22: Zeile 22:
 
PrettyOS besteht momentan aus den Bereichen Bootloader Stage 1, Bootloader Stage 2, Kernel und User-Space.
 
PrettyOS besteht momentan aus den Bereichen Bootloader Stage 1, Bootloader Stage 2, Kernel und User-Space.
 
Die beiden Bootloader sind in Assembler (NASM) geschrieben und verwenden bisher FAT12. BL1 (in Sektor 1) lädt BL2 (Datei boot2.bin). Dieser wiederum startet den bisher binären Kernel (kernel.bin).  
 
Die beiden Bootloader sind in Assembler (NASM) geschrieben und verwenden bisher FAT12. BL1 (in Sektor 1) lädt BL2 (Datei boot2.bin). Dieser wiederum startet den bisher binären Kernel (kernel.bin).  
−
Der monolithische Kernel ist in der Programmiersprache C mit wenigen Teilen Assembler (Intel und AT&T Syntax) gehalten. Der User-Space dient bisher nur als Demonstration für die API (syscalls) und wurde ebenfalls in C geschrieben. Bisher ist nur eine einfache Shell vorhanden.  
+
Der monolithische Kernel ist in der Programmiersprache C mit wenigen Teilen Assembler (NASM und GCCs Inline-Assembler) gehalten. Der User-Space dient bisher nur als Demonstration für die API (syscalls). Bisher sind nur eine einfache Shell sowie ein paar simple Programme vorhanden, die u.a. zum Test neuer Features dienen. Programme für den Userspace können in diversen Sprachen geschrieben werden,
  
 
=== Elemente des Kernels ===
 
=== Elemente des Kernels ===
Zeile 31: Zeile 31:
 
=== Elemente des Userspace ===
 
=== Elemente des Userspace ===
  
−
Man verwendet die shell (program.elf) aus dem User-Space zum Testen der syscalls. Directory: ...\Source\user\user_program_c\..
+
Userprogramme können auf drei verschiedenen Wegen eingebunden werden:
−
program.elf wird nach ...\Source\user\init_rd_img\.. kopiert und in initrd.dat eingebunden.
+
Mittels incbin direkt in den kernel, von wo es dann über die vom Linker generierte Adresse gestartet werden kann (Derzeit für das VM86-Programm für VBE genutzt), über die Ramdisk (so wie es derzeit mit der Shell gemacht wird), oder auf dem herkömmlichen Weg als .ELF-Datei auf einem von PrettyOS unterstützten Speichermedium, wodurch das Programm für den Nutzer von der Shell aus aufrufbar wird.
−
Diese Datei kopiert man nach ...\Source\kernel\..
+
 
−
Auf diese Weise wird program.elf letztendlich mittels incbin "initrd.dat" (im Assembler-Programm data.asm) im ELF-Format in den Kernel eingebunden.
+
Für die Programme stehen die Dummy-makefiles, eine C-Userlib (Syscalls sowie einige wenige Funktionen der Standardlib) und eine C++-Userlib, die die C-Userlib als Untermenge hat und zudem ein paar C++-spezifische Funktionen bietet (new, delete) zur Verfügung.
−
In ckernel.c wird diese Datei gefunden, ausgelesen und im User Mode gestartet.
 
  
 
=== Weitere Entwicklung ===
 
=== Weitere Entwicklung ===
  
 
PrettyOS ist als Experimentier-Basis für Ideen der OS-Projektgruppe bei c-plusplus.de gedacht und kann daher beeinflusst und weitgehend umgebaut werden. Weitere Details und Links findet man hier: [http://www.c-plusplus.de/forum/viewforum-var-f-is-62.html]. Inzwischen entwickeln bis zu 10 Personen an PrettyOS.
 
PrettyOS ist als Experimentier-Basis für Ideen der OS-Projektgruppe bei c-plusplus.de gedacht und kann daher beeinflusst und weitgehend umgebaut werden. Weitere Details und Links findet man hier: [http://www.c-plusplus.de/forum/viewforum-var-f-is-62.html]. Inzwischen entwickeln bis zu 10 Personen an PrettyOS.