Стек ядра Linux - PullRequest
       3

Стек ядра Linux

2 голосов
/ 17 января 2011

Какие данные хранятся в стеке режима ядра процесса?Хранится ли в стеке ядра цепочка вызовов процессов "пользовательского режима"?

Спасибо, vIjay

Ответы [ 3 ]

5 голосов
/ 17 января 2011

Ваша цепочка вызовов ядра, и "нет"


Ядро linux само по себе является многопоточной программой, которая работает путем переключения стеков.

Итак, допустим, вы делаете read(0, space, 100);или, может быть, просто c = getchar();, который в конечном итоге превратится в read().

Когда Linux получит контроль, он начнет выполнять вызовы функций, естественно, используя стек ядра.Он будет выполнять вызовы в ядре все ниже и ниже, пока, наконец, не достигнет tty или сетевого уровня.

Но вы еще ничего не набрали!

Так что он просто переключается на другой процесс,тот, который действительно работает, и он оставляет все эти фреймы активации вызова функций в стеке.В конце концов вы что-то набираете, и ядро ​​выясняет, что ваш процесс теперь работает, и когда он переключается обратно, снова переключая стеки, все эти вызовы функций, реализующие ваш read(2), теперь могут развернуться и в конечном итоге вернуться в режим пользователя.

2 голосов
/ 19 января 2011

Стек режима ядра процесса используется, когда процесс входит в режим ядра [из-за исключения, такого как системный вызов или сбой, или из-за аппаратного прерывания].Последовательность шагов, которые процесс выполняет, когда он входит в режим ядра, пока не покинет его, называется путем управления ядром.Информация о состоянии пути управления ядром хранится в стеке режима ядра процесса.Кроме того, скажем, из-за истекшего временного интервала, если происходит переключение контекста, состояние регистров Process-CPU сохраняется в стеке режима ядра, так что они могут быть получены при перепланировании процесса на CPU.

Поскольку стек режима ядра используется только при входе в режим ядра, цепочка вызовов «пользовательский режим» не сохраняется в этом стеке.

1 голос
/ 02 апреля 2012

Этот вопрос показывает значения, которые хранятся в стеке ядра, когда процесс переходит из режима пользователя в режим ядра

...