linux-l: Multitasking-Konzepte

loewis at informatik.hu-berlin.de loewis at informatik.hu-berlin.de
Fr Aug 1 22:24:17 CEST 1997


> > Das Stimmt nicht. Scheduling wird nicht nur durch einen Interrupt ausgeloest,
> > sondern immer wenn ein Prozess auf eine Resource warten muss (z.B Platten-
> > zugriff). 
> 
> Diese Aussage ist widerspruechlich, einerseits schreibst du, das das
> Scheduling nicht NUR durch einen Interrupt ausgeloest wird und
> andererseits wird dies IMMER durch einen einen wartenden Prozess
> ausgeloest. 

Deutscher Spracher schwerer Spracher... m.E. ist der Satz aequivalent zu
Scheduling wird immer ausgeloest, wenn ein Prozess warten muss.
Das ist was anderes als
Scheduling wird immer durch wartende Prozesse ausgeloest.

Der erste Satz sagt was ueber Situationen aus, in denen der Scheduler
aktiv ist (ein Prozess wartet -> Scheduler aktiv), der zweite sagt
etwas ueber alle Ursachen des Scheduling (Scheduler aktiv ->
ein Prozess hat gewartet).

> Du solltest vielleicht spezifizieren, was du mit Realzeitprozess
> meinst. Unter "normalen" Linux, also nicht Real-Time-Linux und nicht
> modifizierter Scheduler sollte kein Prozess das System aufhaengen
> koennen(Korrektheit des Kernels vorausgesetzt, was natuerlich nicht
> mit vernuenftigem Aufwand ueberprueft werden kann). 

Unter "normalem" Linux (etwa 2.0.x) kann man mit setscheduler(2)
"Realzeitprozesse" erzeugen. Wenn man als Parameter SCHED_FIFO
angibt und danach while(1); ausfuehrt, steht das System - keine
Zeitscheiben mehr. Sowas darf natuerlich nur Ruth. SCHED_RR ist
etwas freundlicher, SCHED_OTHER der Normalfall.
Details siehe kernel/sched.c. setscheduler ist uebrigens ein Posix-
konformer Systemruf.

Ciao,
Martin




Mehr Informationen über die Mailingliste linux-l