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 schrieb:> Wie ist denn das? Wird nach 20ms ein Timer-Interrupt ausgelöst, d.h.> round robin wird nur beim verdrängenden Multitasking verwendet?
Es gibt üblicherweise einen zyklischen Timer. Dessen Interrupt kann den
Scheduler beeinflussen, also beispielsweise Tasks für lauffähig zu
erklären. Das ist unabhängig davon, ob kooperativ oder verdrängend.
Der Unterschied ist nur, dass der Interrupt in einem kooperativen System
stets zur aufrufenden Task zurückkehrt und eine ggf. notwendige
Umschaltung zu einem anderen von der Task kontrollierten Zeitpunkt
erfolgt, während der Interrupt in einem verdrängenden System ggf. zu
einer anderen Task zurückkehrt.
> 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?
Ist es wirklich so schwierig, konkrete Suchbegriffe mit Leben zu füllen?
Du hast scheinbar ein Script oder sowas in der Art vorliegen, in dem
nicht nur allgemeine Begriffe zu Schedulern vorkommen, sondern
beispielhaft bestimmte Organisationsformen dargestellt werden.
Allerdings gibt es mehrere Wege nach Rom, so dass der Entwickler eines
Schedulers einige Freiheit hat, seine Informationen zu strukturieren.
Das können eine oder mehrere einfach oder doppelt verkettete Listen oder
auch Arrays sein, oder was auch immer.
A. K. schrieb:> Der Unterschied ist nur, dass der Interrupt in einem kooperativen System> stets zur aufrufenden Task zurückkehrt und eine ggf. notwendige> Umschaltung zu einem anderen von der Task kontrollierten Zeitpunkt> erfolgt, während der Interrupt in einem verdrängenden System ggf. zu> einer anderen Task zurückkehrt.
Beim kooperativen System kann ja der Prozess jeder Zeit die CPU
entziehen und der Interrupt kehrt zum ausführendem Task zurücke, was
meinst du damit?
Und den Rest des Satzes verstehe ich leider gar nicht :(. Tut mir leid,
aber kannst du mir das nochmal erklären bitte?
scheduler schrieb:> aber kannst du mir das nochmal erklären bitte?
Es gibt eine Menge Literatur zu diesem Thema. Die wäre wohl der bessere
Ansatz. Es gibt auch offen verfügbaren und z.T. recht kompakten
Beispielcode zu Schedulern, nämlich in den vielen RTOS-Kernels.
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.
scheduler schrieb:> 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?
- Weil es eben nicht notwendigerweise genug physikalischen Speicher für
den gesamten Adressraum aller Prozesse gibt. Jedenfalls nicht zu dem
Zeitpunkt, zu dem diese Konzepte und die Betriebssysteme entstanden.
Heute ist dieser Aspekt nicht mehr so deutlich sichtbar, aber lass mal
20 Anwender gleichzeitig auf einem Rechner mit 4MB RAM arbeiten...
- Weil Prozesse oft inkrementell wachsen. Was macht man, wenn 10
Prozesse dicht an dicht im Speicher liegen, und der erste will wachsen?
- Weil man einen Schutzmechanismus benötigt, der einem Prozess den
Zugriff auf Kernel-Speicher und andere Prozesse verweigert.
- Weil heutige Betriebssysteme u.U. Disk-Files in den virtuellen
Speicher abbilden und Disk-I/O damit von Paging kaum noch unterscheidbar
ist.
usw.
Auf die Gefahr hin, mich zu wiederholen: Du brauchst ein Lehrbuch, kein
Stochern im Nebel.
Danke, ja Lehrbuch habe ich nicht, nur so ein .pdf wo net wirklcih viel
drinnen ist :/.
Kannst du mir bitte das 1. Bsp erklären? Seite ist ja im Virtuellen
Speicher und Seitenrahmen im realen Speicher.
Mann soll ja die virtuelle Adresse 1924 in eine physikalische Adresse
umwandeln.
Bitte erklär mir das.