У каждого потока есть свой собственный стек?

Когда я создаю несколько потоков из процесса, то каждый поток имеет свой собственный стек, или же они разделяют стек своего родительского процесса. Что происходит, когда поток выполняет системный вызов? Связаны ли потоки с собственным стеком ядра как процессы?

Ответы

Ответ 1

У потоков есть свои собственные стеки и их собственные стеки ядра (например, linux).

Когда поток выполняет системный вызов, вы попадаете в режим ядра (из пользовательского режима), вы передаете аргументы ядру, проверяются аргументы, ядро ​​делает это/нет, что нужно сделать (в стеке ядра), возвращает окончательное значение обратно в поток, и вы вернетесь в пользовательский режим.