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

1

17.08.2011, 18:45

Frage: Warum verfängt sich ein Prozessor nicht in einer Endlosschleife?

Moin,
ich hab mal ne allgemeine Frage über Prozessausteilung, etwas, das ich noch nie wirklich verstanden habe. Wenn man eine Endlosschleife programmiert und das Programm startet, stürzt allenfalls das Programm, in der Regel aber nicht das ganze OS ab. Und das verstehe ich nicht wirklich, weil, der Prozessor kann ja im Grunde ja immer nur eine Sache gleichzeitig machen bzw. man kann immer nur an einer Stelle irgendwo in irgendeinem Fetzen Code aus irgendeinem Programm gleichzeitig sein. Wenn er also sagt "ich widme mich jetzt mal endlosschleife.exe" und geht da rein, dann ist er ja im Grunde, weil er grade dieses Stückchen Code abarbeiten will, gefangen. Nun ist er ja eben nicht gefangen, und daher wollte ich wissen, wie denn genau die Mechanismen funktionieren, die dafür sorgen, dass man ebendoch mehrere Sachen parallel machen kann, weil das will mir nicht in den Kopf wie das klappen soll. Ich denke so wie ein Compiler, der Stück für Stück weiter durch den Code geht. Danke für jede Antwort, interessiert mich einfach!
Informagic

Legend

Alter Hase

Beiträge: 731

Beruf: Softwareentwickler

  • Private Nachricht senden

2

17.08.2011, 19:04

Das geht dann in den Betriebssystembereich.

Ein Beispiel, worüber du ebenfalls nachdenken kannst: Du hast zwei Programme, das eine spammt ein MS DOS-Fenster mit As in einer Endlosschleife voll, das andere mit Bs. Wenn du nun beide startest, spammen beide gleichzeitig, und das obwohl sie Endlosschleifen haben!

Nun, das liegt daran, dass die CPU eben nicht ganz in so einer Endlosschleife gefangen ist. Andere Hardwarekomponenten können der CPU jederzeit einen IRQ (Interrupt Request) schicken, und dann unterbricht die CPU ihre Arbeit an der Schleife und guckt nach wie dieser IRQ zu behandeln ist. Eine solche Hardwarekomponente ist die gute alte Uhr im PC. Die sendet regelmäßig einen IRQ an die CPU und das Betriebssystem kann diesen IRQ dann zum Anlass nehmen den Prozess zu wechseln! Denn die Behandlung des IRQs übernimmt ein vom Betriebsssytem vorgegebens Stück Software.
"Wir müssen uns auf unsere Kernkompetenzen konzentrieren!" - "Juhu, wir machen eine Farm auf!"

Netzwerkbibliothek von mir, C#, LGPL: https://sourceforge.net/projects/statetransmitt/

BlueCobold

Community-Fossil

Beiträge: 10 738

Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer

  • Private Nachricht senden

3

17.08.2011, 19:29

Dann mache man einen einfach CPU-Befehl, der da "CLI" heißt und schon geht auch keine Uhr mehr (da sie ein maskierbarer Interrupt ist) und das komplette DOS-Betriebssystem (oder Win9X) hängt in der Tat komplett an diesem einen Programm fest.

Unter neueren Windows, Unix und deren Derivaten wird aber einen einfacher Mechanismus der CPU benutzt und der nennt sich Multitasking in Kombination mit Rechteverwaltung. Das ist keine reine Fähigkeit des Betriebssystems, sondern der CPU. Ein Programm erhält also niemals die volle Kontrolle über die CPU und schon gar nicht die gesamte CPU-Zeit. Immer mal wieder zwischendrin (sprich mehrere hundert bis tausend Mal pro Sekunde) ist die Prozesssteuerung des Betriebssystem-Kerns dran und diese entscheidet, welcher Prozess (also welches Programm) wann und wie oft arbeiten darf. Gibt es ein Programm in einer Endlosschleife, so bekommt dieses eine intern hohe Priorität wohingegen Prozesse mit hoher Ein- und Ausgabe (BUS-Aktionen) eine niedrige erhalten. So kann ein Programm mit Endlosschleife zwar alle anderen ausbremsen und auch den typischen Windows-Task-Manager, aber das Betriebssystem verliert nie komplett die Kontrolle (höchstens der User). Um das zu stoppen müsste man wieder Interrupts ausschalten, was aber im User-Space (also alles außerhalb von Treibern und OS-Kernel) nicht mehr erlaubt ist für Programme.
Teamleiter von Rickety Racquet (ehemals das "Foren-Projekt") und von Marble Theory

Willkommen auf SPPRO, auch dir wird man zu Unity oder zur Unreal-Engine raten, ganz bestimmt.[/Sarkasmus]

4

17.08.2011, 19:40

Ahh ok also wird beim Multitasking und der Rechteverwaltung die Rechenzeit vergeben und gemerkt, wo man bei dem Prozess stehengeblieben war, und immer wieder wird der Prozess jäh unterbrochen und später weitergrführt, wenn ich das richtig verstanden habe. Danke ;)

Viktor

Alter Hase

Beiträge: 533

Wohnort: Ludwigshafen

Beruf: Student

  • Private Nachricht senden

5

17.08.2011, 19:54

Wenn du noch mehr über das Thema wissen willst, kannst du ja mal nach Prozess Scheduling suchen. Dort wird dann auch meist im Detail erklärt, was es da für Verfahren gibt (auch hinsichtlich Performance und kritischer Befehlsfolgen wie z.B. Endlosschleifen). In einem späteren Info-Studium wird dir das auf jeden Fall wieder begegnen (auch in den Kombi-Fächern ;)).

6

18.08.2011, 21:45

Danke - dann weiß ich ja noch mal eine Sache, die mich in den nächsten Jahren erwartet ;)

Mastermind

unregistriert

7

18.08.2011, 22:18

Danke - dann weiß ich ja noch mal eine Sache, die mich in den nächsten Jahren erwartet ;)


Bist du ein Prozessor oder was?

8

19.08.2011, 18:03

Dann wäre ich ein ziemlich cooler Prozessor, sogar einer, der den Turing-Test besteht :) Nein das bezog sich auf Viktor, der sagte, dass das in einem Informatikstudium behandelt wird, und daher weiß ich schon, dass mich das Thema erwartet. Groschen gefallen? ;)

BlueCobold

Community-Fossil

Beiträge: 10 738

Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer

  • Private Nachricht senden

9

19.08.2011, 19:56

Irgendwie glaube ich, dass dir da ein Stück Ironie entgangen ist.
Teamleiter von Rickety Racquet (ehemals das "Foren-Projekt") und von Marble Theory

Willkommen auf SPPRO, auch dir wird man zu Unity oder zur Unreal-Engine raten, ganz bestimmt.[/Sarkasmus]

10

19.08.2011, 20:25

Ups, wo dus sagst glaub ichs auch :D

Werbeanzeige