Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

niratschi

Frischling

  • »niratschi« ist der Autor dieses Themas

Beiträge: 34

Wohnort: Hessen

Beruf: Student

  • Private Nachricht senden

1

11.05.2011, 18:40

Technische Informatik-Prozesse

Hi,

Da hier so viele Informatiker unterwegs sind, dachte ich ich kann euch ja mal fragen... Es geht um die Bearbeitung von Prozessen.
Hier gibt es das Zustandsdiagramm:

http://www.stoermelder.net/skripten/bs/zustand1.gif

Kurz gesagt:
Bereite Prozesse werden nach un nach abgearbeitet, wenn ein laufender Prozess zB auf eine Eingabe wartet, wird er blockiert. Hat er die Infromation bekommen, wird er wieder den bereiten Prozessen zugeordnet. (Genauere Erläuterung [url]http://de.wikibooks.org/wiki/Betriebssystemtheorie/_Prozesse[/url] )

Diw Frage die mir gestellt worden ist, ist warum es keinen Übergang von blockiert nach laufend gibt. Auch nach langer Überlegung verstehe ich es noch immer nicht.

Theoretisch ist es doch kein Problem einen blockierten Zustand direkt dem Prozessor zu geben, wenn der letzzte laufende Prozess fertig ist. Warum muss der blockierte Prozess sich wieder hinten an die bereiten Prozesse anreihen. Das ist doch eigentlich nicht gerecht, dass ein blockierter Prozess zweimal warten muss, bis er bearbeitet wird. Ich verstehe nicht, was es technisch für Schwierigkeiten macht, den blockierten Prozess entweder direkt an die wartenden Prozesse vorne anzureihen, oder dem Prozessor direkt zu übergeben.

Vlt verstehe ich das Prinzip auch nicht richtig, wenn jemand Ahnung hat, kann er mich ja erhellen^^

mfg Niratschi
++++++[>+++++++++++>+++++++<<-]>+.>+..

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

2

11.05.2011, 18:56

Ein Prozess bekommt die CPU vom Scheduler zugeteilt. Wenn der Prozess blockiert dann kann er dann nicht später plötzlich wenn es ihm gerade einfällt dem gerade laufenden Prozess die CPU entreißen und sich selbst geben (abgesehen davon dass das wohl erst recht unfair wäre: Wie sollte er das tun!?) sondern muss warten bis der Scheduler diese ihm wieder zuteilt.

Theoretisch ist es doch kein Problem einen blockierten Zustand direkt dem Prozessor zu geben, wenn der letzzte laufende Prozess fertig ist.

wenn der letzte laufende Prozess fertig ist...selbst wenn er sofort als Nächster wieder die CPU bekommt muss er bis dahin trotzdem warten, aka im Zustand "bereit" verharren...

Ich verstehe nicht, was es technisch für Schwierigkeiten macht, den blockierten Prozess entweder direkt an die wartenden Prozesse vorne anzureihen, oder dem Prozessor direkt zu übergeben.

Den Prozess "direkt vorne anzureihen" bereitet keinerlei technische Schwierigkeiten, es ist aber für die Frage auch komplett irrelevant wo der Prozess eingereiht wird. Tatsache ist dass er irgendwo eingereiht wird und warten muss bis er die CPU bekommt, auch wenn er ganz vorne in der Schlange steht. Den Prozessor direkt an den frei gewordenen Prozess geben stellt in der Tat eine technische Schwierigkeit dar. Bevor die Zeitscheibe des momentan aktiven Prozesses abgelaufen ist bekommt der Scheduler noch nichtmal mit dass dein Prozess nun nichtmehr blockiert ist. Ok gut, man könnte über die entsprechenden Interrupthandler feststellen wann die I/O Operation fertig ist und von dort den Scheduler aufrufen, ob das sinnvoll ist steht aber auf einem anderen Blatt...

Dieser Beitrag wurde bereits 4 mal editiert, zuletzt von »dot« (11.05.2011, 19:17)


niratschi

Frischling

  • »niratschi« ist der Autor dieses Themas

Beiträge: 34

Wohnort: Hessen

Beruf: Student

  • Private Nachricht senden

3

11.05.2011, 19:35

Okay, danke, dann hatte ich den Zustand bereit noch nicht komplett begriffen. Ich dachte, dass der blockierte Prozess quasi "hinten" angereiht wird, nach dem FIFO Prinzip. An sich ist es dann nicht weiter wichtig für die Frage wann der blockierte Prozess dann wieeder aufgerufen wird, nur dass er dazu im bereiten Zustand sein muss.

Danke, jetzt habe ich das glaube verstanden
++++++[>+++++++++++>+++++++<<-]>+.>+..

Werbeanzeige