Re: IRQ_NOT_LESS_OR_EQUAL - zaraz mnie coś trafi.

Autor: trashcan man (trash_at_military.milnet.pl)
Data: Fri 18 May 2001 - 21:38:03 MET DST


On Mon, 14 May 2001 17:38:08 +0200, Radoslaw Sokol wrote:
> > irql to interrupt level. nie pamietam dokladnie, ale irql==PASSIVE_LEVEL
> > oznacza normalna prace - wszystkie przerwania wlaczone, wywlaszczanie
> > (scheduling) dziala tak, jak zwykle. irql==DISPATCH_LEVEL oznacza
> > wylaczenie wywlaszczania - nastepuje to po KeAcquireSpinlock() (pisze
> > z pamieci, nie jestem pewien). wyzsze poziomy irql oznaczaja priorytety
>
> OK, ale mi się nadal wydaje, że IRQL to "Internal Request Level",

interrupt request level.

> a cała reszta całkiem się zgadza, ino że dotyczy programowania
> schedulera wątków jądra NT i z przerwaniami ma tylko tyle wspólnego,
> że niektóre wątki obsługują przerwania i mają priorytet umożliwia-
> jący natychmiastową reakcję :)

niezupelnie. scheduler winnt, podobnie jak wszystkie znane mi
implementacje, opiera sie na przerwaniach - w szczegolnosci zegarowym.
w pewnych sytuacjach przerwania trzeba wylaczyc, inaczej nastapi
deadlock. na systemach, ktore obsluguja priorytety sprzetowych
przerwan, typu amiga, jest do bardzo przydatne - porty szeregowe
maja maly bufor, w zwiazku z czym przerwania przez nie generowane
maja wyzszy priorytet, niz chociazby przerwania flopa; dzieki temu
minimalizuje sie ryzyko utraty danych z portu. irql okresla priorytet
aktualnie wykonywanego przerwania - niekoniecznie sprzetowego,
do przerwan zalicza sie tez dpc, w linuxie nazywane bottom half.
przerwania o wyzszym priorytecie moga przerywac wykonywanie tych
o nizszym, przerwania o nizszym priorytecie niz aktualny irql
sa zamaskowane. w praktyce nt sprowadza zarzadzanie 'glownymi'
przerwaniami (tymi do i/o) do cli/sti. tak czy inaczej, maskowanie
przerwan w windows nastepuje poprzez zmiany irql.

> Jeśli nie zgadzasz się, podaj jakieś źródło to dokładnie opisujące.
> Ja opieram się na razie o http://www.sysinternals.com/ i ich opis
> działania schedulera NT.

sysinternals i winnt ddk.



To archiwum zostało wygenerowane przez hypermail 2.1.7 : Tue 18 May 2004 - 22:04:23 MET DST