linux - 在 Linux 内核中将 while(1) 循环更改为忙等待

标签 linux linux-kernel operating-system kernel busy-waiting

void cpu_idle (void)
{
    /* endless idle loop with no priority at all */

    while (1) {
        void (*idle)(void) = pm_idle;
        if (!idle)
            idle = default_idle;
        if (!current->need_resched)
            idle();
        schedule();
        check_pgt_cache();
    }
}

此代码存在于:与 linux 2.4.18-14 相关的“arch/i386/kernel/process.c”

此代码负责(cpu 空闲循环)。

问题是:我可以用 bust wait 更改 while(1) 循环吗?

最佳答案

这里的循环正确地安排了进程,因此系统继续正常运行。切换到纯忙等待会在 cpu 空闲时锁定系统,这意味着其他进程将停止调度。你绝对不希望这样。

关于linux - 在 Linux 内核中将 while(1) 循环更改为忙等待,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37007317/

相关文章:

regex - 使用 sed 将多个栏(特殊字符)替换为制表符

linux - 如何启用内核菜单配置 - HAVE_SYSCALL_TRACEPOINTS?

linux - 在 bash 脚本中永久更改目录

linux - vmlinuz 进程在 100% CPU 上运行

Powershell 查找服务器操作系统

c++ - sem_post(sem_t * sem) 和 sem_wait(sem_t * sem) 周围是否存在完整的内存屏障?

LINUX 权限问题

linux - 什么是可重入内核

c - printf 无法在屏幕上正确打印 float/double

android - 如何安装谷歌下载但安装失败的.apk