Я новичок в программировании ядра и пытаюсь понять некоторые основы ОС.Я пытаюсь сгенерировать задержку, используя технику, которую я успешно реализовал в 20 МГц микроконтроллере.Я знаю, что это совершенно другая среда, поскольку я использую linux centOS в моем 2-ГГц процессоре Core 2 Duo.Я попробовал следующий код, но не получаю задержку.
#include<linux/kernel.h>
#include<linux/module.h>
int init_module (void)
{
unsigned long int i, j, k, l;
for (l = 0; l < 100; l ++)
{
for (i = 0; i < 10000; i ++)
{
for ( j = 0; j < 10000; j ++)
{
for ( k = 0; k < 10000; k ++);
}
}
}
printk ("\nhello\n");
return 0;
}
void cleanup_module (void)
{
printk ("bye");
}
Когда я dmesg после установки модуля так быстро, как это возможно для меня, строка "привет" уже там.Если мои расчеты верны, приведенный выше код должен дать мне как минимум 10 секундную задержку.Почему это не работает?Есть что-нибудь связанное с потоками?Как процессор с частотой 20 ГГц может выполнить вышеуказанный код мгновенно, без заметной задержки?