5

Jakie są niektóre ważne czynności do zrobienia w trybie jądra i procedurę ISR? Na przykład -Ograniczenia podczas pracy jądra z procedurą ISR

  • Czy przełączanie kontekstów jest wyłączone podczas uruchamiania programu obsługi przerwania?
  • Czy przełącznik kontekstu może się zdarzyć, gdy proces znajduje się w krytycznej sekcji
    ?
  • Jakie okoliczności w trybie jądra wymagają wyłączenia dalszych przerwań?

Jak to możliwe, że proces przełączania może wystąpić na stronie błędu, gdzie proces pobiera dane z dysku, ale nie zdarza się podczas innych wystąpień przerwania. W jaki sposób klasyfikujesz, czy możliwa jest przerwa w wykonywaniu pliku/zmiana harmonogramu/uprzedzenie?

Jakie inne rzeczy należy pamiętać, gdy proces jest w trybie jądra lub podczas obsługi procedury ISR?

Odpowiedz

4

W skrócie: BRAK PRZEŁĄCZNIKA KONTRAKTU, EVER.

To znaczy:

  • Nie wywłaszczania
  • Brak zamki muteksy (stosowanie spinowe zamki zamiast i zapewnić sobie non-ISR odpowiedniki nabyć je spin_lock_irqsave wyłączenie przerwań)
  • Brak połączenia do dowolnego jądra funkcja, która może się uśpić (sprawdź dokumentację funkcji, niektóre funkcje mają również warianty wstrzymania).

Przełącznik procesu może wystąpić na stronie błędu, ale zdarza się po odpowiedni ISR ​​został przetworzony. Zasadniczo można zaplanować ścieżkę, jeśli nie jest to ISR i jeśli nie masz zablokowanej blokady. Jeśli posiadasz blokadę, musisz unikać snu, dopóki nie zostanie zwolniony.

Ponieważ ISR są bardzo powściągliwe, to obsługa przerwań IRQ jest zwykle dzielona między górną połówką (która działa w kontekście ISR i wykonuje zadanie krytyczne) a dolną połówką (która działa później jako wątek jądra i robi to, co jest może być opóźniony), które mogą spać. Więcej informacji można znaleźć na tej stronie:

http://www.makelinux.net/ldd3/chp-10-sect-4

Powiązane problemy