2010-03-12 3 views
4

Является ли планировщик ядра Linux частью процесса init? Я понимаю, что это часть потоков Kernel, которые внутренне не видны пользователю ни сверху, ни ps. Пожалуйста, исправьте мое понимание.Linux Kernel Threads - планировщик

Можно ли просматривать стандартные потоки ядра через любой отладчик ядра, чтобы увидеть, как стандартные потоки занимают активность процессора?

-Kartlee

ответ

6

Потоки ядра могут быть видны через «верх» и «PS» и могут быть выделены путем иметь нулевой размер VM (у них нет Userspace, поэтому нет карты памяти пользовательской пространства).

Они созданы kernel_thread (или его друзьями). Некоторые средства создают один поток на один процессор и привязывают его к процессору, поэтому вы видите такие вещи, как aio/0 aio/1 в списке PS.

Также некоторые работы выполняются с помощью нескольких отложенных механизмов выполнения и приписываются другим задачам, обычно называемым «событиями/0» (по одному на каждый процессор). Время, потраченное «на самом деле» в прерываниях, нигде не учитывается (оно просто выполняется за счет любой задачи, которая была на этом процессоре в то время).

+1

Также стоит отметить, что подавляющее большинство кода ядра, включая планировщик, выполняется в контексте обычных процессов. Таким образом, большая часть ядра действует как библиотека, а не отдельный процесс. – caf

+0

Pid 0 принадлежит к графику, тогда как PID 1 предназначен для процесса init. – Tejas

1

1) Является ли планировщик ядра Linux частью процесса init?

-> нет, планировщик - это подсистема, процесс инициализации - это просто процесс, но особый и запланирован планировщиком.

2) Мое понимание заключается в том, что это часть потоков Kernel, которые внутренне не видны пользователю ни сверху, ни ps. Пожалуйста, исправьте мое понимание.

-> Это своего рода поток ядра и обычно не показан пользователю.

3) Можно ли просматривать стандартные потоки ядра через любой отладчик ядра, чтобы увидеть, как стандартные потоки занимают активность процессора?

-> да!