-
Die Erfindung bezieht sich auf ein
Verfahren, das einem Anwender eines Computersystems ermöglicht,
die Ausführung
von Tasks durch ein Anwendungsprogramm im System zu steuern sowie
auf ein Computersystem zur Ausführung
der Tasks.
-
Die Computersysteme von heute und
morgen fordern Software-Entwickler heraus, neue Paradigmen zu erfinden,
um den Anwendern ihrer Produkte Anwendungen anzubieten. Die Herausforderung
besteht darin, die Rohleistung der Computerarchitektur und die neuen
Merkmale der System-Software auf Arten nutzbar zu machen, die die
Produktivität
des Anwenders und die durch die Software-Anwendung ausgeführte Arbeit
wesentlich erhöhen.
Eine weitere Herausforderung besteht in der Herstellung von Anwendungen,
deren Leistung und Durchsatz mit eingeführten Computer-Neuerungen ohne
wesentlichen Neuentwurf dieser Anwendungen automatisch steigt.
-
In dem typischen System des Standes
der Technik besitzt der Anwender wenig oder keine Kontrolle der
Art und Weise, in der das Computersystem die Anwendungsprogramme
des Anwenders ausführt.
Ein typisches Beispiel für
das Fehlen der direkten Kontrolle der Ausführung der Anwendungsprogramme
ist das Betriebssystem Microsoft WindowsTM.
Wenn in diesem System mehrere Anwendungsprogramme gemäß der Steuerung
eines 386-er oder 486-er Mikroprozessors im erweiterten Modus laufen,
kann der Anwender die Minimalzahl von Millisekunden einstellen,
die eine Anwendung laufen kann, bevor das System die Steuerung an eine
andere Anwendung gibt. Das häufige
Umschalten führt
dazu, daß eine
Reihe von Anwendungen in einer offensichtlichen Multitasking-Situation
gleichmäßiger zu
laufen scheinen. Leider besteht die Gesamtwirkung auf den Systembetrieb
darin, daß die
Leistung der Anwendung, die primär
in Gebrauch ist, merklich verlangsamt wird. Der Anwender besitzt
keine spezifische Möglichkeit,
den Systembetrieb neu zu konfigurieren, um die Leistung irgendeines
besonderen Task zu verlangsamen oder zu beschleunigen, und keine
Möglichkeit, das
System zu informieren, daß ein
besonderer Task mit irgendeinem besonderen Leistungsniveau im Hintergrund
laufen kann.
-
Dieses und andere Systeme verwenden
den traditionellen Zugang zum Entwurf interaktiver Software-Anwendungen,
der darauf beruht, die Anwenderanforderung sofort zu verarbeiten
und das Computer-Betriebsmittel zu belegen, bis die Anforderung
abgeschlossen ist. Allerdings ist dieser Zugang für einen
typischen Anwender nicht gut geeignet. Typischerweise betreibt ein
Anwender ein Computersystem durch einen Prozeß des (1) Nachdenkens über den
nächsten
Task, (2) Entscheidens, was zu tun ist, (3) Informierens des Computers über die
Entscheidung unter Verwendung einer Form einer Eingabevorrichtung
und (4) Wartens, während der
Computer den Task verarbeitet. Daraufhin werden diese vier Schritte
für den
nächsten
Task wiederholt. Diese einfache Folge von Schritten ist in 1 gezeigt. Die Schritte
1, 2 und 3 werden häufig
ausgeführt,
während
die graphische Anwenderschnittstelle (GUI) der Anwendung betrachtet
wird. Falls die GUI während
des Schrittes 4 nicht für
den Anwender verfügbar
ist, wird die Zeit des Anwenders, während er darauf wartet, daß der Computer
die Verarbeitung des momentanen Task abschließt, verschwendet. Aus S. R.
Bourne, "UNIX Time-Sharing System: The
UNIX Shall", The
Bell System Technical Journal, Bd. 57, Nr. 6, Juli – August
1978, S. 1971 bis 1990, ist ein Computersystem mit einem befehlszeilenbetriebenen
Befehlssystem zum Akzeptieren von Anwenderbefehlen, einem Verarbeitungssystem
zum Ausführen
der durch den Anwender angeforderten Operationen und einem Hintergrundmanager
zum Auffangen von Befehlen mit einem besonderen Postfix-Operator
und zum Anordnen der Befehle in einer Warteschlange zur Ausführung zu
einer späteren
Zeit bekannt. Von den Erfindern der vorliegenden Erfindung wurde
ein System entwickelt, das diesen Nachteil der Systeme des Standes
der Technik überwindet.
-
Die Erfindung ist in den Ansprüchen 1 und
8 definiert.
-
Es ist die Aufgabe der Erfindung,
ein Verfahren zu schaffen, das ermöglicht, daß der Anwender eines Computersystems
unabhängig
von Tasks und Fortschritt mit einem Anwendungsprogramm in Wechselwirkung tritt.
Um dies zu erreichen, wird ein Anwendertoleranz-Zeitintervall erzeugt,
das die Bereitschaft des Anwenders widerspiegelt, während der
Verwendung eines Anwendungsprogramms auf die Ausführung des
gegebenen Befehls zu warten. Falls ein Befehl nicht innerhalb der
durch die Anwendertoleranz spezifizierten Zeit abgeschlossen werden
kann, wird dem Anwender eine Dialogbox angezeigt, die ermöglicht,
daß der
Anwender wählen
kann, ob die Operation abgeschlossen werden soll oder ob die Operation
an die Steuerung eines Hintergrundmanagers abgegeben werden soll.
Falls der Anwender das Abbrechen der Operation wählt, wird ein Rückgängigmachen
ausgeführt
und die Steuerung über
das System an den Anwender zurückgegeben.
Wenn der Anwender andererseits wählt,
den Task dem Hintergrundmanager zuzuweisen, wird der Anwender an
die Anwendung zurückgegeben
und anschließend
der vorhergehende anwenderspezifizierte Task durch den Hin tergrundmanager
gesteuert. Der Hintergrundmanager weist den Task einer Task-Liste zu, über die
der Anwender ebenfalls die Steuerung besitzt. Der Prozeß, über den
ein neuer Task ausgeführt
wird und alle benötigten Daten
aktualisiert werden, ist komplex. Tasks werden innerhalb einer spezifischen
Priorität
in einer Zuersteingeben/Zuerst-ausgeben-Reihenfolge (FIFO-Reihenfolge)
in einen Ausführungszustand
befördert,
wobei Tasks mit höherer
Priorität
beim Erreichen des Ausführungszustands
eine bevorzugte Behandlung erhalten. Es ist nicht gestattet, Tasks,
die davon abhängen,
daß andere
Tasks abgeschlossen werden, in den Ausführungszustand zu bringen, bis
die Vorbedingungs-Tasks abgeschlossen sind. Außerdem kann ein Task nicht
tatsächlich in
den Ausführungszustand
kommen, solange kein Schlitz für
die Ausführung
offen ist (wobei es eine anwenderkonfigurierbare Anzahl von Tasks
gibt, die gleichzeitig ausgeführt
werden können).
Außerdem
können Task-Prioritäten durch
den Anwender geändert
werden, was dazu führen
kann, daß sich
ein Task in der Liste nach oben bewegt, um mit der Ausführung zu
beginnen. Falls es keine verfügbaren
offenen Schlitze gibt und sich ein nicht gesperrter und nicht ausgeführter Task
zu einer höheren
Priorität
bewegt als ein momentan ausgeführter
Task, wird dieser Task angehalten und ermöglicht, daß an seiner Stelle der Task
mit höherer
Priorität ausgeführt wird.
Während
ein Task im Hintergrund betrieben wird, sind die von diesem Task
verwendeten Daten verriegelt, wobei ausgeschlossen ist, daß sie auf
definierte Weise durch andere Tasks geändert werden.
-
In einer Ausführungsform der Erfindung umfaßt ein Verfahren,
das einem Anwender eines Computersystems ermöglicht, die Ausführung von
Tasks durch ein Anwendungsprogramm im System zu steuern, einen Schritt
des Erzeugens eines Anwender-Toleranzniveaus für das Anwendungsprogramm. Wann
immer der Anwender das System auffordert, einen Task auszuführen, wird
eine Berechnung eines Schätzwerts
für die
Zeit, die ein Task erfordert, um abgeschlossen zu werden, ausgeführt. Falls
der Schätzwert
kürzer
als das Anwender-Toleranzniveau ist, wird der Task bis zum Abschluß ausgeführt. Falls
der Schätzwert
andererseits höher als
das Anwender-Toleranzniveau ist, wird zugelassen, daß der Anwender
den Task dem Hintergrundmanager zuweist, wobei die Steuerung des
Systems zur Auswahl des nächsten
Task an den Anwender zurückgegeben wird.
-
1 zeigt
einen typischen Betrieb eines Computersystems des Standes der Technik;
-
2-8 zeigen die Anwenderschnittstelle,
wobei
-
2 die
In-den-Hintergrund-Dialogbox zeigt,
-
3 eine
alternative In-den-Hintergrund-Dialogbox zeigt, 4 die Hintergrundmanager-Dialogbox zeigt,
-
5 die
Hintergrundmanager-Menüauswahlen
zeigt,
-
6 eine
ausführliche
Ansicht für
einen Task zeigt,
-
7 die
Aktivitätsprotokoll-Dialogbox
zeigt, und
-
8 das
ausführliche
Aktivitätsprotokoll
für einen
Task zeigt;
-
8a zeigt
die Hintergrundmanager-Optionsdialogbox;
-
8b zeigt
die Hauptpalette aller einer Warteschlange zugewiesenen Tasks;
-
8c zeigt
die Menüoptionen,
die aus der Hauptwarteschlangenpalette aus 8b verfügbar sind;
-
8d zeigt
die Warteschlangeninformationsoptions-Dialogbox;
-
9 zeigt
den Gesamtbetrieb des Hintergrundmanagers in Verbindung mit dem
Befehlssystem und mit dem Verarbeitungssystem;
-
10 ist
ein Objektdiagramm des Hintergrundmanagers;
-
11 ist
ein Zustandsdiagramm der Schritterzeugungsaktion;
-
12 ist
ein Zustandsdiagramm für
den Schritterzeugungs-Einzelheitsdialog;
-
13 ist
ein Zustandsdiagramm für
den Schritterzeugungs-Protokolldialog;
-
14 ist
ein Zustandsdiagramm für
den Schritterzeugungs-Zusammenfassungsdialog;
-
15 ist
ein Zustandsdiagramm für
den Schritterzeugungs-Prozeßstrang;
-
16 ist
ein Diagramm, das die Funktionsoperation zum Zuweisen eines Task
an den Hintergrundmanager zeigt;
-
17 ist
ein Diagramm, das die Zeitmesseroperation in einer Dialogbox zeigt;
-
18 ist
ein Diagramm, das die in einem Anwenderbefehl inhärenten Informationen
und die Zuweisung dieses Befehls an den Hintergrundprozessor zeigt;
-
19 ist
ein Diagramm, das den internen Betrieb des Hintergrundmanagers beim
Ausführen
eines Task zeigt;
-
20 ist
ein Diagramm, das den Betrieb des Hintergrundmanagers zeigt, wenn
eine Aktion abgeschlossen ist; und
-
21-29 zeigen ein Beispiel, wie
der Hintergrundmanager eine Reihe von Aktionen koordiniert, wobei
-
21 einen
Druckbefehl zeigt,
-
22 einen
Maskenerzeugungsbefehl zeigt,
-
23 einen
Dateiumwandlungsbefehl zeigt,
-
24 einen
Gradationsbefehl zeigt,
-
25 einen
Füllbefehl
zeigt,
-
26 eine Änderung
der Prioritäten
durch den Anwender zeigt,
-
27 die
sich ergebende Änderung
der Prioritäten
zeigt,
-
28 eine
weitere Umordnung der Prioritäten
zeigt, und
-
29 den
Abschluß der
Aktionen zeigt.
-
Gesamtsystembeschreibung
-
In einem Abschnitt mit dem Titel "Definitionen" am Ende dieses Abschnitts
wird ein kurzes Glossar gegeben. Wie oben beschrieben wurde, zeigt 1 den Betrieb eines herkömmlichen
Computersystems. Im Gegensatz zu dieser Betriebsart wird der Vorteil
betrachtet, wenn der Computer an der Ausführung des momentanen Task arbeitet,
während
durch den Anwender gerade die Schritte 1–3 für den nächsten Task ausgeführt werden.
Mit anderen Worten, es wird der Nutzen betrachtet, wenn die Software-Anwendung
anstrebt, den Anwender mit seiner eigenen Geschwindigkeit arbeiten
zu lassen, wobei er nicht künstlich
auf die Geschwindigkeit des Computers begrenzt ist.
-
Natürlich kann ein Anwender in
vielen Fällen
nicht "nachdenken/entscheiden/informieren", bis die Ergebnisse
des vorhergehenden Task abgeschlossen sind. Allerdings kann der
Anwender in einigen Fällen über einen
anderen, unverbundenen Task "für den Computer
nachdenken/für
den Computer entscheidenden Computer informieren", während
der momentane Task verarbeitet wird. Solche Fälle sind besonders üblich in
Anwendungen, die die Verarbeitung großer Datenmengen umfassen, beispielsweise
in Operationen, die große Datenbanken
oder Graphiken oder die Bildverarbeitung umfassen.
-
Die Wichtigkeit des vorliegenden
Systems hängt
stark vom Typ des Anwenders ab, der das Computersystem verwendet.
Für den
Gelegenheitsanwender einer Software-Anwendung sind Verzögerungen
nicht lebenswichtig. Für
den ernsthaften Produktionsanwender, der eine Anwendung ständig zum
Erzeugen von Ergebnissen verwendet, ist jede Beschleunigung der
Produktivität
wichtig. Zunächst
wird der Wert der Anwenderzeit betrachtet. Die Produktivität des Anwenders,
d. h. die durch den Anwender mit einer gegebenen Software-Anwendung
ausgeführte
Arbeit, ist proportional zum Wert der Zeit dieses Anwenders. Mit
anderen Worten, je mehr Arbeit der Anwender aus dem Computer herausholt,
desto mehr Ertrag erhält
der Anwender (und sein Arbeitgeber) in der Zeit dieses Anwenders
und in den Investition in den Computer. Intelligente Verbraucher sind
somit mehr denn je über
den Gesamtdurchsatz eines Systems besorgt. Somit sind wichtige Eigenschaften für ein Computersystem
die Anerkennung, daß die
Anwenderzeit wichtig und kostspielig ist; langdauernde Operationen
typisch sind; und ständig
mehrere Aufträge
im Gang sind.
-
Von den Erfindern wurde ein Zugang
entwickelt, um eine Software-Anwendung in einer Weise zu entwerten
und darzustellen, die ermöglicht,
daß der
Anwender unabhängig
von den Tasks, die im Gang sind, ständig mit der Anwendung in Wechselwirkung
steht. Dieser Zugang wird hier als anwendersteuerbare gleichzeitige
Funktionalität
oder nutzbare gleichzeitige Funktionalität (UCF) bezeichnet. Die Gleichzeitigkeit
ist eine Eigenschaft eines Software-Entwurfs, die ermöglicht,
daß eine
Anwendung an zwei oder mehr Code-Stellen gleichzeitig ausgeführt wird.
Multitasking-Betriebssysteme ermöglichen
die Gleichzeitigkeit unter einzelnen Prozessen, typischerweise Programmen.
Die neuesten modernen Betriebssysteme (wie etwa Windows NT oder
OS/2) sind eine symmetrische Mehrfachverarbeitung (SMP) und ermöglichen,
daß einzelne
Programme aus Prozeßsträngen bestehen.
Ein Prozeßstrang
ist eine Codeeinheit in einer Anwendung, die unabhängig von
anderen Prozeßsträngen ablaufen
kann. Eine richtig prozeßstrangfähige Anwendung
kann für
einen Anwender an einem Einprozessor-Computer Nutzen erzielen. Noch besser
arbeiten richtig prozeßstrangfähige Anwendungen
aber auf einem SMP-Computer. Obgleich eine SMP-Architektur die bevorzugte
Hardware für die
UCF ist, sind die hier beschriebenen Konzepte nicht auf SMP-Computer-Architekturen
und -Betriebssysteme beschränkt.
Obgleich ein SMP-Betriebssystem mit Prozeßsträngen eine zweckmäßige Umgebung
ist, in der die UCF implementiert werden kann, kann die UCF außerdem unter
irgendeinem Multitasking-Betriebssystem (wie etwa UNIX) dadurch
implementiert werden, daß Prozeßstränge durch
verzweigte Unterprozesse ersetzt werden. Diese Unterprozesse können Daten
und Steuerung über
einen gemeinsam genutzten Speicher mit dem Hauptprozeß kommunizieren.
-
Für
die anwendersteuerbare gleichzeitige Funktionalität ist ein
Zeitintervall, das als die Anwendertoleranz bekannt ist, zentral.
Der Standardwert für
die Anwendertoleranz beträgt
5 Sekunden, obwohl sie vorzugsweise als Präferenz in der GUI der Anwendung
erscheint und leicht durch den Anwender zurückgesetzt werden kann. Jeder
ausgelöste
Befehl, bei dem abgeschätzt
wird, daß er
für den
Abschluß mehr
als die Anwendertoleranz benötigt,
zeigt schnell eine Dialogbox auf dem Monitor des Computersystems
an. Diese Dialogbox zeigt, vorzugsweise durch ein Balkendiagramm,
das den Prozentsatz der Fertigstellung zeigt, den momentanen Status
des Befehls. Außerdem
enthält
die Dialogbox vorzugsweise zwei Schaltflächen: Abbrechen und In den
Hintergrund. 2 zeigt
die Dialogbox, die angezeigt wird, wenn abgeschätzt wird, daß ein Task
die Anwendertoleranz-Zeitgrenze überschreitet.
Es wird angemerkt, daß diese
Dialogbox für
den Anwender die Möglichkeit schafft,
denjenigen Task, der eine Zeit für
den Abschluß erfordert,
die die Anwendertoleranz übersteigt,
in den Hintergrund zu senden.
-
Die Abbrechen-Schaltfläche ermöglicht,
daß der
Anwender den Befehl (mit vollständiger
Reinigung irgendwelcher teilweise erreichter Ergebnisse) für alle Operationen,
für die
es praktikabel ist, ein solches Abbruchmerkmal zu implementieren,
abbricht. (Die Mehrheit der Anwendungsbefehle unterstützt den
Abbruch.) Die In-den-Hintergrund-Schaltfläche nimmt den momentan ausgeführten Befehl
und schiebt ihn in den Hintergrund. Diese Schaltfläche ist
die Standardschaltfläche
in der Dialogbox, d. h., sie ermöglicht,
daß der
Anwender den Befehl durch Drücken
der Eingabetaste in den Hintergrund schiebt. In einer Ausführungsform
ist eine Präferenz
verfügbar,
die ermöglicht,
daß alle
solche Befehle ohne explizite Anwenderaktion auf Basis der Befehle
automatisch in den Hintergrund geschoben werden. Wenn ein Befehl
in den Hintergrund geschoben worden ist, steht es dem Anwender frei,
weiter mit der Anwendung zu arbeiten. Die Daten, die im Hintergrund
bearbeitet werden, sind verriegelt, bis der Befehl abgeschlossen
ist. Wie weiter unten beschrieben wird, können Anwender aber auf verriegelte
Daten zugreifen, wenn es angebracht ist.
-
Die Menüs der Anwendung widerspiegeln
die zulässigen
Operationen, die an einem Datenstück (einem Element) ausgeführt werden
können,
wobei gerade ausgeführte
oder anhängige
Hintergrund-Tasks bereits spezifiziert sind. In vielen Fällen kann
ein Vordergrund-Task in den Hintergrund geschoben werden, selbst wenn
es momentan gerade ausgeführte
oder anhängige
Tasks in einem Element gibt. Somit werden einige Hintergrund-Tasks
in eine Warteschlange eingereiht, so daß sie nach Abschluß anderer
beginnen. Um zusätzliche
Sicherheit zu schaffen, wird in einigen Fällen außer den Daten Code verriegelt.
Dies ermöglicht,
im vorliegenden System extern entwickelte Software zu verwenden,
von der nicht bekannt ist, ob sie prozeßstrangsicher ist. 3 ist eine alternative Dialogbox,
die gezeigt wird, wenn der momentane Task nicht sofort begonnen
werden konnte. Diese Dialogbox wird verwendet, wenn die Daten, die
der vom Anwender gewählte
Task benötigt,
nicht verfügbar
sind, da die Daten verriegelt sind.
-
Um die Typen von Tasks zu definieren,
die an verriegelten Daten zulässig
sind, werden alle auszuführenden
Tasks als einer von fünf
Typen von Tasks gekennzeichnet:
-
- (1) Sofort lesen. Die Daten werden in der Nur-Lesen-Betriebsart
verwendet und der Zugriff auf die Daten ist Teil der GUI des Befehls.
- (2) Verzögertes
Lesen. Die Daten werden zum Nur-Lesen verwendet und auf sie wird
während
der GUI des Befehls nicht zugegriffen.
- (3) Verzögertes
Schreiben. Die GUI spezifiziert eine Änderung an den Daten ohne Bezugnahme
auf die tatsächlichen
Daten. Die Verarbeitung der Daten wird automatisch oder durch den
Anwender, der eine OK-Schaltfläche
aus einer Dialogbox wählt,
begonnen.
- (4) Verzögertes
Schreiben mit GUI-Lesen. Die GUI spezifiziert eine Änderung
an den Daten und nimmt während
der GUI beispielsweise dadurch auf die tatsächlichen Daten Bezug, daß sie eine
visuelle Simulation der Ergebnisse des Befehls liefert. Die Verarbeitung
der Daten wird dadurch begonnen, daß aus einer Dialogbox eine
OK-Schaltfläche
ausgewählt
wird.
- (5) Sofort schreiben. Die Daten werden während der GUI des Befehls,
beispielsweise während
eines Malbefehls, direkt geschrieben.
-
Unten werden Beispiele von Tasks
jeder der obigen Task-Typen beschrieben, die an verriegelten Daten
zulässig
sind. In den obigen Definitionen beziehen sich Daten auf irgendeine
Entität,
die von dem Anwender wahrgenommen wird oder mit der der Anwender
in Wechselwirkung tritt, beispielsweise auf Graphikelemente, Dateien
auf einer Platte usw. Die hier verwendeten Vorschriften, die an
verriegelten Daten zulässige Tasks
vorschreiben, umfassen:
-
- (1) Wenn keine Hintergrund-Tasks definiert sind, kann irgendein
Task begonnen werden.
- (2) Wenn ein Sofort-Lesen- oder ein Verzögert-Lesen-Task anhängig sind, kann
irgendein Task-Typ mit Ausnahme eines Sofort-Schreibens begonnen
werden. Schreib-Tasks werden in eine Warteschlange eingereiht, so
daß sie
erst nach Abschluß des
sofortigen Lesens oder des verzögerten
Lesens beginnen. Lese-Tasks dürfen
gleichzeitig mit dem anhängigen
Sofort-Lesen- oder Verzögert-Lesen-Task
betrieben werden.
- (3) Wenn irgendeine Form eines Schreib-Tasks anhängig ist,
können
ein Verzögert-Lesen-
oder ein Verzögert-Schreiben-Task
begonnen werden (wobei sie in eine Warteschlange eingereiht werden,
so daß sie
erst nach Abschluß des
anhängigen
Schreib-Task begonnen werden). In einigen Fällen wird ein verzögertes Schreiben
mit einem GUI-Lesebefehl zu einem verzögerten Schreibbefehl (wobei
der GUI-Leseaspekt des Task gesperrt ist) "zurückgestuft" (siehe Anmerkung
unten), wobei er ebenfalls begonnen werden kann.
-
Anmerkung: In einigen Fällen ist
der GUI-Leseaspekt eines verzögerten
Schreibens mit einem GUI-Lese-Task ein optionaler zusätzlicher
Nutzen für
den Anwender. In diesen Fällen
kann dieser Task-Typ zu einem normalen verzögerten Schreib-Task zurückgestuft
werden (wobei alle GUI-Leseaspekte des Task für den Anwender gesperrt sind).
Solche Tasks mit gesperrten Merkmalen werden für den Anwender intuitiv mit einem
visuellen Anzeiger in der Anwenderschnittstelle eines Produkts gekennzeichnet.
Somit wird die Anzahl der Tasks, die begonnen werden können, erhöht, wenn
irgendeine Form eines Schreib-Task anhängig ist, was dem Anwender
mehr Gelegenheit gibt, vor der Anwendung vorauszuarbeiten. Es ist
bekannt, daß bestimmte Klassen
von Tasks eine schwere Last für
den Computer sind. Um eine Überlastung
des Systems zu verhindern, werden hier Klassen von Tasks zugewiesen,
die gleichzeitig ausgeführt
werden können.
Diese Klassen von Tasks werden durch Warteschlangen gesteuert, die
von den normalen Tasks, die durch den primären Hintergrundmanager gesteuert
werden, verschiedene Eigenschaften enthalten. Warteschlangen besitzen
eine verschiedene Anzahl von Tasks, die gleichzeitig ausgeführt werden
können,
und eine getrennte Menge von Standardverhalten (Prioritäten, Abschlußalarmoptionen,
usw.). Die Anzahl gleichzeitiger Tasks in der Warteschlange ist
eine zusätzliche
Grenze an die Gesamtzahl gleichzeitiger Tasks. Beispiel: Es können vier
Tasks ausgeführt
werden, wobei aber lediglich zwei dieser Tasks in der Warteschlange 1 sein
können.
Es werden hier außerdem
Warteschlangeneigenschaften vergeben, die durch den Anwender konfiguriert
werden können,
so daß mehr
als ein Task in einer Warte schlange gleichzeitig ausgeführt werden
kann.
-
Nachdem das Schieben von Tasks in
den Hintergrund beschrieben worden ist, wird nachfolgend beschrieben,
wie der Anwender mit Hintergrund-Tasks in Wechselwirkung tritt und
die Anwendung steuert. In der bevorzugten Ausführungsform ist die Steuerung
mit einem Hintergrundmanagerbefehl vorgesehen. Dieser Befehl zeigt
eine Dialogbox an (die als Dauerbefehl implementiert ist, der Palette
genannt wird), die in einer Bildlaufliste sämtliche momentan ausgeführten oder
anhängigen
Tasks und Warteschlangen zeigt. 4 zeigt
die Haupt-Hintergrundmanager-Dialogbox. Diese Dialogbox zeigt den
Status aller Tasks, die derzeit der Steuerung des Hintergrundmanagers
zur Ausführung
unterliegen. Die in diesem Dialog gezeigten Informationen werden
ständig
aktualisiert, während
der Dialog angezeigt wird. Optional kann diese Dialogbox durch den
Anwender abgewiesen werden. Der Zweck dieses Dialogs besteht darin,
dem Anwender den Zustand des Systems zu zeigen. Der Hintergrundmanagerdialog
informiert den Anwender über
alles, was in der Anwendung vorgeht. In der Bildlaufliste von Tasks
und Warteschlangen ist der Status des Task, der Name des Task (der Befehl,
den der Anwender wählt),
eine Beschreibung der Daten, auf die der Task zugreift (Dateiname,
Dokumentname, optional Miniaturbildanzeige der Daten usw.) und der
Prozentsatz der Fertigstellung enthalten. Um eine Systemoptimierung
zu ermöglichen,
ist eine Präferenz
vorgesehen, die ermöglicht,
daß der
Anwender die Anzahl der Tasks einschränkt, die gleichzeitig ausgeführt werden
können.
Die verschiedenen Zustände,
in denen ein Task sein kann, und die in dem Statusfeld der Dialogbox
gezeigt sind, sind:
-
- (1) Verarbeitung – der
Task wird momentan ausgeführt.
- (2) Bereit – der
Task ist bereit, mit der Ausführung
zu beginnen (ist nicht durch irgendeinen Vorbedingungs-Task gesperrt),
hat aber noch nicht begonnen (z. B. gibt es zu viele Tasks, die
bereits ausgeführt
werden).
- (3) Wartend – der
Task ist durch einen anderen Task gesperrt (er ist in eine Warteschlange
eingereiht, so daß er
erst beginnt, nachdem ein Vorbedingungs-Task abgeschlossen worden
ist).
- (4) Wird vorzeitig beendet – der
Task hat eine vorzeitige Beendigung empfangen, hat aber noch nicht
mit der Reinigung begonnen.
- (5) Reinigung – der
Task wird von der Anforderung zum vorzeitigen Beenden gereinigt.
- (6) Abgeschlossen – der
Task ist abgeschlossen und wird beim nächsten Auffrischen aus dem
Hintergrundmanagerdialog entfernt.
-
5 zeigt
das Pulldown-Menü zum
Steuern des Hintergrundmanagers und der spezifischen auszuführenden
Tasks. Durch den Hintergrundmanager sind Steuerungen zur Steuerung
der Arbeitsbelastung der Workstation vorgesehen. Insbesondere sind
die folgenden Optionen verfügbar:
-
- (1) Ein Task ist anzuhalten. Die Ausführung des Tasks wird eingestellt
und darauf gewartet, daß er
fortgesetzt oder vorzeitig beendet wird.
- (2) Ein Task ist fortzusetzen.
- (3) Ein Task ist, falls anwendbar, mit vollständiger Reinigung
abzubrechen. (4) Sämtliche
Tasks sind anzuhalten. Die Ausführung
sämtlicher
Tasks wird eingestellt und darauf gewartet, daß eine Fortsetzungs- oder vorzeitige
Abbruchaktion begonnen wird.
- (5) Die Verarbeitung sämtlicher
unterbrochener Tasks ist fortzusetzen, während zuvor angehaltene Tasks
angehalten bleiben.
- (6) Eine Warteschlange ist zu unterbrechen.
- (7) Eine momentan unterbrochene Warteschlange ist fortzusetzen.
-
Außerdem kann eine ausführliche
Ansicht irgendeines besonderen Task angezeigt werden, was mehr Informationen
und Steuerungen für
den Task ermöglicht. 6 zeigt die Dialogbox der
ausführlichen
Ansicht für
einen besonderen Task. Diese Dialogbox erscheint, wenn einer der
Tasks in der Hintergrundmanager-Taskliste gewählt wird. Es wird angemerkt,
daß der
Task, sein Status, die Daten, von denen er abhängt, der Prozentsatz der Fertigstellung
und andere spezifische Informationen über den Task alle gezeigt sind.
Das wichtigste Stück
an Zusatzinformationen in dem Dialog der ausführlichen Ansicht ist eine Liste
aller Tasks, die (falls überhaupt)
diesen Task sperren. Es kann eine Auswahl getroffen werden, so daß der Anwender
(durch einen Piepton, durch eine in der Statusleiste angezeigte
Nachricht und/oder durch eine Anzeigewarnungs-Dialogbox) benachrichtigt
wird, wenn der Task abgeschlossen ist. Schließlich kann die Priorität des Task
festgesetzt/geändert
werden. Die Anzahl und die Niveaus der Prioritäten können sich von einer Implementierung
der UCF zu einer anderen ändern.
Die momentane Menge von Standardprioritäten in der bevorzugten Ausführungsform
wird als sehr hoch, hoch, mittel, tief und sehr tief bezeichnet.
Außerdem
sind zwei spezielle Prioritäten
verfügbar:
ausschließlich
(d. h., dieser Task ist der einzige Hintergrund-Task, der laufen
darf) und aussetzend (d. h., dieser Task läuft nur dann, wenn keine weiteren
Hintergrund-Tasks ebenfalls laufen).
-
Sämtliche
Hintergrundmanager-Steuerungen ermöglichen, daß der Anwender die Ausführung der Tasks
an dem Computer reguliert. Dringliche Aufträge können mit Anhalten/Fortsetzen/Vorzeitig-beenden-Merkmalen
sowie einer Prioritätseinstellung
versehen werden. Der Hintergrundmanager beschränkt den Anwender unter Verwendung
dieser Steuerungen intuitiv darin, in eine Warteschlange eingereihte
Tasks aus der richtigen Reihenfolge zu bringen. Um das gewünschte Ergebnis
sicherzustellen, müssen
Tasks, die in eine Warteschlange eingereiht sind, um ein Datenstück zu bearbeiten,
in der Reihenfolge abgeschlossen werden, in der sie übergeben
worden sind. Unabhängige
Tasks (die nicht an das gleiche Datenstück gebunden sind) können in
irgendeiner Reihenfolge abgeschlossen werden.
-
Ein weiterer Aspekt des Hintergrundmanagers
ist der eines Aktivitätsprotokolls. 7 zeigt das Hintergrundmanager-Aktivitätsprotokoll.
Das Protokoll zeigt das Datum und die Zeit, zu denen jeder Task
in den Hintergrund gesendet wurde, sowie den Task-Namen und den
Dateinamen. Tasks können
Informationen an ein Aktivitätsprotokoll
in dem Hintergrundmanager absenden. Die häufigsten Informationen, die
abgesendet werden, beziehen sich auf Fehler, die in der Verarbeitung
festgestellt werden. Der Anwender kann eine Liste aller Aktivitätsprotokolleinträge betrachten
und ein ausführliches
Aktivitätsprotokoll
für einen
besonderen Task aktivieren. Auf diese Weise kann ein Anwender irgendwelche
Informationen bestimmen, die ein Hintergrund-Task während der
Verarbeitung transportieren mußte. 8 zeigt das ausführliche
Aktivitätsprotokoll
für einen
Task. Das Protokoll enthält
eine Angabe, die den Abschluß des
Task beschreibt.
-
Von dem Hintergrundmanagerdialog
ist eine Dialogbox vorgesehen, um Optionen für das System einzustellen. 8a zeigt die Hintergrundmanageroptions-Dialogbox.
Dies ermöglicht,
daß der
Anwender die Gesamtzahl der Tasks, die gleichzeitig ausgeführt werden
können,
die Anwendertoleranz (Zeitgrenze) und ob der Anwender das Senden
von Tasks in den Hintergrund billigen muß oder nicht, einstellt. Außerdem ermöglich dieser
Dialog, daß der
Anwender die Standardpriorität
und Abschlußalarme
für Tasks,
die nicht an eine spezifische Warteschlange gesendet werden, spezifiziert.
-
Von jedem Warteschlangendialog ist
ein Dialog vorgesehen, um Optionen für Tasks in dieser Warteschlange
einzustellen. 8b zeigt
die Hauptpalette aller Tasks, die einer Warteschlange zugewiesen
sind. Wie durch die Titelleiste gezeigt ist, ist die Warteschlange
in dem Beispiel angehalten worden. Diese Palette ist die Warteschlangenentsprechung
zu 4. 8c zeigt die Menüoptionen, die aus der Hauptwarteschlangenpalette
aus 8b verfügbar sind.
Dies ist die Warteschlangenentsprechung zu 5. 8d zeigt
die Warteschlangeninformationsoptions-Dialogbox. Der Anwender kann
die Warteschlange anhalten und die Maximalzahl gleichzeitiger Tasks
in dieser Warteschlange einstellen. Außerdem spezifiziert der Anwender
die Standardpriorität
und Abschlußalarme
für dieser
Warteschlange zugewiesene Tasks.
-
Ein Problem, das auftreten kann,
besteht darin, was zu tun ist, wenn ein Anwender die Anwendung zu verlassen
versucht, während
noch Hintergrund-Tasks
ausgeführt
werden. In der bevorzugten Ausführungsform der
Erfindung fällt
die Anwendung zu einem Spezialsymbol auf dem Desktop zusammen, das
zeigt, daß die Verarbeitung
noch im Gang ist. Wenn der letzte Task abgeschlossen ist, ändert das
Symbol sein Aussehen, um den Anwender zu benachrichtigen, daß alle Tasks
abgeschlossen sind. Das Aktivitätsprotokoll
ist weiter verfügbar,
um irgendwelche Statusinformationen über Tasks auszulesen, die seit
dem Zeitpunkt des Austritts abgeschlossen worden sind. Außerdem müssen Situationen
beachtet werden, in denen der Anwender die Workstation abzuschalten
versucht, während
noch Hintergrund-Tasks laufen. In der bevorzugten Ausführungsform
wird eine starke Warnung ausgegeben, daß durch das Fortfahren mit
dem Abschalten Daten beschädigt werden
könnten.
-
Der Hintergrundmanager Übersicht
-
9 zeigt
die Gesamtbeziehung zwischen dem Hintergrundmanager und dem Computersystem.
Im wesentlichen "sitzt" der Hintergrundmanager
zwischen dem Befehlsabschnitt des Systems und dem Verarbeitungssystem.
Der Hintergrundmanager fängt
Befehle auf und bestimmt, welche für die Hintergrundausführung geeignet
sind und welche nicht. Dies wird unten ausführlicher beschrieben. Das Befehlsteilsystem
und das Verarbeitungsteilsystem arbeiten zusammen, um Daten (Elemente)
oder andere Informationen zu verarbeiten. Der Hintergrundmanager
ermöglicht,
daß die
Befehle Aktionen übergeben
und die Verarbeitung fortsetzen, ohne auf den Abschluß der Aktionen
zu warten. Die Befehle übergeben
Aktionen an den Hintergrundmanager. Der Hintergrundmanager arbeitet
mit dem Verarbeitungssystem, um die Aktionen auszuführen. Wenn
die Aktion abgeschlossen ist, benachrichtigt der Hintergrundmanager
das Befehlsteilsystem. Das Verarbeitungsteilsystem weiß nicht,
welches Teilsystem es ansteuert. Das Verarbeitungsteilsystem arbeitet
in der Hintergrundbetriebsart auf die gleiche Weise wie im Vordergrund.
Der Befehl entscheidet, ob eine Vordergrundausführung erzwungen wird, eine
Hintergrundausführung
erzwungen wird oder ermöglicht
wird, daß der
Hintergrundmanager (anhand der Anwendertoleranz-Zeitgrenze) zwischen
Vordergrund- und Hintergrundausführung
entscheidet.
-
Das Hintergrundmanager-Teilsystem
tritt mit dem Anwender, mit dem Befehlsteilsystem und mit dem Verarbeitungsteilsystem
in Wechselwirkung, um mehrere gleichzeitige Aktionen an Elementen
zu koordinieren. Jede Aktion enthält einen oder mehrere Prozeßstränge und
eines oder mehrere Elemente, die die Prozeßstränge bearbeiten. Jedes Element
besitzt eine Verriegelung, die bestimmt, ob andere Aktionen gleichzeitig
auf die Elemente zugreifen können.
Aufträge
sammeln Verarbeitungsinformationen von Aktionen für ein optionales
Auftragsbuchführungssystem.
Eine Dialogbox fügt
Aufträge
hinzu und löscht
sie. Diese Dialogbox ändert
außerdem
die Standardpriorität
von mit einem Auftrag verknüpften
Aktionen.
-
Der Hintergrundmanager begrenzt,
wieviel Aktionen zu irgendeinem Zeitpunkt aktiv sein können. Das Befehlssystem
beginnt Aktionen, hält
alle Aktionen an und setzt sie fort und zeigt die Hintergrundmanager-Dialogboxen
an oder verbirgt sie. Zwei Dialoge steuern die Ausführung von
Aktionen. Der erste Dialog zeigt Zusammenfassungsinformationen über alle
momentan ausgeführten
oder in eine Warteschlange eingereihten Aktionen einschließlich einer
Beschreibung der Aktion, der Priorität, des Prozentsatzes der Fertigstellung
und des Ausführungsstatus
an. Der zweite Dialog zeigt weitere Einzelheiten über eine
spezifische Aktion einschließlich
des Auftrags, der betroffenen Elemente und des Grunds, daß eine Aktion
nicht verarbeitet werden kann, an. Der Zusammenfassungsdialog ermöglicht,
daß der
Anwender (soweit dies nicht anderweitig verboten ist) eine Aktion
anhält,
fortsetzt und abbricht. Der Einzelheitsdialog ermöglicht,
daß der
Anwender die Priorität
einer Aktion ändert.
Diese Dialoge fragen periodisch die Aktionen ab und aktualisieren
sich selbst. Ein Protokolldialog ermöglicht, daß der Anwender abgeschlossene
Aktionen mit Filtern, die Aufträge
und den Fertigstellungsstatus spezifizieren, betrachtet. Jede Fertigstellungsaktion
aktualisiert den Protokolldialog. Der Protokolldialog zeichnet jede
Aktualisierung in einer Datei auf.
-
Hintergrundmanager-Entwurf
-
10 ist
ein Diagramm für
einige der nichttrivialen Klassen von Objekten der Implementierung
des Hintergrundmanagers. Dies ist ein Objektdiagramm, wie es in
Object-Oriented Modeling and Design von James Rumbaugh, Michael
Blaha, William Premerlani, Frederick Eddy und William Lorensen,
1991 Prentice-Hall, Inc., Englewood Cliffs, New Jersey, beschrieben
ist. Die wichtigeren Aspekte der Objekte werden unten diskutiert.
-
Verriegelungselemente Jede Aktion
besitzt eine Liste betroffener Elemente. Die Liste beinhaltet eine Verriegelung
an diesen Elementen. Sämtliche
folgenden Aktionen betrachten jedes Element für diese Aktion als verriegelt.
Das Befehlsteilsystem spezifiziert für jedes Element den Typ der
Verriegelung. Elemente, die für die
Eingabe verwendet werden, können
lediglich eine Leseverriegelung spezifizieren. Elemente, die durch
die Aktion geändert
werden, müssen
für das
Schreiben verriegelt werden. Dieses Schema verriegelt Elemente, wenn
die Aktion erzeugt wird.
-
Wenn der Hintergrundmanager eine
Aktion erzeugt, ist es möglich,
daß die
Aktion die Elemente nicht besitzt. Der Hintergrundmanager aktiviert
die Aktion, wenn keine vorhergehenden Aktionen die geforderten Elemente
besitzen. Dieses Verriegelungsschema stellt sicher, daß keine
spätere
Aktion die Verriegelung übergehen
kann, solange der Hintergrundmanager immer nur eine Aktion erzeugt.
Die Warteschlangenmanagement-Komponente des Hintergrundmanagers
stellt sicher, daß eine
Aktion ihre Elemente besitzt, bevor die Verarbeitung beginnt.
-
Warteschlangeneinreihaktionen 11 ist ein Diagramm, das
den Aktionsablauf zeigt. Der Hintergrundmanager verwendet eine Warteschlange
gesperrter Aktionen und eine Liste aktiver Aktionen, um Prozeßstränge zu koordinieren.
Wenn der Hintergrundmanager Aktionen erzeugt, ordnet er die Aktionen
in der FIFO-Reihenfolge in der gesperrten Warteschlange an und erzeugt
einen angehaltenen Prozeßstrang,
um die Aktion zu verarbeiten. Wenn alle Elemente verfügbar sind,
aktiviert der Hintergrundmanager die Aktion. Um eine Aktion zu aktivieren,
verschiebt der Hintergrundmanager die Aktion aus der gesperrten
Warteschlange in die aktive Warteschlange. Die Reihenfolge der aktiven
Warteschlange ist die Basispriorität, die daraufhin in dieser
Reihenfolge aktiviert wird. Der Hintergrundmanager kann die Priorität sämtlicher
Aktionen vorübergehend überschreiben,
wobei die Überschreibepriorität die Reihenfolge,
in der die Aktionen ausgeführt
werden, nicht beeinflussen sollte.
-
Vorhergehende Anforderungen für die gleichen
Elemente sperren eine Aktion je nach dem Typ des geforderten Zugriffs.
Eine Aktion mit Lesezugriff auf ein Element sperrt folgende Aktionen,
die einen Schreibzugriff erfordern. Eine Aktion mit Schreibzugriff
auf ein Element sperrt irgendwelche folgenden Aktionen. Eine Aktion,
die durch eine Aktion mit niedrigerer Priorität gesperrt ist, erhöht die Sperrungsaktion
auf die Priorität
der gesperrten Aktionen. Der Hintergrundmanager verarbeitet aktive
Aktionen in der Reihenfolge der Priorität. Falls es mehr aktive Aktionen
gibt, als das System zuläßt, ermöglicht der
Hintergrundmanager, daß die
Aktionen an der Spitze der Liste laufen, während er die Zusatzaktionen
anhält.
Eine Aktion mit höherer
Priorität
kann eine laufende Aktion anhalten.
-
Aktionen können nur dann von der gesperrten
Warteschlange in die Aktiv-Liste
wechseln, wenn sie erzeugt werden oder wenn eine Aktion abgeschlossen
wird. Der Hintergrundmanager ordnet neue Aktionen am Ende der gesperrten
Warteschlange an und prüft
die Aktion auf sperrende Elemente. Falls es keine sperrenden Elemente
gibt, gibt der Hintergrundmanager die Aktion frei, wobei er nachfragt,
um sicherzustellen, daß die
Aktionen mit der höchsten
Priorität
ausgeführt
werden. Wenn eine Aktion abgeschlossen wird, gibt der Hintergrundmanager
irgendwelche Aktionen, die nicht mehr gesperrt sind, frei, wobei
er nachfragt, um sicherzustellen, daß die Aktionen mit der höchsten Priorität ausgeführt werden.
-
Die Priorität von Aktionen kann sich jederzeit ändern. Wenn
der Anwender die Priorität
einer Aktion erhöht,
nehmen irgendwelche Aktionen, die diese Aktion sperren, die neue
Priorität
an, wenn sie höher
als ihre alte Priorität
ist. Nach einer Prioritätsänderung
sortiert der Hintergrundmanager die Aktiv-Liste um, woraufhin er
die Aktionen nach der Priorität
anhält
und fortsetzt. Aktionen, die zu einer niedrigeren Priorität verschoben werden,
kommen an die Spitze dieser Priorität, da sie eine bessere Aussicht
haben, daß ihnen
Betriebsmittel zugeordnet werden, als andere Aktionen mit dieser
Priorität,
und eine bessere Aussicht haben, das System so schnell wie möglich zu
verlassen. Aktionen, die zu einer höheren Priorität verschoben
werden, kommen ans Ende dieser Priorität, da sie eine schlechtere
Aussicht haben, daß ihnen
Betriebsmittel zugeordnet werden, als andere Aktionen mit dieser
Priorität,
wobei sie auf Aktionen warten, denen Betriebsmittel zugeordnet sind.
Falls der Hintergrundmanager die Basispriorität aller Aktionen überschreibt
oder wiederherstellt, ist es nicht erforderlich, die Aktiv-Liste
zu sortieren oder das Anhalten und Ausführen erneut zu prüfen.
-
In der tatsächlichen Implementierung werden
die zwei Warteschlangen zu einer einzigen Warteschlange vereinigt.
Die Implementierung wirkt ebenso wie der Zwei-Warteschlangen-Entwurf.
Sämtliche
lauffähigen Aktionen
werden an der Spitze der Warteschlange angeordnet, während gesperrte
Aktionen an das Ende der Warteschlange gehen. Die lauffähigen Aktionen
haben die Reihenfolge der Priorität. Die gesperrten Aktionen sind
in der FIFO-Reihenfolge. Eine Aktion wird aktiviert, sobald keine
vorhergehenden Aktionen eine Verriegelung besitzen, die verhindert,
daß die
Aktion auf Elemente zugreift. Die aktivierte Aktion wird in den
lauffähigen Aktionen
an ihre Stelle nach oben verschoben.
-
Prioritäten. Windows NT verwendet 31
Prioritäten
zur Planung von Tasks.
-
Diese Prioritäten sind 1 bis 31, wobei 1
die niedrigste Priorität
ist. Die Basispriorität
einer normalen Anwendung ist 9. Der Befehlsprozeßstrang ist auf der Priorität
9.
Die Priorität
von Hintergrund-Aufträgen
sollte nie höher
als die der Anwendung sein, da die Anwenderschnittstelle andernfalls
träge werden
kann. Das vorliegende System verwendet 5 Prioritäten zum Ordnen von Aktionen
und zum Einstellen der zugrundeliegenden Priorität von Windows NT. Die folgende
Tabelle bildet die hier zugeordneten Prioritäten und die Prioritäten von Windows
NT ab:
Hintergrundmanager | Windows
NT |
1 | 1 |
2 | 8 |
3 | 8 |
4 | 8 |
5 | 9 |
-
Die Priorität 1 ist für Aktionen
mit der niedrigsten Priorität.
Aktionen mit der Priorität 1 laufen
nur dann, wenn keine anderen Tasks den Prozessor nutzen können.
-
Die Priorität 5 ist für Aktionen
mit hoher Priorität.
Aktionen mit der Priorität 5 laufen
mit der gleichen NT-Priorität
wie das vorliegende interaktive System. Die Prioritäten 2 bis 4 sind
für normale
Aktionen. Die drei Prioritäten
geben dem Anwender eine Steuerung über die Reihenfolge der Aktionen,
ohne die NT-Priorität
zu beeinflussen. Die Standardpriorität für Aktionen ist 3. Natürlich können geeignete
Prioritäten
verwendet werden, falls ein anderes Betriebssystem verwendet wird.
-
Hintergrund/Vordergrund-Verarbeitung.
Wenn das Befehlssystem eine Aktion an den Hintergrundmanager übergibt,
beginnt der Hintergrundmanager die Aktion, wobei er darauf wartet,
daß die
Aktion abgeschlossen wird. Falls die Aktion nach einer kurzen Unterbrechungsperiode
weiterverarbeitet wird, schätzt
der Hintergrundmanager die zum Ausführen der Aktion geforderte
Gesamtzeit ab. Falls die Aktion mehr als einen anwenderdefinierten
Zeitbetrag für
den Abschluß benötigt, erzeugt
der Hintergrundmanager eine Dialogbox, die ermöglicht, daß der Anwender die Aktion in
den Hintergrund schiebt oder die Aktion abbricht. Falls der Prozeß in den
Hintergrund geschoben wird, fügt
der Hintergrundmanager die Aktion zu dem Zusammenfassungsdialog
hinzu und kehrt zurück.
Wenn der Prozeß abgebrochen
wird, sendet der Hintergrundmanager einen Abbruch an die Aktion
ab und kehrt zurück.
Wenn die Aktion abgeschlossen wird, löscht der Hintergrundmanager den
Dialog und kehrt zurück.
Eine Systemvariable ermöglicht,
daß der
Anwender Aktionen in den Hintergrund schiebt, ohne die Dialogbox
zu verwenden. Wenn die Aktion gesperrt ist, erzeugt der Hintergrundmanager
sofort einen Dialog, der ermöglicht,
daß der
Anwender die Aktion in den Hintergrund schiebt oder abbricht.
-
Aktionsstart. Die Aktionsstartfolge
zum Aufrufen des Hintergrundmanagers als Reaktion auf einen Aktionserzeugungsbefehl
ist unten in Pseudocode gezeigt. Die Schritte beginnen mit einer
Bestimmung dessen, ob der Anwender das System in eine Betriebsart
eingestellt hat, in der alle Tasks automatisch in den Hintergrund
geschoben werden, oder ob der Anwender wählt, daß ihm eine Dialogbox angezeigt
wird. Nachfolgend bestimmt das System, ob die Aktion gesperrt ist,
und gibt dem Anwender eine Möglichkeit,
diesen Task zu den Hintergrund-Tasks hinzuzufügen, wobei der gesperrte Task
ausgeführt
wird, sobald diejenigen Tasks, die den gewünschten Task sperren, abgeschlossen
sind. Wie durch den Pseudocode gezeigt ist, wird schließlich eine Entscheidung über die
Zeit zum Abschluß der
Ausführung
getroffen. Wenn die Zeit zu lang ist, daß heißt den Anwenderverzögerungsschwellenwert,
beispielsweise 5 Sekunden, übersteigt,
erhält
der Anwender die Möglichkeit,
den Task in den Hintergrund zu schieben.
-
-
-
Kommunikation zwischen Teilsystemen.
Der Hintergrundmanager, das Befehlsteilsystem und das Verarbeitungsteilsystem
müssen
kommunizieren, um ihre Aktionen zu koordinieren. Das Befehlsteilsystem
ruft Funktionen auf, um auf den Hintergrundmanager zuzugreifen.
In der bevorzugten Ausführungsform
verwendet der Hintergrundmanager das Nachrichtensystem von Windows
NT, um auf das Befehlsteilsystem zu antworten. Der Hintergrundmanager
sendet zwei Nachrichten an das Befehlssystem. Die erste Nachricht
ist, daß eine Aktion
abgeschlossen ist. Die zweite Nachricht ist, daß eine Aktion vereinbarungsgemäß den Eingriff
des Betreibers erfordert.
-
Der Hintergrundmanager ruft eine
Verarbeitungsfunktion auf, die durch das Befehlssystem eingereicht wird.
Das Verarbeitungsteilsystem ruft Hintergrund managerfunktionen auf,
um neue Prozeßstränge zu erzeugen,
Prozeßstränge zu schließen, den
Abschlußstatus
zu aktualisieren und den Hintergrundmanager über Probleme zu benachrichtigen,
die den Eingriff des Betreibers erfordern.
-
Dialogboxen. Der Hintergrundmanager
enthält
vier Dialogboxen: Einzelheit, Auftrag, Protokoll und Zusammenfassung. 12 ist ein Zustandsdiagramm
für den
Einzelheitsdialog, während 13 ein Zustandsdiagramm
für den
Protokolldialog ist. 14 ist
ein Zustandsdiagramm für
den Zusammenfassungsdialog. Die Zusammenfassungs- und die Protokolldialogboxen
sind moduslos. Der Hintergrundmanager enthält die Protokoll- und die Zusammenfassungsdialogboxen
in seinen Instanzdaten. Beim Schließen verbirgt der Hintergrundmanager
die Dialogboxen, anstatt sie zu löschen.
-
Die Einzelheits- und die Auftrags-Dialogbox
sind modal. Der Hintergrundmanager erzeugt diese Dialogboxen, wenn
sie benötigt
werden, und löscht
die Dialogboxen, wenn sie geschlossen werden. Die Zusammenfassungsdialogbox
erzeugt die Einzelheitsdialogbox, wenn der Anwender auf eine Aktion
doppelklickt. Der Hintergrundmanager erzeugt die Einzelheitsdialogbox,
wenn das Befehlsteilsystem die momentanen Informationen über die
Aktion an einem Element anfordert. Der Hintergrundmanager erzeugt
den Auftrags-Dialog, wenn ihn das Befehlsteilsystem anfordert.
-
Fehlerkorrektur. Der Hintergrundmanager
muß Fehler
in den Verarbeitungsalgorithmen korrigieren können. Jede Aktion erzeugt eine
Wrapper-Funktion zum Starten des Hauptverarbeitungs-Prozeßstrangs.
In der bevorzugten Ausführungsform
verwendet diese Funktion das Tn-Finally-Konstrukt von Windows NT
zum Abfangen von Fehlern.
-
Wrapper-Funktion. Um jeden Hauptprozeßstrang
wird eine Wrapper-Funktion verwendet. Die Wrapper-Funktion behandelt
die Fehlerkorrektur dadurch, daß sie
den Hauptprozeßstrang
in einem Tn-Finally-Konstrukt ausführt. Der Wrapper behandelt
die Aktionsreinigung von einem normalen Austritt, von einem Verarbeitungsfehler
oder von einem Abbruch. Außerdem
behandelt der Wrapper das Läuten
des Alarms, das Absenden an den Protokolldialog und das Absenden
an das Befehlsteilsystem, wenn eine Aktion abgeschlossen wird.
-
Sicherstellen der Prozeßstrangsicherheit.
Ein Prozeßstrang
muß den
Mutex des Hintergrundmanagers erfassen, um auf eine Aktion oder
auf die Überschreibepriorität zuzugreifen.
Der Hintergrundmanager erzeugt den Mutex bei der Initialisierung
und zerstört
ihn in seinem Destruktor. Jeder Prozeßstrang öffnet eine Verbindung zu dem
Mutex. Der Prozeßstrang
wartet, bis er den Mutex erfaßt,
greift auf die Daten zu und gibt den Mutex frei. 15 ist ein Zustandsdiagramm für Prozeßstränge.
-
Jeder Zugriff auf ein Objekt in dem
Hintergrundmanager-Teilsystem verläuft. über das Hintergrundmanagerobjekt.
Der Hintergrundmanager erfaßt
den Mutex und ruft daraufhin eine Methode bei der Aktion auf. Die
Routine muß den
Mutex freigeben, bevor sie zurückkehrt.
Der Hintergrundmanager stellt für
jede Operation in einer Aktion oder in einem Dialog eine API bereit.
Eine Ausnahme hiervon ist, daß das
Bildverarbeitungs-Teilsystem die Aktionsmethode direkt aufruft,
um den Anzeiger für
den Prozentsatz der Fertigstellung zu aktualisieren.
-
Prozeßstrang-Abschlußalarm.
An jede Aktion kann ein Alarm angefügt sein. Der Alarm ertönt, wenn die
Aktion abgeschlossen wird. Der Alarm kann ein Piepton, eine Nachricht
in der Statusleiste oder eine Dialogbox sein. Jede erzeugte Aktion
nimmt die Standardeinstellung des Hintergrundmanagers oder der Warteschlange.
Der Anwender überschreibt
unter Verwendung des Einzelheitsdialogs den Alarm für jede Aktion.
Der Anwender ändert
die Standardeinstellung unter Verwendung der Hintergrundmanageroptionen
oder der Warteschlangenoptionsdialoge.
-
16 ist
ein Ablaufplan., der die gesamte Befehlsverarbeitungsoperation und
die Funktionsoperation, die einen Befehl in dem Hintergrundmanager
anordnet, zeigt. Wie in 16 gezeigt
ist, wird die Anwenderschnittstelle bei Bedarf aktualisiert. Befehle
von der Anwenderschnittstelle werden überprüft, um zu bestimmen, ob sie
interaktiv sind oder nicht. Wie durch den Do-Befehlsschritt gezeigt
ist, werden jene Befehle, die nicht interaktiv sind, sofort ausgeführt. Jene
Befehle, die nicht interaktiv sind, beispielsweise das Neuformatieren
in der Graphiksprache, sind eine Quelle einer erzeugten Aktion.
Nachdem die Aktion erzeugt und an den Hintergrundmanager geliefert
worden ist, wird die Anwenderschnittstelle aktualisiert und eine
Bestimmung ausgeführt,
ob die Schritte wiederholt werden müssen oder nicht. Wenn die Schritte
nicht wiederholt werden, wird die Folge abgeschlossen. Wenn die
Schritte zu wiederholen sind, wird die Steuerung bei Bedarf an die Anwenderschnittstelle
zurückgegeben.
-
17 ist
ein Diagramm, das die Zeitmesseraspekte des Hintergrundmanagers
zeigt. Die Befehle werden zuerst an einen Zeitmesser gegeben. Wie
oben beschrieben wurde, wird dem Anwender eine Dialogbox angezeigt,
wenn die Operation nicht innerhalb der Anwendertoleranz abgeschlossen
werden kann.
-
Somit wird für jede Aktion der Status dieser
Aktion gelesen und der Prozentsatz der Fertigstellung bestimmt.
Außerdem
werden jene Aktionen bestimmt, die gesperrt sind. Die Dialogbox
wird unter Verwendung dieser Informationen aktualisiert und die
Steuerung dorthin zurückgegeben,
wo sie vor jedem Aktionsschritt war.
-
18 ist
ein Diagramm, das ausführlicher
die Operationen zeigt, die auftreten, wenn ein Anwenderbefehl in
den Hintergrund gesendet wird. Wie in 18 gezeigt
ist, führt
ein Anwenderbefehl eine große
Menge an Informationen mit sich. Beispielsweise enthält der Anwenderbefehl
Anwenderschnittstelleninformationen für die graphische Anwenderschnittstelle,
die zum Steuern des Computersystems verwendet werden. Diese Informationen
enthalten den Task-Namen und das Task-Objekt. Es werden zusätzliche
Informationen einschließlich
des Prozentsatzes des Task, der abgeschlossen worden ist, ob er
gesperrt ist oder nicht, ob er auf die Ausführung wartet oder nicht und
ob der Task angehalten worden ist, bestimmt.
-
Außerdem werden Warteschlangeninformationen
geliefert, die die Standardpriorität und Alarminformationen bestimmen.
Diese Warteschlangeninformationen werden durch das Anwendungsprogramm
bestimmt und geben die Last an, die ein Task an das System stellt.
Schließlich
werden auch die Adresse eines durch den Befehl auszuführenden
Codes und die Informationen, die der Code benötigt, in Form einer Adresse für die Daten
geliefert. Der Befehl führt
zur Erzeugung einer Datenstruktur und zur Erzeugung von Prozeßsträngen zum
Ausführen
der Aktion. Wie in 18 gezeigt
ist, wird eine Anfangsbestimmung darüber ausgeführt, ob die Aktion immer in
den Hintergrund gesendet werden soll. Wenn eine Aktion keine Bestätigung erfordert,
bevor sie in den Hintergrund gesendet wird, wird die Aktion in den
Hintergrund geschoben, die Anwenderschnittstelle aktualisiert und
die Steuerung an das System zurückgegeben.
Wenn die Aktion eine Bestätigung
erfordert, wird eine Bestimmung ausgeführt, um zu sehen, ob die Aktion
gesperrt ist. Wenn die Aktion gesperrt ist, wird eine Dialogbox
angezeigt, die dem Anwender Gelegenheit gibt, den Task entweder
abzubrechen oder ihn in den Hintergrund zu schieben. Im Fall eines
Abbruchs wird eine Rückgängig-Operation ausgeführt und
die GUI aktualisiert. Wenn die Aktion entsperrt ist, ändert sich
die Dialogbox von dem in 3 gezeigten
Zustand in den in 2 gezeigten
Zustand. Falls die Aktion abgeschlossen wird, bevor sie in den Hintergrund
geschoben wird, wird der Dialog gelöscht, wobei die Steuerung zum
System zurückkehrt.
Natürlich wird
der Task in den Hintergrund geschoben, wenn der Anwender wählt, den
Task in den Hintergrund zu schieben. Wenn er im Hintergrund ist,
wird die Anwenderschnittstelle aktualisiert und die Steuerung an
das System zurückgegeben.
-
Wenn die Aktion nicht gesperrt ist,
schätzt
der Hintergrundmanager genau die für den Abschluß der Aktion
erforderliche Zeit ab. Wenn die Aktion innerhalb des anwenderdefinierten
Toleranzzeitintervalls abgeschlossen wird, läuft die Aktion bis zum Abschluß, wobei
die Steuerung zum System zurückkehrt.
Falls abgeschätzt
wird, daß die
Aktion länger
als die anwenderdefinierte Toleranzzeitgrenze dauert, wird dem Anwender der
in 2 gezeigte Dialog
angezeigt, um die Aktion abzubrechen oder sie in den Hintergrund
zu senden. Im Fall eines Abbruchs wird eine Rückgängig-Operation ausgeführt und
die GUI aktualisiert. Falls der Anwender wählt, die Aktion in den Hintergrund
zu schieben, wird der Task in den Hintergrund gesendet, die Anwenderschnittstelle
aktualisiert und die Steuerung an das System zurückgegeben. Diese Möglichkeit
ist in 18 durch die
Wartemarke ausgedrückt.
-
19 ist
ein Diagramm, das die Hintergrundverarbeitung zeigt. Wie in 19 gezeigt ist, wird ein Task,
wenn er nicht gesperrt ist, nach der Priorität sortiert. Daraufhin werden
die lauffähigen
Tasks mit der höchsten
Priorität
ausgeführt.
Der Anwender hat die Prioritäten
in der Hintergrundoptions- und in den Warteschlangenoptions-Dialogbox
definiert. Die Ausführung
unterliegt ständig
der Steuerung einer Warteschlangensteuerung und einer Zeitsteuerung.
Die Zeitsteuerung ist in Verbindung mit 20 beschrieben. Die Warteschlangensteuerung
ermöglicht,
daß der
Anwender Tasks in der Reihenfolge in die Warteschlange einreiht
und Prioritäten
zuweist. Während
der Hintergrundmanager den Task ausführt, wird die Anwenderschnittstelle
aktualisiert und beim Task-Abschluß die Steuerung an das System
zurückgegeben.
-
20 zeigt
die Operationen, die ausgeführt
werden, wenn eine Aktion abgeschlossen ist. Für jene Aktionen, die nicht
ausgeführt
werden können,
da ein Gesperrt-Merker gesetzt ist, wird beim Abschluß jeder Aktion
eine Prüfung
daraufhin ausgeführt,
ob der Gesperrt-Merker immer noch gesetzt ist. Schließlich wird
der Gesperrt-Merker gelöscht
und diese Aktion sortiert und anhand ihrer Priorität der Ausführung zugewiesen.
Es wird ein Umsortieren der Aktionen, die auf die Ausführung warten,
nach der Priorität
ausgeführt.
Daraufhin beginnt gemäß der Steuerung
des Hintergrundmanagers oder gemäß der Warteschlangensteuerung die
Ausführung
der Tasks mit der höchsten
Priorität.
-
Die 21-29 sind Diagramme, die ein
Beispiel der Funktion des Hintergrundmanagers zeigen. Diese Funktionen
erläutern
den Entwurf, indem sie zeigen, wie der Hintergrundmanager eine Reihe
von Aktionen koordiniert. Die Folge der Aktionen ist Drucken, Erzeugen
einer HLS-Maske (ein spezifischer Befehl für ein Graphiksystem), Datei
umwandeln, Gradation, Füllen, Ändern der
Prioritäten
und Klonen. Die Pixelbeurteilung wird ausgeführt. Diese Aktionen sind im
gleichen Raster mit der gleichen Anfangspriorität.
-
21 zeigt
den Druckbefehl in diesem Beispiel. Der Druck ist ein verzögerter Lesebefehl.
Die Aktion beginnt, nachdem der Anwender den Drucker auswählt. Der
Hintergrundmanager legt eine Leseverriegelung an das Raster. Die
Verarbeitung dieser Aktion beginnt sofort.
-
22 ist
ein Diagramm, das die Wirkung des HLS-Maskenerzeugungsbefehls zeigt.
Die HLS-Maskenerzeugung ist ein verzögertes Schreiben in die Editiermaske,
das den Lesezugriff auf das Raster erfordert. Die Aktion beginnt,
nachdem der Anwender den HLS-Parameter auswählt und auf Okay drückt. Die
Aktion legt eine Leseverriegelung an das Raster und eine Schreibverriegelung
an die Editiermaske. Während
der Dauer dieses Befehls wird die Pixelbeurteilung für die Editiermaske
ausgeschaltet. Die Verarbeitung dieser Aktion beginnt sofort.
-
23 ist
ein Diagramm, das die Wirkung des Dateiumwandlungsbefehls zeigt.
Die Dateiumwandlung ist ein verzögertes
Lesen. Die Aktion beginnt, nachdem der Anwender die Zieldatei auswählt. Die
Aktion legt eine Leseverriegelung an das Raster und eine Schreibverriegelung
an die neue Datei. Die Verarbeitung dieser Aktion beginnt sofort.
-
24 ist
ein Diagramm, das die Wirkung des Gradationsbefehls zeigt. Die Gradation
ist ein verzögertes
Schreiben mit visueller Simulation. Der Befehl erfordert einen Lesezugriff
auf das Raster. Der Befehl simuliert das Ergebnis. Die Aktion beginnt,
nachdem der Anwender die Gradationsparameter einstellt und auf OK
drückt.
Die Aktion ist gesperrt, bis das Drucken, das Erzeugen der HLS-Maske
und die Dateiumwandlung abgeschlossen sind. Während der Dauer dieses Befehls
ist die Pixelbeurteilung für
das Raster ausgeschaltet.
-
25 ist
ein Diagramm, das die Wirkung des Füllbefehls zeigt. Das Füllen ist
ein verzögertes
Schreiben. Die Aktion beginnt, nachdem der Anwender die Durchlässigkeit
einstellt und fortzufahren wählt.
Die Aktion ist gesperrt, bis alle vorausgehenden Aktionen für dieses
Raster abgeschlossen sind. Während
der Dauer dieses Befehls ist die Pixelbeurteilung für das Raster
ausgeschaltet.
-
26 ist
ein Diagramm, das die Wirkung des Prioritätsänderungsbefehls erläutert. Der
Anwender erhöht
die Priorität
des Gradationsbefehls auf 4. Bevor der Gradationsbefehl starten
kann, hängt
er davon ab, daß die
vorausgehenden Aktionen abgeschlossen sind; somit nehmen die vorausgehenden
Aktionen die Priorität 4 an.
Der Gradationsbefehl ist weiter gesperrt.
-
Wie in 27 gezeigt
ist, stellt der Anwender daraufhin die Druckpriorität auf 2
ein. Niedrigere Prioritäten
werden nicht an gesperrte Aktionen nach unten übergeben. Die Druckaktion wird
ans Ende der Liste der ausgeführten
Aktionen verschoben.
-
28 zeigt
die Wirkung dessen, daß der
Anwender daraufhin die Gradationspriorität auf 2 einstellt. Die gesperrte
Warteschlange ist in FIFO; somit sperrt die Gradationsaktion weiter
den Füllbefehl.
-
29 ist
ein Diagramm, das den Aktionsabschluß erläutert. Wenn die Aktionen des
Erzeugens der HLS-Maske, der Dateiumwandlung und des Drucks abgeschlossen
sind, wird mit der Ausführung
des Gradationsbefehls begonnen. Die Füllaktion bleibt gesperrt, bis
die Gradation abgeschlossen ist.
-
Im folgenden wird ein Beispiel einer
Warteschlange beschrieben. Es wird angenommen, daß der Hintergrundmanager
so konfiguriert ist, daß er
ermöglicht,
daß maximal
vier Tasks gleichzeitig ausgeführt
werden. Es wird angenommen, daß die
Warteschlange 1 für
Tasks vorgesehen ist, die an das Eingabe/Ausgabe-System eine sehr schwere Last anlegen.
Diese Warteschlange ist so konfiguriert, daß sie ermöglicht, daß innerhalb der Warteschlange
lediglich ein Task gleichzeitig bearbeitet wird. Außerdem wird
angenommen, daß die Warteschlange 2 für Tasks
vorgesehen ist, die eine sehr schwere Last an den Systemspeicher
anlegen. Diese Warteschlange ist so konfiguriert, daß sie ermöglicht,
daß bis
zu zwei Tasks gleichzeitig verarbeitet werden.
-
Es wird nun angenommen, daß die folgende
Menge von sechs Tasks übergeben
wird, bevor irgendein Task abgeschlossen wird. Keiner der Beispiel-Tasks führt zu Datenkonflikten.
Der erste Task ist ein typischer Hintergrund-Task, so daß er nicht
an eine spezifische Warteschlange übergeben werden kann. Der zweite
Task legt an das E/A-System eine große Last an, so daß er an
die Warteschlange 1 übergeben
wird. Der dritte Task erfordert sehr viel Speicher. Dieser Task
wird in der Warteschlange 2 angeordnet. Die Ausführung der ersten drei Tasks
beginnt, sobald sie übermittelt
worden sind. Der vierte Task legt an das E/A-System wieder eine
große
Last an und wird in der Warteschlange 1 angeordnet. Mit der Ausführung dieses
Task kann erst begonnen werden, wenn er der Task mit der höchsten Priorität in der
Warteschlange 1 ist Der fünfte
Task ist ein weiterer typischer Task. Mit der Ausführung dieses
Task wird sofort begonnen. Der sechste Task geht in die Warteschlange 2.
Dieser Task kann nicht ausgeführt
werden, da der Gesamtgrenzwert für
gleichzeitige Tasks erreicht worden ist. Die Figur unten zeigt den
Zustand des Systems.
-
-
Die Reihenfolge der Tasks in dem
System und in einer Warteschlange kann geändert werden. Beispielsweise
kann der Task 4 aus dem vorausgehenden Beispiel eine hohe
Priorität
erhalten. Dieser Task wird an die Spitze der Liste der Tasks verschoben
und der Task 2 angehalten. Die untenstehende Figur zeigt
den Zustand des Systems nach Ändern
der Priorität
des Task 4.
-
-
Wie oben beschrieben worden ist,
schafft die nutzbare gleichzeitige Funktionalität des vorliegenden Systems
eine Software-Architektur, die ermöglicht, daß die Kapazität einer
Anwendung proportional zu zusätzlichen
oder leistungsfähigeren
CPUs skaliert. Dieser Aspekt ermöglicht,
daß Software
während
der Entwicklung der Computerarchitekturen auf vorhersehbare Zukunft
sinnvoll bleibt. Außerdem
ermöglicht
er, daß eine Anwendung
produktiver ausgeführt
wird als Anwendungen, die den Entwurf der nutzbaren gleichzeitigen
Funktionalität
nicht nutzen. Mit der nutzbaren gleichzeitigen Funktionalität verwendet
die Software-Anwendung die Gleichzeitigkeit in einer Weise, die "klug" genug ist, um zu
ermöglichen,
daß der
Anwender auf sinnvolle und nutzbare Weise dem Computer vorausarbeitet.
-
DEFINITIONEN
-
Wenn im Kontext der Verwendung nichts
anderes nahegelegt wird, besitzen die folgenden Begriffe, wie sie
hier verwendet werden, die untenbeschriebenen Bedeutungen.
-
Aktion – ein Prozeßstrang oder eine Zusammenstellung
verwandter Prozeßstränge zum
Verarbeiten eines Elements oder einer Menge von Elementen. Die Anwenderschnittstelle
für die
gesamte Verarbeitung liegt hinsichtlich von Aktionen vor. Der Abschluß von Aktionen
benachrichtigt den Protokolldialog. Aktionen verfolgen ihren Prozentsatz
der Fertigstellung, die Priorität,
den Status und die Verarbeitungszeit. Jede Aktion ist ein Mitglied
eines Auftrags und enthält
eine Beschreibung darüber,
was sie tut. Bei der Erzeugung verriegelt die Aktion betroffene
Elemente und erzeugt sie einen Hauptprozeßstrang zum Verarbeiten dieser
Elemente. Wenn der Hauptprozeßstrang
abgeschlossen wird, löscht
er die Aktion.
-
Hintergrundmanager – diejenige
Komponente, die alle Aktionen für
das System koordiniert. Der Hintergrundmanager erzeugt Aktionen
und führt
anhand der betroffenen Elemente und des Aktionstyps das Management
von Aktionswarteschlangen aus. Vorzugsweise enthält der Hintergrundmanager einen
Einzelheitsdialog, einen Zusammenfassungsdialog und einen Protokolldialog.
-
Befehlssystem – sammelt die Eingabe von dem
Anwender über
eine Aktion, beginnt die Aktion, hält alle Aktionen an und setzt
sie fort und zeigt Hintergrundmanagerdialoge an oder verbirgt sie.
-
Einzelheitsdialog – die Anwenderschnittstelle
zu einer einzelnen Aktion. Dieser Dialog liefert sämtliche Informationen,
die dem Hintergrundmanager über
einen Prozeß bekannt
sind. Die über
diesen Dialog angezeigten Informationen umfassen: Aktionsbeschreibung,
Elemente, Prozentsatz der Fertigstellung, Priorität, Auftrag,
Status und Verarbeitungszeit. Der Einzelheitsdialog erläutert irgendeinen
Block in einer Aktion. Der Anwender ändert die Priorität der ausgewählten Aktion.
-
Element – ein Raster- oder Vektorobjekt,
das für
eine Aktion erforderlich ist. Jedes Hintergrundmanagerelement ist
mit einem geeigneten Objekt verbunden und spezifiziert den Typ der
Verriegelung an diesem Element.
-
Auftrag – eine Reihe von Aktionen zum
Ausführen
eines Task. Der Auftrag sammelt Auftragsverfolgungsinformationen
für Abrechnungszwecke.
Jeder Auftrag besitzt eine Beschreibung des Task.
-
Auftragsdialog – die Anwenderschnittstelle
zum Erzeugen oder Löschen
von Aufträgen.
Das System erzeugt den Auftragsdialog nur dann, wenn er benötigt ist.
Der Auftragsdialog kann keine Aufträge löschen, auf die durch irgendwelche
in eine Warteschlange eingereihten oder aktiven Aktionen Bezug genommen
wird.
-
Protokolldialog – die Anwenderschnittstelle
zu abgeschlossenen Aktionen. Diese Dialogbox unterhält Listeninformationen über abgeschlossene
Aktionen, einschließlich:
Aktionsbeschreibung, Elemente, Auftrag, Abschlußstatus (normal, abgebrochen,
Fehler) und die benötigte
Verarbeitungszeit. Ein Filter ermöglicht, daß der Anwender alle Aktionen
betrachtet oder nur jene, die anormal beendet wurden. Ein weiteres
Filter ermöglicht,
daß der
Anwender alle Aufträge
oder lediglich einen ausgewählten
Auftrag betrachtet.
-
Zusammenfassungsdialog – die Anwenderschnittstelle
zu allen aktiven Aktionen. Diese Dialogbox zeigt Informationen über alle
aktiven Aktionen an wie etwa: Aktionsbeschreibung, Prozentsatz der
Fertigstellung, Priorität
und Ausführungsstatus.
Dieser Dialog bricht Aktionen ab, hält sie an oder setzt sie fort.
-
Prozeßstrang – eine Folge von Anweisungen,
die ein Bild verarbeiten. Prozeßstränge kommunizieren mit
Aktionen, um während
der Verarbeitung eines Elements zusätzliche Prozeßstränge zu erzeugen
und abzuschließen.
-
Anwender – der Steuerer aller Tasks
in dem System. Der Anwender sendet Befehle an das Befehlssystem,
um Aktionen zu starten und Dialoge anzuzeigen. Der Anwender steuert über die
Hintergrundmanagerdialoge die Ausführung von Aktionen.
-
Warteschlange – eine Teilmenge von Aktionen
in dem Hintergrundmanager. Warteschlangen schaffen eine Möglichkeit,
die Anzahl gleichzeitiger Aktionen eines gegebenen Typs zu begrenzen.
Falls erwartet wird, daß ein
Aktionstyp eine große
Menge vom Systembetriebsmitteln einnimmt, kann dieser Typ einer
Warteschlange zugewiesen werden, die die Anzahl gleichzeitiger Aktionen
in der Warteschlange auf eins (oder auf eine andere durch den Anwender
gewählte
niedrige Zahl) begrenzt. Aktionen in der Warteschlange werden nur dann
ausgeführt,
wenn sie die Aktionen mit der höchsten
Priorität
sind und die Anzahl gleichzeitiger Aktionen in der Warteschlange
nicht erreicht worden ist.