Когда я запускаю простой код цикла while в пользовательском пространстве Linux и пространстве ядра и измеряю прошедшее время, я могу получить разницу.
тестовый код заключается в доступе к некоторым аппаратным регистрам в чипе Arm Cortex SoC.
for(k = 0; k < 100000; k++)
{ //I tested this code in user space and kernel space with IOCTL.
for(i = 0; i < 1000; i++)
{
tv2 = *(volatile UInt32 *)(0xfe110080);
*(volatile UInt32 *)(0xfe628024) = i + tv2 ;
}
}
В результате
Уровень пользователя: 52002,16 мс
Уровень ядра: 32650,53 мс
Уровень ядра был в 1,6 раза быстрее, чем уровень пользователя.