Forum

Einloggen | Registrieren | RSS  

scheduler

03.04.2013,
15:28
 

Prozessverwaltung, Scheduling etc. (Computertechnik)

Hallo Leute!


Ich versuche jetzt ein paar Sachen zu erklären:

Also, ein Scheduler ist dafür zuständig die Prozesse der CPU zuordnen.

Es gibt 2 Grundsysteme: kooperatives Multitasking(Der aktive Prozess gibt von sich aus die CPU nach einem bestimmten Zeitpunkt frei) und verdrängendes Multitasking(Der Scheduler kann einem aktiven Prozess die CPU entziehen(durch Timer-Interrupt z.B.)).

Scheduler-Strategien:
- first come - first serve: Also nach dem Prinzip "Wer zuerst kommt, malt zuerst", d.h. je früher der Prozess da ist, desto früher wird ihm die CPU zugeteilt.

- Prioritätssteuerung: jedem Prozess wird eine Priorität hinzugeteilt. Je höher diese ist, desto früher wird dem Prozess die CPU zugeteilt.

- round robin(zeitverschiebeverfahren): Die Prozesse sind in der Warteschlange, diese wird durch "Wer zuerst kommt, malt zuerst" angeordnet oder? Je früher ein Prozess kommt, desto weiter vorne steht er in der Warteliste.
Und dann gibt es eine Zeitschlitz, d.h. wenn dieser 20ms wäre, dann wird der 1. Prozess 20ms die CPU bzw. Ressourcen zugeteilt und dann stellt er sich hinten in der Warteschlange an --> 2. Prozess kommt für 20ms dran usw.

Stimmt das was ich bisher gesagt habe? Fehlt noch etwas, was noch wichtig zu sagen wäre?

Wie ist denn das? Wird nach 20ms ein Timer-Interrupt ausgelöst, d.h. round robin wird nur beim verdrängenden Multitasking verwendet?

Bei Prioritätssteuerung und first come - first serve, wenn der Prozess die CPU zugeteilt wird, wie lange wird da der Prozess ausgeführt? Bis er fertig ist? Oder wie geht das genau? Wie hängt das zusammen?

"Scheduling als arbeiten mit Listen":

Ok ich weiß nur das es eine Prozess-Tabelle gibt. Wie werden die Prozesse da angeordnet? Sind die irgendwie in der Tabelle angeordnet? Diese Prozesse in dieser Tabelle sind mit Pointern verbunden, also einfach eine einfach verkettet Liste. Und in welche Reihenfolge wird verkettet? Also wie anordnen?

Es gibt da Ready-, Blocked-, und Free-Listen, d.h. nur Prozesse die Ready sind in die Ready-List, die Blocked sind die Blocked-List usw., richtig?

Naja erstmal das hier verstehen, vielleicht weiß ich dann genau wie gemischtes Scheduling und watch Dog funktioniert.

Bitte helft mir!

Danke.

mfg scheduler

scheduler

03.04.2013,
21:30

@ scheduler

Prozessverwaltung, Scheduling etc.

Kann mir denn jemand bitte helfen? Es ist wichtig für mich und zu dieser Thematik finde ich nix brauchbares dazu :(.

otti(R)

E-Mail

D,
03.04.2013,
22:29

@ scheduler

Prozessverwaltung, Scheduling etc.

» Kann mir denn jemand bitte helfen? Es ist wichtig für mich und zu dieser
» Thematik finde ich nix brauchbares dazu :(.

Hallo Scheduler,
Du lernst das doch bestimmt - kannst Du da nicht nachfragen.
Ich kenne mich da auch nur rudimentär aus, aber alle Informationen und Links, die ich Dir gab, fand ich schon nach dem ersten oder zweiten Schlagwort von Dir im Netz.
Musst Dich etwas mehr anstrengen bei der Suche.;-)
Ich verstehe das prinzipiell wenn ich es lese, kann es Dir aber nicht sattelfest mit eigenen Worten erklären.

Hier noch ein kleiner Tipp, wer der CPU Prozesse zuordnet oder entzieht.
http://de.wikipedia.org/wiki/Dispatcher

--
Gruß
otti
_____________________________________
E-Laie aber vielleicht noch lernfähig

Michael Krämer

04.04.2013,
09:55

@ scheduler

Prozessverwaltung, Scheduling etc.

Hallo,

ja, ist im Prinzip alles korrekt. Ein paar kleine Anmerkungen:

» - first come - first serve: Also nach dem Prinzip "Wer zuerst kommt, malt
» zuerst", d.h. je früher der Prozess da ist, desto früher wird ihm die CPU
» zugeteilt.
Das Sprichwort haben die Müller erfunden, nicht die Anstreicher. Der erste mahlt also zuerst.

» - Prioritätssteuerung: jedem Prozess wird eine Priorität hinzugeteilt. Je
» höher diese ist, desto früher wird dem Prozess die CPU zugeteilt.
Nicht ganz. In einem streng prioritätsgesteuerten System ist jede Priorität höchstens einmal vergeben. Es bekommt immer der Prozess die CPU, der gerade die höchste Priorität hat und "READY" ist. Der, mit der höchsten Priorität, bekommt die CPU also sofort (Echtzeit!) und ein Prozess mit niedrigerer Priorität wird unterbrochen. Über den Begriff "sofort" kann man lange streiten und er hängt auch von der Prozessorleistung ab. Um es mit Schabowski zu sagen: "sofort, unverzüglich", nicht "früher", im Sinne von "wenn's genehm ist".

» - round robin(zeitverschiebeverfahren): Die Prozesse sind in der
» Warteschlange, diese wird durch "Wer zuerst kommt, malt zuerst" angeordnet
» oder? Je früher ein Prozess kommt, desto weiter vorne steht er in der
» Warteliste.
Es ist eine Warteschlange und jeder bekommt reihum die CPU. Dabei ist es im Grunde egal, an welcher Stelle ein bestimmter Prozess steht, außer am Anfang. Denn irgendwo muß das System ja mal starten. Das ist aber, nachdem es gestartet ist, normalerweise irrelevant.

» Und dann gibt es eine Zeitschlitz, d.h. wenn dieser 20ms wäre, dann wird
» der 1. Prozess 20ms die CPU bzw. Ressourcen zugeteilt und dann stellt er
» sich hinten in der Warteschlange an --> 2. Prozess kommt für 20ms dran
» usw.
»
» Stimmt das was ich bisher gesagt habe? Fehlt noch etwas, was noch wichtig
» zu sagen wäre?
»
» Wie ist denn das? Wird nach 20ms ein Timer-Interrupt ausgelöst, d.h. round
» robin wird nur beim verdrängenden Multitasking verwendet?
So ist das in der Regel, aber nicht notwendigerweise. Es kann auch irgendein anderer Interrupt sein. Man braucht ja nur ein Signal, das anzeigt, daß der nächste Prozess an der Reihe ist. Das könnte z.B. auch ein UART receive Interrupt sein. Der Sender schickt dann jedesmal ein Zeichen, wenn der nächste Prozess an der Reihe ist.

» Bei Prioritätssteuerung und first come - first serve, wenn der Prozess die
» CPU zugeteilt wird, wie lange wird da der Prozess ausgeführt? Bis er fertig
» ist? Oder wie geht das genau? Wie hängt das zusammen?
Bei echter Prioritätensteuerung (Echtzeit-OS) wird ein höher-priorer Prozess den niedrig-prioren unterbrechen. Bei first come, first serve wird ein Prozess die CPU solange behalten, wie er sie braucht. Er muß sie dann also irgendwann aktiv abgeben. All die genannten Verfahren lassen sich aber auch geschickt kombinieren.

» "Scheduling als arbeiten mit Listen":
»
» Ok ich weiß nur das es eine Prozess-Tabelle gibt. Wie werden die Prozesse
» da angeordnet? Sind die irgendwie in der Tabelle angeordnet? Diese Prozesse
» in dieser Tabelle sind mit Pointern verbunden, also einfach eine einfach
» verkettet Liste. Und in welche Reihenfolge wird verkettet? Also wie
» anordnen?
»
» Es gibt da Ready-, Blocked-, und Free-Listen, d.h. nur Prozesse die Ready
» sind in die Ready-List, die Blocked sind die Blocked-List usw., richtig?
»
» Naja erstmal das hier verstehen, vielleicht weiß ich dann genau wie
» gemischtes Scheduling und watch Dog funktioniert.

Das sind Implementierungsdetails, anders gesagt, das kann man so oder so machen. Das hängt sicherlich auch davon ab, was die CPU Architektur hergibt.

»
» Bitte helft mir!
»
» Danke.
»
» mfg scheduler

Schönen Gruß,

Michael

scheduler

04.04.2013,
19:53

@ Michael Krämer

Prozessverwaltung, Scheduling etc.

Danke dir!

Und noch eine Frage:

Der Prozess befindet sich ja auch einer physikalischen Adresse und auf einer virtuellen Adresse. Aber heißt das? Was passiert da ungefähr? Was bringen diese virtuellen Adressen und physikalischen?

Virtueller Speicher:

So ein virtueller Speicher wird ja auf einem Massenspeicher geholt, wenn der Speicher auf dem RAM nicht mehr ausreicht, oder?

Da gibts ja so Seitenrahmen(realer Speicher) und Seiten(virteuller Speicher).

Naja und die MMU ist dafür zuständig von virtueller Adresse auf physikalischer Adresse zu rechne, aber was hat das für einen Siinn? Wenn es eh genügend physikalischen Speicher gibt, warum macht man dann einen virtuellen?

Ich hab im Anhang ein Bild zu 2 physikalischen Addressen berechungs-bsp.

Kann dir mir jemand wer erklären bitte? Dann müsste ich auch das Paging verstehen.

Danke.


Michael Krämer

05.04.2013,
11:01

@ scheduler

Prozessverwaltung, Scheduling etc.

» Der Prozess befindet sich ja auch einer physikalischen Adresse und auf
» einer virtuellen Adresse. Aber heißt das? Was passiert da ungefähr? Was
» bringen diese virtuellen Adressen und physikalischen?
Nunja, der Prozess hat virtuelle Adressen, die von der MMU auf physikalische Adressen umgesetzt werden. Diese Umsetzung wird vom Betriebssystem gesteuert. Die physikalische Adresse kann sich dabei im Laufe des Betriebs ständig ändern. Sie ist für den Prozess selbst irrelevant. Er kennt nur die virtuelle Adresse.

Ursprünglich wurde die virtuelle Adressierung eingeführt, um kostbaren RAM Platz zu sparen und Prozesse temporär auf weitaus preisgünstigere Festplatten auszulagern. Bei den heutigen RAM-Preisen ist das kein Argument mehr. Aber die MMU hat noch eine weitere Aufgabe, sie schützt Speicherbereiche von unzulässigen Zugriffen. Ohne MMU könnte man unter Windows oder Linux mit einem Dreizeiler den gesamten Speicher löschen.

Embedded Systeme verwenden in der Regel andere Speicherschutzmechanismen, nämlich MPUs (Memory Protection Units). Sie generieren Exceptions, wenn ein Prozess unberechtigte Zugriffe versucht. Eine MMU kann zu nicht-deterministischem Verhalten führen, jedenfalls wenn page-faults vorkommen können, was bei Embedded Systemen meist nicht toleriert wird.

»
» Virtueller Speicher:
»
» So ein virtueller Speicher wird ja auf einem Massenspeicher geholt, wenn
» der Speicher auf dem RAM nicht mehr ausreicht, oder?
»
» Da gibts ja so Seitenrahmen(realer Speicher) und Seiten(virteuller
» Speicher).
»
» Naja und die MMU ist dafür zuständig von virtueller Adresse auf
» physikalischer Adresse zu rechne, aber was hat das für einen Siinn? Wenn es
» eh genügend physikalischen Speicher gibt, warum macht man dann einen
» virtuellen?
Ja, richtig. In dem Fall hat es nur den Sinn, Speicher vor unberechtigten Zugriffen zu schützen. Ein weiterer Vorteil ist natürlich auch, daß das Betriebssystem den Speicher einfacher verwalten kann, ohne jeweils alle individuellen Adressen eines Prozesses anzupassen.

Michael