Существует ли стек ядра для каждого процесса? - PullRequest
7 голосов
/ 21 мая 2011

Существует ли стек ядра и стек пользовательского пространства для каждого процесса пользовательского пространства?Если оба стека существуют, должно быть 2 указателя стека для каждого процесса пространства пользователя, верно?

1 Ответ

15 голосов
/ 21 мая 2011

В Linux каждая задача (пользовательское пространство или поток ядра) имеет стек ядра 8 или 4 КБ, в зависимости от конфигурации ядра. Действительно, существуют отдельные указатели стека, однако в каждый момент времени в CPU присутствует только один; если выполняется код пользовательского пространства, указатель стека ядра, который будет использоваться для исключений или прерываний, задается сегментом состояния задачи, а если код ядра выполняется, указатель стека пользователя сохраняется в структуре контекста, расположенной в стеке ядра.

...