Ich weiß, dass Threads Code/globale Daten teilen, aber verschiedene Stapel haben. Jeder Thread hat seinen eigenen Stack. Ich glaube, dass es für jeden Prozess einen virtuellen Adressraum gibt. Dies bedeutet, dass jeder Thread diesen einzelnen virtuellen Adressraum verwendet.Wie erfolgt die Speicherverwaltung für Prozessthreads in einem virtuellen Adressraum?
Ich möchte wissen, wie Stack/Heap im Falle mehrerer Threads im virtuellen Adressraum wächst? Wie verwaltet OS, wenn der Stack-Platz für einen Thread voll ist?
Unter Windows erhält jeder Thread einen Block Adressraum für den Stapel, standardmäßig ist dies 1 MB. Wenn der Thread diesen Speicherplatz überläuft, stürzt die Anwendung ab. –
Beachten Sie, dass normalerweise drei Parteien beteiligt sind: das Betriebssystem, die C-Laufzeit und Ihr eigener Code. Das Betriebssystem kümmert sich im Allgemeinen nicht darum, dass Ihr Programm in C geschrieben ist und dass die C-Runtime Ihren Heap über "malloc/free" verwaltet oder dass C++ - Programme "new/delete" verwenden. – MSalters