DE69418082T2 - System und Verfahren zur Vermeidung von Verklemmung in einem Rechner - Google Patents

System und Verfahren zur Vermeidung von Verklemmung in einem Rechner

Info

Publication number
DE69418082T2
DE69418082T2 DE69418082T DE69418082T DE69418082T2 DE 69418082 T2 DE69418082 T2 DE 69418082T2 DE 69418082 T DE69418082 T DE 69418082T DE 69418082 T DE69418082 T DE 69418082T DE 69418082 T2 DE69418082 T2 DE 69418082T2
Authority
DE
Germany
Prior art keywords
application program
operating system
multitasking
interruptive
thread
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 - Fee Related
Application number
DE69418082T
Other languages
English (en)
Other versions
DE69418082D1 (de
Inventor
Gary G. Kiwimagi
Ellen M. Nelson
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.)
Hewlett Packard Development Co LP
Original Assignee
Hewlett Packard Co
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 Hewlett Packard Co filed Critical Hewlett Packard Co
Publication of DE69418082D1 publication Critical patent/DE69418082D1/de
Application granted granted Critical
Publication of DE69418082T2 publication Critical patent/DE69418082T2/de
Anticipated expiration legal-status Critical
Expired - Fee Related 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/52Program synchronisation; Mutual exclusion, e.g. by means of semaphores
    • G06F9/524Deadlock detection or avoidance

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Debugging And Monitoring (AREA)

Description

  • Die vorliegende Erfindung bezieht sich allgemein auf das Vermeiden einer Verklemmung in einer Multitaskingumgebung (Mehrprogrammbetriebsumgebung) und insbesondere auf ein System und ein Verfahren zum Verwenden einer Zwischenprozeßkommunikation, um die Hintergrundverarbeitung zu maximieren, und um eine Verklemmung in einer Mehrteilprozeßanwendung, die in einer nicht-unterbrechenden Multitaskingumgebung läuft, zu vermeiden.
  • Computeranwendungsprogramme, die eine "Windows"-Umgebung verwenden, sind auf dem heutigen Markt vorherrschend. Die Verwendung von Windows ermöglicht es einem Benutzer, in einer Multitaskingumgebung zu arbeiten, bei der mehrere Anwendungsprogramme um eine endliche Anzahl von Ressourcen in Wettbewerb treten. Das Betreiben in einer Multitaskingumgebung kann jedoch eine Anzahl von Problemen erzeugen.
  • Beispielsweise betritt das Anwendungsprogramm einen Wartezustand, wenn ein Anwendungsprogramm eine Ressource abfragt, und wenn die Ressource nicht zu diesem Zeitpunkt verfügbar ist. Es kann passieren, daß das wartende Anwendungsprogramm nie mehr den Zustand ändern wird, da die Ressource, die dasselbe angefordert hat, durch andere wartende Prozesse gehalten wird. Diese Situation wird eine Verklemmung genannt. Um eine Verklemmung zu verhindern, oder um sich von einer zu erholen, wenn dieselbe auftritt, kann das System eine relativ extreme Handlung, wie z. B. eine Unterbrechung von Ressourcen von einem oder mehreren der verklemmten Anwendungsprogramme, vornehmen.
  • Ein Satz von Prozessen befindet sich in einem Verklemmungszustand, wenn zwei oder mehrere Prozesse in dem Satz auf ein Ereignis warten, das lediglich durch einen weiteren Prozeß in dem Satz bewirkt werden kann. Eine Verklemmungssituation kann auftreten, wenn und nur dann wenn die folgenden vier Bedingungen in dem System gültig sind.
  • - Gegenseitige Ausschließung. Mindestens eine Ressource wird in einem nicht-teilbaren Modus gehalten; d. h. lediglich ein Prozeß kann zu einem Zeitpunkt die Ressource verwenden. Wenn ein weiterer Prozeß diese Ressource abfragt, muß der abfragende Prozeß so lange verzögert werden, bis die Ressource freigegeben ist.
  • - Halten und Warten. Es muß einen Prozeß geben, der mindestens eine Ressource hält, und der darauf wartet zusätzliche Ressourcen zu erwerben, die derzeit durch andere Prozesse gehalten werden.
  • - Keine Unterbrechung. Ressourcen können nicht unterbrochen werden, d. h. eine Ressource kann lediglich freiwillig durch den Prozeß freigegeben werden, der dieselbe hält, nachdem der Prozeß seine Aufgabe abgeschlossen hat.
  • - Kreisförmige Gewichtung. Es muß einen Satz (p&sub0;, p&sub1;, ..., pn) von Warteprozessen derart geben, daß p&sub0; auf eine Ressource wartet, die durch p&sub1; gehalten wird, p&sub1; auf eine Ressource wartet, die durch p&sub2; gehalten wird, ..., pn-1 auf eine Ressource wartet, die durch pn gehalten wird, und pn auf eine Ressource wartet, die durch p&sub0; gehalten wird.
  • Alle vier Bedingungen müssen gültig sein, so daß eine Verklemmung auftritt. Durch sicherstellen, daß mindestens eine dieser Bedingungen nicht gültig ist, kann das Auftreten einer Verklemmung verhindert werden. Für eine detailliertere Beschreibung des Verklemmungsproblems siehe Peterson J. und Siberschatz A., Operating System Concepts, Addison-Wesley Publishing Co., Inc. (1986).
  • Das Problem wird durch C. Petzold, in Why you need to multitask in the OS/2 presentation manager, PC-Magazin, 15. Mai 1990, S. 293-299, angegangen, wobei dort vorgeschlagen wird, daß ein Programm zusätzliche Ausführungsteilprozesse erzeugen könnte, um sehr lange Verarbeitungsaufträge handzuhaben.
  • In einer Windowsumgebung riskiert jede beliebige Anwendung, die aus mehr als einer Komponente besteht, die freiwillig die Steuerung des Prozessors teilt, eine Verkümmerung von allen anderen Komponenten, wenn eine beliebige Komponente den Prozessor steuert. Diese Situation führt im allgemeinen zu einer schlechten Hintergrundverarbeitungsleistung und kann in eine Verklemmung degenerieren, wenn die Komponente, die steuert, eine Eingabe von einer weiteren Komponente erfordert. Die Verklemmung tritt auf, da die verkümmerte Komponente nicht laufen kann und die Eingabe nicht liefern kann, da die Komponente, die steuert, so lange nicht freigeben wird, bis dieselbe diese Eingabe von der verkümmerten Komponente empfängt.
  • Microsoft- (eingetragene Marke) Windows sieht eine nicht- unterbrechende Multitaskingumgebung zum Laufenlassen von Anwendungsprogrammen vor. Dies bedeutet, daß mehrere Anwendungen den Prozessor auf eine sequentielle Art und Weise teilen können, vorausgesetzt, daß jede Anwendung sich "gut benimmt" und den Prozessor periodisch freiwillig aufgibt. Das Microsoft-Windows-Betriebssystem weist beispielsweise keine Vorrichtung auf, um eine Verklemmung oder Verkümmerungssituationen zu erfassen oder zu beheben, die auftreten können, wenn ein Anwendungsprogramm sich nicht gut benimmt.
  • Fig. 1 ist eine konzeptionelle Darstellung von mehreren Anwendungsprogrammen, die in einem Windows-Betriebssystem (OS; OS = Operating System) 110 laufen. Das Windows-Betriebssystem ist ein Multitaskingbetriebssystem. Multitasking bedeutet, daß mehr als ein Anwendungsprogramm gleichzeitig laufen kann. Nicht-unterbrechend bedeutet, daß, sobald einem Anwendungsprogramm, z. B. dem Anwendungsprogramm A 120, ein Zugriff durch das Windows-Betriebssystem 110 zu dem Prozessor (nicht gezeigt) gewährt ist, dasselbe durch Anwendungspro gramme B 130, C 140 oder D 150 nicht unterbrochen werden kann. Folglich verkümmern alle anderen Anwendungsprogramme 130, 140 und 150, während das Anwendungsprogramm A 120 läuft. Akzeptierte Windows-Programmierpraktiken schreiben vor, daß Anwendungsprogramme 120-150 freiwillig den Zugriff zu dem Prozessor aufgeben (d. h. das Anwendungsprogramm benimmt sich gut). Folglich erhält jedes Anwendungsprogramm einen Zeitschlitz des Prozessors. Ein Zeitschlitz ist eine Zeiteinheit, in der es ein Betriebssystem einem Anwendungsprogramm ermöglicht, zu laufen. Bei einem nicht-unterbrechenden System weist ein Zeitschlitz keine vordefinierte Grenze auf.
  • Sobald ein Anwendungsprogramm 120-150 die Steuerung des Prozessors freigibt, kann dann das Windows-Betriebssystem 110 einem anderen Anwendungsprogramm 120-150 einen Zugriff auf den Prozessor gewähren.
  • Einige Anwendungsprogramme sehen ihr eigenes inneres nicht- unterbrechendes Multitasking durch getrennte Aufgaben oder Teilprozesse innerhalb des Anwendungsprogramms vor. Es sei bemerkt, daß ein Multitasker (Multitaskingvorrichtung) innerhalb eines Handlungsprogramms ähnlich zu dem Multitasker ist, der in dem Windows-Betriebssystem 110 vorgefunden wird. Beispielsweise ist ein Teilprozeß für den Zugriff auf Daten auf der Platte verantwortlich, während ein weiterer Teilprozeß auf Daten von dem Band zugreift und ein weiterer Teilprozeß mit dem Benutzer wechselwirkt, um zu bestimmen, welche Operationen durchzuführen sind. Das Ziel dieses Entwurfs besteht darin, schnellere Antworten auf Benutzeranforderungen zu liefern, da die Daten unmittelbar durch ein "Hintergrund"-Verarbeiten verfügbar sind.
  • Teilprozesse steuern den Prozessor während ihrer Zeitschlitze, und dieselben kommunizieren mit anderen Teilprozessen über ein Nachrichtenweiterleiten. Dieses Zeitschlitzen zwischen Teilprozessen und dieses Nachrichtenweiterleiten zwischen Teilprozessen findet innerhalb eines Anwendungsprogramms 120-150 während eines Zeitschlitzes des Windows-Betriebssystems 110.
  • Das Windows-Betriebssystem 110 versieht Anwendungsprogramme 120-150 mit einer Schnittstelle zu Standardverfahren zum Kommunizieren mit dem Benutzer, beispielsweise: Dialogkästen, Listenkästen, Rollbalken, Editiersteuerungen, Cursor, Ikonen, etc. Der Benutzerschnittstellenteilprozeß eines Anwendungsprogramms verwendet Dialogkästen, um unterschiedliche Informationstypen von dem Benutzer zu erhalten. Dialogkästen enthalten, wie es durch die Windows-Anwendungsschnittstelle vorgesehen ist, ihre eigene Windows-Nachrichtenschleife. Ein Dialogkasten, der durch ein Anwendungsprogramm 120-150 aufgebaut wird, benimmt sich gut, und fügt sich der Windows-Software 110, was es anderen Anwendungsprogrammen 120-150 ermöglicht zu laufen. Die Nachrichtenschleife innerhalb des Dialogkastens des Anwendungsprogramms empfängt jedoch alle Nachrichten der Windows-Software 110 für dieses spezielle Anwendungsprogramm. Folglich wird, wenn der Benutzerschnittstellenteilprozeß eines Anwendungsprogramms einen Dialogkasten auf dem Bildschirm plaziert, dieser Dialogkasten eine Nachricht für das Anwendungsprogramm empfangen, und keine anderen Teilprozesse innerhalb des Anwendungsprogramms können so lange laufen, bis der Dialogkasten entfernt ist. Dies führt zu einer Verkümmerung von anderen Teilprozessen in dem Anwendungsprogramm. Es wird kein Hintergrundverarbeiten durch andere Teilprozesse in dem Anwendungsprogramm durchgeführt solange ein Dialogkasten steuert, was zu einer Verklemmung führen kann.
  • Beispielsweise baut der Benutzerverwalterteilprozeß, wenn der Benutzer die Inhalte eines Bandverzeichnisses drucken möchte, einen Dialogkasten auf, um es dem Benutzer zu ermöglichen, auszuwählen, was zu drucken ist, und um den Druckprozeß zu steuern. Sobald der Benutzer auswählt, welches Verzeichnis zu drucken ist, sendet der Benutzerverwalterteilprozeß eine Anforderung für jedes Element in dem Verzeichnis zu dem Bandverwalterteilprozeß. Der Bandverwalter teilprozeß gibt dann den Namen jeder Datei, die gedruckt werden soll, zurück. Aufgrund der Natur eines Dialogkastens werden die anderen Teilprozesse innerhalb des Anwendungsprogramms so lange nicht laufen, bis der Dialogkasten entfernt ist. Folglich wird der Bandverwalterteilprozeß keinen Zeitschlitz empfangen. Ohne einen Zeitschlitz kann der Bandverwalterteilprozeß kein Hintergrundverarbeiten (wie z. B. ein Lesen der Liste der Dateien von dem Band) durchführen. Da der Dialogkasten Informationen von dem Bandverwalterteilprozeß erfordert, um die Aufgabe desselben abzuschließen, und der Bandverwalterteilprozeß nie laufen kann, da der Dialogkasten die Anwendung steuert, tritt eine Verklemmung auf.
  • Es ist folglich ein System und ein Verfahren zum Vermeiden einer Verklemmung in einem nicht-unterbrechenden Multitaskinganwendungsprogramm erforderlich, das in einem nicht- unterbrechenden Multitaskingbetriebssystem läuft.
  • Gemäß einem Aspekt der vorliegenden Erfindung ist ein Verfahren gemäß Anspruch 1 geschaffen.
  • Gemäß einem weiteren Aspekt der vorliegenden Erfindung ist ein computerbasiertes System gemäß Anspruch 2 geschaffen. Die Anwendungsprogramme werden in einem Betriebssystem betrieben, das ferner eine nicht-unterbrechende Multitaskingumgebung vorsieht. Alle Komponenten der Anwendungsprogramme, die so lange nicht zu einem inneren Zeitschlitzen führen, bis alle Ressourcenerfordernisse derselben erfüllt sind, müssen in separate ausführbare Programme (d. h. getrennte Anwendungsprogramme) getrennt werden. Das Trennen der Komponenten in separate ausführbare Programme ermöglicht eine maximale Hintergrundverarbeitungsleistung und eine maximale Verklemmungsvermeidung. Ein inneres Zeitschlitzen für diese Komponenten wird durch ein äußeres Betriebssystemzeitschlitzen ersetzt, was sicherstellt, daß alle anderen Komponenten innerhalb des Anwendungsprogramms eine Gelegenheit haben, ihre Aufgaben auszuführen.
  • Insbesondere ist ein Protokoll zum Kommunizieren zwischen ausführbaren Programmen definiert, das nicht bewirkt, daß ein ausführbares Programm direkt oder indirekt eine Funktion in einem anderen ausführbaren Programm ausführt. Die Komponente, die nicht das innere Zeitschlitzen freigeben wird, ist in dem eigenen ausführbaren Programm desselben plaziert. Alle anderen Komponenten und ein Stumpf der verstoßenden Komponente sind in einem weiteren ausführbaren Programm (dem ausführbaren Hauptprogramm) plaziert. Eine Kommunikationsverbindung zwischen den zwei ausführbaren Programmen wird dann eingerichtet. Jedesmal, wenn das ausführbare Hauptprogramm bestimmt, daß die verstoßende Komponente an der Reihe ist, um zu laufen, ruft dasselbe den Stumpf für die verstoßende Komponente auf. Der Stumpf ist für das Empfangen und Weiterleiten von Nachrichten zwischen dem ausführbaren Hauptprogramm und der verstoßenden Komponente verantwortlich, die sich nun in dem eigenen separaten ausführbaren Programm desselben befindet.
  • Da die verstoßende Komponente und der Rest des Systems durch das Betriebssystem im Multitasking betrieben werden, wird eine Verklemmung vermieden, da das Betriebssystem dem ausführbaren Hauptprogramm periodisch eine Erlaubnis gibt, zu laufen. Das ausführbare Hauptprogramm kann dann die Eingabe, die durch die verstoßende Komponente erforderlich ist, erzeugen und liefern und die Ressourcenbedürfnisse der verstoßenden Komponente befriedigen.
  • Die obigen und weitere Vorteile dieser Erfindung können unter Bezugnahme auf die folgende Beschreibung eines exemplarischen Ausführungsbeispiels besser verstanden werden, die in Verbindung mit den beigefügten Zeichnungen vorgenommen wird, in denen:
  • Fig. 1 ein Diagramm auf einer hohen Ebene einer Multitaskingumgebung für ein Windows-Betriebssystem zeigt.
  • Fig. 2 ein Beispiel eines nicht-unterbrechenden Multitaskings innerhalb eines einzelnen Anwendungsprogramms zeigt.
  • Fig. 3 das nicht-unterbrechende Multitaskinganwendungsprogramm darstellt, das mit dem Windows-Betriebssystem gekoppelt in Fig. 2 gezeigt ist.
  • Fig. 4 die Lösung des Verklemmungsproblems darstellt, das einem Anwendungsprogramm zugeordnet ist, das in sich selbst auf eine nicht-unterbrechende Art und Weise ein Multitasking durchführt.
  • Fig. 2 zeigt ein Beispiel eines nicht-unterbrechenden Multitaskinganwendungsprogramms 200. Das Anwendungsprogramm 200 umfaßt einen Aufgabenverwalter 210, einen Benutzerschnittstellenverwalterteilprozeß 220, einen Listenverwalterteilprozeß 230, einen Bandverwalterteilprozeß 240 und einen Gerätetreiberverwalterteilprozeß 250. Es sei bemerkt, daß dieselben lediglich exemplarische Teilprozesse sind, und daß andere Teilprozesse eingesetzt oder, wie benötigt, hinzugefügt werden können.
  • Fig. 3 zeigt eine detailliertere Ansicht des nichtunterbrechenden Multitaskinganwendungsprogramms 200. Ein Anwendungsprogramm 200 erhält die Erlaubnis in dem Windows-Betriebssystem 110 zu laufen, wobei der Aufgabenverwalter 210 innerhalb des Anwendungsprogramms 200 die Steuerung übernimmt. Der Aufgabenverwalter 210 gewährt dem Benutzerschnittstellenteilprozeß 220 die Erlaubnis, zu laufen. Der Benutzerschnittstellenteilprozeß 220 errichtet einen Dialogkasten 310. Der Dialogkasten 310 kann Dienste von einer weiteren Aufgabe 230, 240 und 250 anfordern. Der Benutzerschnittstellenteilprozeß 220 wartet (über einen Dialogkasten 310) auf eine Antwort von der anderen Aufgabe, bevor derselbe den Dialogkasten 310 entfernt. Die andere Aufgabe spricht jedoch nie an, da der Aufgabenverwalter 210 nie seine Erlaubnis gibt, zu laufen, da der Aufgabenverwalter 210 darauf wartet, daß der Benutzerschnittstellenteilprozeß 220 seinen Zeitschlitz aufgibt. Der Benutzerschnittstellenteilprozeß 220 wird nie seinen Zeitschlitz aufgeben, da der Dialogkasten 310 so lange nicht entfernt wird, bis derselbe eine Antwort auf seine Anforderung erhält. Das Resultat ist eine Verklemmung.
  • Wie in Fig. 3 gezeigt, fügt sich der Benutzerschnittstellenteilprozeß 220 freiwillig der Windows-Zeitschlitzvorrichtung über die Verbindung 330 (und die zugeordnete Nachrichtenschleife 350). Derselbe gibt jedoch nicht den Zeitschlitz desselben über eine Verbindung 340 (und die zugeordnete Nachrichtenschleife 320) ab, was es dem Aufgabenverwalter 210 ermöglichen würde, die Steuerung der inneren Zeitschlitzplanung wiederzugewinnen.
  • Mit andern Worten kann, da die Anwendung nicht unterbrechend ist und eine Komponente aufweist, die derzeit ausgeführt wird, keine andere Komponente der Anwendung so lange gestartet werden, bis der Anwendungsaufgabenverwalter 210 die Steuerung von der Komponente, die derzeit ausgeführt wird, zurückerhält. Da die Ausführung dieser Komponente so lange nicht angehalten wird, bis dieselbe eine Eingabe von einer anderen Komponente erhält, wird das Anwendungsprogramm 200 verklemmt.
  • Eine allgemeine Lösung des Ressourcenstreits besteht darin, die Anforderungen nach Ressourcen in einer einzigen Komponente zu trennen. Wenn Informationen von einem weiteren Teilprozeß als eine Ressource betrachtet werden, dann kann der Dialogkasten in dem Benutzerschnittstellenteilprozeß 310 mehrere Ressourcen gleichzeitig erfordern (z. B. den Prozessor und Informationen von einem weiteren Teilprozeß).
  • Um das Verklemmungsproblem zu lösen, muß die verstoßende Komponente, in diesem Fall der Benutzerschnittstellenteilprozeß 220, in einem separaten auführbaren Programm (d. h. einem getrennten Anwendungsprogramm) plaziert werden, was es ermöglicht, daß der Rest des Systems (das alle anderen Teilprozesse enthält) die Steuerung von dem Windows-Betriebssystem 110 erhält, wenn sich die verstoßende Komponente der inneren Zeitschlitzvorrichtung nicht fügt. Das Anwendungsprogramm 200 weist gemäß dieser Lösung zwei getrennte ausführbare Programme auf, die jeweils Zeitschlitze des Betriebssystems (Windows) empfangen, was das Potential für eine Verkümmerung und ein Verklemmung innerhalb eines einzigen Anwendungsprogramms lindert. Gemäß dieser Lösung ist jedoch ein Verfahren für eine Zwischenprozeßkommunikation erforderlich, um Informationen zwischen den zwei ausführbaren Programmen zu senden.
  • Die dialogkastenverursachte Verkümmerung (und das Verklemmungsproblem bei dem Windows-Betriebssystem) kann durch Erkennen vermieden werden, daß sich Dialogkästen dem Windows- Betriebssystem 110 fügen, und es ermöglichen, daß andere Anwendungsprogramme laufen. Unter Bezugnahme auf Fig. 4 eliminiert das Brechen des Anwendungsprogramms 200 in zwei Teile (1) einem ausführbaren Benutzerschnittstellenprogramm, das aus dem Benutzerschnittstellenteilprozeß 220 besteht, und (2) den Rest des Systems, der aus allen anderen Teilprozessen besteht, die potentielle Verkümmerung der anderen Teilprozesse. Für den Benutzerschnittstellenteilprozeß 220 ist es nicht länger erforderlich, daß sich derselbe einer inneren Zeitschlitzvorrichtung fügt, um es dem Rest des Systems zu ermöglichen, regelmäßige äußere Windows-Zeitschlitze zu erhalten. Dementsprechend kann ein Hintergrundverarbeiten sogar bei der Anwesenheit eines Dialogkastens auftreten.
  • Bei einem bevorzugten Ausführungsbeispiel wird eine Zwischenprozeß- (d. h. zwischen Anwendungsprogrammen) Kommunikation unter Verwendung eines Dynamischer-Daten-Austausch- (DDE-) Protokolls von Windows durchgeführt, das durch das Microsoft-Windows-3.x-Betriebssystem unterstützt wird. Das DDE-Protokoll (DDE = Dynamic Data Exchange) wird verwendet, um zwischen ausführbaren Programmen zu kommunizieren. Das DDE-Protokoll ermöglicht es einem Anwendungsprogramm ferner, Daten in einer geteilten Speicherposition zu plazieren, und dann anderen Anwendungsprogrammen zu signalisieren, daß Daten verfügbar sind. Für eine detailliertere Beschreibung des DDE-Protokolls siehe Microsoft Windows 3.1 Guide to Programming, programmers reference library, Microsoft Press, Kapitel 22, 1987-1992.
  • Fig. 4 stellt die vorliegende Erfindung dar. Das heißt der Benutzerschnittstellenteilprozeß 220 wird in seinem eigenen Anwendungsprogramm 410 plaziert. Alle anderen Teilprozesse 220-250 werden in ihrem eigenen Anwendungsprogramm 420 plaziert. Eine DDE-Verbindung 430 verbindet die zwei Anwendungsprogramme 410 und 420. Das Anwendungsprogramm 420 umfaßt ferner einen Benutzerschnittstellenstumpf 440. Der Benutzerschnittstellenstumpf ist ein Softwarestück, das für das Anwendungsprogramm 420 wie der Benutzerschnittstellenteilprozeß 220 "aussieht", jedoch lediglich zum Erhalten und Weiterleiten von Nachrichten zwischen dem Benutzerschnittstellenteilprozeß 220 in dem nun getrennten Anwendungsprogramm 410 und dem Aufgabenverwalter 210 verantwortlich ist.
  • Das vorhergehende verklemmungsverursachende Szenario funktioniert nun wie folgt. Der Benutzer möchte die Inhalte eines Verzeichnisses auf einem Band drucken. Die separate Benutzerschnittstellenanwendung 410 baut einen Dialogkasten auf, um es dem Benutzer zu ermöglichen, auszuwählen, was zu drucken ist, und um den Druckprozeß zu steuern. Sobald der Benutzer ausgewählt hat, welches Verzeichnis zu drucken ist, sendet der Dialogkasten unter Verwendung des DDE-Protokolls und der Kommunikationsverbindung 430 eine Anforderung für jedes Element in dem Verzeichnis zu dem Bandverwalterteilprozeß 240 in dem Rest des separaten Anwendungsprogramms des Systems 420. Der Dialogkasten 310 fügt sich dem Windows-Betriebssystem 110, und der Rest des Anwendungsprogramms des Systems erhält die Steuerung von dem Windows-Betriebssystem 110. Der Bandverwalterteilprozeß 240 erhält die Nachricht von dem Benutzerverwalterstumpf 440 und gibt den Namen einer Datei, die gedruckt werden soll, zurück.
  • Der Rest des Anwendungsprogramms des Systems fügt sich schließlich dem Windows-Betriebssystem 110, und die Benutzerschnittstellenanwendung 410 gewinnt schließlich die Steuerung von dem Windows-Betriebssystem 110 zurück. Die Benutzerschnittstellenanwendung 410 gewinnt die Nachricht von dem Bandverwalter über die DDE-Verbindung 430 wieder und sendet den Namen der Datei, die gedruckt werden soll, zu dem Drucker (nicht gezeigt). Der Zyklus wird so lange wiederholt, bis alle angeforderten Dateinamen gedruckt wurden. Eine Verklemmung wurde vermieden.
  • Das Problem bei Verklemmungen ist bei der Windows-Umgebung nicht einzigartig. Folglich sollte die vorliegende Erfindung nicht auf fensterbasierte Anwendungen begrenzt sein. Beispielsweise kann jede beliebige Betriebssystemumgebung, die auf eine nicht-unterbrechende multitaskingmäßige Art und Weise arbeitet, aus den Lehren der vorliegenden Erfindung Vorteile ziehen.
  • Obwohl die Erfindung unter Bezugnahme auf die bevorzugten Ausführungsbeispiele derselben besonders gezeigt und beschrieben ist, ist es für Fachleute offensichtlich, daß verschiedene Änderungen der Form und von Details an derselben vorgenommen werden können, ohne von dem Schutzbereich der Erfindung, wie beansprucht, abzuweichen.

Claims (5)

1. Ein Verfahren zum Vermeiden einer Verklemmung in einem nicht-unterbrechenden Multitaskinganwendungsprogramm (200) zur Verwendung bei einem Betriebssystem (110), das ebenfalls nicht unterbrechend und multitaskingfähig ist, wobei eine Verklemmung auftritt, wenn sich ein erster Teilprozeß (220) in dem Anwendungsprogramm (200) nicht dem inneren Zeitschlitzen fügt, bevor eine angeforderte Ressource von einem zweiten Teilprozeß (230-250) innerhalb des Anwendungsprogramms (200), der abhängig von dem ersten Teilprozeß ist, erhalten wird, wobei das Verfahren folgende Schritte aufweist:
(1) Plazieren eines Teilprozesses (220) eines Hauptanwendungsprogramms (420), der Ressourcen von anderen Teilprozessen (210, 230-250) innerhalb des Hauptanwendungsprogramms (420) erfordert, und der sich nicht dem inneren Zeitschlitzen innerhalb des Hauptanwendungsprogramms (420) fügt, in einem separaten Anwendungsprogramm (410), wobei das separate Anwendungsprogramm (410) über eine äußere Betriebssystemzeitschlitzvorrichtung aktiviert oder deaktiviert werden kann; und
(2) Verbinden des separaten Anwendungsprogramms (410) mit dem Hauptanwendungsprogramm (420) über eine Kommunikationsverbindung (430), wobei das separate Anwendungsprogramm (410) und das Hauptanwendungsprogramm (420) Daten austauschen;
wobei das Hauptanwendungsprogramm (420) und das separate Anwendungsprogramm (410) sich dem äußeren Zeitschlitzen fügen, um einen Erhalt der Anforderung durch den ersten Teilprozeß zu ermöglichen.
2. Ein computerbasiertes System, das eine Verklemmung in einem nicht-unterbrechenden Multitaskinganwendungsprogramm (200) vermeidet, das in einem Betriebssystem (110) betreibbar ist, das ebenfalls nichtunterbrechend und multitaskingfähig ist, wobei das computerbasierte System folgende Merkmale aufweist:
(a) eine Einrichtung zum Vorsehen eines ersten Anwendungsprogramms (420), das eine Mehrzahl von Teilprozessen (210, 230-250) aufweist, wobei jeder der Mehrzahl von Teilprozessen (210, 230- 250) keine Ressourcen von einem anderen anfordert, oder jeder der Mehrzahl von Teilprozessen (210, 230-250) Ressourcen von einem anderen anfordert, sich jedoch dem inneren Zeitschlitzen innerhalb der ersten Anwendungsprogrammeinrichtung (420) fügt;
(b) eine Einrichtung zum Vorsehen eines zweiten Anwendungsprogramms (410), das mindestens einen Teilprozeß (220) aufweist, der Ressourcen von einem der Mehrzahl von Teilprozessen (210, 230- 250) innerhalb der ersten Anwendungsprogrammeinrichtung (420) anfordert, wobei die zweite Anwendungsprogrammeinrichtung (410) über eine äußere Betriebssystemzeitschlitzvorrichtung aktiviert oder deaktiviert werden kann; und
(c) eine Kommunikationsverbindung (430), die betreibbar ist, um die erste Anwendungsprogrammeinrichtung und die zweite Anwendungsprogrammeinrichtung miteinander zu verbinden, um zu bewirken, daß das erste Anwendungsprogramm (420) und das zweite Anwendungsprogramm (410) miteinander über die Kommunikationsverbindung (430) kommunizieren;
wobei die erste Anwendungsprogrammeinrichtung und die zweite Anwendungsprogrammeinrichtung betreibbar sind, um sich äußeren Zeitschlitzen zu fügen, um einen Erhalt einer Anforderung durch einen Teilprozeß zu ermöglichen.
3. Das System gemäß Anspruch 2, bei dem die Kommunikationsverbindung (430) einen geteilten Speicher und eine Signaleinrichtung zum Signalisieren eines weiteren Anwendungsprogramms aufweist, wenn Daten zu dem geteilten Speicher übertragen wurden.
4. Das System gemäß Anspruch 2, bei dem das erste Anwendungsprogramm (420) ferner einen Schnittstellenstumpf (440) aufweist, der für das Erhalten und Weiterleiten von Nachrichten zwischen dem ersten Anwendungsprogramm (420) und dem zweiten Anwendungsprogramm (410) verantwortlich ist.
5. Das System gemäß Anspruch 2, bei dem das Betriebssystem (110) ein nicht-unterbrechendes Multitasking-Windows-Betriebssystem ist.
DE69418082T 1993-03-02 1994-02-28 System und Verfahren zur Vermeidung von Verklemmung in einem Rechner Expired - Fee Related DE69418082T2 (de)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US2500793A 1993-03-02 1993-03-02

Publications (2)

Publication Number Publication Date
DE69418082D1 DE69418082D1 (de) 1999-06-02
DE69418082T2 true DE69418082T2 (de) 1999-08-19

Family

ID=21823537

Family Applications (1)

Application Number Title Priority Date Filing Date
DE69418082T Expired - Fee Related DE69418082T2 (de) 1993-03-02 1994-02-28 System und Verfahren zur Vermeidung von Verklemmung in einem Rechner

Country Status (4)

Country Link
US (1) US6507861B1 (de)
EP (1) EP0614140B1 (de)
JP (1) JP3717951B2 (de)
DE (1) DE69418082T2 (de)

Families Citing this family (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5892900A (en) * 1996-08-30 1999-04-06 Intertrust Technologies Corp. Systems and methods for secure transaction management and electronic rights protection
US8639625B1 (en) 1995-02-13 2014-01-28 Intertrust Technologies Corporation Systems and methods for secure transaction management and electronic rights protection
US7124302B2 (en) * 1995-02-13 2006-10-17 Intertrust Technologies Corp. Systems and methods for secure transaction management and electronic rights protection
US7140015B1 (en) * 1999-09-29 2006-11-21 Network Appliance, Inc. Microkernel for real time applications
US6961934B2 (en) * 2000-05-08 2005-11-01 Microtune (San Diego), Inc. Portable thread environment
US6954933B2 (en) * 2000-10-30 2005-10-11 Microsoft Corporation Method and apparatus for providing and integrating high-performance message queues in a user interface environment
US20030163595A1 (en) * 2002-02-26 2003-08-28 John Ta Task manager - method of forwarding messages among task blocks
JP2005038076A (ja) * 2003-07-17 2005-02-10 Fujitsu Ltd プログラムテスト用会話型スタブ装置およびスタブプログラム記憶媒体
US7278057B2 (en) * 2003-07-31 2007-10-02 International Business Machines Corporation Automated hang detection in Java thread dumps
US20050289505A1 (en) * 2004-06-25 2005-12-29 Williams Stanley N Method and system for improving performance and scalability of applications that utilize a flow-based-programming methodology
US9053072B2 (en) * 2007-01-25 2015-06-09 Hewlett-Packard Development Company, L.P. End node transactions at threshold-partial fullness of storage space
US9123106B2 (en) * 2012-12-13 2015-09-01 Microsoft Technology Licensing, Llc Watermarking screen capture content
US10147158B2 (en) 2014-12-13 2018-12-04 Microsoft Technology Licensing, Llc Frame invalidation control with causality attribution

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5301326A (en) * 1991-09-24 1994-04-05 Microsoft Corporation Method and system for controlling the execution of an application program

Also Published As

Publication number Publication date
EP0614140A2 (de) 1994-09-07
DE69418082D1 (de) 1999-06-02
JPH06259266A (ja) 1994-09-16
EP0614140B1 (de) 1999-04-28
JP3717951B2 (ja) 2005-11-16
EP0614140A3 (de) 1995-04-26
US6507861B1 (en) 2003-01-14

Similar Documents

Publication Publication Date Title
DE3879947T2 (de) Verteilte dateiserver-architektur.
DE69429686T2 (de) Transaktionsverwaltung in objektorientiertem System
DE69422743T2 (de) Endlosschleife-Erkennungsgerät
DE68919975T2 (de) Verfahren für die simultane Ablaufverwaltung eines verteilten Anwenderprogramms in einem Hostrechner und in einer grossen Anzahl von intelligenten Benutzerstationen in einem SNA-Netzwerk.
DE69519904T2 (de) Verfahren und Vorrichtung zur Bereitstellung einer zusammenhängenden Navigation in historischen Daten
DE69420803T2 (de) Ereignis-qualifikation und -benachrichtigung.
DE69130620T2 (de) Datenübertragungsadapter und Verfahren zu dessen Betrieb
DE69936627T2 (de) In einer warteschlange angeordnete aufrufe von prozeduren für verteilte auf komponenten basierte anwendungen
DE69428972T2 (de) System und Verfahren für die Eigentumerverwaltung eines freigegebenen Synchronisationsmechanismus
DE69423853T2 (de) Ein-/Ausgabeobjekte in einem Betriebssystemkern
DE69028373T2 (de) Mehrstufiges Verriegelungssystem und -verfahren
DE69626377T2 (de) Vorrichtung, Verfahren, Speichermedium und computerlesbare Module zur raumeffizienten Objektverriegelung
DE69032685T2 (de) Verfahren und system mit einem cache für offene dateien in einem netzwerkrechnersystem
DE69629626T2 (de) Verfahren und Gerät zur Vermeidung von Verklemmungen durch Serialisierung des Multithreaded-Zugriffes auf unsichere Betriebsmittel
DE68925474T2 (de) Verriegelungsrechnersysteme
DE69418082T2 (de) System und Verfahren zur Vermeidung von Verklemmung in einem Rechner
DE69129526T2 (de) Multiprozessorsystem und Verfahren zur Überwachung der Ausführung von Tasks in einem Multiprozesorsystem
DE3852997T2 (de) Rechnersystem und Verfahren für die Überwachung von nichtstationären Datenstrukturen in einem Rechnersystem.
DE69622832T2 (de) Vorrichtung und verfahren für kooperative unterbrechungen in einer preemptiven prozessablauffolgeplanungsumgebung
DE4033336A1 (de) Verfahren zum erzeugen einer ausfallmeldung und mechanismus fuer ausfallmeldung
DE69734432T2 (de) Verfahren und Vorrichtung zur Absendung von Clientverfahrenanrufen in einem Server Rechnersystem
DE3786069T2 (de) Virtueller Programmablauf auf einem Mehrfachverarbeitungssystem.
DE69515355T2 (de) Mehrfacharbitrierungsschema
DE69225671T2 (de) Semaphormechanismus für Datenverarbeitungssystem
DE68924810T2 (de) Zeitgeberkanal für die Verwendung in einem Mehrkanal-Zeitsystem.

Legal Events

Date Code Title Description
8364 No opposition during term of opposition
8327 Change in the person/name/address of the patent owner

Owner name: HEWLETT-PACKARD CO. (N.D.GES.D.STAATES DELAWARE),

8327 Change in the person/name/address of the patent owner

Owner name: HEWLETT-PACKARD DEVELOPMENT CO., L.P., HOUSTON, TE

8339 Ceased/non-payment of the annual fee