Softwarebremse

Eine Softwarebremse ist ein Computerprogramm, das dazu dient, die Ausführgeschwindigkeit anderer Programme herabzusetzen. Softwarebremsen können meist im Grad ihrer Systembremsung angepasst werden.[1]

Notwendigkeit

Hauptsächlich bei älteren DOS-Spielen wurden häufig Mechanismen angewandt, welche direkt vom Systemtakt abhängig waren. Dies führte dazu, dass ein Programm, welches z. B. für einen 286er Prozessor mit 8 MHz geschrieben wurde, bei einer CPU der gleichen Baureihe mit höherer Taktrate entsprechend schneller lief. Bei 16 MHz wäre die Geschwindigkeit doppelt so hoch gewesen, was für die reine Datenverarbeitung wünschenswert ist. Wenn dadurch allerdings auch für die Benutzerinteraktion die gleiche Beschleunigung notwendig ist, führt dies dazu, dass die Programme nicht mehr wie vorgesehen benutzt werden können.

Reichten zu Beginn die Turbo-Taste für die gewünschte Verringerung der Rechenleistung aus, um die Abwärtskompatibilität zu gewährleisten, musste aufgrund der Vielfalt an Prozessoren und schnellen Leistungssteigerung zunehmend Softwarelösungen eingesetzt werden. Diese Software belastet die Systemressourcen künstlich und führte damit zu einer Verringerung der Leistung.

Moderne Computerprogramme synchronisieren ihre Ausführgeschwindigkeit, wenn notwendig, fast ausnahmslos über systemtaktunabhängige Timer oder Synchronisationsmechanismen des Betriebssystems.

Da damalige Programme auf Grund der mangelnden Kompatibilität zu jetzigen Betriebssystemen meist ohnehin nicht lauffähig sind, werden solche Programme emuliert; dabei kann für gewöhnlich die gewünschte Taktfrequenz eingestellt werden.

Technik

Es gibt folgende Ansätze für Softwarebremsen:

Bremsung durch schnelleres Refresh
Zu Zeiten des 8088, 8086 und 80286 konnte man einen Rechner durch Erhöhung der Refreshrate um bis zu 30 Prozent reduzieren (DMA-Kanal 0). Für etwas zu schnell laufende Programme war dies häufig ausreichend.
Bremsung durch ein parallel laufendes Program
Periodisch wird ein kleines Programm aufgerufen, welches CPU-Zeit verbraucht. Ab dem 80286 wurde hierzu meist der Timer der CMOS-Uhr benutzt, der sich auf einen hinreichend hohe Interruptrate (128 Hz bis 32768 Hz) einstellen ließ, um ein gleichmäßiges Bremsen zu ermöglichen. Der Standardtimer mit 18,2 Hz war dazu zu langsam, ein Umprogrammieren ergab meist Komplikationen (Systemuhr lief schneller, Spiele haben ihn meist selbst genutzt).

Die Interrupt-Routine selbst sieht so aus, Wert ist je nach erwünschtem Bremsfaktor und Geschwindigkeit der CPU zu justieren.

   push ax
   mov al, 20h
   out 020h, al
   out 0a0h, al
   sti
   mov ax, Wert
.lbl:
   dec ax
   jnz .lbl
   pop ax
   iret

Verzögerungsschleifen können ebenfalls zur Verlangsamung eingesetzt werden, müssen aber im Gegensatz zu Softwarebremsen als integraler Bestandteil in das zu bremsende Programm eingebaut werden.

Siehe auch

Einzelnachweise

  1. http://www.sierrahelp.com/Utilities/SlowdownUtilities.html Verschiedene Beispiele (engl.)

Content Disclaimer

Informasi ini disarikan dari Wikipedia dan disajikan kembali untuk tujuan edukasi. Konten tersedia di bawah lisensi CC BY-SA 3.0. Kami tidak bertanggung jawab atas ketidakakuratan data yang bersumber dari kontribusi publik tersebut.

  1. The information displayed on this website is sourced in part or in whole from Wikipedia and has been adapted for the purpose of restating it. We strive to provide accurate and relevant information, however:
  2. There is no guarantee of absolute accuracy. Wikipedia is an open, collaborative project that can be edited by anyone, so information is subject to change.
  3. It is not intended to constitute professional advice. The content displayed is for informational and educational purposes only. For important decisions (e.g., medical, legal, or financial), please consult a professional.
  4. Content copyright. Wikipedia is licensed under the Creative Commons Attribution-ShareAlike License (CC BY-SA). This means that content may be reused with appropriate attribution and shared under a similar license.
  5. Responsible use. Any risk arising from the use of information from this website is entirely the responsibility of the user.