Taskwechsel in 64bit

8

In x86 können Sie den TSS für den Wechsel zwischen laufenden Prozessen verwenden. Es wird jedoch empfohlen, nur einen TSS zu verwenden und den Wechsel der Software-Task durchzuführen, insbesondere wenn Sie den Kernel auf andere portieren möchten Hardware, die keine TSS haben.

In x86-64 (64 Bit) gibt es kein TSS (z. B. tut es nichts wie in x86), also, wie würde jemand ohne sie Aufgaben wechseln tun (seit früher, würden Sie zumindest verwenden eins)?

    
mmk 19.08.2014, 21:33
quelle

2 Antworten

7

Sie würden es genauso machen, wie Sie es auf jeder anderen Plattform tun würden: Sie speichern den Inhalt der entsprechenden Register:

  • der Stapelzeiger
  • der Anweisungszeiger
  • welche Allzweckregister für die Architektur geeignet sind
  • jeden anderen Zustand, den Sie pflegen müssen (FPU / MMX / SSE-Register usw.)

für die Aufgabe, von der Sie wechseln, und für die Aufgabe, zu der Sie wechseln, die gleiche wiederherstellen.

Dies geschieht oft, indem Sie den gesamten Status auf den Stapel schieben, von dem Sie wechseln, und ihn von dem Stapel, auf den Sie wechseln, abziehen. Auf diese Weise muss nur der Stapelzeiger vom Kernel weitergegeben oder verwaltet werden, um zu verfolgen, was im Hintergrund wartet.

    
Adam Maras 20.08.2014, 01:54
quelle
5

Tatsächlich scheint es einen TSS im 64-Bit-Modus zu geben , er wird einfach nicht benutzt für Hardware-Kontextwechsel; Stattdessen wird nur der Stack des Kernels angegeben, wenn eine Übertragung auf eine höhere Berechtigungsstufe erfolgt.

Sie müssen jedoch immer noch den Softwarekontext wechseln, um die Steuerung zwischen verschiedenen Aufgaben zu ändern.

    
chbaker0 20.08.2014 02:07
quelle

Tags und Links