Друзья, я пытаюсь отследить полное выполнение операционной системы, включая процессы, запущенные поверх нее.Для этого мне нужны инструкции, выполняемые каждым процессом, и трассировка его выполнения, и я хочу сделать это без необходимости использовать objdump для каждого процесса.
Итак, мои цели:1) Построение адресного пространства каждого пида.2) Отслеживание выполнения каждого пида.
Для достижения вышеуказанных целей я использую операционную систему на основе linux поверх эмулятора Qemu.
Когда qemu впервые встречает инструкцию, я проверю pid процесса, выполняющего эту инструкцию, используя io-порт или известный адрес физической памяти в гостевой системе.Затем я могу использовать эту информацию, чтобы делать то, что мне нужно.
Моя проблема в том ... где в файле kernel / sched.c я могу узнать pid процесса, который будет выполнен следующим,Означает, я не могу понять вызов функции, как -> launch_process (pid). Может кто-нибудь, пожалуйста, укажите мне это место в ядре.Или есть известное место в системе, где мы можем отслеживать адресное пространство.Один из них - CR3, но я действительно не могу ему доверять.
Для некоторых парней это может показаться тривиальным указателем на это местоположение, но я сам не могу найти это местоположение.