Deutsch
Online-Dokumentation

prioritaet Erklärung: Erkl

 
Windows bietet die Möglichkeit, mehre Prozesse (also Programme) gleichzeitig laufen zu lassen - doch läuft da wirklich irgendetwas "gleichzeitig" ab? Nein. Alleine die Tatsache, daß es in der Regel nur einen Prozessor gibt zeigt, daß das wohl nicht der Fall ist. Das Betriebsystem muß also irgendwie festlegen, wann welches Programm wieviel Rechenzeit vom Prozessor enthält.

Wird ein Programm gestartet, wird ihm eine sogenannte "Basispriorität" mit auf den Weg gegeben, die festlegt an welcher Stelle das Programm in die "Warteschlange auf Prozessorzeit" eingefügt wird. Ein Bestandteil dieser "Basispriorität" ist die Priorität des Prozesses. Da ein Prozess aber auch mehrere Threads - also unabhängig ablaufende Programmteile - haben kann, kann auch jedem Thread eine zusätzliche unterschiedliche Priorität zugewiesen werden.

Beides, Priorität des Prozesses und Priorität eines Threads kann vom Programmierer festgelegt werden, in der Regel haben diese Prioritäten aber Standardwerte.
Nur wer am Anfang dieser angesprochenen "Warteschlange" steht, erhält wirklich im Augenblick Prozessorzeit zugewiesen. Dabei läuft im Hintergrund ein Zeitinterwall ab. Am Ende des Zeitinterwalls wird der augenblicklich laufende Thread vom Anfang der "Warteliste" an die letzte Stelle der wartenden Threads mit der gleichen Priorität verschoben.

Da nach dieser Methode Threads mit einer niedrigen Basispriorität gar nicht ausgeführt werden würden, gibt es da neben der Basispriorität noch die "Dynamische Priorität". So erhöht sich zum Beispiel je länger ein Prozess wartet diese "Dynamische Priorität", so daß auch Threads mit niedriger Basispriorität irgendwann einmal am Anfang der "Warteschlange" stehen. Diese "Dynamische Priorität" erhoht sich ebenfalls, wenn ein Fenster eines Prozesses den Focus bekommt - und das für alle Threads des Prozesses.
Ist ein Thread dann erst einmal am Anfang der "Warteschlange" angelang, verringert sich nach jedem Ablauf des Zeitinterwalls die Dynamische Priorität, bis wieder die anfängliche Basispriorität erreicht ist. Das Privileg SeIncreaseBasePriority  schränkt die API SetPriorityClass  ein.
SetPriorityClass ist dabei nicht auf die Aktivierung des Privilegs angewiesen, sondern aktiviert dieses selbst - es muß also nur vorhanden sein.
Fehlt das angesprochene Privileg, kann die REALTIME_PRIORITY_CLASS ($100) nicht vergeben werden. Wird versucht diese Priorität zu vergeben, wird die Priorität auf den dann höchsten Wert ($80) HIGH_PRIORITY_CLASS gesetzt. Eine Rückmeldung über evtl. nicht vorhandene Rechte erfolgt nicht.

Die API SetThreadPriority  wird nicht durch das Privileg eingeschränkt, obwohl diese API ebenfalls zum Setzen der Basispriorität beiträgt!
 
27.08.2006  
 



Hinweis/ Anmerkung/ Frage zum Hilfethema


Thementitel, max. 100 Zeichen.
 

Systemprofile:

Kein Systemprofil angelegt. [anlegen]

XProfan:

 Beitrag  Schrift  Smilies  ▼ 

Bitte anmelden um einen Beitrag zu verfassen.
 

Themenoptionen

509 Betrachtungen

Unbenanntvor 0 min.
E.T.10.11.2011

Themeninformationen

Dieses Thema hat 1 Teilnehmer:

iF (1x)


Admins  |  AGB  |  Anwendungen  |  Autoren  |  Chat  |  Datenschutz  |  Download  |  Eingangshalle  |  Hilfe  |  Händlerportal  |  Impressum  |  Mart  |  Schnittstellen  |  SDK  |  Services  |  Spiele  |  Suche  |  Support

Ein Projekt aller XProfaner, die es gibt!


Mein XProfan
Private Nachrichten
Eigenes Ablageforum
Themen-Merkliste
Eigene Beiträge
Eigene Themen
Zwischenablage
Abmelden
 Deutsch English Français Español Italia
Übersetzungen

Datenschutz


Wir verwenden Cookies nur als Session-Cookies wegen der technischen Notwendigkeit und bei uns gibt es keine Cookies von Drittanbietern.

Wenn du hier auf unsere Webseite klickst oder navigierst, stimmst du unserer Erfassung von Informationen in unseren Cookies auf XProfan.Net zu.

Weitere Informationen zu unseren Cookies und dazu, wie du die Kontrolle darüber behältst, findest du in unserer nachfolgenden Datenschutzerklärung.


einverstandenDatenschutzerklärung
Ich möchte keinen Cookie