-
HINTERGRUND
DER ERFINDUNG
-
GEBIET DER
ERFINDUNG
-
Die Erfindung betrifft ein Eingabe/Ausgabe-Untersystem
eines Computersystems. Insbesondere betrifft die Erfindung ein Steuerverfahren
und eine Steuervorrichtung für
periodische Eingabe/Ausgabe zum Realisieren einer Echtzeit-Eingabe/Ausgabe-Funktion
für Multimediadaten
wie Videobilddaten oder Audiodaten.
-
BESCHREIBUNG
DER EINSCHLÄGIGEN
TECHNIK
-
Bei vorhandenen Computersystemen
wird die Eingabe/Ausgabe so ausgeführt, wie es unten beschrieben
ist. Ein Prozessor (CPU) startet eine Eingabe/Ausgabe-Operation
eines Eingabe/ Ausgabe-Controllers. Der zum Steuern von Eingabe/Ausgabe-Geräten dienende
Eingabe/Ausgabe-Controller informiert den Prozessor unter Verwendung
eines externen Interrupts über
den Abschluss der Eingabe/Ausgabe-Operation. Z. B. wird eine derartige
Verarbeitung in einem Plattenlaufwerksgerät ausgeführt.
-
Dafür wird gemäß den folgenden Tatsachen gesorgt.
Als Erstes kann das Betriebssystem nicht vorab vorhersagen, wann
das Anwendungsprogramm eine Eingabe/Ausgabe-Anforderung ausgibt. Zweitens
ist die bis zum Abschluss der ausgegebenen Eingabe/Ausgabe-Operation
benötigte
Zeit unbestimmt. Anders gesagt, werden externe Interrupts als Maßnahme für den Eingabe/Ausgabe-Controller verwendet,
um den Prozessor über
ein Eingabe/Ausgabe-Abschlussereignis zu informieren, dessen Auftrittszeitpunkt
nicht vorhergesagt werden kann.
-
Eine Schnittstelle zu einem Programm
(oder einer Funktion oder einer Unterroutine), wie es vom System
für das
Anwendungsprogramm erzeugt wird, um für die Ausführung einer derartigen Eingabe/Ausgabe-Operation
zu sorgen, wird als normale Eingabe/Ausgabe-Schnittstelle bezeichnet.
-
Jedoch kommt es bei der Eingabe/Ausgabe von
Multimediadaten wie Videobildern, die eine Echtzeitverarbeitung
benötigen,
zu einem Problem dahingehend, dass der für die Echtzeitübertragung
benötigte
Datenübertragungsdurchsatz
aufgrund des Overheads dieser Interruptverarbeitung nicht realisiert
werden kann. Genauer gesagt, bilden neben der Interruptverarbeitung
für den
Eingabe/Ausgabe-Abschluss Overheads für Aufruf- und Task-Umschaltvorgänge des
Eingabe/Ausgabe-Systems zu Flaschenhälsen bei der Funktionsfähigkeit.
(Nachfolgend werden diese allgemein als Softwareoverheads bezeichnet.)
Bei Quicktime für
Applecomputer (Multimediaerweiterung des Macintosh-Betriebssystems) ist
eine neue Anwendungsschnittstelle vorhanden, um diesen Softwareoverhead
zu verringern (Inside Macintosh: Quick Time and Inside Macintosh:
Quick Time Components). Wenn die in diese Schnittstelle von einer
Videodigitalisiereinrichtung (Videoeingabevorrichtung) aufgenommenen
Videobilder an eine Anzeigevorrichtung ausgegeben werden, werden
einige Initialisierungsfunktionen aufgerufen, und dann wird die
Anzeigestartfunktion SGStartPreview aufgerufen.
-
Wenn die Anwendung die Funktion SGStartPreview
aufgerufen hat, wird die Übertragung
von Videodaten von der Videodigitalisiereinrichtung an die Anzeigevorrichtung
gestartet. Nach dem Start dieses Übertragungsvorgangs wird die
Funktion SGStartPreview normal zum Abschluss gebracht, ohne dass auf
den Abschluss der Datenübertragung
gewartet wird, und es erfolgt Rückkehr
zur Anwendung, wobei jedoch die Übertragung
der Videodaten fortgesetzt wird. Anders gesagt, werden in eine Vielzahl
von Blöcken
unterteilte Videodaten kontinuierlich nacheinander von der Videodigitalisiereinrichtung
an die Anzeigevorrichtung übertragen,
jedoch wird die Anwendung nicht über
den Abschluss der Übertragung
jedes Blocks informiert. Nach dem Aufrufen der Funktion SGStop durch
die Anwendung kann die Übertragung
der Videodaten beendet werden.
-
Die Schnittstelle in Quick Time gibt
die Steuerung nicht an die Anwendung zurück, wenn die Operation zur
Eingabe von der Videodigitalisiereinrichtung oder die Operation
zur Ausgabe an die Anzeigevorrichtung abgeschlossen wurde. Wenn
die Übertragung
von Videodaten einmal gestartet ist, wird sie ohne Eingreifen der
Anwendung fortgesetzt, bis explizit die Stoppfunktion SGStop aufgerufen
wird.
-
Eine Schnittstelle zu einem Programm
(oder einer Funktion oder einer Unterroutine), das durch das System
für das
Anwendungsprogramm erzeugt wird, um für die Ausführung einer derartigen Eingabe/Ausgabe-Operation
zu sorgen, wird als Multimediadatenübertragungs-Schnittstelle bezeichnet.
-
ZUSAMMENFASSUNG
DER ERFINDUNG
-
Multimediadaten sind durch ein großes Volumen
und dadurch gekennzeichnet, dass sequenziell auf sie zugegriffen
wird und dass das pro Zeiteinheit zu übertragende Datenvolumen vorhergesagt
werden kann. Da Multimediadaten Signale bewegter Bilder und Sprachsignale
enthalten, ist für
ihre Übertragung
eine Echtzeitverarbeitung erforderlich. Ferner werden Multimediadaten
auf verschiedenen Medien gespeichert. Außerdem erfolgt die Übertragung
zwischen verschiedenen Ein richtungen, wie den Medien, einer Netzwerk-Steuervorrichtung
und einer Anzeigevorrichtung.
-
Aus dem Gesichtspunkt der Eingabe/Ausgabe-Vorrichtung
gesehen, wird die oben beschriebene Videodigitalisiereinrichtung
jeweils durch einen Anwendungstask belegt. Jedoch wird der größere Teil der
Eingabe/Ausgabe-Vorrichtungen durch mehrere Anwendungstasks gemeinsam
genutzt.
-
Ein externer Interrupt, der über den
Abschluss der Eingabe/ Ausgabe-Operation informiert, wird durch
einen Eingabe/Ausgabe-Controller zum Steuern der Eingabe/Ausgabe-Vorrichtung
erzeugt. Bei existierenden Systemen kann die normale Eingabe/Ausgabe-Schnittstelle,
die einen externen Interrupt für
jeden Abschluss einer Eingabe/Ausgabe-Operation erfordert, nicht
gemeinsam mit der Multimediadatenübertragungs-Schnittstelle vorliegen, die
keinen externen Interrupt bei jedem Abschluss einer Eingabe/Ausgabe-Operation
erzeugt.
-
Es ist eine Aufgabe der Erfindung,
eine vereinheitlichte Anwendungsschnittstelle zu schaffen, die unabhängig von
der Art der Vorrichtungen der Quelle und des Ziels bei Multimedia-Datenübertragungsvorgängen verwendbar
ist.
-
Eine andere Aufgabe der Erfindung
ist es, eine Anwendungsschnittstelle zu schaffen, bei der es nicht
erforderlich ist, eine physikalische Eingabe/Ausgabe-Vorrichtung
zu spezifizieren, so dass ein für
eine bestimmte Hardwarevorrichtung entwickelter Anwendungstask auch
auf einer anderen Hardwarevorrichtung laufen kann.
-
Eine andere Aufgabe der Erfindung
ist es, dafür
zu sorgen, dass Vorrichtungen wie eine Plattenlaufwerksvorrichtung
und eine Netzwerk-Steuervorrichtung, die durch einen Anwendungstask
unter Verwendung der normalen Eingabe/Ausgabe-Schnitt stelle, die
einen Eingabe/Ausgabe-Abschlussinterrupt benötigt, und einen Anwendungstask
unter Verwendung der Multimediadatenübertragungs-Schnittstelle,
die den Eingabe/Ausgabe-Abschlussinterrupt unterdrückt, gemeinsam
genutzt werden.
-
Eine andere Aufgabe der Erfindung
ist es, zu verhindern, dass bei Daten, die durch einen der oben beschriebenen
Tasks übertragen
und eingegeben/ausgegeben werden, eine Verzögerung auftritt.
-
Um die oben beschriebenen Aufgaben
zu lösen,
sind durch die Erfindung die folgenden vier Anwendungsschnittstellen
für Multimedia-Datenübertragung
geschaffen. Hierbei kennzeichnen die Begriffe "Eingangsport" und "Ausgangsport" das Datenziel bzw. die Datenquelle.
Wenn in der Plattenlaufwerksvorrichtung Dateien gespeichert werden,
werden sie durch Dateinamen oder Dateideskriptoren gekennzeichnet.
Wenn Kommunikationsvorrichtungen vorliegen, werden sie durch Socket-
oder Kommunikationsportdeskriptoren gekennzeichnet.
-
Beim Initialisieren eines Eingangs-
und eines Ausgangsports, oder danach, wird eine erste Anwendungsschnittstelle
mit Portkennungen spezifiziert, und es wird erklärt, dass die Ports solche für Multimedia-Datenübertragung
sind.
-
Eine zweite Anwendungsschnittstelle
wird mit Portkennungen spezifiziert, die jedem dieser Ports eindeutig
zugeordnet sind, um eine Kombination (Kanal) aus einem Eingangs-
und einem Ausgangsport zu definieren, und der Kanal wird mit einer eindeutigen
Kennung (Kanalkennung) versehen.
-
Eine dritte Anwendungsschnittstelle
ist mit dieser Kanalkennung spezifiziert, und sie startet die Übertragung
von Multimediadaten. Eine vierte Anwendungsschnittstelle ist mit
dieser Kanalkennung spezifiziert, und sie stoppt die Über tragung
der Multimediadaten.
-
Um diese Schnittstelle zu realisieren,
verfügt ein
erfindungsgemäßes Computersystem über eine Kanaltabelle,
die die Zuordnung zwischen Eingabe/Ausgabe-Vorrichtungen, Ports
und Kanälen
angibt, eine Verarbeitungseinheit zum Eingeben von Daten in die
Kanaltabelle sowie eine Verarbeitungseinheit zum automatischen Erzeugen
eines Eingabe/Ausgabe-Befehls, zum Starten einer Eingabe/Ausgabe-Operation
und zum Überwachen
des Endes des Eingabe/Ausgabe-Befehls.
-
Ferner verfügt ein erfindungsgemäßes Computersystem über einen
Statusmerker oder ein Statusflag, das für jede Eingabe/ Ausgabe-Vorrichtung anzeigt,
ob sie eine Eingabe/Ausgabe-Verarbeitung an
Echtzeit-Multimediadaten, wie Videobildern, ausführt, eine Verarbeitungseinheit
zum Setzen des Statusflags, wenn die Übertragung von Multimediadaten an
die Eingabe/Ausgabe-Vorrichtung unter Verwendung der dritten Anwendungsschnittstelle
gestartet wird, eine Verarbeitungseinheit zum Rücksetzen des Statusflags, wenn
die Übertragung
von Multimediadaten an die Eingabe/Ausgabe-Vorrichtung unter Verwendung
der vierten Anwendungsschnittstelle gestoppt wird, eine Verarbeitungseinheit
zum Steuern des Ein/Aus-Zustands des externen Interrupts zum Zeitpunkt
des Abschlusses der Eingabe/Ausgabe-Operation für die Eingabe/Ausgabe-Vorrichtung entsprechend
dem Statusflag, wenn der Eingabe/Ausgabe-Befehl ausgegeben wird,
und eine Verarbeitungseinheit zum Erkennen des Abschlusses der Eingabe/Ausgabe-Operation
durch periodischen Abruf im Fall, wenn das Statusflag gesetzt ist
und der externe Interrupt von der Eingabe/Ausgabe-Vorrichtung ausgeschaltet
ist.
-
KURZE BESCHREIBUNG
DER ZEICHNUNG
-
1 ist
ein Diagramm, das die Konfiguration von Hardware eines erfindungsgemäßen Computersystems
zeigt;
-
2 ist
ein Diagramm, das die Konfiguration von Software eines erfindungsgemäßen Computersystems
zeigt;
-
3 ist
ein Diagramm, das die Struktur einer periodischen Kanaltabelle zeigt;
-
4 ist
ein Diagramm, das die Struktur einer Eingabe/Ausgabe-Befehlsschlange
zeigt;
-
5 ist
ein Flussdiagramm, das den Verarbeitungsablauf eines Lese/Schreib-Moduls
zeigt;
-
6 ist
ein Flussdiagramm, das den Verarbeitungsablauf eines Lese/Schreib-Abschlussverarbeitungsmoduls
zeigt;
-
7 ist
ein Flussdiagramm, das den Verarbeitungsablauf eines periodisch
angesteuerten Moduls zeigt;
-
8 zeigt
einen Teil einer Befehlsnachverarbeitung im Verarbeitungsablauf
der 7;
-
9 zeigt
einen Teil einer Nächste-Periode-Startverarbeitung
im Verarbeitungsablauf der 7;
-
10 ist
ein Flussdiagramm, das den Verarbeitungsablauf von Zyklischen-Port-Definieren zeigt;
-
11 ist
ein Flussdiagramm, das den Verarbeitungsablauf von Zyklischen-Kanal-Definieren; und
-
12 ist
ein Flussdiagramm, das den Verarbeitungsablauf von Zyklischen-Kanal-Starten
zeigt.
-
BESCHREIBUNG
DER BEVORZUGTEN AUSFÜHRUNGSFORMEN
-
Unter Bezugnahme auf die Zeichnung
werden nun bevorzugte Ausführungsformen
der Erfindung beschrieben.
-
(1) Systemkonfiguration
-
Nun wird die Systemkonfiguration
der Hardware und der Software einer bevorzugten Ausführungsform
grob beschrieben.
-
Die 1 zeigt
die Hardwarekonfiguration. Hinsichtlich der Hardware sind ein Prozessor
(CPU) 101, ein Hauptspeicher 102, ein externer
Timer 103 und verschiedene Eingabe/Ausgabe-Controller 104 bis 107 über einen
Bus 108 verbunden. Eingabe/Ausgabe-Vorrichtungen wie Plattenlaufwerke 109 bis 112 sowie
Netzwerkadapter 113–114 sind
mit den Eingabe/Ausgabe-Controllern 104 bis 107 verbunden.
-
Die Eingabe/Ausgabe-Controller 104 bis 107 verfügen über DMA-Übertragungsfunktionen,
und sie übertragen
Daten entsprechend einer vom Prozessor 101 angegebenen
Reihenfolge zwischen dem Hauptspeicher 102 und Eingabe/Ausgabe-Vorrichtungen. Vom
Prozessor 101 an die Eingabe/Ausgabe-Controller 104 bis 107 gelieferte
Befehle werden als Eingabe/Ausgabe-Befehle an den Hauptspeicher 102 geliefert.
Die Eingabe/Ausgabe-Controller 104 bis 107 verfügen über die
Funktion des gemeinsamen Verarbeitens einer Befehlskette, die dadurch
erzeugt wird, dass mehrere Eingabe/Ausgabe-Befehle durch Zeiger
verkettet werden. Für
jeden Befehl in der Befehlskette kann das Betriebssystem (OS) spezifizieren,
ob ein externer Interrupt erzeugt werden sollte, wenn die Operation
gemäß dem Befehl
abgeschlossen ist.
-
Der externe Timer 103 hat
die Funktion des Ausgebens eines externen Interrupts an den Prozessor 101 mit
festen Zeitin tervallen. Das Zeitintervall (die Periode) der Interrupts
kann durch das Betriebssystem gesteuert werden.
-
Die 2 zeigt
Softwarekomponenten in Zusammenhang mit der Erfindung. Wie bei der
Hardware, wie bei den oben beschriebenen Eingabe/Ausgabe-Vorrichtungen,
sorgt das Betriebssystem für eine
Steuerung, um zu verhindern, dass das Anwendungsprogramm (der Benutzerprozess)
dieselben in unvernünftiger
Weise nutzt, und der Benutzerprozess nutzt die Hardware indirekt
durch Ausgeben eines Systemaufrufs.
-
Um die durch den Benutzerprozess
ausgegebenen Prozess-Eingabe/Ausgabe-Aufforderungen zu verarbeiten,
existieren, innerhalb des Betriebssystems, ein Eingabe/Ausgabe-Puffer 205,
Steuerdaten wie eine Eingabe/Ausgabe-Befehlsschlange 204,
ein periodisch angesteuertes Statusflag 203 und eine periodische
Kanaltabelle 211 sowie Softwaremodule wie ein Timerinterrupthändler 214,
ein Eingabe/Ausgabe-Interrupthändler 208,
ein periodisch angesteuertes Modul 212, ein Scheduler 209 und
ein Eingabe/Ausgabe-Verarbeitungsmodul 201.
-
Das periodisch angesteuerte Statusflag 203 zeigt
für jede
Eingabe/Ausgabe-Vorrichtung an, ob die Übertragung von Multimediadaten
aktiv ist oder nicht. Unter Verwendung eines Timerinterrupts von einem
externen Timer 213 als Gelegenheit wird das periodisch
angesteuerte Modul 212 gestartet. Genauer gesagt, unterbricht
der Prozessor beim Auftreten eines Timerinterrupts ein aktuell ausgeführtes Programm,
und er startet den Timerinterrupthändler 214. Dieser
Händler 214 startet
das periodisch angesteuerte Modul 212 über einen Scheduler 209.
Wenn das periodisch angesteuerte Statusflag 203 gesetzt ist,
nimmt das periodisch angesteuerte Modul 212 auf die periodische
Kanaltabelle 211 Bezug, sie führt eine Eingabe/Ausgabe-Operations-Abschlussprüfung für Eingabe/Ausgabe-Vorrichtungen
aus, die bei der Multimedia-Datenübertra gung aktiv sind, und
sie führt
die Startverarbeitung für
den nächsten
Eingabe/Ausgabe-Befehl aus. Wenn das periodisch angesteuerte Statusflag 203 rückgesetzt
ist, prüft
der Eingabe/Ausgabe-Interrupthändler 208 den
Abschluss der Eingabe/Ausgabe-Operation für diese Eingabe/Ausgabe-Vorrichtung.
-
Das Eingabe/Ausgabe-Verarbeitungsmodul 201 verfügt über ein
Lese/Schreib-Modul 202 und ein Lese/Schreib-Abschlussverarbeitungsmodul 210. Das
Eingabe/Ausgabe-Verarbeitungsmodul 201 führt eine
Verarbeitung für
eine Vorrichtungs-Eingabe/ Ausgabe-Operation aus, die unter Verwendung
der normalen Eingabe/Ausgabe-Schnittstelle vom Anwendungsschnittstelle
angefordert wird. Andererseits führen
die Module 215 bis 218 eine Verarbeitung zur Datenübertragung
aus, wie sie unter Verwendung der Multimediadatenübertragungs-Schnittstelle
von der Anwendungsschnittstelle angefordert wird. Diese Module werden
von der CPU ausgeführt.
Einzelheiten dieser Module werden später beschrieben.
-
(2) Multimediadatenübertragungs-Schnittstelle
-
Nun wird die durch die Erfindung
geschaffene Anwendungsschnittstelle für Multimedia-Datenübertragung
beschrieben.
-
Nachfolgend werden vier Arten von
durch die Erfindung bereitgestellten Anwendungsschnittstellen in
der durch das Anwendungsprogramm bewirkten Nutzungsreihenfolge beschrieben,
nämlich
Zyklischen-Port-Definieren, Zyklischen-Kanal-Definieren, Zyklischen-Kanal-Starten
und Zyklischen-Kanal-Stoppen. Mit Ausnahme von für die Erfindung spezifischen
Funktionsnamen und Begriffen folgen Ausdrücke in der folgenden Beschreibung
den Funktionsnamen und Begriffen des Betriebssystems UNIX.
-
Beschreibungsform: Zyklischen-Port-Definieren
(fd)
Funktion: Initialisiert Eingabe/Ausgabe-Ports. Nachfolgend
erfolgt Spezifizierung mit einer Portkennung, und es wird erklärt, dass
der Port ein Port für
Multimedia-Datenübertragung
ist.
Argument: Eine Portkennung fd ist ein Dateideskriptor,
der als Rücklieferungswert
eines offenen Systemaufrufs (im Fall einer Datei auf einer Platte)
oder eines Socket-Systemaufrufs (im Fall einer Netzwerkkommunikation)
erhalten wird.
Rücklieferungswert:
Portkennung (positive ganze Zahl). Wenn der Rücklieferungswert eine negative ganze
Zahl ist, trat ein Fehler auf.
-
Beschreibungsform: Zyklischen-Kanal-Definieren
(von, bis, Rate)
Funktion: Spezifikation mit Portkennungen,
die Ports eindeutig zugeordnet sind; definiert eine Kombination (Kanal)
eines Eingangsports (von) und eines Ausgangsports (zu) und versorgt
diesen Kanal mit einer eindeutigen Kennung (Kanalkennung).
Argument:
Das Argument "von" spezifiziert die
Portkennung eines Eingangsports.
Das Argument "zu" spezifiziert die
Portkennung eines Ausgangsports.
Das Argument "Rate" spezifiziert eine
Datenübertragungsrate.
Im
Fall einer variablen Bitrate spezifiziert es die maximale Übertragungsrate.
Rücklieferungswert:
Kanalkennung (positive ganze Zahl). Wenn der Rücklieferungswert eine negative ganze
Zahl ist, ist ein Fehler aufgetreten.
-
Beschreibungsform: Zyklischen-Kanal-Starten
(Kanal)
Funktion: Spezifikation mit einer Kanalkennung; startet
die
Multimedia-Datenübertragung
auf diesem Kanal.
Argument: Das Argument "Kanal" spezifiziert eine Kanalken nung.
Rücklieferungswert:
Der Rücklieferungswert
ist im Fall einer normalen Beendigung null. Andernfalls ist ein
Fehler aufgetreten.
-
Beschreibungsform: Zyklischen-Kanal-Stoppen
(Kanal)
Funktion: Spezifikation mit einer Kanalkennung; beendet
die Multimedia-Datenübertragung
in diesem Kanal. Außerdem
wird der Kanal freigegeben.
Argument: Das Argument "Kanal" spezifiziert eine Kanalkennung.
Rücklieferungswert:
Der Rücklieferungswert
ist im Fall einer normalen Beendigung null. Andernfalls ist ein
Fehler aufgetreten.
-
Im Anwendungsprogramm werden als
Erstes die Datenquelle und das Datenziel dadurch in einen zugriffsfähigen Status
gebracht, dass ein offener Systemaufruf bzw. ein Socket-Systemaufruf
ausgegeben wird. Ferner wird sowohl für die Datenquelle als auch
das Datenziel Zyklischen-Port-Definieren aufgerufen. Anschließend wird
durch einmaliges Aufrufen von Zyklischen-Kanal-Definieren ein Kanal
zur Datenübertragung
definiert. Durch einmaliges Aufrufen von Zyklischen-Kanal-Starten wird die
Datenübertragung
gestartet. Nach diesem Modulaufruf wird die Datenübertragung
vom System automatisch ausgeführt,
und demgemäß kann das
Anwendungsprogramm eine andere Verarbeitung ausführen, oder es kann beendet
werden. Zyklischen-Kanal-Stoppen wird dann aufgerufen, wenn das
Anwendungsprogramm die einmal gestartete Übertragung zwangsweise beendet
oder den in Zyklischen-Kanal-Definieren definierten Kanal freigibt.
-
(3) Datenstruktur und
Verarbeitung
-
Während
im vorigen Abschnitt die Multimediadatenübertra gungs-Schnittstelle beschrieben
wurde, werden im vorliegenden Abschnitt die Datenstruktur und die
Verarbeitung durch das System zum Realisieren der Datenübertragung
beschrieben.
-
Die periodisch angesteuerte Statusflagtabelle 203 verfügt über Flags
für jeweilige
Eingabe/Ausgabe-Vorrichtungen, und jedes Flag repräsentiert,
ob sich die Vorrichtung im periodisch angesteuerten Zustand befindet.
Hinsichtlich der Netzwerkadapter 113–114 werden das Sendesystem
und das Empfangssystem als jeweils unabhängige Vorrichtungen angesehen.
Diese Tabelle 203 wird zum Systemstart-Zeitpunkt erzeugt
und während
des Systemsbetriebs im Hauptspeicher 102 platziert. Für eine Vorrichtung
können
mehrere Kanäle
definiert werden. Wenn das Flag einer bestimmten Vorrichtung gesetzt ist,
führt mindestens
einer der die Vorrichtung betreffenden Kanäle eine Multimediaübertragung
aus, und die Vorrichtung befindet sich im periodisch angesteuerten
Zustand. Wenn das Flag rückgesetzt
ist, führen alle
die Vorrichtung betreffenden Kanäle
keine Multimediaübertragung
aus und die Vorrichtung befindet sich im normalen Betriebszustand.
Bei Ausführung der
Funktion Zyklischen-Kanal-Starten, wird das Flag der jeweiligen
Vorrichtung gesetzt. Wenn ein aktiver Kanal als Ergebnis der Ausführung der
Funktion Zyklischen-Kanal-Stoppen
für die
Vorrichtung verschwunden ist, wird das Flag rückgesetzt.
-
Die Struktur der periodischen Kanaltabelle 211 ist
in der 3 dargestellt.
Wie es in der 3 dargestellt
ist, ist die Tabelle unterteilt, um jeweiligen Vorrichtungen zugewiesen
zu werden. Durch Zeiger eines Indexabschnitts 301 wird
auf Information (302–309)
mehrerer Kanäle,
die zu jeweiligen Vorrichtungen gehören, gezeigt. Diese Tabelle 211 wird zum
Systemstart-Zeitpunkt erzeugt und während des Systembetriebs im
Hauptspeicher 102 platziert. Information (302 bis 309)
betreffend die Kanäle,
wird durch Ausführen der
oben beschriebenen Funktion Zyklischen-Port-Definieren sowie der
Funktion Zyklischen-Kanal-Definieren eingestellt.
-
Die periodische Kanaltabelle 211 verfügt über die
folgenden Felder:
-
- (a) Portkennung 302: Dort ist eine
Kennung gespeichert, die eindeutig dem einschlägigen Eingabe/Ausgabe-Port
zugewiesen ist.
- (b) Eingabe/Ausgabe-Klassifizierung 303: Sie kennzeichnet
die Eingabe/Ausgabe-Unterscheidung (oder Empfangen/Senden) für den einschlägigen Eingabe/Ausgabe-Port.
Im Fall einer Plattenlaufwerksvorrichtung bedeutet "Eingabe" das Lesen von Daten
von der Platte und "Ausgabe" bedeutet das Schreiben
von Daten auf die Platte. Im Fall einer Netzwerkvorrichtung bedeutet "Eingabe" den Empfang eines
Pakets vom Netzwerk, und "Ausgabe" bedeutet das Senden
eines Pakets an das Netzwerk.
- (c) Kanalkennung 304: Dort ist eine Kennung eines Kanals
einschließlich
des einschlägigen
Eingabe/Ausgabe-Ports gespeichert.
- (d) Kanalstatus 305: Dies kennzeichnet den Status des
Kanals einschließlich
des einschlägigen Eingabe/Ausgabe-Ports.
D. h., ob der einschlägigen
Kanal periodisch angesteuert wird oder nicht (d. h. aktiv ist oder
nicht).
- (e) Nummer 306 einer gepaarten Vorrichtung: Dort ist
die Kennzahl einer Vorrichtung mit einem Eingabe/Ausgabe-Port als
Paar mit dem einschlägigen
Eingabe/Ausgabe-Ports zum Bilden eines Kanals gespeichert. Typischerweise
unterscheidet sich eine Vorrichtung mit einem Eingangsport von der
Vorrichtung mit einem Ausgangsport. (Im Fall einer Dateikopie können jedoch
die beiden Vorrichtungen dieselbe Einzelvorrichtung bilden.)
- (f) Kennung 307 eines gepaarten Ports: Dort ist die
Kennung eines Eingabe/Ausgabe-Ports gespeichert, der ein Paar mit
dem einschlägigen Eingabe/Ausgabe-Port
bildet, um einen Ka nal zu erzeugen. Jeder einzelne Eingabe/Ausgabe-Port gehört nicht
gleichzeitig zu mehreren Kanälen. Außerdem wird
ein Kanal immer durch ein Paar aus einem Eingangsport und einem
Ausgangsport erzeugt.
- (g) Übertragungsrate 308:
Dort ist die Eingabe/Ausgabe-Datenübertragungsrate für den einschlägigen Kanal
(im Fall fester Bitraten) gespeichert. Im Fall variabler Bitraten
ist die maximal zulässige
Datenübertragungsrate
gespeichert.
- (h) Prozesskennung 309: Dort ist die Prozesskennung
des Prozesses unter Verwendung des einschlägigen Kanals gespeichert. Es
wird kein einzelner Kanal von mehreren Prozessen gleichzeitig genutzt.
Wenn der Prozess anormal endet, wird die gerade ausgeführte Eingabe/Ausgabe-Verarbeitung
abgebrochen und der einschlägigen
Kanal wird automatisch freigegeben.
-
Die Struktur der Eingabe/Ausgabe-Befehlsschlange 204 ist
in der 4 dargestellt.
Dieser Eingabe/Ausgabe-Befehl wird durch das Zyklischen-Kanal-Starten-Modul,
das Normal-Eingabe/Ausgabe-Modul und das periodisch angesteuerte
Modul erzeugt. Dieser Eingabe/Ausgabe-Befehl ist ein Befehl, der
als Anweisung an die Eingabe/Ausgabe-Steuerung geliefert wird. Die
Eingabe/Ausgabe-Befehlsschlange 204 verfügt über einen
Warteschlangenkopf 401 und eine Warteschlange bildende
Befehle 402. Der Kopf 401 der Eingabe/Ausgabe-Befehlsschlange
zeigt auf drei Arten von Warteschlangen für jede Vorrichtung. In jeder
Warteschlange bilden die Eingabe/Ausgabe-Befehle 402 eine
Warteschlange. Eine Warte-Warteschlange 414 ist eine Schlange zum
Speichern, in der Empfangsreihenfolge, der durch die Anwendung ausgegebenen
Anforderungen. Eine aktive Warteschlange 414 enthält Eingabe/Ausgabe-Befehle,
die die Eingabe/Ausgabe-Operation starteten. Hinsichtlich der Eingabe/Ausgabe-Befehle
in dieser Warteschlange 415 besteht die Möglichkeit,
dass der Eingabe/Ausgabe-Controller aktuell auf die Befehle zugreift.
Eine Abschluss-Warte- schlange 416 speichert
Eingabe/Ausgabe-Befehle, für
die die Datenübertragung
durch Eingabe/Ausgabe-Vorrichtungen beendet wurde.
-
Der Warteschlangenkopf 401 wird
zum Systemstart-Zeitpunkt erzeugt und während des Systembetriebs im
Hauptspeicher platziert. Die oben beschriebenen Module erzeugen
die Befehle 402 in einem Bereich des Hauptspeichers und
verketten sie.
-
Der Eingabe/Ausgabe-Befehl 402 verfügt über die
folgenden Felder:
-
- (a) Zeiger 403 auf den nächsten Befehl:
Dies ist ein Zeiger zum Verketten mehrerer Datenübertragungsbefehle. Hierbei
wird angenommen, dass jede Vorrichtung über die Befehlsverkettungsfunktion
verfügt.
- (b) Pufferadresse 404: Sie kennzeichnet die oberste
Adresse eines Puffers zum Übertragen von
Daten durch jeden Befehl.
- (c) Übertragungsdatenlänge 405:
Sie spezifiziert die Bytegröße der durch
jeden Befehl übertragenen
Daten.
- (d) Kopfbereichsadresse 406: Im Fall der Eingabe/Ausgabe-Controller 106 und 107 für Netzwerkvorrichtungen
kennzeichnet die oberste Adresse des Bereichs zum Speichern des
Kopfs des Kommunikationsprotokolls. Hierbei ist angenommen, dass
die Eingabe/Ausgabe-Controller 106 und 107 für Netzwerkvorrichtungen über die
sogenannte Kopfteil- und Kopfzusammenstellfunktion verfügen. Im
Fall der Eingabe/Ausgabe-Controller 104 und 105 für Plattenlaufwerksvorrichtungen kennzeichnet
das aktuelle Feld die Sektoradresse einer Platte in Verbindung mit
einem Kopflängenfeld 407.
- (e) Kopflänge 407:
Im Fall der Eingabe/Ausgabe-Controller 106 und 107 für Netzwerkvorrichtungen
kennzeichnet dies die Größe des Kopfs des
Kommunikationsprotokolls. Im Fall der Eingabe/Ausgabe-Controller 104 und 105 für Plattenlaufwerksvorrichtungen
kennzeichnet das aktuelle Feld die Sektor adresse einer Platte in
Verbindung mit einem Kopfbereichs-Adressenfeld 406.
- (f) Eingabe/Ausgabe-Klassifizierung 408: Sie spezifiziert
die Eingabe/Ausgabe-Unterscheidung des einschlägigen Eingabe/Ausgabe-Befehls.
Im Fall einer Plattenlaufwerksvorrichtung bedeutet "Eingabe" das Lesen von Daten
von einer Platte, und "Ausgabe" bedeutet das Schreiben
von Daten auf eine Platte. Im Fall einer Netzwerkvorrichtung bedeutet "Eingabe" das Empfangen eines Pakets
vom Netzwerk, und "Ausgabe" bedeutet das Senden
eines Pakets an das Netzwerk.
- (g) Interruptsteuerungsflag 409: Wenn der Eingabe/Ausgabe-Controller die Ausführung des
einschlägigen
Eingabe/Ausgabe-Befehls
abgeschlossen hat, spezifiziert das Interruptsteuerflag, ob der
Interrupt an die CPU geliefert werden sollte. Wenn ein Interrupt
erzeugt wurde, beendet die einschlägige Vorrichtung die Ausführung der
Eingabe/Ausgabe-Operation, bis die CPU einen Interrupthändler ausführt und
eine Interruptanforderung der Vorrichtung akzeptiert. Typischerweise wird
durch Setzen des Interruptsteuerflags nur im Befehl am Ende der
Befehlskette und durch Rücksetzen
der Interruptsteuerflags in anderen Befehlen die Auftrittsanzahl
von Interrupts verringert und die Belastung seitens der CPU gelindert.
- (h) Abschlussflag 410: Es handelt sich um ein Flag,
das anzeigt, ob der einschlägige
Befehl vom Eingabe/Ausgabe-Controller bereits ausgeführt wurde.
Bevor der Eingabe/Ausgabe-Controller gestartet
wird, löscht
die CPU dieses Feld. Wenn die Eingabe/Ausgabe-Operation für den einschlägigen Befehl
abgeschlossen ist, trägt
der Eingabe/Ausgabe-Controller einen Abschlusscode im aktuellen
Feld ein. Durch Bezugnahme auf das aktuelle Feld kann die CPU-Seite
die Abschlusssituation des Eingabe/Ausgabe-Befehls bestimmen.
- (i) Portkennung 411: Dort ist die Portkennung eines
Eingabe/Ausgabe-Ports gespeichert, der dem einschlägigen Eingabe/Ausgabe-Befehl
zugeordnet ist.
- (j) Prozesskennung 412: Dort ist die Prozesskennung
des Prozesses gespeichert, der den einschlägigen Eingabe/Ausgabe-Befehl ausgab. Wenn
das OS dem Prozess, von dem die Befehlsausgabe herrührte, darüber informiert,
dass der Eingabe/Ausgabe-Befehl abgeschlossen wurde, bezieht sie
sich auf das aktuelle Feld.
-
Nun wird die Verarbeitung durch das
in der "Multimediadatenübertragungs-Schnittstelle" beschriebene Multimedia-Übertragungsmodul
beschrieben.
-
Die 10 ist
ein Flussdiagramm das Zyklischen-Port-Definieren-Moduls. Durch Bezugnahme auf
eine durch das OS auf Grundlage eines durch ein Argument spezifizierten
Dateideskriptors verwaltete Tabelle wird eine zugehörige Vorrichtungsnummer erhalten
(Schritt 1001). Dann wird nach einem freien Datensatz für die der
Vorrichtungsnummer zugeordnete periodische Kanaltabelle 211 gesucht
(Schritt 1002). In der Portkennung 302 dieses
Datensatzes wird der Dateideskriptor des Arguments gespeichert (Schritt 1003).
Ferner wird die Prozesskennung des Anwendungsprogramms (Benutzerprozesses),
das dieses Modul aufgerufen hat, hergeleitet und in der Prozesskennung 309 abgespeichert.
-
Die 11 ist
ein Flussdiagramm des Zyklischen-Kanal-Definieren-Moduls. Zu allererst
wird geklärt,
dass die durch das Argument "von" spezifizierte Eingabeportkennung
und die durch das Argument "an" spezifizierte Ausgabeportkennung
bereits in periodischen Kanaltabelle 211 registriert sind
(Schritt 1101). Dann wird ein Punkt eines Datensatzes in
Zusammenhang mit dem Eingabeport der periodischen Kanaltabelle 211 eingetragen.
Die Eingabe/Ausgabe-Klassifizierung 303 wird auf "Eingabe" gesetzt (Schritt 1102).
In die Nummer 306 der gepaarten Vorrichtung und die Kennung 307 des
gepaarten Ports wird die Information des Ausgabeports eingetragen (Schritt 1103).
Dann wird ein Punkt eines Datensatzes in Zusammenhang mit dem Ausgabeport
der periodischen Kanaltabelle 211 eingetragen. Die Eingabe/Ausgabe-Klassifizierung 303 wird
auf "Ausgabe" gesetzt (Schritt 1104).
In die Nummer 306 der gepaarten Vorrichtung und die Kennung 307 des
gepaarten Ports wird die Information des Eingabeports eingetragen
(Schritt 1105). Danach wird zwischen dem Eingabeport und
dem Ausgabeport eine neue Kanalkennung zugewiesen, und diese wird
in die Kanalkennungen 304 sowohl des Datensatzes seitens des
Eingabeports als auch desjenigen seitens des Ausgabeports eingetragen
(Schritt 1106). Die zugehörigen Kanalzustände 305 werden
auf "Stopp" gesetzt (Schritt 1107).
Schließlich
wird die durch das Argument spezifizierte Übertragungsrate in die Übertragungsrate 308 beider
Datensätze
eingetragen (Schritt 1108).
-
Die 12 ist
ein Flussdiagramm des Zyklischen-Kanal-Starten-Moduls. Zuallererst
wird ermittelt, ob der durch das Argument spezifizierte Kanal in der
periodischen Kanaltabelle 211 existiert (Schritt 1201).
Wenn der Kanal nicht existiert, wird für eine Fehlerrücklieferung
gesorgt (Schritt 1202). Wenn der Kanal existiert, werden
Flags sowohl der eingangsseitigen Vorrichtung als auch der ausgangsseitigen Vorrichtung
der Statusflagtabelle 203 für die periodische Ansteuerung
geprüft
(Schritt 1203). Wenn das Flag einer der Vorrichtungen.
rückgesetzt
ist, wird die Eingabe/Ausgabe-Befehlsschlange 401 untersucht, und
es wird auf den Abschluss des Eingabe/Ausgabe-Befehls der Warte-Warteschlange
und der aktiven Warteschlange der zugehörigen Vorrichtung gewartet
(Schritt 1204). Danach werden die Flags beider Vorrichtungen
gesetzt (Schritt 1205).
-
Anschließend wird der in der 4 dargestellte Befehl erzeugt.
Daten werden nicht direkt vom Eingabe- zum Ausgabeport gesendet,
sondern immer über
den Hauptspeicher 102. Um die Datenübertragung auszuführen, ist
es daher erforderlich, einen Eingabebefehl zum Senden von Daten
vom Eingabeport zum Hauptspeicher sowie einen Ausgabebefehl zum
Senden von Daten vom Hauptspeicher zum Ausgabeport zu erzeugen.
Ferner ist es erforderlich, da die Datenmenge, die unter Verwendung
eines Befehls gesendet werden kann, wegen Hardwareeinschränkungen
beschränkt
ist, erforderlich, mehrere Befehle zu erzeugen. In diesem Modul
werden Eingabebefehle entsprechend der ersten einen Periode der
Datenübertragung,
wie sie in der Ansteuerungsperiode des periodisch angesteuerten
Moduls, z. B. 10 ms, ausgeführt
werden können,
erzeugt und in der Warte-Warteschlange 414 registriert.
Auf Grundlage der Übertragungsrate 308 in
der periodischen Kanaltabelle 211 sowie der Ansteuerungsperiode
wird die in einer Periode übertragene
Datenmenge bestimmt (Schritt 1206). Ferner wird geprüft, ob die Übertragungsrate
die durch die Hardware bestimmten Grenzmöglichkeiten überschreitet
(Schritt 1207). Wenn die Übertragungsrate die Grenzmöglichkeiten überschreitet,
wird für
eine Fehlerrücklieferung
gesorgt (Schritt 1208). Auf Grundlage der Menge an Übertragungsdaten
erfolgt eine Berechnung zum Bestimmen, wieviele (N) Befehle dazu
zu verwenden sind, für
die Übertragung
zu sorgen (Schritt 1209). Auf Grundlage des berechneten
Wert von N werden 2N Puffer zur Eingabe/Ausgabe von Daten zugeordnet
(Schritt 1210, 1212). Wenn nicht 2N Puffer zugeordnet
werden können,
wird für
eine Fehlerrücklieferung
gesorgt (Schritt 1211). Der Kanalzustand 305 der
beide Ports betreffenden Datensätze
in der periodischen Kanaltabelle wird auf "in Betrieb" gesetzt (Schritt 1213). Im
Hauptspeicher werden entsprechend dem in der 4 dargestellten Befehlsformat N Eingabebefehle
erzeugt, und diese werden in der Warte-Warteschlange 414 der
eingabeseitigen Vorrichtung verkettet (d. h. in die Warteschlange
eingestellt) (Schritt 1214). Das Interruptsteuerflag 209 jedes
Befehls in der Warte-Warteschlange wird rückgesetzt (Schritt 1215)
und es wird für
eine Rückgabe gesorgt.
-
In diesem Zustand sind nur Eingabebefehle entsprechend
der ersten einen Periode in die Warte-Warteschlange eingereiht.
Die anschließende
Verarbeitung wird vom periodisch angesteuerten Modul 212 übernommen.
Die Operation dieses periodisch angesteuerten Moduls wird später beschrieben.
-
Im Zyklischen-Kanal-Stoppenmodul
wird der Kanalzustand 305 des einschlägigen Kanals in der periodischen
Kanaltabelle 211 auf "Stopp" gesetzt. Ferner
werden die Datensätze
des einschlägigen
Kanals in der periodischen Kanaltabelle 211 gelöscht. Wenn
alle zur selben Vorrichtung gehörenden
anderen Kanäle
im Stoppzustand vorliegen, wird das einschlägige Flag der Statusflagtabelle 203 für periodische
Ansteuerung rückgesetzt.
-
Nun wird die durch die normale Eingabe/Ausgabe-Schnittstelle
ausgeführte
Eingabe/Ausgabe-Verarbeitung beschrieben. Diese normale Eingabe/Ausgabe-Schnittstelle
entspricht der durch UNIX bereitgestellten Lese- oder Schreibfunktion.
Da die normale Eingabe/Ausgabe-Schnittstelle und die Multimediadatenübertragungs-Schnittstelle
dieselbe Vorrichtung gemeinsam nutzen, wird jedoch innerhalb des
Moduls eine spezielle Verarbeitung ausgeführt.
-
Die 5 und 6 zeigen Flussdiagramme des Lese-
und des Schreibmoduls.
-
Die in der 5 dargestellten Verarbeitungsschritte 501 bis 504 des
Lese/Schreib-Moduls 202 und ein Verarbeitungsablauf, wie
er folgt, wenn sich im Schritt 505 ergibt, dass das Statusflag
betreffend die periodische Ansteuerung rückgesetzt ist (d. h., die Verarbeitungsschritte 506, 507, 508, 509, 510 und 511)
sind vorhanden, um die Eingabe/Ausgabe-Verarbeitung im herkömmlichen Betriebssystem zu
realisieren.
-
Von einem Dateideskriptor des Arguments wird
eine Eingabe/ Ausgabe-Vorrichtung hergeleitet (Schritt 501).
Im Hauptspeicher 102 wird ein Puffer zur Daten-Eingabe/Ausgabe
zugeordnet. Es wird ein Eingabe/Ausgabe-Befehl erzeugt (Schritt 503).
Dabei werden alle Interruptsteuerflags im Befehl rückgesetzt.
Dieser Befehl wird in die Warte-Warteschlange 414 eingetragen
(Schritt 504).
-
Dann wird das Flag der einschlägigen Vorrichtung
in der Statusflagtabelle 203 für die periodische Ansteuerung
geprüft
(Schritt 505). Wenn das Flag rückgesetzt ist, wird darauf
gewartet, dass die aktive Warteschlange 515 leer wird.
Anders gesagt, wird, nachdem die aktuell ablaufende Eingabe/ Ausgabe
beendet wurde (Schritte 505 und 507) der Inhalt der
Warte-Warteschlange 414 unverändert in die aktive Warteschlange 415 verschoben
(Schritt 508). Das Interruptsteuerflag 409 des
am Hinterende der aktiven Warteschlange liegenden Befehls wird gesetzt
(Schritt 509). Danach wird ein Eingabe/Ausgabe-Controller
gestartet (Schritt 510) und es wird auf den Abschluss der
Eingabe/Ausgabe-Operation gewartet (Schritt 511). Der Eingabe/Ausgabe-Controller führt eine
Daten-Eingabe/Ausgabe entsprechend dem Befehl in der aktiven Warteschlange
aus.
-
Wenn das Statusflag für die periodische
Ansteuerung der zugehörigen
Vorrichtung gesetzt ist, erzeugt das aktuelle Modul einen Befehl
und trägt diesen
in die Warte-Warteschlange 414 ein (Schritt 504),
und danach wird der Eingabe/Ausgabe-Controller nicht tatsächlich gestartet.
Der tatsächliche Start
des Eingabe/Ausgabe-Controllers wird durch das periodisch angesteuerte
Modul 212 übernommen,
und das Modul gelangt in den Wartezustand (Schritt 511).
-
Wenn das Statusflag für die periodische
Ansteuerung rückge setzt
ist, wird der Wartezustand durch den Eingabe/Ausgabe-Abschlussinterrupt
vom Eingabe/Ausgabe-Controller aufgehoben. Wenn das Statusflag für periodische
Ansteuerung gesetzt ist, wird der Wartezustand durch eine vom periodisch
angesteuerten Modul gelieferte Meldung aufgehoben. Außerdem wird
die in der 6 dargestellte
Verarbeitung durch das Lese/ Schreib-Abschlussverarbeitungsmodul
ausgeführt.
-
Wenn das Statusflag für periodische
Ansteuerung in der 5 rückgesetzt
ist, wird der Eingabe/Ausgabe-Befehl aus der aktiven Warteschlange 415 ausgetragen
(Schritte 602 und 603). Wenn das Statusflag für periodische
Ansteuerung gesetzt ist, wird ein Austragen aus der Abschluss-Warteschlange 416 ausgeführt (Schritte 604 und 605).
Danach wird der Bereich für
den abgeschlossenen Eingabe/Ausgabe-Befehl und den für die Daten-Eingabe/Ausgabe
verwendeten Puffer freigegeben (Schritte 606 und 607).
-
In den 7 und 9 ist ein Flussdiagramm für das periodisch
angesteuerte Modul 212 dargestellt. Dieses periodisch angesteuerte
Modul wird durch einen Timerinterrupt als Trigger periodisch gestartet.
-
Die in der 7 dargestellte Verarbeitung durch das
periodisch angesteuerte Modul 212 besteht aus zwei Teilen,
nämlich
einer Nachverarbeitung eines innerhalb einer Periode abgeschlossenen Eingabe/Ausgabe-Befehls
sowie dem Start eines in der nächsten
einen Periode auszuführenden
Eingabe/ Ausgabe-Befehls. Bei jeder Verarbeitung werden Vorrichtungen
in der Reihenfolge ihrer Nummer durchgefahren, und es wird untersucht,
ob sie sich im periodisch angesteuerten Zustand befinden (Schritte 701, 702, 704, 706, 707, 709 und 710).
Im Fall des periodisch angesteuerten Zustand werden ein Befehlsnachverarbeitungsmodul
und ein Nächste-Periode-Startmodul
aufgerufen (Schritte 800 und 900).
-
In der 8 ist
ein Flussdiagramm des dem Schritt 800 entsprechenden Befehlsnachverarbeitungsmoduls
dargestellt. Zuallererst werden in der aktiven Warteschlange 415 eingetragene
Eingabe/Ausgabe-Befehle einzeln entnommen (Schritt 801).
Es wird ermittelt, ob der einschlägige Befehl in Zusammenhang
mit der Multimedia-Datenübertragung
(periodische Datenübertragung)
steht, wozu auf die Portkennung 411 in den Befehlen und
auf die periodische Kanaltabelle 211 Bezug genommen wird (Schritt 802).
Im Fall einer Nicht-Multimedia-Datenübertragung
wird der einschlägige
Befehl in die Abschluss-Warteschlange 813 verschoben (Schritt 813).
Im Fall einer Multimedia-Datenübertragung wird
ermittelt, ob der Kanal aktiv ist, wozu auf den Kanalstatus 305 in
der periodischen Kanaltabelle 211 Bezug genommen wird (Schritt 803),
und es wird das Abschlussflag 410 des einschlägigen Eingabe/Ausgabe-Befehls
geprüft
(Schritt 804). Wenn die Ausführung des einschlägigen Eingabe/Ausgabe-Befehls noch
nicht abgeschlossen ist, d. h., wenn die Datenübertragung einer Periode nicht
während
einer Periode abgeschlossen ist, erfolgt die Verzweigung zu einer
Fehlerverarbeitung 805 und die anschließende Eingabe/Ausgabe betreffend
den einschlägigen
Kanal wird gestoppt (Schritt 805).
-
Wenn sich im Schritt 806 ergibt,
dass der abgeschlossene Eingabe/Ausgabe-Befehl einen Eingabeprozess
betrifft, werden Vorbereitungen zur Übertragung der eingegebenen
Daten an einen Ausgabeport in der nächsten Periode getroffen (Schritte 807, 808, 809 und 810).
Wenn sich im Schritt 806 ergibt, dass der abgeschlossene
Eingabe/Ausgabe-Befehl einen Ausgabeprozess betrifft, wird der einschlägige Eingabe/Ausgabe-Befehl gelöscht (Schritt 811). Während im
oben beschriebenen Eingabe/Ausgabe-Starten-Modul der Dateneingabebefehl
in einem Eingabeport an den Hauptspeicher erzeugt wird, wird in
diesem Fall unter Verwendung des Eingabebefehls ein Teil um geschrieben,
und es wird ein Datenausgabebefehl vom Hauptspeicher an einen Ausgabeport erzeugt
(Schritte 807 und 808). Auch hinsichtlich des Datenpuffers
wird der für
die Eingabeverarbeitung verwendete Puffer unverändert an die Ausgabeverarbeitung übergeben.
Dieser Ausgabebefehl wird in die Warte-Warteschlange 414 der
Ausgabevorrichtung eingereiht (Schritt 809). Während im
Zyklischen-Kanal-Starten-Modul nur Eingabebefehle für die erste eine
Periode erzeugt werden, werden Eingabebefehle für die nächste Periode unter Verwendung
von in der aktiven Warteschlange enthaltenen Eingabebefehlen erzeugt.
Die Pufferadresse 404 und die zu verwendende Adresse 406 der
Vorrichtung, von der die Eingabe herrührte, werden umgeschrieben,
und das Abschlussflag 410 wird rückgesetzt, und es wird das Einreihen
in die Warteschlange 414 der Eingabevorrichtung ausgeführt (Schritt 810).
Das Erzeugen von Eingabebefehlen wird in jeder Periode fortgesetzt, bis
die Übertragung
aller Daten vom Eingabeport abgeschlossen ist. Daher werden die
Eingabe- und die Ausgabeoperation in einem Doppelpuffersystem parallel
ausgeführt,
und die Ausgabeoperation wird mit einer Verzögerung von einer Periode im
Vergleich zur Eingabeoperation ausgeführt.
-
Die bisher beschriebene Verarbeitung
wird ausgeführt,
bis die aktive Warteschlange 415 leer wird (Schritt 812).
-
In der 9 ist
ein Flussdiagramm des dem Schritt 900 entsprechenden Nächste-Periode-Startmoduls
dargestellt. Der Inhalt der Warteschlange 414 für jede Vorrichtung
wird in die aktive Warteschlange 415 verschoben (Schritt 901).
Es wird ein Eingabe/Ausgabe-Controller gestartet (Schritt 902).
Dieser Eingabe/Ausgabe-Controller führt eine Daten-Eingabe/Ausgabe-Operation
entsprechend einem in der aktiven Warteschlange 415 enthaltenen
Befehl aus. Ferner hebt der Eingabe/Ausgabe-Controller, um eine
Nacharbeitung eines durch die normale Eingabe/Ausgabe-Schnittstelle
erzeugten Eingabe/Aus gabe-Befehls auszuführen, der innerhalb einer Periode abgeschlossen
wurde (durch den Schritt 813 in die Abschluss-Warteschlange
verschobener Eingabe/Ausgabe-Befehl) den Wartezustand des Lese/Schreib-Abschlussverarbeitungsmoduls 210 auf (Schritt 903).
-
Das periodisch angesteuerte Modul
wiederholt die oben beschriebene Verarbeitung mit einer vorbestimmten
Periode.
-
Beim vorliegenden Beispiel informiert
das periodisch angesteuerte Modul das Anwendungsprogramm nicht darüber, dass
die Multimedia-Datenübertragung
abgeschlossen wurde. Alternativ kann das periodisch angesteuerte
Modul das Anwendungsprogramm darüber
informieren, dass die Multimedia-Datenübertragung abgeschlossen wurde
oder aufgrund eines Fehlers abgebrochen wurde. Auch kann der Übertragungsdatensatz
z. B. in einer Logdatei abgespeichert werden, und es kann z. B.
die Situation der Datenübertragung
durch einen Befehl angezeigt werden.
-
So können die Multimedia-Datenübertragung
und die normale Eingabe/Ausgabe-Verarbeitung gleichzeitig für dieselbe
Vorrichtung ausgeführt werden.
-
Fig. 1
- 101
- Prozessor
- 102
- Hauptspeicher
- 104–107
- Eingabe/Ausgabe-Controller
-
Fig. 2
- 201
- Eingabe/Ausgabe-Verarbeitungsmodul
- 202
- Lese/Schreib-Modul
- 203
- Statusflagtabelle
betreffend periodische Ansteuerung
- 204
- Eingabe/Ausgabe-Befehlswarteschlange
- 205
- Eingabe/Ausgabe-Puffer
- 208
- Eingabe/Ausgabe-Interrupthändler
- 209
- Scheduler
- 210
- Lese/Schreib-Abschlussverarbeitungsmodul
- 211
- periodische
Kanaltabelle
- 211
- periodisch
angesteuertes Modul
- 214
- Timerinterrupthändler
- 215
- Zyklischen-Port-Definieren-Modul
- 216
- Zyklischen-Kanal-Definieren-Modul
- 217
- Zyklischen-Kanal-Start-Modul
- 218
- Zyklischen-Kanal-Stopp-Modul
- Control
- Steuerung
- DMA
Transfer
- DMA-Übertragung
- Reference
- Bezugnahme
- Update
- Aktualisierung
-
Fig. 3
- 211
- periodische
Kanaltabelle
- 302
- Portkennung
- 303
- Eingabe/Ausgabe-Klassifizierung
- 304
- Kanalkennung
- 305
- Kanalstatus
- 306
- Nummer
der gepaarten Vorrichtung
- 307
- Kennung
des gepaarten Ports
- 308
- Übertragungsrate
- 309
- Prozesskennung
- Device
Number
- Vorrichtungsnummer
- Pointer
- Zeiger
-
Fig. 4
- 401
- Kopf
der Eingabe/Ausgabe-Befehlsschlange
- 403
- Zeiger
auf den nächsten
Befehl
- 404
- Pufferadresse
- 405
- Übertragungsdatenlänge
- 406
- Kopfbereichsadresse
- 407
- Kopflänge
- 408
- Eingabe/Ausgabe-Klassifizierung
- 409
- Interruptsteuerflag
- 410
- Abschlussflag
- 411
- Portkennung
- 412
- Prozesskennung
- 413
- Vorrichtungsnummer
- 414
- Zeiger
auf die Warte-Warteschlange
- 415
- Zeiger
auf die aktive Warteschlange
- 416
- Zeiger
auf die Abschlusswarteschlange
- Head
- Kopf
- Tail
- Hände
-
Fig. 5
- 501
- Eingabe/Ausgabe-Vorrichtung
aus dem Dateideskriptor herleiten
- 502
- Freien
Eingabe/Ausgabe-Puffer zuordnen
- 503
- Eingabe/Ausgabe-Befehl erzeugen
(Interruptsteuerflags 409 rücksetzen)
- 504
- erzeugten
Eingabe/Ausgabe-Befehl zur Warte-Warte schlange 414 hinzufügen
- 505
- Statusflag 203 für periodische
Ansteuerung prüfen
- 506
- Ist
die aktive Warteschlange 415 leer?
- 507
- Warten
auf den Abschluss der Eingabe/Ausgabe-Operation
- 508
- Verschieben
des Inhalts der Warte-Warteschlange 414 in die aktive Warteschlange 415
- 509
- Setzen
des Interruptsteuerflags 409 des Befehls, der sich am Hinterende der
aktiven Warteschlange befindet
- 510
- Starten
des Eingabe/Ausgabe-Controllers
- 511
- Warten
auf den Abschluss der Eingabe/Ausgabe-Operation
- No
- nein
- Read/Write
Module
- Lese/Schreib-Modul
- To
Read/Write Completion Processing Module
- zum
Lese/ Schreib-Abschlussverarbeitungsmodul
- Yes
- ja
-
Fig. 6
- 601
- Prüfen des
Statusflags 203 betreffend periodische Ansteuerung
- 602
- Herausnehmen
des abgeschlossenen Eingabe/Ausgabe-Befehls aus der aktiven Warteschlange 415
- 603
- Löschen des
Zeigers 415 der aktiven Warteschlange
- 604
- Entnehmen
des abgeschlossenen Eingabe/Ausgabe-Befehls aus der Abschluss-Warteschlange 416
- 605
- Löschen des
Zeigers 416 der Abschlusswarteschlange
- 606
- Löschen des
abgeschlossenen Eingabe/Ausgabe-Befehls
- 607
- Freigeben
des Puffers
- Off
- aus
- On
- ein
- Read/Write
Completion Processing Module
- Lese/Schreib-Abschlussverarbeitungsmodul
- Return
- zurück
-
Fig. 7
- 701
- Vorrichtungsnummer
= 1
- 702
- Statusflag 203 betreffend periodische
Ansteuerung gesetzt?
- 704
- Vorrichtungsnummer
= Vorrichtungsnummer +1
- 705
- Vorrichtungsnummer > Anzahl der Vorrichtungen?
- 706
- Vorrichtungsnummer
= 1
- 707
- Statusflag 203 betreffend periodische
Ansteuerung gesetzt?
- 709
- Vorrichtungsnummer
= Vorrichtungsnummer + 1
- 710
- Vorrichtungsnummer > Anzahl der Vorrichtungen?
- 800
- Nachverarbeitung
des Befehls
- 900
- Start
der nächsten
Periode
- No
- nein
- Pause
Until Next Start
- Pause
bis zum nächsten Start
- Periodic
Driven Module
- periodisch
angesteuertes Modul
- Yes
- ja
-
Fig. 8
- 801
- X ← Eingabe/Ausgabe-Befehl,
der sich am Kopf der aktiven Warteschlange 415 befindet (Herausnehmen
aus der Warteschlange)
- 802
- Kanal?
- 803
- Kanalstatus?
- 804
- Abschlussflag 410 von X?
- 805
- Fehler:
Die angeforderte Übertragungsrate
kann nicht unterstützt
werden
- 806
- Eingabe/Ausgabe-Klassifizierung 408 von
X?
- 807
- Erzeugen
einer Kopie von Y ← X;
Eingabe/Ausgabe-Klassifizierung 408 von ← "Ausgabe"; Portkennung 411 von
Y ← Kennung 307 des
gepaarten Ports; Abschlussflag 410 von Y ← Rücksetzen
- 808
- Wenn
die gepaarte Vorrichtung ein Netzwerk ist, Kopf erzeugen
- 809
- Y
in die Warte-Warteschlange der gepaarten Vorrichtung eintragen
- 810
- Aktualisieren
der X-Pufferadresse; Abschlussflag 410 von X ← Rücksetzen;
Aktualisieren der Eingangsdatenadressen 406 und 407;
Eintragen von X in die Warte-Warteschlange 414
- 811
- X
löschen
- 812
- Ist
die aktive Warteschlange 415 leer?
- 813
- Eintragen
von X in die Abschlusswarteschlange 416
- Check
Up Termination Of Command Of Preceding Period
- Abschluss
des Befehls der vorigen Periode prüfen
- Command
Postprocessing
- Befehls-Nachverarbeitung
- Create
Input Command Of Next Period
- Eingabebefehl
für die nächste Periode
erzeugen
- Create
Output Command
- Ausgabebefehl
erzeugen
- No
- nein
- Off
- aus
- On
- ein
- Operation
- Operation
ausführen
- Return
- zurück
- Stop
- Stopp
- Yes
- ja
-
Fig. 9
- 901
- Warte-Warteschlange 414 der einschlägigen Vorrichtung
in die aktive Warteschlange 415 verschieben
- 902
- Starten
des Eingabe/Ausgabe-Controllers
- 903
- Information
an das Lese/Schreib-Abschlussverarbeitungsmodul
- Next
Period Start
- Start
der nächsten
Periode
- Return
- zurück
-
Fig. 10
- 1001
- Erhalten
der Vorrichtungsnummer aus dem Dateideskriptor des Arguments
- 1002
- Suche
nach einem leeren Datensatz in der periodischen Kanaltabelle 211
- 1003
- Einspeichern
des Dateideskriptors in die Portkennung 302
- 1004
- Einspeichern
der Prozesskennung des Benutzerprozesses in das Prozesskennungsfeld 309
- Define-Cyclic-Port
- Zyklischen-Port-Definieren
- Return
- zurück
-
Fig. 11
- 1101
- Existenz
des Arguments "von" und des Arguments "an" klären
- 1102
- Eingabe/Ausgabe-Klassifizierung 303 des
Eingabeports auf "Eingabe" setzen
- 1103
- Ausgabeport
in der Nummer 306 der gepaarten Vorrichtung und der Kennung 307 des
gepaarten Ports im Eingangsport eintragen
- 1104
- Eingabe/Ausgabe-Klassifizierung 303 des
Ausgabeports auf "Ausgabe" setzen
- 1105
- Eingabeport
in die Nummer 306 der gepaarten Vorrichtung und die Kennung 307 des
gepaarten Ports des Ausgangsports eintragen
- 1106
- Neue
Kanalkennung zuweisen und diese in die Kanalkennungen 304 beider
Ports eintragen
- 1107
- Kanalzustände 305 beider
Ports auf "Stopp" setzen
- 1108
- Übertragungsrate
des Arguments in die Übertragungsraten 308 beider
Ports eintragen
- Define-Cyclic-Channel
- Zyklischen-Kanal-Definieren
- Return
- zurück
-
Fig. 12
- 1201
- Ist
der Kanal korrekt eingestellt?
- 1202
- Fehler:
Noch nicht initialisiert
- 1203
- Statusflag 203 betreffend periodische
Ansteuerung?
- 1204
- Warten
auf den Abschluss des gerade ausgeführten Eingabe/Ausgabe-Befehls
- 1205
- Statusflag 203 betreffend periodische
Ansteuerung setzen
- 1206
- Datenübertragungsmenge
für eine
Periode berechnen
- 1207
- Entspricht
die Übertragungsrate
der Grenze oder ist sie kleiner?
- 1208
- Fehler: Überschreiten
der Übertragungsratengrenze
- 1209
- Berechnen
der Anzahl (N) von Eingangsbefehlen
- 1210
- Können N × 2 Eingabe/Ausgabe-Puffer
zur Verfügung
gestellt werden?
- 1211
- Fehler:
Unzureichende Puffer
- 1212
- Zuordnen
von N × 2
Eingabe/Ausgabe-Puffern
- 1213
- Kanalstatus
auf "Operationsausführung" setzen
- 1214
- N
Eingangsbefehle erzeugen und Einreihen derselben in die Schlange 414
- 1215
- Interruptsteuerflag
jedes Befehls rücksetzen
- No
- nein
- Off
- aus
- On
- ein
- Return
- zurück
- Start-Cyclic-Channel
- Zyklischen-Kanal-Starten
- Yes
- ja