Hallo,
Was haltet ihr für besser? Und warum?
Das hängt davon ab was Du machen möchtest bzw. welche Features des Hardware-Multitaskings Du nutzen willst. Wenn Du z.B. Segmentierung nutzen möchtest und deswegen auch das Neuladen der ganzen Segmentregister brauchst ist das Hardware-Multitasking klar im Vorteil aber wenn Du keine Segmentierung benutzt ist das Neuladen der Segmentregister nur unnützer Ballast den Du bei Software-Multitasking vermeiden kannst. Der x86-PM bietet auch noch ne Menge anderer Nettigkeiten wie Task-Gates, Nested-Tasks usw., wenn Du vor hast diese Dinge zu nutzen dann wäre auch Hardware-Multitasking angebracht ansonsten eher nicht.
Portabel ist das meiste davon nicht weil es das nur beim x86-PM gibt, schon im Long-Mode ist davon nichts mehr übrig und alle anderen aktuellen CPUs auf dieser Welt haben auch nichts davon (okay PowerPC kann z.B. primitive Segmente aber sonst nichts).
Ein weiterer Punkt ist dass das Exception-Handling beim Hardware-Multitasking nicht ganz einfach ist weil es eine sehr große Anzahl an möglichen Exceptions gibt und sich die wohl nicht immer ganz exakt eindeutig analysieren lassen. Wenn der Kontext-Wechsel über mehrere Befehle verteilt ist ist es sicher einfacher einen Fehler zu finden als wenn man einfach nur weiß das der
irgendwo beim automagischen Kontext-Wechsel passiert.
Auf meiner CPU hab ich mich bewusst gegen Hardware-Multitasking entschieden weil es mir einfach keine Vorteile bring (sowas wie Task-Gates usw. hab ich auch nicht weil ich dafür schlicht keinen Bedarf sehe) und die Performance (beim Neuladen der Segmentregister usw.) kann man auch anders erreichen.
Grüße
Erik