Am 17.05.2012 19:42, schrieb Heinz-Mario Frühbeis:
> "Schmidt"...
>> Da die ganze "Desktop-Simulation" nun aber eigentlich
>
> Man lernt halt dazu ...
>
>> in nur einem (singlethreaded) Prozess abläuft...
>> (kleiner HostProzess lädt Base-Dll und zeigt den
>> leeren Desktop)
>> und dennoch ein "Betriebssystem" sein will ...
>
> Wer hat behauptet, daß das_ schon ein BS ist?
Ok, ich korrigiere:
"...und dennoch später mal ein BS *werden* will"
> Nicht unverschämt werden ...;
Das lag nicht in meiner Absicht, ich wollte
eigentlich nur erklären, was es mit Deinen
DLL_B und DLL_C Typen eigentlich auf sich hat -
und das selbige (derzeit) als Ersatz für richtige
Executables herhalten.
> du mit deinen Fähigkeiten und "_deinem_"
> 'Cairo' könntest schon mehr erreicht haben.
Nein, könnte ich nicht - meine freie Zeit die ich
da reinstecke ist leider begrenzt.
Und was ich mit meinen Libs versuche abzubilden, ist
nur ein alternatives GUI-Framework, adaptiert auf die
Belange von VB6 und dessen COM-Support. RC4 ist nur
ein COM-Wrapper ... cairo ist eine OpenSource-lib,
die ich nicht geschrieben habe, sie exisitert jedoch
plattform-unabhängig da in C implementiert - und hält
so den Weg offen für eine spätere, einfachere Portierung
der RC4-libs auf andere Betriebssysteme, da sich die
derzeitigen Berührungspunkte mit dem Windows-OS-API
(was die Grafik und die WidgetControls betrifft) im
Prinzip nur auf das Abgreifen von Maus u. KeyEvents,
sowie ein Blt-API beschränken.
Ein Betriebssystem will ich also (Gott bewahre)
nicht entwickeln - vor allem weil es bereits
genügend klasse funktionierende (OpenSource)-BS
gibt auf diesem Planeten.
Hast Du überhaupt eine Ahnung, was derzeit in z.B.
Linux für Mannjahre an Aufwand stecken?
Aus dieser relativ frischen Meldung:
>
http://www.heise.de/open/meldung/Millennium-Technology-Prize-fuer-Linus-Torvalds-1543593.html
...lässt sich entnehmen, dass es sich in dem Fall um inzwischen
73.000 Mannjahre handelt, geleistet in Summe von einer
Community - und (logischerweise) nicht von einer Einzelperson.
Und die Sourcen des Linux-Projekts decken nur den Kernel
ab (also die grundlegenden IO- und Scheduling-Routinen,
die alles zusammenhalten + die Driver-Schnittstellen +
die Driver-Implementierungen).
D.h. in diesen 73.000 Mannjahren ist noch nicht mal
ein GUI eingerechnet (diverse Window-Manager-Projekte +
diverse GUI-Frameworks wie GTK+ oder QT) und ebenfalls
nicht die grundlegenden Basis-Applikationen (wie z.B.
die diversen Browser, File-Manager und was weiss ich alles).
Das heisst im Klartext, dass Du Dein Ziel im Alleingang
nie und nimmer erreichen *kannst*.
Zumal Du völlig falsch angefangen hast IMO - Du kannst
ein Betriebssystem nicht vom GUI her aufzäumen, schon
gar nicht dann, wenn dieses GUI zu 90% vom HighLevel-
User-API eines bereits exisitierenden OS abhängt, dessen
Sourcen nicht offenliegen.
D.h. wenn Du irgendwann mal den Punkt erreichen solltest,
wo Du von Deiner derzeitigen Win-API Grundlage abkoppeln
möchtest, müsstest Du Alternativen für all die WinAPIs
*schreiben*, die Du derzeit benutzt.
Aber auch dafür gibt es bereits ein Projekt (Wine) -
und ich bin sicher, auch da sind in Summe bereits hunderte
von Mannjahren reingeflossen.
Aber wie gesagt, selbst wenn Du es schaffen solltest
"mal eben" (in vielleicht nur 10 Jahren) einigermaßen
funktionierende Alternativen zu all den verwendeten
WinAPI-Implementierungen zu schreiben, bleiben immer
noch die rund 70.000 Mannjahre für einen ordentlichen
Kernel und all die Treiber-Implementierungen für
Grafikkarten, USB, Storage-Devices, Netzwerk-Karten,
WLAN usw.
Ganz zu schweigen von einem ordentlichen Compiler
(denn Du willst doch die Nutzer bzw. Entwickler für
Dein BS nicht dazu zwingen, sich ein Windows zu
installieren und eine VB6-Lizenz zu "besorgen")?
> Einzelne Programmteile könnten rein theoretisch auch
> als Exe vorhanden sein und wäre mir vom Prinzip echt schnuppe.
Theoretisch geht halt vieles - aber das ist doch die
Krux eines Betriebssystems - die Möglichkeit ein
Binary (heutzutage üblicherweise im Windows-eigenen
PE-Format bzw. im Unix-eigenen ELF-Format) zu parsen
und dann als (Scheduler-verwalteten) Prozess aufzustarten
bzw. extern liegende Zusatz-Bibliotheken dort hinein
nachzuladen.
Das heisst, Du müsstest bald mal damit anfangen,
zumindest Deine eigene Alternative zu ShellExecute
(zum Aufstarten von Prozessen) bzw. LoadLibrary
(zum Laden von Dlls) zu schreiben.
Das alleine ist schon komplex genug - macht jedoch
nur schätzungsweise ein 5.000-dstel des von Dir
sonst noch zu erbringenden Aufwands aus.
Lass mich mal rechnen - mal angenommen Du gibst Dir
noch 20 Jahre für Dein BS - das wären dann 7300 Tage.
Das heisst, um im Zeitplan zu bleiben, müsstest Du uns
schon morgen! zumindest mit einer selbstgeschriebenen
Alternative zu LoadLibrary/GetProcAddress usw.
versorgen können...
Kannst Du das?
Hast Du überhaupt eine Ahnung, was in diesen Calls
unter der Haube so alles abgeht?
> Nur ... wenn ich mal fertig bin mit einem BS,
Das wird definitiv nicht eintreten.
(da Du "ich" schreibst und nicht in der Mehrzahl,
ist das vom zu erbringenden Arbeitsaufwand her
einfach nicht zu schaffen).
>> Dass der ganze Ansatz irgendwie fraglich und "wackelig"
>> scheint (crash in einer User-Dll_C-App reisst den ganzen
>> Desktop mit) - kein Task- bzw. Thread-switching zwischen
>> unabhängigen, parallel laufenden Prozessen usw...
>> sei jetzt mal dahingestellt.
>
> W3, als Bs, hat auch mal so angefangen, oder nicht?
Ja, klar - aber ein BS auf "DOS-Level" willst Du doch
sicher nicht anbieten wollen - zumal auch dafür
zunächst ein Compiler, ein Filesystem, Treiber usw. geschrieben
sein wollen (die dann mit den *heutigen* modernen CPUs,
USB-Devices, Harddisks, Grafikkarten usw. zusammenspielen).
Aber selbst wenn das nur für eigene "experimentelle Zwecke"
geschrieben werden soll, *musst* Du Dich demnächst
mal mit Assembler oder zumindest C bechäftigen,
um überhaupt gegen ein aktuelles Motherboard-BIOS
einen erfolgreichen Bootvorgang, hinein in eine simple
Text-Konsole hinzubekommen.
Wenn Du schon daran scheitern solltest (an einem
einfachen blinkenden Prompt, der z.B. zunächst nix
anderes versteht, als eine einfache Aufforderung
zum listen von Dateien), dann kannst Du die Versuche
gleich ganz abbrechen, falls Du dazu länger brauchst
als - sagen wir mal - 1 Jahr.
Olaf