[go: up one dir, main page]

DE69129443T2 - Verfahren zum Betrieb zeitkritischer Prozesse in einer Fenstersystemumgebung - Google Patents

Verfahren zum Betrieb zeitkritischer Prozesse in einer Fenstersystemumgebung

Info

Publication number
DE69129443T2
DE69129443T2 DE69129443T DE69129443T DE69129443T2 DE 69129443 T2 DE69129443 T2 DE 69129443T2 DE 69129443 T DE69129443 T DE 69129443T DE 69129443 T DE69129443 T DE 69129443T DE 69129443 T2 DE69129443 T2 DE 69129443T2
Authority
DE
Germany
Prior art keywords
procedures
processes
operating system
window
shared memory
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
DE69129443T
Other languages
English (en)
Other versions
DE69129443D1 (de
Inventor
Edward A Dean
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.)
Sun Microsystems Inc
Original Assignee
Sun Microsystems Inc
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 Sun Microsystems Inc filed Critical Sun Microsystems Inc
Application granted granted Critical
Publication of DE69129443D1 publication Critical patent/DE69129443D1/de
Publication of DE69129443T2 publication Critical patent/DE69129443T2/de
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • 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
    • 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/44Arrangements for executing specific programs
    • G06F9/451Execution arrangements for user interfaces
    • 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/54Interprogram communication
    • G06F9/544Buffers; Shared memory; Pipes
    • 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/54Interprogram communication
    • G06F9/546Message passing systems or structures, e.g. queues

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Debugging And Monitoring (AREA)
  • Digital Computer Display Output (AREA)
  • Multi Processors (AREA)

Description

    1. GEBIET DER ERFINDUNG:
  • Die vorliegende Erfindung bezieht sich auf die Ausführung von zeitkritischen Prozessen in einer Computerumgebung. Insbesondere betrifft die vorliegende Erfindung ein Verfahren und eine Einrichtung zum Ausführen zeitkritischer Prozesse in einer Fenstersystemumgebung.
  • 2. HINTERGRUND IM STAND DER TECHNIK:
  • In der Computerindustrie ist es weitgehend üblich, zum Anzeigen und Steuern von Benutzereingaben und -ausgaben eines Anwendungsprogramms ein Fenstersystem zu benutzen, wie beispielsweise die Fenstersysteme SunViewTM oder NeWSTM XVIEWTM (OPEN WINDOWSTM) (wobei SunViewTM, XVIEWTM, OPEN WINDOWSTM und NeWSTM Handelsbezeichnungen der Firma Sun Microsystems, Inc. in Mountain View, Kalifornien sind und von dieser hergestellt werden). Die Fenstersysteme stellen die Mittel zur Verfügung, um sichtbare Benutzeroberflächen, wie beispielsweise Menüs und andere graphische Objekte, zu erzeugen. Unter Verwendung fensterartiger Anzeigen können mehrere Anwendungsprogramme gleichzeitig gezeigt und ausgeführt werden. Beispielsweise kann in einem ersten Fenster ein Buchhaltungsprogramm betrieben werden, während in einem zweiten Fenster ein Zeichenprogramm abläuft. Der Benutzer des Computers hat die Möglichkeit, von Fenster zu Fenster umzuschalten, um die separaten Programme zu betreiben, indem er den Cursor von einem Fenster zu einem anderen bewegt. Darüber hinaus steuert das Fenstersystem die angezeigten Informationen, die über das Fenstersystem ausgeführten Prozesse und die Benutzereingaben in verschiedene Fenster und ausgeführte Prozesse.
  • Das Fenstersystem hält die vollständige Kontrolle über die Programme aufrecht, welche über das Fenstersystem ausge führt werden (im folgenden als "Anwendungsprogramme" bezeichnet). Beispielsweise steuert das Fenstersystem den Zugriff auf Ausgabe-Hardware-Einrichtungen, wie beispielsweise Videoanzeigen, Drucker usw. Die Anwendungsprogramme hängen von dem Fenstersystem ab, um den Anwendungsprogrammen die Benutzerfensterereignisse zu übermitteln. Darüber hinaus steuert das Fenstersystem die Anwendungsprogramme derart, daß unterschiedliche Anwendungsprogramme in einer Multi-Tasking-Umgebung betrieben werden können. Zusätzlich steuert das Fenstersystem, welche Prozesse der Anwendungsprogramme auf die CPU zugreifen können sowie die Priorität des Zugriffs.
  • Typischerweise wird bei einer Multi-Tasking-Computerumgebung jedem gerade ausgeführten Prozeß eine "Zeitscheibe" (d. h. eine vorgegebene Zeitdauer) zum Benutzer der CPU zugewiesen. Die Prozesse werden während ihrer jeweiligen Zeitscheiben ausgeführt, wobei sie sich die CPU teilen. Wenn ein Prozeß während seiner Zeitscheibe die Ausführung nicht abgeschlossen hat, "geht" der Prozeß "schlafen" (d. h., der Prozeß wird ausgesetzt) bis zu seiner nächsten Zeitscheibe. Darüber hinaus wird, wenn ein Benutzerereignis als blockierende Operation angesehen wird, wie es beispielsweise beim Lesen von Daten von einer Platte der Fall ist, der zugehörige Prozeß ausgesetzt, bis die Operation abgeschlossen ist.
  • In einer Fenstersystemumgebung hat das Fenstersystem die Möglichkeit, in die Zuweisung von Zeitscheiben einzugreifen, und kann folglich ein Aussetzen der Prozesse bewirken. Folglich haben Prozesse von Anwendungsprogrammen, welche über das Fenstersystem betrieben werden, keinen garantierten Zugriff auf die CPU innerhalb einer vorgegebenen Zeitdauer, da die Prozesse von dem Fenstersystem für eine unbestimmte Zeit ausgesetzt werden können.
  • Beispielsweise kann der Fall eintreten, daß das Fenstersystem die CPU-Zeitscheiben-Prozeß-Zuweisung modifizieren muß, um allgemeine Fenstersystemoperationen, wie beispielsweise das Bewegen eines Fensters oder das Anzeigen von Gra phik oder Text, auszuführen. Grundsätzlich ist dies kein Problem für einen Anwendungsprozeß, der über das Fenstersystem ausgeführt wird. Insbesondere bewirkt die Aussetzung des Anwendungsprozesses keinerlei Probleme mit Ausnahme einer geringen Verzögerung bei der Ausführung des Prozesses. Wenn ein Benutzer beispielsweise ein unbekanntes Kommando eingibt, so zeigt das Fenstersystem eine Fehlernachricht an und fordert den Benutzer auf, "OK" oder ein ähnliches Bestätigungskommando einzugeben, um fortzufahren. Während der Fensterprozeß auf die Antwort des Benutzers wartet, werden alle anderen Fensterprozesse, die gegenwärtig unter dem Fenstersystem ausgeführt werden, eingefroren oder ausgesetzt. [Für Informationen über Fenstersystem siehe beispielsweise Gosling, Rosenthal, Arden, The NeWS Book (1989), Seiten 23- 52].
  • Das Aussetzen von Prozessen durch das Fenstersystem aufgrund von blockierenden Operationen o. dgl. schafft ein Problem bei zeitkritischen Prozessen von Anwendungsprogrammen, die über das Fenstersystem ausgeführt werden. Diese zeitkritischen Prozesse erfordern es, daß Antworten und Aktionen innerhalb spezifischer Zeitrahmen ausgeführt werden. Wenn beispielsweise ein Anwendungsprogramm Daten über ein Modem empfängt, dann muß das Modem die zu sendenden Daten bei einer bestimmten Baud-Rate empfangen, was eine bestimmte Zeitabhängigkeit vorgibt. Wenn das zeitkritische Anwendungsprogramm von dem Fenstersystem unterbrochen wird, dann kann das Modem die Daten nicht bei der erforderlichen Baud-Rate empfangen, und das Modem kann nicht richtig arbeiten. Insbesondere dann, wenn das Modem mit einem Unix®-Basissystem (Unix ist ein registriertes Warenzeichen von AT&T) verbunden ist, werden, während das zeitkritische Anwendungsprogramm zum Empfangen von Daten gerade auf das Modem zugreift und das zeitkritische Anwendungsprogramm von dem Fenstersystem ausgesetzt wird, die über das Modem empfangenen Daten in einen Puffer gehen, der in dem Kernel des Betriebssystems angeordnet ist. Das Betriebssystem versucht dann, die aus dem Modem empfangenen Informationen zu dem Anwendungsprogramm zu übertragen. Wenn jedoch das Anwendungsprogramm ausgesetzt ist, können die Daten nicht übertragen werden, und die Daten verbleiben in dem Puffer. Wenn die Aussetzung andauert, wird der Puffer schließlich voll und es gehen Daten infolge eines seriellen Überlaufs verloren. [Für weitere Informationen über das Unix-System und das Unix-Kernel siehe: Bach, The Design of the Unix Operating System (1986)].
  • Dieses Problem kann vermieden werden, indem das Fenstersystem derart modifiziert wird, daß es zeitkritische Prozesse nicht aussetzt. Die meisten Fenstersysteme sind jedoch standardisiert, so daß das Fenstersystem nicht geändert werden kann, und sämtliche Anwendungsprogramme, die für eine Zusammenarbeit mit dem Fenstersystem geschrieben worden sind, müssen sich an die fest vorgegebene Fenstersystemschnittstelle halten.
  • Verfahren zum parallelen Ausführen mehrerer Computerprozesse unter Verwendung von Zwischenprozeß-Kommunikationseinrichtungen zum Koordinieren und zur Kommunikation sind im Stand der Technik bekannt. (Siehe beispielsweise Ripps. Divid. L.; "The Multitasking Mindset Meets the Operating System", Electrical Design News, v. 35 n.20, 1. Oktober 1990, Newton, MA, U. S.) Prozesse werden von anderen Prozessen erzeugt, welche die anfängliche Priorität des erzeugten Prozesses steuern. Anschließend können ablaufende Prozesse ihre eigenen Prioritäten oder die Prioritäten anderer Prozesse modifizieren. Fenstersysteme, welche unter einem anderen Betriebssystem ausgeführt werden, sind Prozesse, welche Anwendungsprogramme ausführen, indem sie Prozesse zum Ausführen der Anwendungsprogramme erzeugen.
  • Fenstersysteme dieser Art können zeitkritische Prozesse enthaltende Anwendungsprogramme veranlassen, fehlzugehen, weil das Fenstersystem die Ausführung eines Anwendungsprozesses über eine unbestimmte Zeitdauer blockieren kann. Die beanspruchte Erfindung soll diesen Nachteil beseitigen. Sie schafft ein Verfahren zum Ausführen eines Anwendungspro gramms derart, daß die zeitkritischen Prozesse nicht von dem Fenstersystem blockiert werden können.
  • ZUSAMMENFASSENDE DARSTELLUNG DER ERFINDUNG
  • Es ist eine Aufgabe der vorliegenden Erfindung, es den unter einem Fenstersystem ausgeführten zeitkritischen Anwendungsprogrammen zu gestatten, sich die CPU zu teilen, und während ihrer jeweiligen Zeitscheiben ausgeführt zu werden, ohne das Fenstersystem zu modifizieren und ohne die Fenstersystemschnittstelle zu verletzen.
  • Es ist außerdem eine Aufgabe der vorliegenden Erfindung, es den zeitkritischen Anwendungsprogrammen, welche blockierende Operationen enthalten, zu gestatten, die CPU in einer zeitlich abgestimmten Weise zu verwenden, ohne durch die blockierenden Operationen blockiert zu werden.
  • Die vorliegende Erfindung ist in den Ansprüchen 1 und 13 angegeben, wobei bevorzugte Merkmale in den abhängigen Ansprüchen ausgeführt sind.
  • Das zeitkritische Anwendungsprogramm wird funktionell in zumindest zwei Prozesse aufgeteilt. Der erste Prozeß enthält sämtliche der CPU-Zeitscheiben-empfindlichen oder zeitkritischen Prozeduren. Dieser Prozeß arbeitet unabhängig von der Fenstersystemschnittstelle und kommuniziert direkt mit dem Betriebssystem. Der zweite Prozeß implementiert sämtliche verbleibenden Prozeduren, einschließlich blockierender Operationen und derjenigen Prozeduren, welche Benutzereingaben und -ausgaben über das Fenstersystem erfordern, aber keine zeitkritischen Prozeduren sind. Dieser Prozeß kommuniziert typischerweise mit der Fenstersystem-Schnittstelle und wird über diese betrieben. Über den Zwischenprozeß-Kommunikationsmechanismus, wie beispielsweise einen geteilten Speicher, tauschen die beiden oder mehreren Prozesse Daten aus und synchronisieren sie ihre Ausführung derart, daß die zwei oder mehreren Prozesse dem Benutzer als ein einziges Programm erscheinen und als solches arbeiten.
  • KURZBESCHREIBUNG DER ZEICHNUNGEN
  • Die Aufgaben, Merkmale und Vorteile der vorliegenden Erfindung werden aus der folgenden Beschreibung der Erfindung klar, in welcher:
  • Fig. 1 eine Blockdarstellung eines typischen Computersystems zur Ausführung eines zeitkritischen Programms gemäß einem bevorzugten Ausführungsbeispiel der vorliegenden Erfindung ist.
  • Fig. 2 ist eine Blockdarstellung eines veranschaulichenden server-basierten Fenstersystems.
  • Fig. 3 ist eine Blockdarstellung eines Verfahrens zum Betreiben zeitkritischer Programme in einer Fenstersystemumgebung.
  • Fig. 4 ist eine Blockdarstellung eines Prozesses, der mit einem anderen Prozeß über Nachrichten kommuniziert.
  • Fig. 5 ist ein Ablaufdiagramm zum Veranschaulichen der Zwischenprozeß-Kommunikation unter Verwendung von Sockets.
  • Fig. 6 ist ein Ablaufdiagramm zum Veranschaulichen eines geteilten Speichers zwischen den Prozessen.
  • Fig. 7 ist ein Ablaufdiagramm zum Veranschaulichen einer Zugriffssteuerung von Prozessen unter Verwendung von Semaphoren.
  • BEZEICHNUNGEN UND TERMINOLOGIE
  • Die folgende detaillierte Beschreibung wird weitgehend anhand von Algorithmen und symbolischen Darstellungen von Operationen an Datenbits innerhalb eines Computerspeichers präsentiert. Diese algorithmischen Beschreibungen und Darstellungen sind diejenigen Mittel, die von den Fachleuten auf dem Gebiet der Datenverarbeitung verwendet werden, um anderen Fachleuten das Wesen ihrer Arbeit am effektivsten zu übermitteln.
  • Unter einem Algorithmus wird hier und im allgemeinen eine in sich konsistente Sequenz von Schritten verstanden, die zu einem gewünschten Ergebnis führen. Diese Schritte sind solche, die physikalische Manipulationen physikalischer Größen erfordern. Üblicherweise, jedoch nicht notwendigerweise, nehmen diese Größen die Form elektrischer oder magnetischer Signale an, die gespeichert, übertragen, kombiniert, verglichen oder auf andere Weise manipuliert werden können. Gegenwärtig erweist es sich, hauptsächlich aus Gründen der allgemeinen Verwendung, als geeignet, auf diese Signale als Bits, Werte, Elemente, Symbole, Zeichen, Terme, Nummern o. dgl. bezug zu nehmen. Es sei jedoch daran erinnert, daß. all diese und ähnliche Bezeichnungen den geeigneten physikalischen Größen zugeordnet sein sollen und somit mehr oder weniger geeignete Bezeichnungen für diese Größen sind.
  • Außerdem werden die ausgeführten Manipulationen oftmals mit Begriffen, wie Addieren oder Vergleichen, bezeichnet, welche üblicherweise den von einem menschlichen Bediener ausgeführten geistigen Operationen zugeordnet werden. Bei keiner der hier beschriebenen Operationen, welche Teil der vorliegenden Erfindung bilden, sind jedoch solche Fähigkeiten eines menschlichen Bedieners erforderlich; in den meisten Fällen sind sie auch nicht erwünscht. Im vorliegenden Fall sind die Operationen Maschinenoperationen. Nützliche Maschinen zum Ausführen der Operationen der vorliegenden Erfindung umfassen digitale Mehrzweckcomputer oder ähnliche Einrichtungen. In sämtlichen Fällen sei jedoch an den Unterschied zwischen dem Verfahren zum Betreiben eines Computers und dem Verfahren der Berechnung selbst erinnert. Die vorliegende Erfindung bezieht sich auf Verfahrensschritte zum Betreiben eines Computers und zur Verarbeitung elektrischer oder anderer physikalischer Signale, um andere gewünschte physikalische Signale zu erzeugen.
  • Die vorliegende Erfindung bezieht sich darüber hinaus auf Einrichtungen zum Ausführen dieser Operationen. Eine solche Einrichtung kann speziell für die geforderten Zwecke konstruiert sein oder sie kann ein Mehrzweckcomputer sein, der von einem in dem Computer gespeicherten Computerprogramm selektiv aktiviert oder umkonfiguriert wird. Die hier präsentierten Algorithmen beziehen sich als solche nicht auf irgendeinen speziellen Computer oder eine spezielle andere Einrichtung. Insbesondere können verschiedene Mehrzweckmaschinen mit Programmen gemäß den hier gegebenen Lehren verwendet werden oder es kann sich als geeigneter herausstellen, spezialisierte Einrichtungen zum Ausführen der erforderlichen Verfahrensschritte zu konstruieren. Die erforderliche Struktur für eine Vielzahl dieser Maschinen wird aus der im folgenden gegebenen Beschreibung deutlich.
  • DETAILLIERTE BESCHREIBUNG DER ERFINDUNG ALLGEMEINE SYSTEMKONFIGURATION
  • Fig. 1 zeigt ein typisches erfindungsgemäßes computerbasiertes System zum Ausführen zeitkritischer Prozesse in einer Fenstersystemumgebung. Es ist ein Computer 101 gezeigt, welcher drei Hauptkomponenten aufweist. Die erste ist eine Eingabe/Ausgabe(I/O)-Schaltung 102, welche verwendet wird, um Informationen in geeignet strukturierter Form mit anderen Teilen des Computers 101 auszutauschen. Als Teil des Computers 101 sind außerdem die zentrale Verarbeitungseinheit (CPU) 103 und ein Speicher 104 gezeigt. Die letztgenannten beiden Elemente sind diejenigen, die üblicherweise in den meisten Mehrzweckcomputern und dem überwiegenden Teil spezieller Computer zu finden sind. Die verschiedenen innerhalb des Computers 101 enthaltenen Elemente sind stellvertretend für diese breite Kategorie von Datenverarbeitungseinrichtungen genannt. Spezielle Beispiele geeigneter Datenverarbeitungseinrichtungen, die die Rolle des Computers 101 übernehmen können, umfassen Maschinen, die von Sun Microsystems, Inc. in Mountain View, Kalifornien hergestellt sind. Andere Computer mit ähnlichen Fähigkeiten können selbstverständlich auf einfache Weise an die Ausführung der hier beschriebenen Funktionen angepaßt werden.
  • Ferner ist in Fig. 1 eine Eingabeeinrichtung 105 gezeigt, die in typischer Ausführung als Tastatur dargestellt ist. Es ist jedoch klar, daß die Eingabeeinrichtung auch ein Kartenleser, ein Magnet- oder Papierband-Leser oder eine andere bekannte Eingabeeinrichtung (einschließlich eines weiteren Computers selbstverständlich) sein kann. Eine Massenspeichereinrichtung 106 ist mit der I/O-Schaltung 102 gekoppelt und stellt eine zusätzliche Speicherfähigkeit für den Computer 101 zur Verfügung. Der Massenspeicher kann andere Programme o. dgl. enthalten und die Form eines Magnetband- oder Papierbandlesers oder einer anderen bekannten Einrichtung annehmen. Es ist klar, daß die in dem Massenspeicher 106 zurückgehaltenen Daten in geeigneten Fällen in einer standardisierten Weise in den Computer 101 als Teil des Speichers 104 aufgenommen werden können.
  • Außerdem ist ein Anzeigemonitor 107 dargestellt, welcher zum Anzeigen von Nachrichten oder anderen Kommunikationen an den Benutzer verwendet wird. Ein solcher Anzeigemonitor kann die Form einer beliebigen von verschiedenen bekannten Ausführungsformen von Kathodenstrahlröhren-, Plasma- und LCD- Anzeigen annehmen. Eine Cursorsteuerung 108 wird verwendet, um Befehlsmodi auszuwählen und Eingabedaten zu editieren und schafft im allgemeinen eine bequemere Einrichtung zum Eingeben von Informationen in das System.
  • PROZESSBESCHREIBUNG
  • Die folgende Beschreibung des bevorzugten Ausführungsbeispiels der vorliegenden Erfindung beschreibt ein Verfahren zum Betreiben zeitkritischer Programme in einer Fenstersystemumgebung. Speziell wird die Implementierung des Verfahrens zum Betreiben zeitkritischer Programme gemäß der vorliegenden Erfindung unter Bezugnahme auf eine verteilte Fenstersystemumgebung (im folgenden auch als "Server-basiertes System" bezeichnet) beschrieben. Für den Fachmann wird jedoch aus dem Lesen der folgenden detaillierten Beschreibung klar, daß das Verfahren zum Betreiben zeitkritischer Prozesse auf unterschiedliche Computersysteme mit unterschiedlichen Computerarchitekturen und unterschiedlichen Fenstersystemen angewendet werden kann. Darüber hinaus erör tert die folgende Beschreibung ein Verfahren zum Betreiben zeitkritischer Programme in einer Fenstersystemumgebung, die in dem Unix-Betriebssystem arbeitet. Jedoch ist das System nicht darauf beschränkt und kann unter irgendeinem Multi- Tasking- oder Multi-Prozessor-Betriebssystem implementiert werden.
  • Grundsätzlich unterteilt ein Fenstersystem den Bildschirm in mehrere einander überlappende oder nichtüberlappende sichtbare Bereiche, die als Fenster bezeichnet werden. In jedem Fenster kann ein unterschiedliches Anwendungsprogramm ausgeführt werden. Ein Fenster ist ein sichtbarer Teil des Bildschirms, welcher zum Anzeigen von Informationen im Bezug auf das in dem Fenster betriebene Anwendungsprogramm verwendet wird und schafft für den Benutzer ein Mittel, damit dieser mit dem innerhalb des speziellen Fensters ausgeführten Anwendungsprogramm in Interaktion treten kann. Das Fenstersystem dient als eine Schnittstelle zwischen dem Anwendungsprogramm und dem Betriebssystem für die meisten Operationen, insbesondere für Benutzereingaben und -ausgaben, wobei es die Zugriffe des Anwendungsprogramms auf das Betriebssystem steuert. Darüber hinaus stellt das Fenstersystem den Anwendungsprogrammen Prozeduren zur Verfügung, um die Größe und Anordnung der Fenster zu spezifizieren, um auf dem Fenster zu zeichnen und um das Erscheinungsbild von Menüs individuell einrichten zu können.
  • Wie es in Fig. 2 veranschaulicht ist, liefern die Anzeige 260, die Tastatur 270 und die Maus 280 über das Betriebssystem 255 Eingaben/Ausgaben an das Fenstersystem und die über das Fenstersystem betriebenen Anwendungsprogramme. Das server-basierte Fenstersystem besteht aus einer Reihe von Prozessen, die als Fenster-Server, Fenster-Manager und Toolkit bezeichnet werden.
  • Der Fenster-Server 250 steuert die Anzeige und die Zugriffspriorität der Anwendungsprogramme auf das Display. Beispiele des Fenster-Servers umfassen die Fenster-Server- Protokolle X11TM (X11 ist eine Handelsbezeichnung des Mas sachusetts Institute of Technology), welches das X11-Protokoll unterstützt [siehe Sheifler, Gettys, "The X Window System", ACM Transaction on Graphics, Vol. 5, Nr. 2, April 1986, Seiten 79 bis 109], und X11/NeWs [siehe Sheaufler, "X11/NeWs Design Overwiew", Proceedings of the Summer 1988 User Conference (1988), Seiten 23-35].
  • Der Fenster-Manager steuert die Arbeitsfläche des Fensters, das den Bildschirm belegt, und bestimmt die Arbeitsfläche des Menü-Fensters und die Icon-Anordnung. Der Fenstermanager kann ein separater Prozeß sein, wie es typischerweise bei dem X11-Protokoll der Fall ist, oder er kann Teil eines Fenster-Servers sein, wie es bei dem X11/NeWs- Fenstersystem der Fall ist, wo der Fenstermanager eine Ansammlung von Prozessen ist, die sich in dem Fenster-Server aufhalten.
  • Das Toolkit 210, 230 bestimmt, wie das Menü des Fenstersystems erscheint, wie der Benutzer mit den Steuerflächen interagiert und wie die Steuerflächen organisiert sind. Das Toolkit 210, 230 umfaßt vorzugsweise eine Toolkit-Bibliothek 240, die aus einer Bibliothek von Funktionen besteht, auf welche das Toolkit bezug nimmt, um eine Schnittstelle zwischen dem Anwendungsprogramm und dem Fenstersystem zu bilden. Die Anwendungsprogramme kommunizieren und arbeiten innerhalb des Fenstersystems über die Prozesse, die in dem Toolkit und der Toolkit-Bibliothek verfügbar sind. Ein Beispiel des Toolkit und der Toolkit-Bibliothek ist das X ViewTM-Toolkit (X View ist eine Handelsbezeichnung von Sun Microsystems, Inc. und es ist erhältlich von Sun Microsystems, Inc. und wird in dem X11/NeWs-Fenstersystem verwendet). Weitere Informationen bezüglich des X View Toolkits finden sich bei Jacobs "The X View Toolkit, Architectural Overview", 3rd Annual Technical Conference, 1989.
  • Bei dem Verfahren der vorliegenden Erfindung zum Betreiben eines zeitkritischen Anwendungsprogramms in einer Fenstersystemumgebung wird das Anwendungsprogramm funktionell in zwei oder mehrere Prozesse unterteilt, wobei ein Prozeß die zeitkritischen Prozeduren enthält. Zeitkritische Prozeduren sind solche, welche Antworten und das Ausführen von Aktionen innerhalb einer vorgegebenen Zeitdauer erfordern. Es wird auf Fig. 3 bezug genommen, die die Unterteilung des Anwendungsprogramms 305 in einen ersten Prozeß 300 und einen zweiten Prozeß 350 zeigt.
  • Der zweite Prozeß 350 umfaßt Prozeduren des Anwendungsprogramms, welche Prozeduren und Kommandos enthalten, die deshalb zeitkritisch sind, weil die Prozesse eine vorgegebene Antwortzeit erfordern, um richtig ausgeführt zu werden. Dieses Problem tritt auf, wenn Hardware in Software emuliert wird, weil Hardwareeinrichtungen naturgemäß Echtzeit-Einrichtungen ohne oder mit nur geringer Verzögerung der Operation sind. Außerdem müssen Softwareemulationen von System- Service-Routinen, wie beispielsweise von Interrupts, in einer zeitlich abgestimmten Weise arbeiten. So umfassen Beispiele zeitkritischer Anwendungsprozesse beispielsweise Eingabe/Ausgabe-Emulationsprozeduren, wie beispielsweise die Emulation von Plattenlaufwerkssteuereinrichtungen, Interrupt-Steuereinrichtungen, Tastatur-Steuereinrichtungen, seriellen I/O-Schnittstellen und Taktemulatoren ebenso wie andere Prozesse, welche Hardware emulieren. Der zweite Prozeß 350 arbeitet nicht über das Fenstersystem, sondern kommuniziert direkt mit dem Betriebssystem 330. Der zweite Prozeß umgeht das Fenstersystem und wird folglich nicht von dem Fenstersystem gesteuert und kann nicht von dem Fenstersystem für irgendeine Zeitdauer ausgesetzt werden. Darüber hinaus wird durch das Anordnen blockierender Prozeduren in anderen Prozessen die Aussetzung von zeitkritischen Prozeduren infolge blockierender Operationen vermieden.
  • Der erste Prozeß 300 implementiert jene Prozeduren, welche Interaktionen mit dem Fenstersystem erfordern, aber nicht zeitkritisch sind, ebenso wie blockierende Prozeduren, welche, wenn sie ausgeführt werden, ein Aussetzen des Programms/Prozesses bewirken. Beispiele von Fenstersystemprozeduren umfassen Prozeduren zum Anzeigen von Daten auf einem diskreten Abschnitt des Bildschirms oder zum Verändern der Größe eines bestimmten Fensters. Der erste Prozeß 300 ist mit einem Toolkit 310 verbunden, welches die Menüs, Steuerflächen und Zeichenfähigkeiten der Anwendung zur Verfügung stellt. Der Fenster-Server 320 steuert die Anzeige und den Zugriff der Anwendungsprogramme auf die Anzeige. Somit ist der erste Prozeß den Anforderungen und Restriktionen des Fenstersystems unterworfen. Blockierende Prozeduren sind solche Prozeduren, welche eine signifikante Zeitdauer für ihre Ausführung benötigen und welche bei ihrer Ausführung das Programm veranlassen, von dem Betriebssystem ausgesetzt zu werden, bis die Ausführung der blockierenden Operation abgeschlossen ist, wie beispielsweise das Lesen von einer Platte oder andere Dateioperationen.
  • Die Anwendung kann darüber hinaus in zusätzliche Unterprogramme unterteilt werden, um den Einfluß blockierender Prozesse auf die Anwendung zu minimieren. Es können zusätzliche Prozesse erzeugt werden, wobei jeder Prozeß eine oder mehrere blockierende Prozeduren enthält. Vorzugsweise enthält bei einer Unix-Betriebssystemumgebung jeder Prozeß nur eine blockierende Prozedur, um einen Vorteil aus der Fähigkeit des Unix-Betriebssystems zu ziehen, es einem Programm zu gestatten, mit der Ausführung fortzufahren, wenn eine einzige blockierende Prozedur angetroffen wird. (Das Programm/der Prozeß werden jedoch blockiert, wenn mehr als eine blockierende Prozedur ausgeführt werden sollen). Somit wird der erste Prozeß nicht von Prozeduren beeinflußt, welche ein Aussetzen der Anwendung bewirken können.
  • Obwohl das Anwendungsprogramm in zwei oder mehrere Prozesse unterteilt ist, arbeiten die Prozesse in Verbindung miteinander und erscheinen dem Benutzer als ein einziges Programm. Dies wird durch die Zwischenprozeßkommunikation und/oder den geteilten Speicher erreicht.
  • Ein Beispiel einer Zwischenprozeßkommunikationsfähigkeit wird unter Bezugnahme auf Fig. 4 diskutiert. Für den Fachmann ist es jedoch klar, daß andere Zwischenprozeßkommunika tionsmöglichkeiten verwendet werden können. Außerdem beschreibt die folgende Diskussion Zwischenprozeßkommunikationen zwischen zwei oder mehreren Prozessen. Wie oben angemerkt ist die vorliegende Erfindung jedoch nicht auf zwei Prozesse begrenzt und kann ebenfalls mit drei oder mehr Prozessen, die ein Anwendungsprogramm repräsentieren sollen, implementiert werden.
  • Es wird auf Fig. 4 bezug genommen. Bei einem Unix-basierten System können die Prozesse mit anderen Prozessen kommunizieren, indem sie den Nachrichtenmechanismus verwenden, welcher von dem Unix-System V IPC Package zur Verfügung gestellt wird. Das Betriebssystem 510 hält eine Nachrichtenwarteschlange 530 aufrecht, in welche Zwischenprozeßnachrichten gespeichert werden. Um zu kommunizieren, sendet ein erster Prozeß 500 einen MSGGET (MSGCREATE)-Systemaufruf, um eine Nachrichtenbeschreibung zu erzeugen, welche eine Nachrichtenwarteschlange 530 kennzeichnet. Das Betriebssystem weist eine Wartenschlangenstruktur zu und gibt einen Identifizierer an den ersten Prozeß 500 zurück. Der erste Prozeß 500 führt dann einen MSGSND-Systemaufruf aus, um eine Nachricht zu senden. Das Betriebssystem 510 überprüft, ob der erste Prozeß 500 die Erlaubnis hat, gemäß der Nachrichtenbeschreibung zu schreiben. Wenn der erste Prozeß 500 die Erlaubnis hat, gibt das Betriebssystem 510 die Nachricht in die Nachrichtenwarteschlange ein. Der zweite Prozeß 520 empfängt seine von dem ersten Prozeß gesendete Nachricht aus der Nachrichtenwarteschlange 530 des Betriebssystems 510, indem er einen MSGGET-Systemaufruf ausführt. Für weitere Informationen über das Unix-System siehe: Bach, The Design of the Unix Operation System (Prentice-Hall, 1986).
  • Prozesse können außerdem miteinander über Sockets kommunizieren, welche ebenfalls von dem Unix-Betriebssystem zur Verfügung gestellt werden. Ein Socket-Systemaufruf errichtet einen Endpunkt einer Kommunikationsverbindung. Eine beispielhafte Ablaufdiagrammbeschreibung einer Zwischenprozeßkommunikation in dem Unix-Betriebssystem ist in Fig. 5 ge zeigt. Bevor die Prozesse miteinander kommunizieren können, müssen sie die Kommunikationsverbindung errichten. Wie in Fig. 5 gezeigt ist, erzeugt der Server-Prozeß, um zu kommunizieren, einen Strom-Socket 610, benennt die Socket-Verbindung 620, setzt eine interne Wartenschlangenlänge für eingehende Nachrichten 630 und überprüft, ob irgendwelche Verbindungsanforderungen von Client-Prozessen 640 vorliegen. Eine Verbindungsanforderung zeigt an, daß ein Prozeß zu kommunizieren wünscht. Wenn es eine Anforderung gibt, empfängt der Server-Prozeß die eingehende Anforderung 650 und kommuniziert mit dem Client-Prozeß 670. Der Client-Prozeß bereitet sich auf die Kommunikation vor, indem er einen Strom-Socket 680 erzeugt, fordert das Kernel auf, mit dem benannten Server-Socket zu verbinden und kommuniziert mit dem Server-Prozeß.
  • Jeder Prozeß läuft in seinem eigenen virtuellen Adreßraum und Speicher ab, wobei das Betriebssystem andere Prozesse daran hindert, auf diesen Speicherbereich zuzugreifen. Jedoch können verschiedene Prozesse miteinander kommunizieren, indem sie sich Abschnitte ihres virtuellen Adreßraums teilen und dann Daten in den geteilten Speicher hineinschreiben und Daten aus diesem Speicher lesen. Für weitere Informationen siehe: Bach, The Design of the Unix Operating System (Prentice-Hall, 1986).
  • Die Kommunikation großer Datenmengen zwischen Prozessen wird vorzugsweise über die Verwendung eines geteilten Speichers erreicht. Durch die Benutzung geteilten Speichers kann beispielsweise das erste Unterprogramm Daten in den Speicher schreiben und das zweite Unterprogramm kann die von dem ersten Unterprogramm in den Speicher geschriebenen Daten lesen.
  • Es wird jetzt auf Fig. 6 bezug genommen. Das erste Unterprogramm kann mit dem zweiten Unterprogramm kommunizieren, indem es einen Systemaufruf ausführt, um einen neuen Bereich des geteilten Speichers zu erzeugen, dann den neuen Bereich zu den virtuellen Adressen seines Prozesses hinzu fügt. Jetzt können die zwei oder mehreren Unterprogramme unter Verwendung des geteilten Speichers lesen und schreiben, wodurch sie sich die in dem geteilten Speicher gespeicherten Daten teilen.
  • Die Prozesse, die sich den Zugriff auf den Speicher teilen, müssen ihre Verwendung des Speichers koordinieren, um ein funktionierendes Systemverhalten zu sichern. Beispielsweise können die Prozesse in einer hierarchischenen Ordnung angeordnet werden, um zu sichern, daß niemals zwei Prozesse gleichzeitig in den geteilten Speicher schreiben.
  • Ein Verfahren zum Steuern des Prozeßzugriffs auf den geteilten Speicher beruht auf der Verwendung von Semaphoren. Ein Prozeß, der auf den geteilten Speicherbereich zuzugreifen wünscht, muß eine Zugriffserlaubnis erlangen, indem er bestimmte vorgeschriebene Semaphor-Operationen erfolgreich ausführt. Wenn ein Semaphor durch den Prozeß gesetzt wird, wird der zugehörige Speicherbereich verriegelt, wodurch andere Prozesse daran gehindert werden, auf diesen Speicherbereich zuzugreifen. Die Implementierung eines Semaphors kann auf Null gesetzt werden, wenn es gesetzt ist, und auf Eins, wenn es frei ist. Ein freies (nicht gesetztes) Semaphor zeigt an, daß der Speicherplatz verfügbar ist.
  • Ein Beispiel eines semaphor-gesteuerten Zugriffs von Prozessen bei einem Ein-Prozessor-Unix-System wird unter Bezugnahme auf Fig. 7 erörtert. Dem Fachmann ist es jedoch klar, daß andere Verfahren geteilten Speichers ebenfalls verwendet werden können.
  • Es wird auf Fig. 7 bezug genommen. Anfänglich ist das Semaphor nicht gesetzt, was anzeigt, daß der geteilte Speicher verfügbar ist. Bei 700 überprüft ein erster Prozeß, ob das Semaphor gesetzt ist. Wenn das Semaphor nicht gesetzt ist, setzt der erste Prozeß das Semaphor, 710, und verwendet den Speicher, 720. In ähnlicher Weise überprüft der zweite Prozeß, ob das Semaphor gesetzt ist, 740. Wenn das Semaphor von dem ersten Prozeß gesetzt wurde, dann schläft der zweite Prozeß, bis das Semaphor frei ist, 760. Wenn das Semaphor frei ist, setzt der zweite Prozeß das Semaphor, 750, und verwendet den Speicher, 770.
  • Der Mechanismus des geteilten Speichers kann verwendet werden, um Daten gemeinsam zu benutzen. Beispielsweise empfängt das Anwendungsprogramm gesendete Daten von einem Modem und zeigt sie in einem Fenster an. Gemäß der vorliegenden Erfindung empfängt der I/O-Prozeß des ersten Prozesses die Daten über den Modem-Port und schreibt sie in den geteilten Speicherbereich. Während der erste Prozeß Daten in den geteilten Speicherbereich schreibt, wird das Semaphor von dem ersten Prozeß gesetzt. Nachdem der erste Prozeß das Schreiben abgeschlossen und das Semaphor freigegeben hat, liest der zweite Prozeß die Daten aus dem geteilten Speicherbereich und schreibt sie über das Fenstersystem zur Anzeige in dem zugehörigen Fenster.
  • Vorzugsweise wird die Zwischenprozeßkommunikation über die Verwendung eines geteilten Speichers und den in dem Unix-Betriebssystem verfügbaren "Signal"-Systemaufruf erreicht. Jedes Signal wird durch eine Signalnummer identifiziert, welche den Prozeß identifiziert, der benachrichtigt werden soll, wenn das Signal erzeugt wird. Das Kernel wird anfänglich über diejenigen Signale informiert, die erzeugt werden können, und die Prozesse, welche benachrichtigt werden sollen, wenn ein Signal einer bestimmten Signalnummer erzeugt wird. Wenn ein Signal von einem Prozeß erzeugt wird, veranlaßt das Kernel den Prozeß, der der Signalnummer entspricht, eine vorgegebene Routine/Prozedur auszuführen, um das Signal zu bedienen. Für weitere Informationen über Signale siehe: Bach, Maurice J., The Design of the UNIX Operating System (Prentice-Hall, 1986), Seiten 200-212.
  • Bei dem bevorzugten Ausführungsbeispiel der vorliegenden Erfindung weist das Anwendungsprogramm zwei Prozesse auf. Der erste Prozeß enthält die zeitkritischen Prozeduren und der zweite Prozeß enthält die verbleibenden Prozeduren, die diejenigen Prozeduren einschließen, welche Fenstersystemprozeduren ausführen. Die Prozesse funktionieren in einer Ma ster-Slave-Beziehung, wobei der erste Prozeß als Master und der zweite Prozeß als Slave funktioniert. Ein geteilter Speicher wird eingerichtet und ist für beide Prozesse zugreifbar. Um die Anwendung zu initiieren, führt der Benutzer ein Kommando aus, um die Ausführung des ersten Prozesses zu initiieren. Der erste Prozeß führt einen Startbefehlscode aus, um die Anwendung zu konfigurieren, und bringt dann den zweiten Prozeß hervor. Beispielsweise kann der Prozeß den Zwischenprozeßkommunikationsmechanismus initialisieren oder er kann einen Abschnitt des geteilten Speichers einrichten. Während der Ausführung des Anwendungsprogramms, wenn eine Prozedur im zweiten Prozeß ausgeführt werden soll, d. h. wenn beispielsweise eine Fenstersystemprozedur ausgeführt werden soll, ordnet der Prozeß ein Kommando im geteilten Speicher an, welches die auszuführende Prozedur und irgendwelche zum Ausführen der Prozedur erforderlichen Parameter identifiziert. Dann gibt der erste Prozeß ein Signal aus, das eine vorgegebene Signalnummer hat, welche anzeigt, daß der zweite Prozeß den geteilten Speicher lesen und das in dem geteilten Speicher gespeicherte Kommando ausführen soll. Während der zweite Prozeß ausgeführt wird, fährt der erste Prozeß in seiner Ausführung fort, wobei der erste Prozeß von den Fenstersystemprozeduren und irgendwelchen Aussetzungen von Prozessen, welche während der Ausführung der Fenstersystemprozedur auftreten können, unbeeinflußt bleibt. Der erste Prozeß fragt periodisch den geteilen Speicher ab, um nach Informationen zu suchen, die von der durch den zweiten Prozeß ausgeführten Prozedur zurückgegeben werden können. Wenn irgendwelche Informationen in dem geteilten Speicher gefunden werden, zieht der erste Prozeß diese Informationen einfach heraus. Somit isoliert sich der erste Prozeß weiter von dem zweiten Prozeß, während er eine vollständige bidirektionale Kommunikation aufrechterhält, um für den Benutzer in transparenter Weise als einziges Anwendungsprogramm zu arbeiten.
  • Durch die Aufteilung des Anwendungsprogramms in einen zeitkritische Prozeduren enthaltenden Prozeß und einen fen stersystemschnittstellenspezifische Prozeduren und blockierende Prozeduren enthaltenden Prozeß werden die zeitkritischen Prozeduren von denjenigen Prozeduren isoliert, welche die zeitkritischen Prozeduren veranlassen können, ausgesetzt zu werden, während die Prozesse in Verbindung miteinander ausgeführt werden und miteinander über Zwischenprozeßkommunikationen kommunizieren und dem Benutzer als ein einziges Anwendungsprogramm erscheinen.

Claims (24)

1. Ein Verfahren zum Ausführen eines zeitkritische Prozesse und nicht-zeitkritische Prozesse enthaltenden Anwendungsprogramms (305), wobei zwischen einem ersten Prozeß (300) und einem zweiten Prozeß (350) über zumindest ein Zwischenprozeß-Kommunikationsmittel (340) kommuniziert wird, um Signale, Nachrichten, Daten oder Informationen zwischen dem ersten Prozeß (300) und dem zweiten Prozeß (350) zu übertragen, wobei das Verfahren ausgeführt wird in einem Computersystem mit einem Betriebssystem (330) und einem Fenstersystem (320) unter der Steuerung des Betriebssystems (330) und durch die Schritte gekennzeichnet ist:
Unterteilen des Anwendungsprogramms (305) in zumindest zwei Prozesse,
wobei der erste Prozeß (300) Prozeduren enthält, welche Benutzereingaben und Ausgaben über das Fenstersystem (320) erfordern, und
wobei der zweite Prozeß (350) Prozeduren enthält, welche das Fenstersystem (320) umgehen und direkt mit dem Betriebssystem (330) kommunizieren, wodurch das Fenstersystem (320) daran gehindert wird, den zweiten Prozeß auszusetzen; und
Ausführen des ersten Prozesses (300) unter der Steuerung des Fenstersystems (320) und des zweiten Prozesses (350) unter der Steuerung des Betriebssystems (330) zusammen derart, daß sie einem Benutzer als ein einziges Anwendungsprogramm (305) erscheinen.
2. Das Verfahren nach Anspruch 1, wobei der erste Prozeß (300) Prozeduren umfaßt, welche Hardware-Einrichtungen des Computersystems emulieren.
3. Das Verfahren nach Anspruch 2, wobei der zweite Prozeß (350) ferner blockierende Prozeduren umfaßt, die eine lange Ausführungszeit haben, wobei bei der Ausführung der Prozeß von dem Betriebssystem (330) ausgesetzt wird.
4. Das Verfahren nach Anspruch 3, wobei die Prozeduren, die eine lange Ausführungszeit haben, Prozeduren umfassen, die Leseoperationen und Schreiboperationen auf ein Dateisystem anfordern.
5. Das Verfahren nach Anspruch 2, wobei die Prozeduren, welche in Verbindung mit der Eingabe/Ausgabeeinrichtung betrieben werden, Prozeduren umfassen, welche Plattenlaufwerkssteuereinrichtungen, Interrupt-Steuereinrichtungen, Tastatursteuereinrichtungen und serielle Eingabe/Ausgabeschnittstellen und Zeitgeber emulieren.
6. Das Verfahren nach Anspruch 1, ferner aufweisend zusätzliche Prozesse, wobei jeder Prozeß eine blockierende Prozedur enthält, die eine lange Ausführungszeit hat, wobei bei der Ausführung der Prozeß von dem Betriebssystem (330) ausgesetzt wird.
7. Das Verfahren nach Anspruch 1, wobei der Schritt des gemeinsamen Ausführens des ersten Prozesses (300) und des zweiten Prozesses (350) als Anwendungsprogramm (305) ferner die Schritte des Initiierens des Programms durch Ausführung des ersten Prozesses als Master-Prozeß umfaßt, wobei der erste Prozeß (300) Prozeduren zum Initialisieren des Anwendungsprogramms (305) und zum Hervorbringen des zweiten Prozesses (350) als Slave-Prozeß umfaßt derart, daß zum Ausführen des Anwendungsprogramms der Benutzer den ersten Prozeß initiiert, welcher den zweiten Prozeß hervorbringt, und die Prozesse miteinander zusammenwirken und dem Benutzer so erscheinen, als ob ein einziges Programm ausgeführt würde.
8. Das Verfahren nach Anspruch 7, wobei die Prozeduren zum Initialisieren des Anwendungsprogramms (305) Prozeduren umfassen, um einen Interkommunikationsmechanismus zwischen dem ersten und dem zweiten Prozeß einzurichten und um einen gemeinsamen Speicher (340) zuzuweisen.
9. Das Verfahren nach Anspruch 1, wobei das Computersystem unter Verwendung des UNIX-Betriebssystems betrieben wird und der verwendete Zwischenprozeß-Kommunikationsmechanismus der Signal-Systemaufruf ist.
10. Das Verfahren nach Anspruch 1, wobei das Computersystem unter Verwendung des UNIX-Betriebssystems betrieben wird und der Zwischenprozeß-Kommunikationsmechanismus über den Socket-Systemaufruf erreicht wird.
11. Das Verfahren nach Anspruch 1, wobei der Zwischenprozeß-Kommunikationsmechanismus erreicht wird, indem Nachrichten in den gemeinsamen Speicher (340) plaziert werden und jeder Prozeß den gemeinsamen Speicher abfragt, um festzustellen, ob irgendeine Nachricht für den Prozeß im gemeinsamen Speicher plaziert worden ist.
12. Das Verfahren nach Anspruch 1, wobei das Computersystem unter Verwendung des UNIX-Betriebssystems betrieben wird und ein Verfahren zum Steuern des Zugriffs auf den gemeinsamen Speicher über die Verwendung von Semaphoren erreicht wird.
13. Ein fensterbasiertes Computersystem zum Ausführen von Anwendungsprogrammen (305), einschließlich zeitkritischer Prozeduren und nicht-zeitkritischer Prozeduren, wobei das Computersystem eine zentrale Verarbeitungseinheit (CPU) (103), einen Speicher (104), zumindest ein Zwischenprozeß- Kommunikationsmittel (340), Eingabe/Ausgabeeinrichtungen zum Empfangen oder Anzeigen von Daten, wie beispielsweise eine Tastatur (105), eine Maus (108) oder eine Anzeige (107), ein Betriebssystem (330), ein Fenstersystem (320) unter der Steuerung des Betriebssystems (330) und Anwendungsprogramme (305) aufweist, gekennzeichnet durch:
ein oder mehrere Anwendungsprogramme (305), die jeweils in zumindest zwei Prozesse unterteilt sind,
wobei der erste Prozeß (300) Prozeduren hat, welche Benutzereingaben und -ausgaben über das Fenstersystem (320) erfordern, und
wobei der zweite Prozeß (350) Prozeduren hat, welche das Fenstersystem (320) umgehen und direkt mit dem Betriebssystem (330) kommunizieren, wodurch das Fenstersystem (320) daran gehindert wird, den zweiten Prozeß (350) auszusetzen; und
Ausführungsmittel zum Ausführen des ersten Prozesses (300) unter der Steuerung des Fenstersystems (320) und des zweiten Prozesses (350) unter der Steuerung des Betriebssystems (330) zusammen derart, daß sie einem Benutzer als ein einziges Anwendungsprogramm (305) erscheinen.
14. Die Einrichtung nach Anspruch 13, wobei der erste Prozeß (300) Prozeduren umfaßt, welche Hardwareeinrichtungen des Computersystems emulieren.
15. Die Einrichtung nach Anspruch 13, wobei der zweite Prozeß (350) ferner blockierende Prozeduren umfaßt, die eine lange Ausführungszeit haben, wobei bei Ausführung der Prozeß von dem Betriebssystem ausgesetzt ist.
16. Die Einrichtung nach Anspruch 15, wobei die Prozeduren, die eine lange Ausführungszeit haben, Prozeduren umfassen, die Leseoperationen und Schreiboperationen auf ein Dateisystem anfordern.
17. Die Einrichtung nach Anspruch 14, wobei die Prozeduren, welche in Verbindung mit den Eingabe/ Ausgabeeinrichtungen arbeiten, Prozeduren umfassen, welche Plattenlaufwerkssteuereinrichtungen, Interrupt-Steuereinrichtungen, Tastatursteuereinrichtungen und serielle Eingabe/Ausgabe- Schnittstellen und Zeitgeber emulieren.
18. Die Einrichtung nach Anspruch 13, ferner aufweisend zusätzliche Prozesse, wobei jeder Prozeß eine Prozedur enthält, die eine lange Ausführungszeit hat, wobei während der Ausführung das Betriebssystem den Prozeß aussetzt.
19. Die Einrichtung nach Anspruch 13, wobei der erste Prozeß (300) ein Master-Prozeß ist, wobei der erste Prozeß (300) Prozeduren zum Initialisieren des Anwendungsprogramms (305) und zum Hervorbringen des zweiten Prozesses (350) als Slave-Prozeß umfaßt derart, daß zum Ausführen des Anwendungsprogramms der Benutzer den ersten Prozeß (300) initiiert, welcher den zweiten Prozeß (350) hervorbringt, und die Prozesse miteinander zusammenwirken und dem Benutzer so erscheinen, als ob sie als ein einziges Programm ausgeführt würden.
20. Die Einrichtung nach Anspruch 18, wobei die Prozeduren zum Initialisieren des Anwendungsprogramms (305) Prozeduren umfassen zum Einrichten eines Interkommunikationsmechanismus zwischen dem ersten und dem zweiten Prozeß und zum Zuweisen eines gemeinsamen Speichers (340).
21. Die Einrichtung nach Anspruch 13, wobei das Computersystem unter Verwendung des UNIX-Betriebssystem arbeitet und der Zwischenprozeß-Kommunikationsmechanismus die Verwendung eines Signal-Systemaufrufs umfaßt.
22. Die Einrichtung nach Anspruch 13, wobei das Computersystem unter Verwendung des UNIX-Betriebssystems arbeitet und der Zwischenprozeß-Kommunikationsmechanismus die Verwendung eines Socket-Systemaufrufs umfaßt.
23. Die Einrichtung nach Anspruch 13, wobei der Zwischenprozeß-Kommunikationsmechanismus einen gemeinsamen Speicher (340) und einen Abfragemechanismus umfaßt, wobei die Zwischenprozeß-Kommunikation erreicht wird, indem Prozesse Nachrichten in den gemeinsamen Speicher plazieren und jeder Prozeß den gemeinsamen Speicher abfragt um festzustellen, ob irgendwelche Nachrichten für den Prozeß in den gemeinsamen Speicher plaziert worden sind.
24. Die Einrichtung nach Anspruch 13, wobei das Computersystem unter Verwendung des UNIX-Betriebssystems arbeitet und ferner einen Zugriffssteuermechanismus zum Steuern des Zugriffs auf den gemeinsamen Speicher umfaßt, der Semaphoren enthält.
DE69129443T 1990-12-14 1991-12-06 Verfahren zum Betrieb zeitkritischer Prozesse in einer Fenstersystemumgebung Expired - Fee Related DE69129443T2 (de)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US62834290A 1990-12-14 1990-12-14

Publications (2)

Publication Number Publication Date
DE69129443D1 DE69129443D1 (de) 1998-06-25
DE69129443T2 true DE69129443T2 (de) 1999-01-14

Family

ID=24518491

Family Applications (1)

Application Number Title Priority Date Filing Date
DE69129443T Expired - Fee Related DE69129443T2 (de) 1990-12-14 1991-12-06 Verfahren zum Betrieb zeitkritischer Prozesse in einer Fenstersystemumgebung

Country Status (5)

Country Link
US (1) US5991820A (de)
EP (1) EP0490595B1 (de)
KR (1) KR100208497B1 (de)
CA (1) CA2057404C (de)
DE (1) DE69129443T2 (de)

Families Citing this family (25)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
ES2166188T3 (es) * 1997-09-24 2002-04-01 Wincor Nixdorf Gmbh & Co Kg Procedimiento para la conmutacion de etapas de transaccion.
US6412031B1 (en) * 1998-02-10 2002-06-25 Gateway, Inc. Simultaneous control of live video device access by multiple applications via software locks and in accordance with window visibility of applications in a multiwindow environment
US6907605B1 (en) * 1998-05-18 2005-06-14 International Business Machines Corporation Method and apparatus for providing for notification of task termination
US6314501B1 (en) * 1998-07-23 2001-11-06 Unisys Corporation Computer system and method for operating multiple operating systems in different partitions of the computer system and for allowing the different partitions to communicate with one another through shared memory
US7552440B1 (en) * 1999-09-28 2009-06-23 Rockwell Automation Technologies, Inc. Process communication multiplexer
US6665752B1 (en) * 2000-02-17 2003-12-16 Conexant Systems, Inc. Interrupt driven interface coupling a programmable media access controller and a process controller
US20020144010A1 (en) * 2000-05-09 2002-10-03 Honeywell International Inc. Communication handling in integrated modular avionics
US6829763B1 (en) * 2000-05-16 2004-12-07 Litton Systems, Inc. Partitioned executive structure for real-time programs
AU9269101A (en) * 2000-09-15 2002-03-26 Wonderware Corp A method and system for remote configuration of process data access servers
US6658525B1 (en) 2000-09-28 2003-12-02 International Business Machines Corporation Concurrent access of an unsegmented buffer by writers and readers of the buffer
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
US7272833B2 (en) 2000-12-26 2007-09-18 International Business Machines Corporation Messaging service in a federated content management system
US6880109B2 (en) * 2001-07-03 2005-04-12 The United States Of America As Represented By The Secretary Of The State Functional element test tool and method
EP1444578B1 (de) * 2001-10-17 2017-05-03 Beptech Inc. Verfahren zur kommunikation über ein betriebssystem hinweg
DE10218892B4 (de) * 2002-04-26 2005-11-17 Siemens Ag Integrationsverfahren für mindestens ein Grundprogramm mit einem Grundfenster in ein Zusatzprogramm mit einem Zusatzfenster
US7640549B2 (en) * 2002-07-22 2009-12-29 Agilent Technologies, Inc. System and method for efficiently exchanging data among processes
US7308688B2 (en) * 2003-08-19 2007-12-11 Kabushiki Kaisha Toshiba System and method for shared memory based IPC queue template having event based notification
US7530074B1 (en) * 2004-02-27 2009-05-05 Rockwell Collins, Inc. Joint tactical radio system (JTRS) software computer architecture (SCA) co-processor
US7549151B2 (en) * 2005-02-14 2009-06-16 Qnx Software Systems Fast and memory protected asynchronous message scheme in a multi-process and multi-thread environment
US7840682B2 (en) * 2005-06-03 2010-11-23 QNX Software Systems, GmbH & Co. KG Distributed kernel operating system
US8667184B2 (en) 2005-06-03 2014-03-04 Qnx Software Systems Limited Distributed kernel operating system
US7680096B2 (en) * 2005-10-28 2010-03-16 Qnx Software Systems Gmbh & Co. Kg System for configuring switches in a network
US8555292B2 (en) 2008-06-27 2013-10-08 Microsoft Corporation Synchronizing communication over shared memory
US9971807B2 (en) * 2009-10-14 2018-05-15 Oblong Industries, Inc. Multi-process interactive systems and methods
US20130111168A1 (en) * 2011-10-27 2013-05-02 Freescale Semiconductor, Inc. Systems and methods for semaphore-based protection of shared system resources

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4761642A (en) * 1985-10-04 1988-08-02 Tektronix, Inc. System for providing data communication between a computer terminal and a plurality of concurrent processes running on a multiple process computer
GB2191918B (en) * 1986-06-16 1990-09-05 Ibm Data display system
US4914653A (en) * 1986-12-22 1990-04-03 American Telephone And Telegraph Company Inter-processor communication protocol
US5062060A (en) * 1987-01-05 1991-10-29 Motorola Inc. Computer human interface comprising user-adjustable window for displaying or printing information
US5060150A (en) * 1987-01-05 1991-10-22 Motorola, Inc. Process creation and termination monitors for use in a distributed message-based operating system
US5133053A (en) * 1987-02-13 1992-07-21 International Business Machines Corporation Interprocess communication queue location transparency
US5095421A (en) * 1989-08-17 1992-03-10 International Business Machines Corporation Transaction processing facility within an operating system environment

Also Published As

Publication number Publication date
EP0490595B1 (de) 1998-05-20
KR100208497B1 (ko) 1999-07-15
CA2057404C (en) 2002-08-06
JP3547011B2 (ja) 2004-07-28
DE69129443D1 (de) 1998-06-25
US5991820A (en) 1999-11-23
CA2057404A1 (en) 1992-06-15
KR920013086A (ko) 1992-07-28
JPH06214951A (ja) 1994-08-05
EP0490595A2 (de) 1992-06-17
EP0490595A3 (en) 1993-02-24

Similar Documents

Publication Publication Date Title
DE69129443T2 (de) Verfahren zum Betrieb zeitkritischer Prozesse in einer Fenstersystemumgebung
DE3787127T2 (de) Datenanzeigesystem.
DE69129091T2 (de) System und Verfahren zum Emulieren einer Fensterverwaltungsumgebung mit einer einheitlichen Fensterschnittstelle
DE3687215T2 (de) Mehrfachprozessanzeigesystem mit bildfenstern.
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.
DE68919631T2 (de) Verfahren zur Verarbeitung von Programmteilen eines verteilten Anwendungsprogramms durch einen Hauptrechner und einen intelligenten Arbeitsplatz in einer SNA LU 6.2-Netzwerkumgebung.
DE69606184T2 (de) Klient-server-brücke
DE69132012T2 (de) Objektorientierte architektur für fabrikverwaltung
DE3879947T2 (de) Verteilte dateiserver-architektur.
DE69804107T2 (de) Eingebautes grafisches programmierungssystem
DE69420803T2 (de) Ereignis-qualifikation und -benachrichtigung.
DE68919632T2 (de) Verfahren für die Ausführungsablauffolgeplanung von verteilten Anwendungsprogrammen an voreinstellbaren Zeiten in einer SNA LU 6.2-Netzwerkumgebung.
DE69523593T2 (de) Vorrichtung und verfahren zur aufteilung der anwendung in einer graphischen benutzerschnittstelle
DE69130442T2 (de) System und Verfahren zur Kommunikation zwischen Fensterumgebungen
DE68923491T2 (de) Verfahren zur dynamischen Auslösung von Hintergrundfenstern für prioritäre Anwendungen.
DE3686873T2 (de) Untersystem fuer virtuelle terminals.
DE68925474T2 (de) Verriegelungsrechnersysteme
DE69429686T2 (de) Transaktionsverwaltung in objektorientiertem System
DE69523325T2 (de) Graphisches programmier-interface für maschinen- bzw. prozess- steuerungen mit vorverbundenen parameterkonfigurationen
DE69220093T2 (de) Verarbeitungsnetzwerk für verteilte anwendungsprogramme.
DE69130620T2 (de) Datenübertragungsadapter und Verfahren zu dessen Betrieb
DE69129479T2 (de) Verteiltes Rechnersystem
DE69211231T2 (de) Verfahren und Vorrichtung zur Verwaltung eines gemeinsam genutzten Speichers ausserhalb des Bildschirms
DE69533568T2 (de) Virtuelles Desk-Top-System und Verfahren dafür
DE69327632T2 (de) Mehrere graphische Benutzerschnittstellen auf einer einzigen Anzeige

Legal Events

Date Code Title Description
8364 No opposition during term of opposition
8339 Ceased/non-payment of the annual fee