Local Advanced Programmable Interrupt Controller — Änderungen 2503 → 2504

Zeile 151: Zeile 151:
  
 
== Timer ==
 
== Timer ==
−
Der locale APIC besitzt einen sehr genauen Timer, welcher eigentlich allen anderen Timern wie dem PIT oder der RealTimeClock vorgezogen werden sollte. Wenn das System mit mehreren Prozessoren (SMP) oder mit dem IO APIC (Symmetric Mode) läuft, dann ist er eigentlich die einzige Wahl, denn der PIT ist meistens nur mit dme PIC verbunden und damit nur an den BSP angeschlossen. Er kann somit nicht effizient für SMP verwendet werden.
+
Der locale APIC besitzt einen sehr genauen Timer, welcher eigentlich allen anderen Timern wie dem [[PIT]] oder der Real-time Clock vorgezogen werden sollte. Wenn das System mit mehreren Prozessoren (siehe auch [[SMP]]) oder mit dem [[I/O APIC]] (Symmetric Mode) läuft, dann ist er eigentlich die einzige Wahl, denn der PIT ist meistens nur mit dem PIC verbunden und damit nur an den BSP angeschlossen. Er kann somit nicht effizient für SMP verwendet werden.
  
 
=== Register ===
 
=== Register ===
Zeile 163: Zeile 163:
 
|}
 
|}
 
* Wenn das Timer Modus Bit gesetzt ist, arbeitet der Timer periodisch. Ansonsten wird der Interrupt nur ein einzige Mal aufgerufen.
 
* Wenn das Timer Modus Bit gesetzt ist, arbeitet der Timer periodisch. Ansonsten wird der Interrupt nur ein einzige Mal aufgerufen.
−
* Das Maskierungs Bit ist standardmässig gesetzt und verhindert somit das Erzeugen eines Interrupts.
+
* Das Maskierungsbit ist standardmäßig gesetzt und verhindert somit das Erzeugen eines Interrupts.
−
* Auf das Zustellungs Bit kann nur lesend zugegriffen werden. Wenn es gesetzt ist, wird gerade ein Interrupt gesendet, ansonsten wird nicht gearbeitet.
+
* Auf das Zustellungsbit kann nur lesend zugegriffen werden. Wenn es gesetzt ist, wird gerade ein Interrupt gesendet, ansonsten wird nicht gearbeitet.
−
* Der Vektor beinhaltet die Interruptnummer, mit welcher der Timer-Interrupt zur CPU gesendet werden soll. Dort wird der Interrupt dann zu einer ISR geleitet, welche durch disen Vektor in der IDT ausgewählt wird.
+
* Der Vektor beinhaltet die Interruptnummer, mit welcher der Timer-Interrupt zur CPU gesendet werden soll. Dort wird der Interrupt dann zu einer ISR geleitet, welche durch diesen Vektor in der IDT ausgewählt wird.
  
 
==== Das Divide Configuration Register: ====
 
==== Das Divide Configuration Register: ====
Zeile 178: Zeile 178:
  
 
==== Initial und Current Count Regsiter: ====  
 
==== Initial und Current Count Regsiter: ====  
−
Der Wert im Current Count Regsiter wird in der Frequenz des Timers immer um Eins Dekrementiert. Sobald der Wert Null erreicht, wird ein Interrupt ausgelöst, das Current Count Register wird, sofern mehr als ein Interrupt generiert werden soll, wieder mit dem Wert des Initial Count Register gefüllt und beginnt somit wieder mit dem stufenweisen Dekrementieren.
+
Der Wert im Current Count Regsiter wird in der Frequenz des Timers immer um Eins dekrementiert. Sobald der Wert Null erreicht, wird ein Interrupt ausgelöst, das Current Count Register wird, sofern mehr als ein Interrupt generiert werden soll, wieder mit dem Wert des Initial Count Register gefüllt und beginnt somit wieder mit dem stufenweisen dekrementieren.
  
 
== Aktivierung ==  
 
== Aktivierung ==