Multithread-Anwendungen auf einer Singlethread-CPU?

Multithread-Anwendungen auf einer Singlethread-CPU?

Die Motivation hinter dieser Frage ergibt sich aus der Erforschung derIntel Galileo Gen2-Mainboarddas über einen Single-Thread-Prozessor verfügt.

  • Ich suche nach einer konzeptionellen Erklärung, was das für alle Userspace-Anwendungen bedeutet, die auf die Existenz von Threads angewiesen sind.
  • Bedeutet dies, dass der Kernel gepatcht werden muss, damit die Systemaufrufe für den Threading-Aufruf in der Software emuliert werden, statt sich auf die Threading-Unterstützung der CPU zu verlassen?

Antwort1

Multitasking-Systeme verarbeiten mehrere Prozesse und Threads, unabhängig von der Anzahl der im System installierten Prozessoren oder Kerne und der Anzahl der von ihnen verarbeiteten „Threads“. Multitasking funktioniert mit Zeitscheiben: Der Kernel und jeder laufende Prozess oder Thread können jeweils eine Zeit lang ausgeführt werden, und dann wechselt das System zum nächsten ausführbaren Thread. Die Wechsel erfolgen sehr häufig, was den Eindruck erweckt, dass alles parallel läuft, auch wenn dies nicht der Fall ist.

All dies geschieht ohne jegliche Änderung der APIs usw. Multi-Core-Systeme müssen ohnehin in der Lage sein, mehr Threads auszuführen, als sie physisch unterstützen, der Single-Core-Fall ist nur ein Beispiel dafür.

Die Beschreibung einer CPU als Single-Threaded bezieht sich aufgleichzeitiges Multithreading(SMT oder Hyperthreading in der Intel-Welt), nicht die Fähigkeit der CPU, mehrere Threads (oder Prozesse oder Aufgaben) auszuführen. Das Hinzufügen von SMT-Funktionen zu einer CPU fügt keine Anweisungen hinzu, die das Ausführen von Threads erleichtern, sondern ermöglicht unter bestimmten Umständen nur eine bessere Nutzung der Hardware.

verwandte Informationen