Wednesday, April 28, 2010

Prozess/Thread

Dieser Post ist nur in Deutsch verfügbar. Ist mehr einen Notiz für mich selbst als für andere.

Prozesse und Threads sind die Basis für Multitasking.
Prozess = Ausführungseinheit mit eigenem Speicher (Heap u. Stack), Jeder Prozess hat immer mindestens einen Thread (Main-Thread).

Thread =  Jeder Thread hat seinen eigenen Stack. Threads des selben Proc teilen sich den Heap.

Multitasking funktioniert mit Kontextswitch. Wird von einem Thread zu einem anderen Thread im selben Prozess gewechselt, werden die Register, Stack, etc. des zu verdrängenden Threads "stored" und die Register, Stack, etc. des verdrängenden Threads "restored".

Das gleiche wird auch gemacht, wenn von Thread A zu Thread B in unterschiedlichen Prozessen gescheduled wird. Jedoch ist hier zustätzlich noch die Memory Management Unit beteiligt, die den jeweiligen Speicherbereich des Prozesses stored/restored, also erheblich mehr Overhead.