2010-12-29 17 views
5

(NB: Tu nie chodzi o przerywanie Java/.NET wątki, to jest o przerwań trybu jądra.)Co to jest przerywanie gwintowania?

Cześć,

Wikipedia ma do powiedzenia na temat przerwań wątków w artykule Interrupt handler:

przerwań nici

kilka systemów operacyjnych - Solaris NetBSD, Mac OS X, FreeBSD i WinCE, na przykład - użyj innego schematu znanego jako wątek przerwań. Obsługa przerwań dostarczana przez sterownik urządzenia jest tylko wątkiem o wysokim priorytecie , który jest uruchamiany z włączonymi przerwaniami i, co ważniejsze, może blokować na muteksie . To znacznie upraszcza blokowanie w jądrze. Ponadto wątek przerwań może być wywłaszczony przez wątek o wyższym priorytecie przerwania wątku.

Jaka jest ta technika przerwania wątków, które podobno używa FreeBSD (między innymi)? I gdzie mogę przeczytać więcej na ten temat?

Z góry dziękuję. :)

Odpowiedz

1

Jest więcej informacji technicznych w FreeBSD's ithread(9).

+0

Witam. Wygląda na to, że o to pytam, czy mógłbyś bardziej szczegółowo opisać, jak to działa i jak różni się od innych podejść w odroczonej realizacji przerwania? –

+0

Nie znam szczegółów, przepraszam. http://www.freebsd.org/doc/en/books/arch-handbook/smp-design.html wydaje się jednak mieć więcej informacji. – BCran

2

Sprzęt informuje system operacyjny o niektórych zdarzeniach z przerwami. Mogą one zostać podniesione, gdy wystąpi błąd lub gdy jakieś urządzenie peryferyjne ma nowe dane (użytkownik nacisnął klawisz, pakiet przybył do sieci, upłynął czas, ...). Przerwy te muszą być szybko obsługiwane przez system (tak, aby wyglądał na responsywny).

Są obsługiwane przez jądro. Zwykle, gdy dojdzie do takiej przerwy, aktualnie uruchomiony kod zostaje zatrzymany, a wywoływana jest funkcja jądra. Przerwy muszą być szybko wykonywane, aby mieć system reagujący, więc nie mogą blokować jądra oczekującego na jakiś zasób, lub zrobić coś takiego. Klasycznym rozwiązaniem jest posiadanie głupiej funkcji przerywającej, która po prostu odnotowuje liczbę przerwania i powrotu, a następnie w głównej pętli jądra, aby sprawdzić, czy nastąpiła jakakolwiek przerwa i zadzwonić do prawdziwej obsługi.

Ponieważ te przerwy mogą być maskowane (z wyjątkiem niemaskowionych przerw - NMI), jądro może odradzać wątki w trybie jądra i tylko je demaskuje przerwanie i obsługuje je. Ponieważ te wątki są niezależne od głównego wątku jądra, mogą blokować, pod warunkiem, że istnieje wystarczająca ilość wątków do obsługi przerw, które mogą się pojawić, gdy wątek jest blokowany.

+0

Witam. Dziękuję za odpowiedź. Rozumiem potrzebę odroczonego wykonania w oparciu o przerwania, co mnie szczególnie interesuje to ta technika robienia tego, co nazywa się Przerwaniem wątków. –