В чём разница между стеком ядра и стеком пользователя?

Рейтинг: 2Ответов: 1Опубликовано: 16.05.2023

Изучаю из чего состоит поток и застрял на стеках. С пользовательским стеком вроде как всё понятно. Это стек, который создаётся на каждый новый поток, занимает 1 МБАЙТ в памяти, содержит информацию о локальных переменных в памяти и адрес о том откуда начнёт исполнение поток после того, как текущий поток вернёт управление. Данный стек не может сжиматься, он может только расширяться.

А вот со стеком ядра уже возникли трудности. Я так понимаю стек ядра так же создаётся на новый поток. Но я не могу понять, что конкретно из себя представляет стек ядра. Когда используется тот или иной стек, это зависит от того в каком режиме запущен процесс?

В общем поясните, пожалуйста.

Ответы

▲ 1

Стек пользователя - это место в памяти, где хранятся данные о выполнении кода программы в пользовательском режиме.

Стек ядра - это место в памяти, где хранится информация о выполнении кода операционной системы и системных функций.

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