pid текущего выполняемого процесса

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

Итак, мои цели:
1) Построение адресного пространства каждого pid.
2) Отслеживание выполнения каждого pid.

Для достижения вышеуказанных целей я запускаю операционную систему на основе Linux поверх эмулятора Qemu.

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

Моя проблема ... где в файле kernel / sched.c я могу узнать pid процесса, который будет выполняться следующим. Означает, что я не могу понять вызов функции, такой как -> launch_process (pid). Может кто-нибудь указать мне на это место в ядре. Или есть известное место в системе, где мы можем отслеживать адресное пространство. Один из них - CR3, но я действительно не могу ему доверять.

Некоторым ребятам это может показаться банальным указателем на это место, но я не могу найти это место сам.

5
задан prathmesh.kallurkar 24 January 2012 в 08:22
поделиться