5

nie mogłem znaleźć właściwą odpowiedź na następujące pytania nawet w niektórych dobrze napisanych książek jądra:Co dzieje się z wyłączoną obsługą przerwań?

  1. Oni mówią, że Izrael nie może spać, bo to nie jest możliwe, aby przełożyć się ISR, ponieważ nie jest połączony z dowolnym procesem, więc co się stanie, gdy przerwanie o wyższym priorytecie będzie zapobiegać wykonywaniu? przerwany ISR nie zostanie ponownie przełożony (wykonać)? jeśli tak, & kto to zrobi?

  2. wiele czasu będziemy wyłączać przerwania (np: 1.W obszar krytyczny 2. Kiedy szybko przerwania jest wykonywany będzie wyłączyć wszystkie przerwania w bieżącym procesora), więc co będzie dla przerwań, które mają miejsce, gdy przerwań są wyłączone? są po prostu odrzucane? lub będą przechowywane gdzieś do późniejszej realizacji? jeśli tak, gdzie & jak?

  3. podczas wykonywania ISR wyłączy przerwanie w bieżącej linii IRQ, aby uniknąć ponownego wprowadzania (uniemożliwiając wykonanie innego ISR na tej samej linii), ale dlaczego? co jest nie tak, jeśli ISR ​​jest reentrantem?

* obsługa przerwań ISR = Rutynowa

* Oni = książka Autora

+1

Informacja o "szybkich przerwań" jest nieaktualna. To zostało usunięte z Linuxa jakiś czas temu. Wszystkie przerwania powinny być szybkie. * przerwania gwintowane * zastąpiły tę funkcję. Zobacz: http://lwn.net/Articles/302043/ –

Odpowiedz

1

O ile wiem, że ISR można uprzedzać inny przerwać i kontynuować działanie po tym. Nie widzę powodu, dla którego proces mógłby zostać umieszczony na stosie, a ISR nie.

Procesy są rzeczą na poziomie systemu operacyjnego, podczas gdy ISR są rzeczą na poziomie procesora. Jeśli wywołasz sleep() w procesie, mówisz systemowi operacyjnemu, że nie masz żadnej pracy dobrze wiadomo i że może on uruchomić inny proces. Nie dotyczy to ISR.

Również what is meant by disabling interrupts?

0

Postaram się odpowiedzieć na pytania 1. odpowiedź na 1) ISR nie może spać, ponieważ działa w kontekście aktualnie uruchomionego procesu. Jeśli śpią, aktualnie uruchomiony proces zostanie przeniesiony do stanu uśpienia. To niepożądane.

1

Przerwanie przechwytuje wykonanie z przestrzeni użytkownika do jądra, najpierw zapisując bieżące stany procesora i zmuszając licznik programu (PC) do przejścia do położenia tabeli wektorów przerwań. Tabela zawiera następnie wskaźnik do funkcji (sekwencji) jądra, która zapisuje bieżące stany procesu i odwzorowuje identyfikator przerwania na początek ISR. Gdy podczas ISR dochodzi do przerwania o wyższym priorytecie, zachodzi ta sama sekwencja zdarzeń, z tym że zarówno uruchomiony ISR, jak i przychodzące przerwanie są obsługiwane przez ten sam proces (jądro), dlatego żaden proces nie jest uśpiony.

Nowe przerwania są oczywiście ignorowane, jeśli są wyłączone. Jednak przerwanie może być oczekujące, jeśli jest włączone, gdy procesor obsługuje przerwanie o wyższym priorytecie.

ISR to wywołanie funkcji w przestrzeni jądra i wymaga przydziału własnego stosu. Przerwania ponownego wprowadzania mogą powodować przepełnienie stosu, jeśli istnieje zbyt wiele przejęć. Większość jądra (w tym Linux i Windows) mają stały rozmiar stosu.

2
  1. Tak, w systemie operacyjnym tylko zadania są sortowane w trybie RR. Celem planowania jest współdzielenie zasobów procesora, sprawiedliwe udostępnienie mocy obliczeniowej procesora dla każdego uruchomionego zadania.Samo przerwanie ma obsłużyć określone zdarzenie, a każde przerwanie ma swój własny priorytet. Przerwanie wyższego priorytetu może wyprzedzić działający ISR o niskim priorytecie.

    Sposób działania opiera się na rejestrze mas przerwań na kontrolerze przerwań, kiedy ISR uruchamia się, ustawia rejestr maski w celu wyłączenia przerwań o niższych priorytetach, a przed powrotem ISR przywraca rejestr masek w celu umożliwienia przerwania o niższym priorytecie.

  2. przerwania żądań uchwyt jest proponowany przez urządzenia sprzętowego, to pull down pin przerwania do kontrolera przerwań podczas przybycia danych. Jeśli intterupt jest wyłączony (maska ​​jest ustawiona), żądanie sprzętu jest w toku, a pin przerwania jest utrzymywany na niskim poziomie. Przerwanie nastąpi ponownie po włączeniu przerwania (maska ​​jest wyczyszczona).

  3. CPU będzie stale wywoływać przerwania i eventaully dostać stackoverflow!

Powiązane problemy