2013-08-23 12 views
6

Jaka jest różnica między "RES: Przerwanie zmiany harmonogramu" i "LOC: Przerwanie lokalnego zegara"? Co jest odpowiedzialne za odpalenie przerwania OZE? Czy LOC jest takie samo jak ogólne przerwanie zegara generowane przez Timer h/w w procesorze?Co to są przestawienia przerwań (RES)? Co to powoduje? Jak jest obsługiwany w jądrze Linuksa?

Proszę również wyjaśnić, która część harmonogramu jest wywoływana podczas przerwania zegara i przerwania RES. Jak to się dzieje w jądrze Linuksa?

Z góry dziękuję.

Odpowiedz

9

Zmiana harmonogramu przerwań to sposób, w jaki jądro systemu Linux uruchamia bezczynny rdzeń procesora, aby zaplanować wątek na nim. W systemach SMP jest to często wykonywane przez program planujący w celu rozprzestrzeniania obciążenia na wiele rdzeni procesora.

Program planujący próbuje rozpowszechniać aktywność procesora na jak największej liczbie rdzeni. Ogólna zasada jest taka, że ​​lepiej jest, aby tak wiele procesów działało na wszystkich rdzeniach z mniejszą mocą (niższe częstotliwości taktowania), niż gdyby jeden rdzeń był naprawdę zajęty z pełną prędkością, podczas gdy inne rdzenie spały.

Zmiana terminów przerwania są realizowane z wykorzystaniem Inter-Processor Interrupts (IPI). Aby uzyskać więcej informacji, kliknij tutaj: article on Rescheduling Interrupts on Linux.


lokalny zegar przerywa są podnoszone przez APIC dla konkretnego CPU-core. Tylko rdzeń procesora odbiera przerwań i obsługuje je. Aby zapoznać się z krótkimi opisami różnych jego zalet, sprawdź to: answer.

+0

Dzięki za odpowiedź. Tak więc ** 'TIF_NEED_RESCHED' ** w kodzie programu CFS zasadniczo obsługuje to przerwanie RES? A po drugie, które przerwanie uruchamia program planujący? Czy to przerwanie zegara przez APIC? Jeśli tak, zrób zarówno timer, jak i przerywające przerywanie w asynchronicznie w.r.t. wzajemnie? Lepsza klarowność wywołania programu planującego. Dzięki jeszcze raz! – user31986