ENGLISH VERSION |
|
Links | | | Forum | | | Kommentare | | | News melden |
Chat | | | Umfragen | | | Newsticker | | | Archiv |
amiga-news.de Forum > Programmierung > Preemptive vs. Time Sliced Multitasking | [ - Suche - Neue Beiträge - Registrieren - Login - ] |
-1- | [ - Beitrag schreiben - ] |
03.09.2002, 12:17 Uhr Jazz_Rabbit Posts: 420 Nutzer |
Hallo Amiganer! Heute habe ich mir in der Firma eine Präsentation über Threads und Multitasking angehört, welche sich als äusserst interessant herausstellte. Der Unterschied zwischen Preemptive und Time Sliced Multitasking besteht darin, das beim Preemptiven einen Thread od. Prozess gesagt wird, er solle bitte seinen Prozess abarbeiten und das so schnell wie möglich. Dadurch werden andere Threads blockiert, weil die Abarbeitung länger dauern soll. Bei Time Sliced Multitasking Systeme ist es so, das man einem Thread sagt, wieviel Zeit er hat, um sich abzuarbeiten, ehe sie verstrichen ist (time out) und damit ein anderer Thread drankommt. Zum Beispiel Thread 1 hat 20 ms und hält die nicht ein.. Sie wird von der Priorität nach unten geschoben.. der nächste ist dran.. Thread 2 schafft seinen Code abzuarbeiten und damit kommt gleich der nächste dran, bis der Thread da ist, ders nicht geschafft hat und probierts nochmal, seinen Code abzuarbeiten.. So habe ich es verstanden. Wenn also tatsächlich AmigaOS mit Preemptiven Multitasking arbeitet, dann ist das doch das deutlich unechtere Multitasking, oder? Meine 2 Cents-Gedanken. -- cu!:bounce: ----------------------------------- -= Jazz_Rabbit =- Where the 680x0 comes out Tonight. [ - Antworten - Zitieren - Direktlink - ] |
03.09.2002, 12:48 Uhr ylf Posts: 4112 Nutzer |
Ich bin da kein Experte, aber ich glaube, das hast du falsch verstanden. Beim Preemtiven Mulrtitasking kann das System jederzeit einem Prozess stehen lassen und die Rechenleistung einem wichtigeren Prozess überlassen. Im Gegenteil dazu müssen beim Kooperativen Multitasking alle Prozesse warten, bis der eine, der gerade dran ist, fertig ist. Wenn man den Aussagen kompeter Programmierer glauben schenken mag, dann verhält sich der Kernel des AmigaOS fast wie ein Echtzeit-System, ist aber keins. Das wirst du selber merken, wenn du deinen Amiga mal richtig forderst. Der Mauszeiger bleibt nicht stehen, bzw. ruckelt niemals, egal wie sehr die CPU gerade ackert. (Ausnahmen bestätigen die Regel) Krasses Gegenbeispiel, Win3.x. Wenn Netscape den Cache leert, leert Netscape den Cache und der Rest macht nix. MacOS9 ist nicht ganz so schlimm, zeigt aber ähnliche Symtome. Falls ich Unsinn geschrieben habe, bitte ich um Klarstellung. bye, ylf [ - Antworten - Zitieren - Direktlink - ] |
06.09.2002, 11:05 Uhr mrbbc Posts: 101 Nutzer |
Jep. Preemptiv kann Tasks nach Belieben stoppen Kooperatives MT nur bedingt; es gibt Fälle, wo ein Task das System gnadenlos festnagelt - aber nicht Endlosschleifen - sodass das Betriebssystem nicht mehr in Aktion treten kann. Beim kooperativen MT gibt es des Öfteren Fälle, wo das Programm das System anhält - bei Netscape 4 unter Windows übrigens blockiert sich das gesamte Programm wenn es bestimmte langsame Website abruft, d.h. man kann dann nicht zwischen mehreren geöffneten Fenstern wechseln; hingegen läuft Windows munter weiter; man kann andere Fenster in den Vordergrundholen, und ganz normal weiter machen; Das liegt daran, dass der Prozess in einem einzigen Thread abläuft. - Kleiner Designfehler; die Programmierer haben einfach nicht mit dem Fall gerechnet. Vermutlich verhält sich der Server auch nicht ordentlich, und läßt die Brauser vergeblich auf eine als prompt angekündigte Antwort warten. Unter kooperativen MT blockiert so was alle anderen laufenden Programme. Aber: man kann das blockierende Programm abschiessen. Pro-Contra: Koop. MT unterbricht Tasks nicht vorzeitig, was Zeit vergeuden würde, aber garantiert, dass Programme nicht blockieren können. Wären die Programme astrein, ist koop. MT besser und schneller, vorallem bei langsameren Rechnern. Sie sind aber viel schwerer zu programmieren; mit entsprechenden Bibliotheken und vorallem einem präparierten Compiler könnte man Abhilfe schaffen. Preemp. MT wirkt flüssiger gegenüber "schlecht programmierten" koop.-MT-Programmen, etwaige Zeitverluste fallen zudem bei heutigen Rechnern überhaupt nicht mehr ins Gewicht. Echtes MT - im Sinne von Gleichzeitigkeit - gibt es nur bei vernetzten Rechnern. Zwar werden Befehle und Tasks in einem einzigen Computer über mehrere "Pipelines" oder sogar CPUs abgearbeitet, aber der Zugriff auf RAM und vieles mehr erfordert, dass es eben nicht von vorne bis hinten gleichzeitig abläuft. Selbst DMA läuft nicht neben der CPU, sondern die CPU muss/darf schlicht nichts tun, solange ein DMA läuft. [ - Antworten - Zitieren - Direktlink - ] |
-1- | [ - Beitrag schreiben - ] |
amiga-news.de Forum > Programmierung > Preemptive vs. Time Sliced Multitasking | [ - Suche - Neue Beiträge - Registrieren - Login - ] |
Impressum |
Datenschutzerklärung |
Netiquette |
Werbung |
Kontakt
Copyright © 1998-2024 by amiga-news.de - alle Rechte vorbehalten. |