Когда я создаю несколько потоков из процесса, то каждый поток имеет свой собственный стек, или же они разделяют стек своего родительского процесса. Что происходит, когда поток выполняет системный вызов? Связаны ли потоки с собственным стеком ядра как процессы?
У каждого потока есть свой собственный стек?
Ответ 1
У потоков есть свои собственные стеки и их собственные стеки ядра (например, linux).
Когда поток выполняет системный вызов, вы попадаете в режим ядра (из пользовательского режима), вы передаете аргументы ядру, проверяются аргументы, ядро делает это/нет, что нужно сделать (в стеке ядра), возвращает окончательное значение обратно в поток, и вы вернетесь в пользовательский режим.