Каково состояние стека ядра процесса Linux при создании процесса?

Я нигде не могу найти эту информацию. Куда бы я ни посмотрел, я нахожу вещи, относящиеся к тому, как выглядит стек после того, как вы нажмете «main» (независимо от вашей точки входа), которые будут аргументами программы и средой, но то, что я ищу, - это то, как система настраивает стек для взаимодействия с макросом switch_to.При первом переключении задачи в стеке должны быть EFLAGS, EBP, регистры, которые сохраняет GCC, и адрес возврата из функции schedule (), на которую указывает «tsk-> thread-> esp», но я не могу понять, как ядро ​​устанавливает этот стек, поскольку он позволяет GCC сохранять регистры общего назначения (используя выходные параметры для встроенной сборки).

Я говорю только о компьютерах с архитектурой x86. Я исследую систему планировщика / процессов Linux для своего собственного небольшого ядра, которое я (пытаюсь) написать, и я не могу понять, что мне не хватает. Я знаю, что мне чего-то не хватает, поскольку тот факт, что Slackware запущен на моем компьютере, свидетельствует о том, что планировщик работает: P

РЕДАКТИРОВАТЬ: Я, кажется, сформулировал это плохо. Я ищу информацию о том, как настраивается стек задач ядра , а не о том, как настраивается задача задач пользователя . В частности, стек, на который указывает tsk-> thread-> esp и на который переключается "switch_to".

11
задан Caleb1994 8 November 2011 в 04:48
поделиться