Почему в Linux существует стек ядра для каждого процесса?

вы можете комбинировать поиск и сортировку

find -path "some pattern" -printf "%T@ %P\n" | sort -n | tail -1
1
07.08.2020, 16:22
1 ответ

Когда процесс переходит в режим ядра в результате системного вызова, стек переключается со стека пользовательского режима на стек ядра. Это сделано для сохранения целостности ядра, иначе процесс (другой поток, например ), мог сделать какие-то гадости со стеком.

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

2
18.03.2021, 23:14

Теги

Похожие вопросы