amiga-news 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. :rolleyes:


--
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.
.