• # Re: CPU Idle && Linux

    Posté par . En réponse au journal CPU Idle && Linux. Évalué à 7.

    Aux dernières nouvelles, c'est fait par défaut sous Linux depuis la nuit des temps: les versions 1.0 mettaient déjà le CPU en idle lorsque le scheduler ne trouvait pas de processus à exécuter. -- Il est intéressant d'aller faire un tour et un grep sur idle dans la partie correspondante des sources du noyau, dans arch/i386/kernel par exemple. -- Dans un noyau 2.2 par exemple on a dans process.c :
    /*
     * The idle loop on a uniprocessor i386..
     */
    static int cpu_idle(void *unused)
    {
     int work = 1;
     unsigned long start_idle = 0;
     /* endless idle loop with no priority at all */
     current->priority = 0;
     current->counter = -100;
     for (;;) {
     if (work)
     start_idle = jiffies;
     if (acpi_idle && (jiffies - start_idle > HARD_IDLE_TIMEOUT))
     acpi_idle();
     else {
     if (boot_cpu_data.hlt_works_ok && !hlt_counter && !current->need_resched)
     __asm__("hlt");
     }
     work = current->need_resched;
     schedule();
     check_pgt_cache();
     }
    }