Quando creo più thread da un processo, ogni thread ha il proprio stack o è esso che condivide lo stack del processo padre. Cosa succede quando un thread effettua una chiamata di sistema? I thread mantengono anche i propri processi del kernel stack?Ogni thread ha il proprio stack?
risposta
Sì, i thread hanno i propri stack e il proprio stack di kernel (ad esempio linux).
Quando un thread effettua una chiamata di sistema, si intercetta nella modalità kernel (dalla modalità utente), si passano gli argomenti al kernel, gli argomenti vengono controllati, il kernel non deve fare (nel kernel stack), restituisce il valore finale al thread e si ritorna alla modalità utente.
Come fa il kernel "w/e deve fare" senza uno stack? – avakar
Mi chiarirò nella mia risposta – Joohwan
Lo stack del kernel è solo una precauzione di sicurezza aggiunta a un modello preesistente. Stack multipli sono un prerequisito per il multithreading. Il kernel fornisce essenzialmente una versione parallela di ciò che sta accadendo nello spazio utente per impedire la fuoriuscita di dati sensibili. – Potatoswatter
- 1. Ogni thread gestito ha il proprio thread nativo corrispondente?
- 2. Ogni 'HttpRequest' ottiene il proprio thread in ASP.NET?
- 3. Ogni core ha il proprio set privato di registri?
- 4. Ogni processo ha il proprio stdin, stdout e stderr?
- 5. Un thread Java ha il proprio ID di processo?
- 6. C'è uno spazio di stack per ogni thread?
- 7. come rendere ogni thread utilizza il proprio RNG in C++ 11
- 8. Come viene determinato il puntatore dello stack di un'attività del kernel Linux per ogni thread?
- 9. Stack C++ thread-safe
- 10. Ogni frammento di codice PHP all'interno del tag <?php> ha il proprio ambito variabile?
- 11. Ciascun pool php-fpm ha il proprio pool di memoria?
- 12. Il kernel di Linux ha il proprio contesto SSE/AVX?
- 13. Ogni tabella derivata deve avere il proprio errore alias
- 14. Devo pthread_join ogni thread che creo?
- 15. Differenza tra "stack di chiamate" e "stack di thread"
- 16. In un programma Java multithread, ogni thread ha la propria copia di System.out?
- 17. Messaggio di intestazione proprio come a Stack Overflow
- 18. Thread Java ogni X secondi
- 19. compilando il proprio glibc
- 20. implementare il proprio sizeof
- 21. Dimensioni dello stack di thread sicuro?
- 22. Come si termina un thread .NET che ha danneggiato lo stack di chiamate?
- 23. Perché creare il proprio CMS?
- 24. Devo creare ogni classe nel proprio file .py?
- 25. Eseguendo periodicamente una funzione dopo che la funzione ha completato il proprio compito
- 26. L'oggetto "modulo" numpy non ha attributo "stack"
- 27. Will ha ucciso il mutex di processo/rilascio thread?
- 28. Sviluppare il mio CMS proprio
- 29. Come si impostano le proprietà di log4j in modo che ogni thread venga restituito al proprio file di registro?
- 30. Dump StackTrace per ogni thread in esecuzione
sì stack specifico per thread !, i valori globali sono condivisibili tra thread (locale non) –
@GrijeshChauhan Cosa succede quando effettuiamo una chiamata di sistema da una discussione? –
per esempio se chiami la chiamata di sistema 'open()' per aprire un file. usando 'int f = open()' allora of-course 'f' è locale per il thread. ma ricorda che i descrittori dei file sono condivisi tra i thread. Se si conosce il valore di 'f', è possibile utilizzare tale valore in thread diversi per accedere allo stesso file (non è necessario aprirlo di nuovo) –