DE69529365T2 - Brauchersteuerbare Gleichzeitigkeitsfunktionalität - Google Patents

Brauchersteuerbare Gleichzeitigkeitsfunktionalität Download PDF

Info

Publication number
DE69529365T2
DE69529365T2 DE69529365T DE69529365T DE69529365T2 DE 69529365 T2 DE69529365 T2 DE 69529365T2 DE 69529365 T DE69529365 T DE 69529365T DE 69529365 T DE69529365 T DE 69529365T DE 69529365 T2 DE69529365 T2 DE 69529365T2
Authority
DE
Germany
Prior art keywords
task
user
tasks
background
action
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Lifetime
Application number
DE69529365T
Other languages
English (en)
Other versions
DE69529365D1 (de
Inventor
Jr. Ralph Edward Jennings
Jr. Benjamin Paschal Haley
R.D. Holland
Deborah King Cecil
Anthony Elario Tassone
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Intergraph Corp
Original Assignee
Intergraph Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Intergraph Corp filed Critical Intergraph Corp
Application granted granted Critical
Publication of DE69529365D1 publication Critical patent/DE69529365D1/de
Publication of DE69529365T2 publication Critical patent/DE69529365T2/de
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • User Interface Of Digital Computer (AREA)

Description

  • 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.
  • Figure 00180001
  • Figure 00190001
  • 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.
  • Figure 00260001
  • 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.
  • Figure 00260002
  • 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.

Claims (8)

  1. Verfahren, das einem Anwender eines Computersystems ermöglicht, die Ausführung von Tasks durch ein Anwendungsprogramm im System zu steuern, umfassend: Erzeugen eines Anwender-Toleranzniveaus, das aus einer Zeitperiode für die Ausführung eines Task besteht, für das Anwendungsprogramm; Berechnen eines Schätzwertes für die Zeit, die ein Task erfordert, um abgeschlossen zu werden, wann immer der Anwender das System auffordert, den Task auszuführen; falls der Schätzwert niedriger als das Anwender-Toleranzniveau ist, Ausführen des Task; falls der Schätzwert höher als das Anwender-Toleranzniveau ist, Zulassen, daß der Anwender den Task einer Hintergrundverarbeitungsoperation zuweist; und Zurückgeben der Steuerung des Systems an den Anwender, um eine weitere Task auszuwählen.
  2. Verfahren nach Anspruch 1, bei dem der Schritt des Zuweisens der Task zu einer Hintergrundverarbeitungsoperation das Abgeben des Task an die Steuerung eines Hintergrundverarbeitungsmanagers, der ihn gemäß einer Priorität ausführt, umfaßt.
  3. Verfahren nach Anspruch 1 oder 2, bei dem der Schritt des "Zulassens, daß der Anwender den Task einer Hintergrundverarbeitungsoperation zuweist, falls der Schätzwert höher als das Anwender-Toleranzniveau ist" das Anzeigen einer Dialogbox auf einem für den Anwender sichtbaren Bildschirm umfaßt, um dem Anwender zu erlauben, entweder den Abbruch des Task zu wählen oder den Task an eine Warteschlange für die Ausführung unter der Steuerung eines Hintergrundverarbeitungsmanagers zu senden.
  4. Verfahren nach Anspruch 3, bei dem der Schritt des "Sendens der Task an eine Warteschlange für die Ausführung unter der Steuerung des Hintergrundverarbeitungsmanagers" umfaßt: Anordnen des Task in einer Warteschlange; Bestimmen, ob der Task einen Zugriff auf Informationen erfordert, die für ihn noch nicht verfügbar sind; falls der Task derartige Informationen erfordert, Verzögern der Ausführung des Task, bis diese Informationen verfügbar sind; und falls der Task keine derartigen Informationen erfordert, Ausführen des Task, wenn der Task die höchste Ausführungspriorität hat.
  5. Verfahren nach einem der Ansprüche 1 bis 4, das ferner umfaßt: Halten einer Liste aller Tasks, die auf den Abschluß der Ausführung durch das System warten; Anzeigen der Liste für den Anwender; in Verbindung mit der Anzeige der Tasks Zulassen, daß der Anwender die Liste von Tasks mit Prioritäten versieht und dadurch bestimmt, welche Tasks zuerst abgeschlossen werden.
  6. Verfahren nach einem der Ansprüche 1 bis 5, das ferner vor dem Schritt des "Berechnens eines Schätzwerts für die Zeit, die der Task erfordert, um abgeschlossen zu werden, wann immer der Anwender das System auffordert, einen Task auszuführen", einen Schritt umfaßt, bei dem bestimmt wird, ob der Anwender das Senden aller Tasks zum Hintergrund gewählt hat, und auf der Grundlage dieser Bestimmung Senden des Task an den Hintergrund ohne Bestimmung des Anwender-Toleranzniveaus.
  7. Verfahren nach einem der Ansprüche 1 bis 6, das ferner das Anzeigen einer Angabe des Grades, mit dem der Task abgeschlossen worden ist, für den Anwender umfaßt.
  8. Computersystem für die Ausführung von Tasks durch ein Anwendungsprogramm, umfassend: ein Befehlssystem, das Anwenderbefehle annimmt und das Computersystem anweist, besondere Operationen entsprechend den Befehlen auszuführen; wobei das Befehlssystem so beschaffen ist, daß es ein Anwender-Toleranzniveau akzeptiert, das aus einer Zeitperiode für die Ausführung eines spezifischen Task besteht; wobei das Befehlssystem ferner so beschaffen ist, daß es einen Schätzwert für die Zeit, die die spezifische Ausgabe erfordert, um abgeschlossen zu werden, anfordert und bereitstellt, wenn die Ausführung des spezifischen Task gefordert ist; ein Verarbeitungssystem, das mit dem Befehlssystem gekoppelt ist, um die besonderen Operationen, die durch das Befehlssystem gefordert werden, auszuführen; wobei das Verarbeitungssystem durch das Befehlssystem steuerbar ist, um den spezifischen Task auszuführen, falls der Zeitschätzwert kleiner als das Anwender-Toleranzniveau für den spezifischen Task ist; einen Hintergrundmanager, der wenigstens einige der Befehle vom Befehlssystem auffängt und diese Befehle, wenn dies von einem Anwender angewiesen wird, in einer Warteschlange für die Ausführung zu einem späteren Zeitpunkt anordnet; wobei der Hintergrundmanager durch den Anwender über das Befehlssystem so steuerbar ist, daß er den spezifischen Task einer Hintergrundverarbeitungsoperation zuweist, falls der Zeitschätzwert größer als das Anwender-Toleranzniveau für den spezifischen Task ist.
DE69529365T 1994-04-29 1995-04-27 Brauchersteuerbare Gleichzeitigkeitsfunktionalität Expired - Lifetime DE69529365T2 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US235595 1994-04-29
US08/235,595 US5542088A (en) 1994-04-29 1994-04-29 Method and apparatus for enabling control of task execution

Publications (2)

Publication Number Publication Date
DE69529365D1 DE69529365D1 (de) 2003-02-20
DE69529365T2 true DE69529365T2 (de) 2004-01-22

Family

ID=22886169

Family Applications (1)

Application Number Title Priority Date Filing Date
DE69529365T Expired - Lifetime DE69529365T2 (de) 1994-04-29 1995-04-27 Brauchersteuerbare Gleichzeitigkeitsfunktionalität

Country Status (3)

Country Link
US (1) US5542088A (de)
EP (1) EP0685791B1 (de)
DE (1) DE69529365T2 (de)

Families Citing this family (147)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
FR2724243B1 (fr) * 1994-09-06 1997-08-14 Sgs Thomson Microelectronics Systeme de traitement multitaches
US5727203A (en) * 1995-03-31 1998-03-10 Sun Microsystems, Inc. Methods and apparatus for managing a database in a distributed object operating environment using persistent and transient cache
EP0783734B1 (de) * 1995-05-05 2002-08-07 Apple Computer, Inc. Vorrichtung und verfahren für kooperative unterbrechungen in einer preemptiven prozessablauffolgeplanungsumgebung
AUPN520495A0 (en) * 1995-09-04 1995-09-28 Charon Holdings Pty Ltd Reading aid
US5673404A (en) * 1995-12-20 1997-09-30 At&T Global Information Solutions Company End-user customizable feedback display for windowed applications
US5754776A (en) * 1995-12-28 1998-05-19 Intel Corporation Re-prioritizing background data transfers in multipoint conferencing
US5867160A (en) * 1996-10-31 1999-02-02 International Business Machines Corporation System and method for task prioritization in computerized graphic interface environments
US6091414A (en) * 1996-10-31 2000-07-18 International Business Machines Corporation System and method for cross-environment interaction in a computerized graphical interface environment
US6223204B1 (en) * 1996-12-18 2001-04-24 Sun Microsystems, Inc. User level adaptive thread blocking
US5893905A (en) * 1996-12-24 1999-04-13 Mci Communications Corporation Automated SLA performance analysis monitor with impact alerts on downstream jobs
US6098090A (en) * 1997-09-05 2000-08-01 Novell, Inc. Methods and system for providing a background processing thread which manages the background tasks of external threads
US6067570A (en) * 1997-10-20 2000-05-23 The Delfin Project, Inc. Method and system for displaying and interacting with an informational message based on an information processing system event
US5999963A (en) * 1997-11-07 1999-12-07 Lucent Technologies, Inc. Move-to-rear list scheduling
US6111575A (en) * 1998-09-24 2000-08-29 International Business Machines Corporation Graphical undo/redo manager and method
US6275987B1 (en) 1998-11-05 2001-08-14 International Business Machines Corporation Adaptive, predictive progress indicator
US7257814B1 (en) 1998-12-16 2007-08-14 Mips Technologies, Inc. Method and apparatus for implementing atomicity of memory operations in dynamic multi-streaming processors
US7035997B1 (en) 1998-12-16 2006-04-25 Mips Technologies, Inc. Methods and apparatus for improving fetching and dispatch of instructions in multithreaded processors
US7237093B1 (en) 1998-12-16 2007-06-26 Mips Technologies, Inc. Instruction fetching system in a multithreaded processor utilizing cache miss predictions to fetch instructions from multiple hardware streams
US6477562B2 (en) * 1998-12-16 2002-11-05 Clearwater Networks, Inc. Prioritized instruction scheduling for multi-streaming processors
US7020879B1 (en) 1998-12-16 2006-03-28 Mips Technologies, Inc. Interrupt and exception handling for multi-streaming digital processors
US6389449B1 (en) * 1998-12-16 2002-05-14 Clearwater Networks, Inc. Interstream control and communications for multi-streaming digital processors
US7529907B2 (en) 1998-12-16 2009-05-05 Mips Technologies, Inc. Method and apparatus for improved computer load and store operations
US6842898B1 (en) * 1999-06-10 2005-01-11 International Business Machines Corporation Method and apparatus for monitoring and handling events for a collection of related threads in a data processing system
US6834386B1 (en) * 1999-07-16 2004-12-21 Microsoft Corporation Method and system for regulating background tasks using performance measurements
US7058683B1 (en) 1999-07-20 2006-06-06 Sun Microsystems, Inc. Methods and apparatus for providing a virtual host in electronic messaging servers
US6681241B1 (en) * 1999-08-12 2004-01-20 International Business Machines Corporation Resource contention monitoring employing time-ordered entries in a blocking queue and waiting queue
US6983350B1 (en) 1999-08-31 2006-01-03 Intel Corporation SDRAM controller for parallel processor architecture
US6427196B1 (en) * 1999-08-31 2002-07-30 Intel Corporation SRAM controller for parallel processor architecture including address and command queue and arbiter
US6668317B1 (en) * 1999-08-31 2003-12-23 Intel Corporation Microengine for parallel processor architecture
US7191309B1 (en) 1999-09-01 2007-03-13 Intel Corporation Double shift instruction for micro engine used in multithreaded parallel processor architecture
WO2001016702A1 (en) 1999-09-01 2001-03-08 Intel Corporation Register set used in multithreaded parallel processor architecture
CA2383531A1 (en) 1999-09-01 2001-03-08 Intel Corporation Instruction for multithreaded parallel processor
US6832376B1 (en) * 1999-09-29 2004-12-14 Unisys Corporation Method and apparatus for resuse of a thread for different programmed operations
US6532509B1 (en) 1999-12-22 2003-03-11 Intel Corporation Arbitrating command requests in a parallel multi-threaded processing system
US6694380B1 (en) 1999-12-27 2004-02-17 Intel Corporation Mapping requests from a processing unit that uses memory-mapped input-output space
US6625654B1 (en) * 1999-12-28 2003-09-23 Intel Corporation Thread signaling in multi-threaded network processor
US6631430B1 (en) * 1999-12-28 2003-10-07 Intel Corporation Optimizations to receive packet status from fifo bus
US7620702B1 (en) 1999-12-28 2009-11-17 Intel Corporation Providing real-time control data for a network processor
US6307789B1 (en) * 1999-12-28 2001-10-23 Intel Corporation Scratchpad memory
US6661794B1 (en) 1999-12-29 2003-12-09 Intel Corporation Method and apparatus for gigabit packet assignment for multithreaded packet processing
US6952824B1 (en) 1999-12-30 2005-10-04 Intel Corporation Multi-threaded sequenced receive for fast network port stream of packets
US6976095B1 (en) 1999-12-30 2005-12-13 Intel Corporation Port blocking technique for maintaining receive packet ordering for a multiple ethernet port switch
US7480706B1 (en) 1999-12-30 2009-01-20 Intel Corporation Multi-threaded round-robin receive for fast network port
US6584522B1 (en) * 1999-12-30 2003-06-24 Intel Corporation Communication between processors
US6631462B1 (en) * 2000-01-05 2003-10-07 Intel Corporation Memory shared between processing threads
US7099855B1 (en) 2000-01-13 2006-08-29 International Business Machines Corporation System and method for electronic communication management
US6983301B1 (en) * 2000-02-02 2006-01-03 Siemens Communications, Inc. Background processing deferment for computer telephony
GB0008490D0 (en) * 2000-04-07 2000-05-24 Purvis Jan Improved method of teaching
US6622190B1 (en) * 2000-04-27 2003-09-16 Sharp Laboratories Of America Method for modifying task execution priority in a multitasking, windowed operating environment
US8290768B1 (en) 2000-06-21 2012-10-16 International Business Machines Corporation System and method for determining a set of attributes based on content of communications
US6408277B1 (en) * 2000-06-21 2002-06-18 Banter Limited System and method for automatic task prioritization
US9699129B1 (en) 2000-06-21 2017-07-04 International Business Machines Corporation System and method for increasing email productivity
US7062557B1 (en) * 2000-07-10 2006-06-13 Hewlett-Packard Development Company, L.P. Web server request classification system that classifies requests based on user's behaviors and expectations
AU2001273211A1 (en) 2000-07-14 2002-01-30 Clearwater Networks, Inc. Instruction fetch and dispatch in multithreaded system
US6829765B1 (en) 2000-07-18 2004-12-07 International Business Machines Corporation Job scheduling based upon availability of real and/or virtual resources
US7681018B2 (en) * 2000-08-31 2010-03-16 Intel Corporation Method and apparatus for providing large register address space while maximizing cycletime performance for a multi-threaded register file set
US20020053017A1 (en) * 2000-09-01 2002-05-02 Adiletta Matthew J. Register instructions for a multithreaded processor
US7929562B2 (en) 2000-11-08 2011-04-19 Genesis Telecommunications Laboratories, Inc. Method and apparatus for optimizing response time to events in queue
US6822945B2 (en) 2000-11-08 2004-11-23 Genesys Telecommunications Laboratories, Inc. Method and apparatus for anticipating and planning communication-center resources based on evaluation of events waiting in a communication center master queue
US7299259B2 (en) 2000-11-08 2007-11-20 Genesys Telecommunications Laboratories, Inc. Method and apparatus for intelligent routing of instant messaging presence protocol (IMPP) events among a group of customer service representatives
JP2002238003A (ja) * 2000-12-07 2002-08-23 Matsushita Electric Ind Co Ltd 動画再生用ミドルウェア選択実行装置および方法
US7020871B2 (en) * 2000-12-21 2006-03-28 Intel Corporation Breakpoint method for parallel hardware threads in multithreaded processor
US7644057B2 (en) 2001-01-03 2010-01-05 International Business Machines Corporation System and method for electronic communication management
US6925611B2 (en) * 2001-01-31 2005-08-02 Microsoft Corporation Navigational interface for mobile and wearable computers
US6981254B2 (en) * 2001-02-01 2005-12-27 Hewlett-Packard Development Company, L.P. Delay timer for printing from the driver
US6865717B2 (en) * 2001-05-30 2005-03-08 International Business Machines Corporation Method, system, and program for generating a progress indicator
CA2469451A1 (en) * 2001-06-04 2002-12-12 Radisys Corporation Method and apparatus to use task priority to scale processor performance
US7509671B1 (en) * 2001-06-20 2009-03-24 Microstrategy Incorporated Systems and methods for assigning priority to jobs in a reporting system
US20030009508A1 (en) * 2001-06-26 2003-01-09 Troia Terry A. Method and system for providing processor task scheduling
US7065764B1 (en) 2001-07-20 2006-06-20 Netrendered, Inc. Dynamically allocated cluster system
US7487505B2 (en) 2001-08-27 2009-02-03 Intel Corporation Multithreaded microprocessor with register allocation based on number of active threads
US7225281B2 (en) 2001-08-27 2007-05-29 Intel Corporation Multiprocessor infrastructure for providing flexible bandwidth allocation via multiple instantiations of separate data buses, control buses and support mechanisms
US6868476B2 (en) 2001-08-27 2005-03-15 Intel Corporation Software controlled content addressable memory in a general purpose execution datapath
US7216204B2 (en) 2001-08-27 2007-05-08 Intel Corporation Mechanism for providing early coherency detection to enable high performance memory updates in a latency sensitive multithreaded environment
US7647591B1 (en) * 2001-09-26 2010-01-12 Palmsource Inc. Method for dynamically enabling the expansion of a computer operating system
US7126952B2 (en) 2001-09-28 2006-10-24 Intel Corporation Multiprotocol decapsulation/encapsulation control structure and packet protocol conversion method
US20030084087A1 (en) * 2001-10-31 2003-05-01 Microsoft Corporation Computer system with physical presence detector to optimize computer task scheduling
US7158964B2 (en) * 2001-12-12 2007-01-02 Intel Corporation Queue management
US7107413B2 (en) * 2001-12-17 2006-09-12 Intel Corporation Write queue descriptor count instruction for high speed queuing
US7269179B2 (en) * 2001-12-18 2007-09-11 Intel Corporation Control mechanisms for enqueue and dequeue operations in a pipelined network processor
US7895239B2 (en) 2002-01-04 2011-02-22 Intel Corporation Queue arrays in network devices
US7181573B2 (en) * 2002-01-07 2007-02-20 Intel Corporation Queue array caching in network devices
US6934951B2 (en) 2002-01-17 2005-08-23 Intel Corporation Parallel processor with functional pipeline providing programming engines by supporting multiple contexts and critical section
US7610451B2 (en) 2002-01-25 2009-10-27 Intel Corporation Data transfer mechanism using unidirectional pull bus and push bus
US7181594B2 (en) * 2002-01-25 2007-02-20 Intel Corporation Context pipelines
US7149226B2 (en) * 2002-02-01 2006-12-12 Intel Corporation Processing data packets
US7437724B2 (en) * 2002-04-03 2008-10-14 Intel Corporation Registers for data transfers
US7945652B2 (en) * 2002-08-06 2011-05-17 Sheng (Ted) Tai Tsao Display multi-layers list item in web-browser with supporting of concurrent multi-users
US7471688B2 (en) 2002-06-18 2008-12-30 Intel Corporation Scheduling system for transmission of cells to ATM virtual circuits and DSL ports
US7337275B2 (en) 2002-08-13 2008-02-26 Intel Corporation Free list and ring data structure management
USRE46776E1 (en) 2002-08-27 2018-04-03 Genesys Telecommunications Laboratories, Inc. Method and apparatus for optimizing response time to events in queue
US7352769B2 (en) 2002-09-12 2008-04-01 Intel Corporation Multiple calendar schedule reservation structure and method
US7433307B2 (en) 2002-11-05 2008-10-07 Intel Corporation Flow control in a network environment
US6941438B2 (en) 2003-01-10 2005-09-06 Intel Corporation Memory interleaving
JP4066833B2 (ja) * 2003-02-18 2008-03-26 日本電気株式会社 ディスクアレイ制御装置及び方法並びにディスクアレイ制御プログラム
US7389230B1 (en) 2003-04-22 2008-06-17 International Business Machines Corporation System and method for classification of voice signals
US8495002B2 (en) 2003-05-06 2013-07-23 International Business Machines Corporation Software tool for training and testing a knowledge base
US20050187913A1 (en) 2003-05-06 2005-08-25 Yoram Nelken Web-based customer service interface
US7443836B2 (en) 2003-06-16 2008-10-28 Intel Corporation Processing a data packet
US8219487B2 (en) * 2003-10-15 2012-07-10 Blackrock, Inc. System and method for managing credit risk for investment portfolios
US7213099B2 (en) 2003-12-30 2007-05-01 Intel Corporation Method and apparatus utilizing non-uniformly distributed DRAM configurations and to detect in-range memory address matches
US7792824B2 (en) * 2004-01-08 2010-09-07 International Business Machines Corporation Apparatus and method for enabling parallel processing of a computer program using existing database parallelism
US7827476B1 (en) * 2004-06-18 2010-11-02 Emc Corporation System and methods for a task management user interface
US7634773B2 (en) * 2004-11-24 2009-12-15 Hewlett-Packard Development Company, L.P. Method and apparatus for thread scheduling on multiple processors
US7873962B2 (en) * 2005-04-08 2011-01-18 Xerox Corporation Distributed control systems and methods that selectively activate respective coordinators for respective tasks
US7791741B2 (en) * 2005-04-08 2010-09-07 Palo Alto Research Center Incorporated On-the-fly state synchronization in a distributed system
US8819103B2 (en) * 2005-04-08 2014-08-26 Palo Alto Research Center, Incorporated Communication in a distributed system
US7706007B2 (en) * 2005-04-08 2010-04-27 Palo Alto Research Center Incorporated Synchronization in a distributed system
US20070067772A1 (en) * 2005-06-09 2007-03-22 Bustamante Jorge M Tools and methods for task management
US8245239B2 (en) * 2005-07-06 2012-08-14 Honeywell International Inc. Deterministic runtime execution environment and method
US8620713B2 (en) * 2005-07-15 2013-12-31 Sap Ag Mechanism to control delegation and revocation of tasks in workflow system
US8402093B2 (en) 2005-12-22 2013-03-19 Microsoft Corporation Workflow and in-context e-mail recipient handling
JP2007287007A (ja) * 2006-04-19 2007-11-01 Orion Denki Kk 操作タスク予約機能を備えた情報処理装置及び操作タスク予約処理プログラム及び操作タスクの予約処理方法
US20130276109A1 (en) * 2006-07-11 2013-10-17 Mcafee, Inc. System, method and computer program product for detecting activity in association with program resources that has at least a potential of an unwanted effect on the program
US8239232B2 (en) * 2007-07-17 2012-08-07 At&T Intellectual Property I, L.P. Methods, systems, and computer-readable media for providing commitments information relative to a turf
US8341547B2 (en) 2007-07-17 2012-12-25 At&T Intellectual Property I, L.P. Methods, systems, and computer-readable media for providing contact information at turf level
US8380744B2 (en) * 2007-07-17 2013-02-19 At&T Intellectual Property I, L.P. Methods, systems, and computer-readable media for generating a report indicating job availability
US8060401B2 (en) * 2007-07-17 2011-11-15 At&T Intellectual Property I, Lp Methods, systems, and computer-readable media for providing an indication of a schedule conflict
US20090024437A1 (en) * 2007-07-17 2009-01-22 Robert Ingman Methods, Systems, and Computer-Readable Media for Providing A Ratio of Tasks Per Technician
US8249905B2 (en) * 2007-07-17 2012-08-21 At&T Intellectual Property I, Lp Methods, systems, and computer-readable media for providing future job information
US8352302B2 (en) 2007-07-17 2013-01-08 At&T Intellectual Property I, L.P. Methods, systems, and computer-readable media for determining a plurality of turfs from where to reallocate a workforce to a given turf
US8069072B2 (en) * 2007-07-17 2011-11-29 At&T Intellectual Property I, Lp Methods, systems, and computer-readable media for providing an indication of hightime
US20090133027A1 (en) * 2007-11-21 2009-05-21 Gunning Mark B Systems and Methods for Project Management Task Prioritization
US20090319933A1 (en) * 2008-06-21 2009-12-24 Microsoft Corporation Transacted double buffering for graphical user interface rendering
US8255914B1 (en) * 2008-09-25 2012-08-28 Emc Corporation Information retrieval techniques involving the use of prioritized object requests
FR2940480B1 (fr) * 2008-12-23 2011-03-25 Thales Sa Dispositif de reconfiguration d'un contexte de traitement de taches
US20100194920A1 (en) * 2009-02-03 2010-08-05 Bowei Gai Behaviorally-based software acceleration for digital camera operations
US20110184998A1 (en) * 2010-01-22 2011-07-28 Palahnuk Samuel L Universally accessible encrypted internet file system for wired and wireless computing devices supplanting synchronization, backup and email file attachment
US20110252430A1 (en) 2010-04-07 2011-10-13 Apple Inc. Opportunistic Multitasking
US9128760B2 (en) 2010-07-26 2015-09-08 International Business Machines Corporation Dynamically adjusting priority by providing a longer duration of use of a shared resource
US8904115B2 (en) 2010-09-28 2014-12-02 Texas Instruments Incorporated Cache with multiple access pipelines
US8886976B2 (en) * 2011-04-11 2014-11-11 Microsoft Corporation Management of background tasks
US8813095B2 (en) 2011-09-14 2014-08-19 International Business Machines Corporation Audio feedback for command line interface commands
US8813177B2 (en) * 2012-07-12 2014-08-19 Microsoft Corporation Background application management
US9660993B2 (en) * 2012-10-25 2017-05-23 Facebook, Inc. Event reporting and handling
US10592278B2 (en) * 2013-03-15 2020-03-17 Facebook, Inc. Defer heavy operations while scrolling
KR102083316B1 (ko) * 2013-04-24 2020-04-14 삼성전자주식회사 사용자 디바이스의 메모리 관리 방법 및 장치
US9336068B2 (en) 2013-06-07 2016-05-10 Apple Inc. Throttling of application access to resources
US9250953B2 (en) * 2013-11-12 2016-02-02 Oxide Interactive Llc Organizing tasks by a hierarchical task scheduler for execution in a multi-threaded processing system
KR102148948B1 (ko) * 2013-12-06 2020-08-27 삼성전자주식회사 전자 장치의 멀티 태스킹 방법 및 그 전자 장치
US9239711B1 (en) * 2013-12-31 2016-01-19 Google Inc. Run benchmark or analysis tools against massive repository of archived webpages on machines in the cloud for continuous builds or AD-HOC requests
US9946635B2 (en) * 2015-09-29 2018-04-17 International Business Machines Corporation Synchronizing multi-system program instruction sequences
US20170279924A1 (en) * 2016-03-27 2017-09-28 International Business Machines Corporation Cancellation management with respect to a web application
TWI587214B (zh) * 2016-04-21 2017-06-11 慧榮科技股份有限公司 資料儲存裝置、其控制單元及其任務排序方法
KR102298947B1 (ko) * 2017-04-28 2021-09-08 삼성전자주식회사 음성 데이터 처리 방법 및 이를 지원하는 전자 장치
CN111221638B (zh) * 2020-01-03 2023-06-30 北京字节跳动网络技术有限公司 并发任务的调度处理方法、装置、设备和介质
CN111651261B (zh) * 2020-07-07 2023-04-07 Oppo(重庆)智能科技有限公司 进程管理方法、装置、终端设备及计算机可读存储介质

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4553202A (en) * 1982-05-06 1985-11-12 International Business Machines Corporation User controlled dialog resource switching in a multi-tasking word processor
US5371887A (en) * 1989-09-05 1994-12-06 Matsushita Electric Industrial Co., Ltd. Time-shared multitask execution device
US5394547A (en) * 1991-12-24 1995-02-28 International Business Machines Corporation Data processing system and method having selectable scheduler

Also Published As

Publication number Publication date
EP0685791B1 (de) 2003-01-15
DE69529365D1 (de) 2003-02-20
EP0685791A2 (de) 1995-12-06
EP0685791A3 (de) 1997-04-16
US5542088A (en) 1996-07-30

Similar Documents

Publication Publication Date Title
DE69529365T2 (de) Brauchersteuerbare Gleichzeitigkeitsfunktionalität
DE60004886T2 (de) System und verfahren zum bereitstellen einer sammlung von wiederverwendbaren fäden zum behandeln von gepufferten aufgaben
DE69630329T2 (de) Verfahren zur Verwaltung des Deaktivierens und Ausschaltens eines Servers
DE69530734T2 (de) System und Verfahren zur Workflow-Verwaltung
DE69726167T2 (de) Verfahren zur verwaltung der darstellung von bildschirmanzeigen in einer multifenster-rechnungsumgebung
DE69817158T2 (de) Benutzerschnittstellen-Mechanismus zur Manipulierung von Kontexten in Computerverwaltungsapplikationen
DE19632854B4 (de) Kontext-Identifizierer verwendendes System und Verfahren für eine individuelle Menüanpassung in einem Fenster
DE60201024T2 (de) Multifunktioneller applikations-launcher mit integriertem status
DE19955004A1 (de) Ableitung und Ausführung von Workload-Manager-Enklaven aus Workflows
DE60318560T2 (de) Taskverwaltungseinrichtung und -verfahren , betriebsbeurteilungseinrichtung und verfahren und zu beurteilendes programm
DE69815946T2 (de) Informationsverarbeitungsvorrichtung
DE10062063B4 (de) Verfahren, System, Computerprogramm-Produkt und Speichervorrichtung zur Steuerung einer Warteschlange von Anforderungen unterschiedlicher Priorität
DE19522185A1 (de) Ein Verfahren und System zur dynamischen Übersetzung zwischen verschiedenen grafischen Benutzeroberflächen-Systemen
DE2054068A1 (de) Mit Programmverschachtelung arbei tendes Datenverarbeitungssystem zur gleichzeitigen Verarbeitung mehrerer Programme
DE19931139A1 (de) Produktionssystem und Fertigungsmittel-Auswahlverfahren in einem Produktionssystem
DE19948028A1 (de) Verfahren und System zum Optimieren des Anforderungsschickens in Workflow Management Systemen
DE102012103634A1 (de) Planen von Veranstaltungen für mehrere Eingeladene
DE69814697T2 (de) Vorrichtung, methode und computer programm produkt für client/server rechner mit vom client auswählbarer lokalisierung von transaktionsobjekten
DE4135347C2 (de) Verfahren zur Aufrechterhaltung einer gegenseitigen Beziehung zwischen mehreren Objekten in einem für objekt-orientierte Sprache vorgesehenen Computer-System und Vorrichtung zur Durchführung eines derartigen Verfahrens
DE69934174T2 (de) Verfahren und Vorrichtung zur digitalen Bildbearbeitung
DE19960048A1 (de) Zeitgesteuerte Startbedingungen für Aktivitäten in Workflow-Management-Systemen
DE69930352T2 (de) Verfahren und Vorrichtung zur Animierung von Videospezialeffekten
EP3364257B1 (de) Verfahren zum betrieb eines engineering-systems für ein industrielles prozessautomatisierungssystem und steuerungsprogramm
DE102017122119A1 (de) Informationsprozessor
DE102006051188A1 (de) Flexibles Verschaltungssystem

Legal Events

Date Code Title Description
8327 Change in the person/name/address of the patent owner

Owner name: INTERGRAPH HARDWARE TECHNOLOGIES CO., LAS VEGAS, N

8364 No opposition during term of opposition