Poziom priorytetu przerwań - Interrupt priority level

Poziom priorytetu przerwań ( IPL ) jest częścią obecnego systemu przerwań stanie, co wskazuje na przerwania żądań , które obecnie są akceptowane. IPL może być wskazana w sprzęcie przez rejestry w programowalnego kontrolera przerwań , lub programowo przez bitową liczbę całkowitą lub wartość, a kod źródłowy nici

Przegląd

Liczbą całkowitą IPL podstawie może być tak mały, jak w jednym kawałku, z tylko dwie wartości: (włączone wszystkie przerwania) 0 lub 1 (wszystkie przerwania wyłączone), podobnie jak w technologii MOS 6502 . Jednak niektóre architektury pozwalają na większy zakres wartości, gdzie każda wartość umożliwia przerwań żądania, które określają wyższy poziom, jednocześnie blokując te z tym samym lub niższym poziomie.

Przypisywanie różne priorytety przerwać wnioski mogą być przydatne, próbując zrównoważyć przepustowość systemu w porównaniu do przerwania latencji : niektóre rodzaje przerwań należy odpowiedział szybciej niż inni, ale ilość przetwarzania nie może być duża, więc ma to sens, aby przypisać wyższy priorytet tego rodzaju przerwania.

Kontrola poziomu przerwania był również używany do synchronizowania dostępu do struktur danych jądra. Tak więc, poziom-3 scheduler obsługi przerwań będzie chwilowo podnieść IPL do 7 przed uzyskaniem dostępu do żadnych rzeczywistych struktur danych harmonogramu, a następnie dolną część pleców do 3 zanim faktycznie przełączania kontekstów procesu. Została ona jednak nie pozwoliło na obsługę przerwań w celu obniżenia IPL poniżej tej, na której został on wprowadzony, ponieważ do tego może zniszczyć integralność systemu synchronizacji.

Oczywiście, wieloprocesorowe systemy dodawać własne komplikacje, które nie zostały uwzględnione tutaj.

Niezależnie od tego, jaki sprzęt może obsługiwać typowe UNIX systemy -Type dokonać jedynie korzystanie z dwóch poziomów: minimalny (wszystko przerywa wyłączone), a maksymalna (włączone wszystkie przerwania).

OpenVMS IPL

Jako przykład jednego z bardziej rozbudowanych systemów IPL wentylacyjnych kiedykolwiek zadziałały, VAX komputer i związany VMS system operacyjny obsługuje 32 poziomów priorytetu, od 0 do 31. Priorytety 16 i powyżej są do żądania od zewnętrznego sprzętu, podczas gdy wartości poniżej 16 dostępne dla przerwań programowych (używane wewnętrznie przez system operacyjny, aby zaplanować własne działania). Nie wszystkie wartości są faktycznie wykorzystywane, ale oto niektóre z ważniejszych z nich:

  • Poziom 31 jest dla „Power-fail” przerwania.
  • Poziom 24 jest dla przerwania zegarowego. Uwaga ta ma wyższy priorytet niż wejść / wyjść przerwań.
  • Poziomy 20-23 są stosowane do urządzeń we / wy.
  • Poziomy 8-11 są wykorzystywane do widełek przerwań . Gdy kierowca odbiera przerwania urządzenia (priorytet 20-23), to ma robić tak mało, jak to możliwe przetwarzanie na tak wysokim priorytecie; Zamiast tego, czy wszelkie operacje czasochłonne muszą być wykonane, będą one musiały zostać odroczone przez żąda przerwania oprogramowania w zakresie 8-11; kiedy to przerwanie jest wyzwalane, dalsze przetwarzanie zostanie wznowione. Podobny do tego są „połówki” dolne i ich następców w Linux kernel.
  • Poziom 7 służy do synchronizowania dostępu do struktur danych proces harmonogramu.
  • Poziom 4 służy do I / O późniejszego przetwarzania zadań, to znaczy końcowej zakończeniu QIO żądanie zawiera zapis wyników do procesu aplikacji.
  • Poziom 3 służy do przerwania procesu zmianie rozłożenia. Dowolny kod wykonywany przy wyższych poziomach przerwań nie wolno zakładać, że tam był obecny kontekst procesu (ponieważ przełożyć proces może być w toku). W szczególności, błędy stron nie są dozwolone na terenie lub wyższych poziomach.
  • Poziom 2 służy do synchronizacji dostępu do struktury danych dla procesu. Za każdym razem jądro potrzebuje dostępu do kontekstu procesu, wysyła ten proces jest specjalną jądra AST , które wykonuje w ramach procesu przy IPL 2.
  • Poziom 0 jest wyższy od normalnego poziomu wykonanie kodu bez przerwań, w tym zwykły kod aplikacji.

Alpha sprzętu zawiera natywne wsparcie dla IPL. Kiedy OpenVMS został przeniesiony do Itanium w 2001 roku, program IPL symulowano za pomocą funkcji oferowanych przez sprzęt Itanium.

Zobacz też