Your Browser is not longer supported

Please use Google Chrome, Mozilla Firefox or Microsoft Edge to view the page correctly
Loading...

{{viewport.spaceProperty.prod}}

Funktionszustände

BS2000 kennt vier Funktionszustände. Davon sind für den normalen Betrieb die Zustände TU, TPR und SIH wesentlich. Im Zustand MEH werden lediglich Maschinenfehler bearbeitet.

Es bedeuten:

TU: Task Unprivileged
TPR: Task PRivileged
SIH: System Interrupt Handling
MEH: Machine Error Handling

Die User-Task (das Anwenderprogramm) läuft im Funktionszustand TU.

Systemroutinen, die der User-Task direkt zugeordnet werden können (z.B. SVC: RDATA), werden im Funktionszustand TPR ausgeführt (siehe Bild 5).

Die aufgenommene CPU-Zeit im Funktionszustand TU und TPR ist als produktive Zeit im Sinne des Anwenders zu sehen.

Im Funktionszustand SIH laufen die Basissteuermechanismen des BS2000. Außer nach MEH ist der Funktionszustand SIH nicht unterbrechbar.

System-Tasks führen unterstützende organisatorische Aufgaben durch und laufen im Funktionszustand TPR (siehe Bild 6).

Bild 5: BS2000-Funktionszustände (User-Task)

Bild 6: BS2000-Funktionszustände (System-Task)

Eine Unterbrechung tritt entweder dadurch auf, dass eine User- oder System-Task die Unterstützung des Betriebssystems braucht oder, dass ein Ereignis eintritt, das vom Betriebssystem zu behandeln ist.

Es gibt fünf Unterbrechungsarten:

  • SVC-Unterbrechung (= task-bezogene Unterbrechung)

    Von einer User- oder System-Task werden bestimmte Systemdienste angefordert. Neben dem Aufwand für die Systemroutine werden auch die Unterbrechungsanalyse und der Abschluss der Systemroutine der aufrufenden Task angerechnet.

  • Programm-Unterbrechung (= task-bezogene Unterbrechung)

    Hierzu zählen die "echten" Fehler (Adressenfehler, Datenfehler, ...), die zum Programmabbruch führen und bei Durchsatzüberlegungen nicht weiter betrachtet werden sollen, sowie die Unterbrechungsursachen:

    • Seite nicht im Speicher (Event-Code: 4C)

    • Adressübersetzungsfehler (Event-Code: 48)

    In beiden Fällen kann zunächst der Programmlauf nicht fortgesetzt werden, da die angesprochene Seite (Page) nicht unmittelbar zur Verfügung steht.

    Beim Event-Code 4C (Seite nicht im Speicher) sind zwei Fälle zu unterscheiden:

    • Die Seite ist noch im Hauptspeicher, und zwar im Free-Pool (Read Only Queue bzw. Read Write Queue):

      Die über längere Zeit nicht angesprochene Seite wurde durch das Paging-Management in den Free-Pool gebracht. Nach einer einfachen Seitenumkettung kann der Programmlauf fortgesetzt werden (Page-Reclaim). Die globalen Working-Set-Strategien bewirken, dass Page-Reclaims nur noch selten auftreten (siehe Abschnitt "Aktivierung/Deaktivierung von Tasks"). In den meisten Fällen handelt es sich um den erstmaligen Zugriff auf eine Seite (First-Page-Access).

    • Die Seite ist nicht im Hauptspeicher und muss mit einer Paging-Ein-/Ausgabe in den Hauptspeicher gebracht werden (Page-Read).

    Beim Event-Code 48 handelt es sich um einen echten Fehler bei der Adressübersetzung, der zum Programmabbruch führt.

  • Zeitgeber-/externe Unterbrechung (= asynchrone Unterbrechung)

    Signal durch den Intervallzeitgeber oder ETC (Elapsed Time Clock).

  • Ein-/Ausgabe-Unterbrechung (= asynchrone Unterbrechung)

    Signal, dass ein Ereignis bei der Ein-/Ausgabe vorliegt. (In den meisten Fällen handelt es sich um das Eintreten einer Ende-Bedingung bei der Durchführung der Ein-/Ausgabe.)

  • Maschinenfehler-Unterbrechung (= asynchrone Unterbrechung)

    Signal, dass ein Maschinenfehler aufgetreten ist.

Nach erfolgter Unterbrechungsbehandlung wird mit Ausnahme der SVC-Unterbrechung durch die Dispatcher-Routine (Auswahl-Routine) des Task-Initiators diejenige User- bzw. System-Task mit der höchsten Priorität ausgewählt, die bereit ist zu arbeiten, und ihr die Kontrolle übertragen (Task in control; siehe auch Abschnitt "Initiierung/Deinitiierung von Tasks").