In linux-taakplanner, waar wordt de sheduler_tick () genoemd?

Onlangs speelde ik met de linux-taakplanner.

Nu wil ik het mechanisme voor load balancing van de taakplanner en het CFS-algoritme achterhalen. Ten eerste heb ik gevonden dat in de __ schedule() functie idle_balance (cpu, rq) wordt aangeroepen die proberen wat load balancing uit te voeren als de huidige runqueue leeg is.

Dan heb ik ook gevonden in het core.c bestand is er een functie scheduler_tick() die periodiek lijkt te worden aangeroepen, rq en andere datastructuren bijwerken en ook de taakverdeling uitvoeren (aanroepende functie trigger_load_balance (rq, cpu) ). Heb ik gelijk? Maar hoe werkt de scheduler_tick() ? Waar is de timer? Ik weet dat de CVS niet op tikken is. Dus waarschijnlijk is er een timer gemaakt na de boot die periodiek scheduler_tick() zal oproepen?

Dit lijkt een naïeve vraag, maar ik ben nu een beginneling van het linux-systeem.

0
scheduler_tick() is waarschijnlijk alleen gekoppeld aan timer IRQ handler.
toegevoegd de auteur Griwes, de bron
@Griwes Bedankt. Ik denk het.
toegevoegd de auteur Hao Shen, de bron

1 antwoord

It's fired by an interrupt request generated at intervals by the system timer. 1

0
toegevoegd
De systeemklok wordt gemaakt tijdens de fabricage van het moederbord in een fabriek :-)
toegevoegd de auteur Evan Harper, de bron
Dus ik denk dat mijn begrip klopte. De systeemklok is gemaakt tijdens het opstarten. Dankje,
toegevoegd de auteur Hao Shen, de bron