2013-08-23 10 views
6

Qual è la differenza tra "RES: riprogrammazione interrupt" e "LOC: interrupt timer locali"? Qual è la responsabilità di attivare l'interrupt RES? LOC è lo stesso dell'interrupt generale del timer generato dal timer h/w nel processore?Che cosa è la riprogrammazione degli interrupt (RES)? Cosa lo causa? Come viene gestito nel kernel di Linux?

Inoltre, fornire una certa chiarezza su quale parte dello scheduler viene richiamata durante l'interruzione del timer e l'interrupt RES? Come succede nel kernel di Linux?

Grazie in anticipo.

risposta

9

rischedulazione interrompe sono il modo della kernel per sveglia un minimo CPU-core per programmare un filo su esso. Sui sistemi SMP, questo è spesso fatto dallo schedulatore nel tentativo di distribuire il carico su più core della CPU.

Lo scheduler tenta di distribuire l'attività del processore su più core possibile. La regola generale è che è preferibile avere un numero di processi in esecuzione su tutti i core in bassa potenza (frequenze di clock più basse) piuttosto che avere un core realmente occupato a piena velocità mentre altri core dormono.

interrupt Ripianificare sono implementati utilizzando Inter-Processor Interrupts (IPI). Per maggiori dettagli controlla questo article on Rescheduling Interrupts on Linux.


timer locale interrompe sono sollevati dal APIC per una specifica CPU-core. Solo che CPU-core riceve gli interrupt e li gestisce. Per una breve descrizione dei suoi vari vantaggi, controlla questo answer.

+0

Grazie per la risposta. Quindi il ** 'TIF_NEED_RESCHED' ** nel codice dello schedulatore CFS sta fondamentalmente gestendo questo interrupt RES? E, in secondo luogo, quale interrupt attiva lo scheduler? È l'interruzione del timer tramite APIC? In tal caso, entrambe le interruzioni di timer e di ripristino si verificano in modo asincrono con il servizio l'un l'altro? Una maggiore chiarezza sull'invocazione del pianificatore potrebbe essere d'aiuto. Grazie ancora! – user31986

Problemi correlati