【发布时间】:2012-01-03 04:45:26
【问题描述】:
我是内核编程的新手,我正在尝试了解操作系统的一些基础知识。我正在尝试使用我在 20Mhz 微控制器中成功实现的技术来产生延迟。 我知道这是一个完全不同的环境,因为我在我的 2 GHz Core 2 双核处理器中使用 linux centOS。 我尝试了以下代码,但没有延迟。
#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 时,字符串“hello”已经存在。如果我的计算是正确的,上面的代码应该给我至少 10 秒的延迟。 为什么它不起作用?有什么与线程有关的吗? 20 Ghz 处理器如何能立即执行上述代码而没有任何明显的延迟?
【问题讨论】:
标签: multithreading operating-system kernel delay