Verwendet die Windows 98 OS / Shell die CPU, um in den Framebuffer / die Anzeige zu schreiben?

545

Ich meine, verwendet es die CPU, um auf MMIO zuzugreifen, um Pixel auf dem Display darzustellen, ohne dass andere Hardware (z. B. GPU usw.) darauf folgen muss.

Wenn Windows 98 startet, lädt es ein Bild von dem Programm, das gerade gestartet wird (Winload.exe?), Dekodiert das Bild und schreibt das MMIO-Gerät in die Anzeige. Eine GPU ist dafür nicht erforderlich, aber Windows 98 verfügt über Gerätetreiber für GPUs. Ich gehe davon aus, dass es so funktioniert:

LADEN PROGRAMM GEWINNEN -> BILDDECODIERUNG -> TREIBER ANZEIGEN AUFNEHMEN -> PIXEL SCHREIBEN.

Hier sind die zwei Fragen:

1.Wenn Windows 98 startet und das Flaggschiff (standardmäßig ein Begrüßungsbild) (oder ein beliebiges benutzerdefiniertes Bild) zeigt, muss die CPU dieses dekodieren und direkt in eine Framebuffer / VGA / VESA-Software-Middleware (Treiber) schreiben Setzen Sie die Pixel auf die Anzeige und vermeiden Sie die Verwendung der GPU, wenn ein GPU-Treiber geladen wird.

2.Wenn kein GPU-Treiber erkannt wird, kann Windows 98 ohne GPU vollständig laufen (das Betriebssystem selbst) und nur die CPU in den Framebuffer schreiben (und nicht etwa OpenGL / DirectX / etc. Berücksichtigen)?

Einfacher ausgedrückt, arbeitet Windows 98 zu 100% mit der CPU und benötigt keine GPU (außer vielleicht OpenGL / DirectX-High-End-Grafikmanipulation / hardwarebeschleunigtes Zeichnen usw. für Spiele, Videodecodierung usw.)? 3D-Spiele verwenden wahrscheinlich GPU-schnelle Grafikbeschleunigung mit OpenGL / DirectX. Daher ist es unwahrscheinlich, dass die CPU dafür etwas anderes als die GPU schreibt. Aber die Shell / GUI und die grundlegenden Funktionen des Betriebssystems scheinen sehr einfach zu sein und es fehlt ihnen an Beschleunigung. Möglicherweise sind sie nur mit der CPU gezeichnet und verwenden eine Art Anzeige, die Low-Level-Software für die Pixelmanipulation zeichnet.

Beachten Sie, dass ich "GPU" sage, aber wir können dies als Nicht-CPU-Hardware bezeichnen, die auf die Anzeige schreibt. CPUs können ohne GPU direkt auf das Display schreiben. Wenn Sie darüber hinausgehen, sind MMIO, Low-Level-Programmierung, Spezifikationen und Elektronik- / Computer-Engineering erforderlich.

0
Geeze ... Gibt es irgendwelche unterstützten Treiber für etwas, das so alt ist, nicht unterstützt wird und höchstwahrscheinlich ein Sicherheitsrisiko besteht? mdpc vor 9 Jahren 0
Sicher. Ich habe ein altes Rig mit 98 und eine "GPU", wie Sie es nennen können ... Es ist ein Hardwaregerät, das OpenGL / DirectX implementieren und Grafikmanipulationen ausführen kann, ohne dass die CPU dafür benötigt wird. Meine Frage ist, wenn es einen GPU-Treiber gibt, verwendet er ihn zum einfachen 2-D-Zeichnen der GUI und dergleichen, oder verwendet er nur die CPU und was auch immer VGA / VESA / etc. Treiber oder ähnliches zur Handhabung der Zeichnungslogik? Es ist ein einfaches Betriebssystem (im Vergleich zu XP), aber das Reverse Engineering ist immer noch ziemlich zeitaufwändig und liefert nur wenige Antworten auf meine Bedenken. vor 9 Jahren 0
* "Beachten Sie, dass ich" GPU "sage, aber wir können dies als Nicht-CPU-Hardware bezeichnen, die auf die Anzeige schreibt." * - Bevor sie als GPU erweitert und als GPU bezeichnet wurde, war die Hardwareschnittstelle in PCs früher genannt * "Grafikkarte" * oder * "Grafikkarte" *, zB MDA, CGA, EGA, PGA, VGA. Es muss HW vorhanden sein, um den Speicherinhalt (z. B. Framebuffer) in ein Videosignal oder ein Format für DVI / HDMI zu konvertieren sawdust vor 9 Jahren 0

1 Antwort auf die Frage

2
Wes Sayeed

Ein wenig Geschichte hilft Ihnen zu verstehen, wie die Dinge in der Windows 9x-Welt funktionieren.

Seit dem Intel 80386 haben Prozessoren zwei "Betriebsmodi": den Real-Modus und den Protected-Modus. Wenn Sie Ihren Computer zum ersten Mal einschalten - selbst ein modernes Core i7-Gaming-Rig -, startet der Prozessor im Real-Modus. Der Real-Modus bietet keinen Speicherschutz, keine Multitasking-Unterstützung, keine Code-Privilegien - nichts. Jedes Programm hat direkten, uneingeschränkten Zugriff auf den Speicher. Die Kommunikation mit der Hardware wurde vom BIOS über Interrupt-Aufrufe bereitgestellt.

Ein Interrupt macht genau das, was sein Name bedeutet. Es stoppt die CPU in ihren Spuren. Programme würden eine Bitmap eines Bildes in den Bildspeicher laden. Es würde dann einen Zeiger auf diesen Speicher im niedrigen Byte des AX-CPU-Registers (bekannt als AL) und den BIOS-Befehl platzieren, um ihn im hohen Byte (AH) anzuzeigen. Es würde dann das BIOS-Interrupt 0x10h aufrufen und das BIOS übernehmen. Die CPU hat zu diesem Zeitpunkt keine Kontrolle mehr über Ihren Computer.

Das BIOS würde dann die Anweisung in AH lesen und den Zeiger in AL an die Videohardware übergeben. Die GPU kopiert dann den Inhalt des Frame-Puffers in seinen eigenen RAM und gibt dann die Steuerung an das BIOS zurück, das es an die CPU zurückgibt. Die CPU ist jetzt wieder auf dem Fahrersitz.

Es ist wichtig zu wissen, dass alle Versionen der Windows 9x-Familie im Wesentlichen DOS-Anwendungen waren. Als Win98 seinen Begrüßungsbildschirm zeigte, befand sich die CPU noch im Real-Modus und verwendete immer noch BIOS-Interrupts, um sie anzuzeigen. Die niedliche kleine Animation am unteren Rand war nur ein Trick fürs Radfahren. Es fand keine Zeichnung statt.

Beim Laden von Windows war es eine der ersten Aufgaben, die CPU in den geschützten 32-Bit-Modus zu schalten. Dies hat DOS im Grunde aus dem Speicher geworfen und dem BIOS mitgeteilt, was es mit sich selbst tun kann. Die meisten Funktionen, die vom BIOS ausgeführt wurden, werden jetzt durch die Windows-HAL und den Kernel ersetzt. In einer Windows-Welt kommunizieren Anwendungen über einen API-Aufruf mit der Hardware, und dieser API-Aufruf lief über den Anzeigetreiber, der eine erforderliche Komponente des Betriebssystems war.

Jetzt (endlich) hier, wo wir uns mit Ihrer Frage beschäftigen. Windows hat dann (wie bisher) die Video-Hardware über einen Bildschirmtreiber gesteuert. Wenn kein Treiber verfügbar war, wurde der Standard-Windows-Treiber verwendet, der den Framebuffer zum Zeichnen verwendete. Der einzige Unterschied besteht darin, dass die CPU immer über speicherzugeordnete E / A gesteuert wird und das BIOS nicht beteiligt ist. Wenn ein Treiber vorhanden ist, verwendet der Treiber immer noch das MMIO, aber um proprietäre Befehle an die GPU auszugeben, keine Bitmap-Frames. Die GPU hat direkten Zugriff auf den Speicher und könnte parallel zur CPU arbeiten, einschließlich der bidirektionalen Kommunikation über diese E / A-Bereiche.

Windows 98 hatte Treiber für die damalige Grafikhardware und konnte eine umfassende 2D- und 3D-Beschleunigung einschließlich OpenGL und DirectX bieten. Es benötigt jedoch noch einen Treiber, um diese Dinge an die GPU zu übermitteln, und kann dies nicht ohne.

Das Zeichnen von Fenstersteuerelementen (z. B. Schaltflächen, Titelleisten usw.) wurde über die Windows Graphics Device Interface (GDI) vorgenommen, die die Haupt-Windows-API für das Zeichnen von Bildschirmelementen war. Es bietet alle Arten von Funktionen, einschließlich Formen, Stiften, Füllfarben und Bitmaps. Die GDI würde diese Anweisungen in Treibercode umwandeln. Der Treiber (sei es der GPU-Treiber oder der Framebuffer-Treiber) war dafür verantwortlich, diese GDI-Anweisungen über die vom Programm programmierten Mittel auf den Bildschirm zu bringen.

Das ist viel zu verdauen und es ist nur ein kurzer Überblick darüber, wie Daten eingehen und Pixel herauskommen. Ich hoffe, es beantwortet einige Ihrer Fragen.