DE60108884T2 - Methode und gerät zur bearbeitung von kommunikationsanfragen durch einen server ohne kontextumschaltung - Google Patents

Methode und gerät zur bearbeitung von kommunikationsanfragen durch einen server ohne kontextumschaltung Download PDF

Info

Publication number
DE60108884T2
DE60108884T2 DE60108884T DE60108884T DE60108884T2 DE 60108884 T2 DE60108884 T2 DE 60108884T2 DE 60108884 T DE60108884 T DE 60108884T DE 60108884 T DE60108884 T DE 60108884T DE 60108884 T2 DE60108884 T2 DE 60108884T2
Authority
DE
Germany
Prior art keywords
request
protocol
kernel
operating system
application protocol
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Lifetime
Application number
DE60108884T
Other languages
English (en)
Other versions
DE60108884D1 (de
Inventor
Ingo Molnar
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.)
Red Hat Inc
Original Assignee
Red Hat 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 Red Hat Inc filed Critical Red Hat Inc
Publication of DE60108884D1 publication Critical patent/DE60108884D1/de
Application granted granted Critical
Publication of DE60108884T2 publication Critical patent/DE60108884T2/de
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/466Transaction processing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • 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/465Distributed object oriented systems
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/02Protocols based on web technology, e.g. hypertext transfer protocol [HTTP]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/06Protocols specially adapted for file transfer, e.g. file transfer protocol [FTP]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/40Network security protocols
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/30Definitions, standards or architectural aspects of layered protocol stacks
    • H04L69/32Architecture of open systems interconnection [OSI] 7-layer type protocol stacks, e.g. the interfaces between the data link level and the physical level
    • H04L69/322Intralayer communication protocols among peer entities or protocol data unit [PDU] definitions
    • H04L69/329Intralayer communication protocols among peer entities or protocol data unit [PDU] definitions in the application layer [OSI layer 7]
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99931Database or file accessing
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99951File or database maintenance
    • Y10S707/99952Coherency, e.g. same view to multiple users
    • Y10S707/99953Recoverability

Description

  • Hintergrund des Standes der Technik
  • Das Internet weist eine sehr hohe Anzahl an Computern und Computernetzwerken auf, welche über Kommunikationslinks bzw. -verbindungen miteinander verbunden sind. Die Kommunikationslinks tauschen digitale Informationen aus, wobei das bekannte Standard-Übertragungssteuerprotokoll/Internetprotokoll (TCP/IP) benutzt wird. Anwendungsprotokolle, wie z.B. Hypertext-Übertragungsprotokoll (HTTP) und File-Übertragungsprotokoll (FTP) werden auf dem TCP/IP benutzt. Ähnliche oder identische Übertragungsprotokolle und Applikationsprotokolle werden auch von modernen Computern benutzt, um über private Netzwerke zu kommunizieren, wie z.B. Inteanets und lokale Flächenetzwerke (LANs). Diese Applikationsprotokolle gestatten einem Server-Computersystem, Informationen zu einem fernen Client-Computersystem zu senden. Das entfernte Client-Computersystem kann dann die Information anzeigen oder auf andere Weise davon Gebrauch machen. Im Falle des HTTP kann die Information in Form einer so genannten World-Wide-Web-Seite angezeigt werden.
  • Die dramatische Zunahme im Gebrauchen des Internets und in anderen Formen der Client/Server-Kommunikation in den letzten Jahren bedeutet, dass Server mehr und mehr Anforderungen bzw. Anfragen empfangen und mehr und mehr Verbindungen und Antworten verarbeiten. Deshalb wurde die Geschwindigkeit, bei welcher Server bezüglich der Anzahl von Anforderungen, welche in einer gegebenen Zeitperiode bearbeitet werden, arbeiten, für die Gesamtgeschwindigkeit und die Leistungsfähigkeit des Internets und anderer Computer-Kommunikationssysteme sehr wichtig.
  • Ein Prozess, welcher die Leistungsfähigkeit eines Betriebssystems und von Applikationen, welche auf einem Server installiert sind, verlangsamt, ist der Prozess des Schaltens des Kontextes einer Ausführung. Der Kontext einer Ausführung wird auch einfach als der "Kontext", "Prozess", "Thread" oder "Task" bzw. "Aufgabe" bezeichnet. Der Kontext ist eine Basiseinheit des mehrprogrammfähigen Betriebssystem-Kernels bzw. -kerns. Der Betriebssystem-Kernel ist der Teil des Betriebssystems, welcher Hardware-Quellen handhabt und die grundlegenden Operationen des Betriebssystems durchführt. Einige gegenwärtige Betriebssystem-Kernels beinhalten einige Protokollfunktionen auf niedrigem Niveau, wie z.B. TCP/IP-Funktionen. In jedem Fall dient ein Kontextschalter zum "Schalten" zwischen zwei oder mehr Prozessen, so dass jeder Prozess die zentrale Verarbeitungseinheit (CPU) benutzen kann.
  • Kontextschalter sind "fruchtlos" in dem Sinn, dass keine nützliche Applikationsarbeit durch Kontextumschaltung durchgeführt wird. Einige Operationen innerhalb eines mehraufgabenfähigen Betriebssystems oder die Applikationen, welche auf einem derartigen System installiert sind, können ohne Kontextumschaltung durchgeführt werden. Derartige Operationen werden oft "Atomare"-Operationen genannt. Jedoch erfordern Operationen, welche einen Eingang und einen Ausgang oder "I/O" bzw. "E/A" beinhalten, normalerweise einen Kontextschalter. Derartige Operationen beinhalten Medienzugriffsvorrichtungen und unglücklicherweise das Kommunizieren über ein Netzwerk, wobei ein Applikationsprotokoll benutzt wird.
  • Das System, welches veröffentlicht ist in:
    • – TIMOTHY: "Answers From Planet TUX: Ingo Molnar Responds" SLASHDOT.ORG, 20 July 2000 – 21 July 2000, http://slashdot.org/articles/00/07/20/1440204.shtml,
    • – MOLNAR INGO: "TUX MAN-PAGE.TXT: TUX Programmer's Manual: tux – interact with the TUX kernel subsystem" STANDARD PERFORMANCE EVALUATION CORPORATION, 26 June 2000, http://www.spec.org/osg/web99/results/api-src/Dell-20000626.tar.gz,
    • – MOLNAR INGO: "TUX.H: TUX – Scalable Integrated Web Cache and Web Server: tux.h; TUXAPI – TUX interface to userspace" STANDARD PERFORMANCE EVALUATION CORPORATION, 26 June 2000, http://www.spec.org/osg/web99/results/apisrc/bell-20000626.tar.gz, und
    • – MOLNAR INGO: "CRD.C: TUX – Scalable Integrated Web Cache and Web Server; CAD.c: Implementation of the SPECweb99 dynamic application using TUXAPI." STANDARD PERFORMANCE EVALUATION CORPORATION, 26 June 2000, http://www.spec.org/osg/web99/results/api-src/Dell-20000626.tar.gz
    gestattet es, dass Applikationsprotokollanforderungen, welche über ein Netzwerk empfangen wurden, an einem Server behandelt und beantwortet werden, ohne eine Kontextumschaltung auszulösen. Dieses System gestattet diese Funktionalität durch Liefern eines Applikationsprotokoll-Subsystems und von Protokollmodulen innerhalb des Betriebssystem-Kernels.
  • Die vorliegende Erfindung befähigt ein Protokoll-Subsystem, einen "Im-Kernel"- bzw. "Im-Kern"-Applikationsprotokollstapel zu schaffen, welcher Information bezüglich der Applikationsprotokollanforderungen in einer Kernel-Anforderungsstruktur speichert. Eine Anwender-Space- bzw. -Platz-Applikation kann dann das Ausführen fortsetzen, während das Betriebssystem auf die Applikationsprotokollanforderung ohne Kontextumschaltung antwortet. Die Erfindung wird durch das Verfahren, welches im Anspruch 1 spezifiziert ist, und durch das Gerät, welches im Anspruch 7 spezifiziert ist, definiert.
  • In beispielhaften Ausführungsformen der Erfindung wird ein Computerprogrammcode benutzt, um die Erfindung zu implementieren, wie dies in Anspruch 4 spezifiziert ist. Das Computerprogramm kann auf einem Medium gespeichert werden. Das Medium kann magnetisch sein, wie z.B. eine Diskette, ein Band oder eine Festplatte, oder optisch, wie z.B. eine CD-ROM oder DVD-ROM. Der Computerprogrammcode kann auch in einer Halbleitervorrichtung gespeichert werden. Zusätzlich kann das Computerprogramm über das Internet oder einen anderen Typ von Netzwerk geliefert werden. Eine Workstation bzw. Arbeitsstation oder ein Rechnersystem, welches typischerweise mit einem Netzwerk verbunden ist, lässt den Computerprogrammcode laufen, welcher als Teil eines Computerprogrammprodukts geliefert wird. Dieses Computersystem kann auch als ein "Programmausführungssystem" oder "Instruktionsausführungssystem" bezeichnet werden. Der Computerprogrammcode in Verbindung mit dem Computersystem bildet die Vorrichtung, um das Verfahren der Erfindung auszuführen.
  • Kurze Beschreibung der Zeichnungen
  • 1 ist ein Blockschaltbild, welches einige Eigenschaften der Software darstellt, welche eine Ausführungsform der Erfindung implementiert.
  • 2 ist ein Flussdiagramm, welches ein Verfahren darstellt, welches durch Software ausgeführt wird, welche eine Ausführungsform der Erfindung implementiert.
  • 3 ist ein anderes Flussdiagramm, welches ein Verfahren darstellt, welches durch Software ausgeführt wird, welche eine Ausführungsform der Erfindung implementiert.
  • 4 ist ein Blockdiagramm, welches einige Merkmale der Software darstellt, welche eine Ausführungsform der Erfindung implementiert.
  • 5 ist ein Flussdiagramm, welches ein Verfahren darstellt, welches durch die Software durchgeführt wird, welche eine Ausführungsform der Erfindung implementiert.
  • 6 ist ein Blockschaltbild eines Computersystems, welches eine Ausführungsform der Erfindung implementiert.
  • Beste Vorgehensweise(n), die Erfindung auszuführen Die vorliegende Erfindung ist typischerweise in einer Computersoftware oder einem Computerprogrammprodukt verkörpert. Es sollte eingesehen werden, dass nicht jedes Merkmal der be schriebenen Software notwendig ist, um die Erfindung zu implementieren, wie dies in einem speziellen der angefügten Ansprüche beansprucht wird. Das vollständige Softwareprodukt wird vielmehr beschrieben, um voll die Erfindung möglich zu machen. Es ist auch davon auszugehen, dass durch diese Veröffentlichung, dort wo ein Softwareprozess oder -verfahren gezeigt oder beschrieben wird, die Schritte des Verfahrens in beliebiger Reihenfolge oder gleichzeitig durchgeführt werden können, wenn nicht klar aus dem Kontext hervorgeht, dass ein Schritt von einem anderen abhängt, welcher zuerst durchgeführt wird.
  • Die Ausführungsformen der vorliegenden beschriebenen Erfindung sind in einer Rechenplattform, basierend auf dem Computerbetriebssystem, allgemein als "Linux" bekannt, implementiert, welches als offene Quelle direkt über das Internet verfügbar ist. Linux ist auch über verschiedene Händler verfügbar, welche Service und Unterstützung für das Linux-Betriebssystem liefern. Unter diesen Händlern sind Red Hat, Inc., von Research Triangle Park, North Carolina, der Bevollmächtigte der vorliegenden Erfindung. Ein Beispiel eines derartigen Computerprogrammcodes im Patch- bzw. Direktkorrekturformat, welches Teile der Erfindung implementiert, wird am Ende dieser Spezifikation beigefügt, und dessen Gebrauch wird später diskutiert. Gewiss sind mehrere Kurzcode-Beispiele in dieser Spezifikation beinhaltet, um spezifische Konzepte, welche diskutiert werden, zu erläutern. All diese Beispiele werden schließlich von Fachleuten verstanden. Es ist auch davon auszugehen, dass die Linux-Beispiele nur zur Erläuterung gezeigt werden. Die erfinderischen Konzepte, welche hier beschrieben werden, können an jede Rechenplattform angepasst werden, basierend auf irgendeinem Betriebssystem, wobei jene eingeschlossen sind, welche auf MacintoshTM, UnixTM und WindowsTM basieren.
  • Schließlich sollte eingesehen werden, dass einige Blockdiagramme und Flussdiagramme, welche benutzt werden, um die erfinderischen Konzepte zu erläutern, nicht wechselseitig exklusiv sind. Vielmehr wurde jedes maßgeschneidert, um ein spezielles diskutiertes Konzept zu erläutern. In vielen Fällen treten die Elemente oder Schritte, welche in einer speziellen Zeichnung gezeigt werden, zusammen mit anderen auf, welche in einer unterschiedlichen Zeichnung gezeigt werden, aber nur gewisse Elemente oder Schritte werden der Klarheit wegen gezeigt. Beispielsweise zeigen die Blockdiagramme der 1 und 4 beide Elemente innerhalb eines Betriebssystem-Kernels und eines Nutzerraumes. In einer aktuellen Software können alle diese Elemente in beiden Zeichnungen präsent sein. Jedoch werden nur diejenigen, welche relevant für ein spezielles Merkmal sind, in der jeweiligen Zeichnung der Klarheit wegen gezeigt.
  • Mit Bezug auf 1 wird ein Blockdiagramm geliefert, welches verschiedene Elemente eines Softwaresystems darstellt, welches einen Betriebssystem-Kernel 100 und einen Nutzerraum 101 besitzt. Die Merkmale, welche in 1 dargestellt sind, sind für eine Computerplattform oder ein Instruktionsausführungssystem wichtig, welches als ein Server zu nutzen ist, und so kann das Softwaresystem der 1 als ein "Serversystem" bezeichnet werden. Der Betriebssystem-Kernel oder einfach "der Kernel" ist der Teil der Betriebssystem-Software, welcher die Hardware-Quellen handhabt, grundlegende Funktionalität liefert und grundlegende Programmier-Interfaces für Applikationen liefert. Ein derartiges Programmier-Interface wird oft als ein "Applikationsprogramm-Interface" oder "API" bezeichnet. In der vorliegenden Ausführungsform der Erfindung beinhaltet der Betriebssystem-Kernel 100 die Fähigkeit, einen Kommunikationsprotokollstapel durch das Nutzen eines Im-Kernel-Applikationsprotokoll-Subsystems 102 beizubehalten. Es ist wichtig, ein Applikationsprotokoll, wie z.B. HTTP oder FTP, von Protokollen mit niedrigerem Niveau, wie z.B. TCP/IP, zu unterscheiden. Verlässliche Protokollmodule 103 sind auch im Kernel beinhaltet und liefern Applikationsprotokollinformation und Funktionalität für das Protokoll-Subsystem 102. Die Protokolle, welche beinhaltet sind, können HTTP, FTP oder irgendein anderes Applikationsprotokoll sein, welches für Netzwerkkommunikationen benutzt wird, wobei so genannte "Meta-Applikationsprotokolle", wie z.B. ausgedehnte Markup-Sprache (XML) und Hypertext-Markup-Sprache (HTML), welche HTTP nutzen, beinhaltet sind. Es ist davon auszugehen, dass Bezugnahmen auf HTTP, wel che hier beinhaltet sind, bedeuten, dass sie HTML und XML beinhalten. Ein generischer Betriebssystem-Cache 104 ist auch in dem Kern angesiedelt und kann benutzt werden, Files oder Seiten an Information zu puffern. Schließlich ist auch ein Protokollobjekt-Cache 105 in dem Kernel und ist operativ mit dem Protokoll-Subsystem 102 verbunden. Der Protokollobjekt-Cache kann für gewisse Merkmale des Softwaresystems wichtig sein, das später zu diskutieren ist. Man beachte, dass, wie in 1 gezeigt wird, das Protokoll-Subsystem in dieser beispielhaften Ausführungsform ein direktes allgemeines Gateway-Interface (CGI) und transparente Sockelumleitung liefert.
  • Es kann nicht überbetont werden, dass die Betriessystem-Architektur, welche mit 1 diskutiert wird (und welche später mit Bezug auf 4 diskutiert wird), repräsentative Beispiele sind. Einige Betriebssysteme gestatten es, dass gewisse Applikationen im Kernelraum ablaufen, andere aber im Nutzerraum ablaufen. Es ist auch unter einigen Umständen möglich, dass eine Applikation in beiden Plätzen abläuft, wobei einige Codes im Kernelraum ablaufen und andere Codes im Nutzerraum ablaufen.
  • Der Nutzerraum 101 der 1 beinhaltet unverlässliche Module oder andere Ablauffähigkeiten, 106. Es ist an diesem Punkt nützlich zu erklären, was mit "trusted" gegenüber "untrusted" Software-Modulen gemeint ist. Wie bei Fachleuten bekannt ist, sind moderne Betriebssysteme so gestaltet, dass Applikationen oder die Software-Module im Nutzerraum in einer "Sandbox" von Sorten untergebracht sind. Diese Sandbox garantiert, dass Module in dem Betriebssystem nicht verfälscht oder umgekehrt beeinflusst werden können durch das, was im Nutzerraum vor sich geht. Dieses Konzept ist durch das Gestalten des Betriebssystems implementiert, so dass Module im Nutzerraum als "untrusted" bzw. unverlässlich betrachtet werden können, so dass ihr Zugriff zu Betriebssystemfunktionen begrenzt ist. Module innerhalb des Betriebssystem-Kernels im Gegensatz dazu sind "trusted" bzw. verlässlich und haben vollen Zugriff zu Betriebssystemfunktionen. In dieser beispielhaften Ausführungsform der Erfindung können Kommunikationsprotokoll- Applikationen von hohem Niveau als verlässliche Module innerhalb des Betriebssystem-Kernels angesiedelt sein. Diese Im-Kernel-Protokollmodule und das Im-Kernel-Protokoll-Subsystem befähigen ein Server-System, auf Applikationsprotokollanforderungen zu antworten, ohne dass das Betriebssystem Kontextumschaltungen durchführt. Es ist wichtig zu beachten, dass nicht alle Betriebssysteme einen getrennten Nutzerraum besitzen. Einige Betriebssysteme führen Applikationen innerhalb des Betriebssystem-Kernelraums aus. In diesen Fällen jedoch ist die funktionale Beziehung zwischen dem Betriebssystem und der Applikation die gleiche. Das Betriebssystem handhabt Hardware und liefert APIs, und die Applikation nutzt ein API, um die Applikationsaufgaben auszuführen.
  • Operationen in einem Computersystem, welche keine Kontextumschaltungen oder irgendwelche andere Prozessablaufunterbrechungen auslösen, werden häufig als "atomare" Operationen bezeichnet. Mit der eben beschriebenen Architektur können Kommunikationsapplikationen das ausführen, was normalerweise "nicht atomare" Arbeit ohne Kontextumschaltung ist. Wenn eine Antwort erzeugt werden muss, wird Information über die Applikationsprotokollanforderung in einer Im-Speicher-im-Kernel-Anforderungsstruktur gespeichert, welche den Kernel in die Lage versetzt, die Ausführung fortzusetzen, sobald eine angemessene Nutzerraum-Anforderungsstruktur aktualisiert ist, als ob die Antwort bereits stattgefunden hat. Eine beispielhafte Anforderungsstruktur für eine HTTP-Anforderung wird nachfolgend gezeigt. In diesem speziellen Fall wird die Nutzeranforderungsstruktur gezeigt. Jedoch ist die Kernel-Anforderungsstruktur sehr ähnlich und kann leicht von der Nutzerraum-Anforderungsstruktur abgeleitet werden.
  • Figure 00080001
  • Figure 00090001
  • 2 ist ein Flussdiagramm, welches das Verfahren des Antwortens auf eine Anforderung ohne Kontextumschaltung darstellt. Im Schritt 201 wird die Nutzerraum-Anforderungsstruk tur geschaffen. Im Schritt 202 tritt die Ausführung durch das Instruktionsausführungssystem, welches als ein Server-System arbeitet, in den Betriebssystem-Kernel ein. Im Schritt 203 wird eine neue Kernel-Anforderungsstruktur geschaffen, um die Anforderung handzuhaben. Die Kernel-Anforderungsstruktur wird mit Daten gefüllt, welche in Verbindung mit der Anforderung erhalten werden, gewöhnlicherweise von einem Client-System, welches die Anforderung über das Netzwerk macht. Im Schritt 204 wird die Kernel-Anforderungsstruktur in den Nutzerraum durch Befüllen der Nutzerraum-Anforderungsstruktur kopiert. Diese "Kopie" wird sehr effizient durch Bewegen der Daten durchgeführt, welche nur auf benutzte Teile der Anforderungsstrukturen bezogen sind. In diesem Fall würde auch ein so genanntes "privates Feld" der Anforderungsstruktur bewegt. Das private Feld ist ein undurchsichtiger Zeiger, welcher von Applikationen als Referenz benutzt werden kann. Im Schritt 205 kehrt die Ausführung zum Nutzerraum zurück, und die Nutzerraumapplikation fährt mit Operationen fort, als ob die Anforderung gehandhabt worden wäre. Die Nutzerraum-Anforderungsstruktur wird überschrieben, wenn eine andere Anforderung gehandhabt werden muss. Der Kernel handhabt die Anforderung normalerweise zur rechten Zeit (dieser Schritt wird der Klarheit wegen nicht gezeigt). Bei 206 zeigt das Betriebssystem die Anforderung an. Wenn die Anforderung vollendet ist oder eine Auszeit auftritt, betritt die Ausführung den Betriebssystem-Kernel im Schritt 207, und die Kernel-Anforderungsstruktur wird bei 208 gelöscht, um Speicherquellen zu sparen. Wenn die Anforderung nicht vollendet werden kann, jedoch keine Auszeit aufgetreten ist, wird das System die Anforderung beibehalten, und die Anforderung wird als die aktuelle Anforderung an den Nutzerraum zurückgegeben, nachdem die I/O- bzw. E/A-Operation(en) für diese Anforderung beendet ist bzw. sind. Eine "hängende" Anforderung wird keine Ausführung auslösen, welche aufzuschieben ist. Es sollte beachtet werden, dass die Anforderung aufgeschoben wird – nicht die Aufgabe, so dass die Ausführung im Nutzerraum fortfährt. Es ist auch für eine Anforderung möglich, um mehr als eine I/O- bzw. E/A-Operation aufgeschoben zu werden.
  • 3 stellt einen anderen Prozess dar, welcher in dem Betriebssystem, welches die Erfindung verkörpert, beinhaltet ist; denjenigen des Einbettens statischer Protokollobjekte in Antworten, wie z.B. HTTP-Web-Seiten, welche an eine Client-Applikation in Antwort auf eine Applikationsprotokollanforderung gesandt wurden. Es sollte beachtet werden, dass diese Darstellung nur beispielhaft auf HTTP-Web-Seiten beruht. Es kann möglich sein, die Erfindung mit anderen Applikationsprotokollen zu implementieren, wie z.B. FTP. In dieser Ausführungsform der Erfindung werden die statischen Protokollobjekte in dem Protokollobjekt-Cache 105 der 1 gespeichert, aber sie können auch in dem generischen Betriebssystem-fache angesiedelt sein. Im Schritt 301 der 3 empfängt der Server die Applikationsprotokollanforderung und analysiert sie. Eine beispielhafte Applikationsprotokollanforderung in Form einer HTTP-Anforderung wird nachfolgend gezeigt. Eine derartige Anforderung wird normalerweise durch zwei Neuzeilen-Kennungen terminiert.
    GET / HTTP/1.0
    User-Agent: Wget/1.6
    Host: www.redhat.com
    Accept: */*
  • Im Schritt 302 wird eine Präambel zurück an den Client gesandt. Die Präambel ist der Überschriftsteil einer HTTP-Antwort oder -Erwiderung. Ein beispielhaftes Überschriftsteil wird nachfolgend gezeigt.
    HTTP/1.1 200 OK
    Date: Tue, 03 Jul 2001 10:45:31 GMT
    Server: Apache/1.3.19 (Unix) (Red-Hat/Linux)
    mod ssl/2.8.1 OpenSSL/0.9.5a
    Connection: close
    Content-Type: text/html
  • Im Schritt 303 werden die optionalen dynamischen Teile der Antwortseite innerhalb eines Speicherpuffers auf dem Server geschaffen. Die dynamischen Teile bestehen aus dynamischen Protokollobjekten, welche den Teil der Antwort bilden. Die Antwort kann auch statische Protokollobjekte, welche innerhalb einbettet sind, besitzen. Die dynamischen Protokollobjekte werden an die Client-Applikation im Schritt 304 gesandt. Im Schritt 305 werden die statischen Teile der Antwortseite, oder statische Protokollobjekte, von dem Protokollobjekt-Cache oder dem generischen Betriebssystem-Cache zurückgeholt. Die statischen Objekte werden an die Client-Applikation im Schritt 306 gesandt, wo sie in die Antwort eingebettet werden, so dass eine vollständige Antwort am Client-System angezeigt werden kann.
  • 4 ist ein anderes Blockschaltbild einer Ausführungsform des Betriebssystems der Erfindung. In diesem Fall ist das Blockdiagramm so aufgebaut, dass es die Operation des atomaren File-Look-up-Merkmals darstellt. 4 beinhaltet drei Hauptsegmente einer Betriebssystemumgebung: File-System 400, Nutzerraum 401 und Betriebssystem-Kernel 402. Das File-System 400 beinhaltet File-System-Objekte 403 in dem File-System-Raum. File-System-Objekte, oder einfach "Files", sind die Baublöcke des File-System-Raumes. Tatsächlich sind sie die Container der Information. Es gibt verschiedene Typen von File-System-Objekten, welche reguläre Files, Directories und symbolische Links beinhalten. Ein symbolischer Link liefert einen Weg, einen neuen File zu schaffen, welcher in der Tat gerade auf ein existierendes File zeigt. Ein symbolischer Link wird auch als ein Soft Link bezeichnet. Das "Linking" bzw. Verknüpfen wird über eine Zeichenkette durchgeführt, welche Trennzeichen aufweist. Das Trennglied ist der "/" (Slash bzw. Schrägstrich) auf Linux- und Unix-Systemen und für Internet URL's und ist der "\" (Backslash bzw. Rückstrich) bei Windows-Systemen.
  • Man beachte, dass der Objektname des File-Systems oder der Filename eine Kette von Zeichen ist, welche keine Trennzeichen beinhaltet, z.B. "homework.doc". Jedes File-System-Objekt hat einen File-System-Objektnamen. Ein File-System-Objektpfad oder "File-Pfad" ist eine Kette von Zeichen, welche gewöhnlich mit dem Trennzeichen startet, und spezifiziert verschiedene Teile eines Pfades, welche das File ausfindig machen. In einigen Systemen kann dieser File-Pfad auch als Directory- bzw. Verzeichnispfad oder Folder- bzw. Ordnerpfad bezeichnet werden, z.B. "/home/joe/docs/homework.doc".
  • Das File-System der 4 beinhaltet auch den File-System-Namensraum 404. Der File-System-Namensraum bezieht sich auf alle File-Pfade innerhalb des Systems. Die Pfade für alle Files sind typischerweise auf der File-System-Vorrichtung in Form von Directories gespeichert. Der Nutzerraum 401, welcher in 4 gezeigt wird, ist dort, wo die Applikationen 405 typischerweise angesiedelt sind. Diese Applikationen gebrauchen die File-System-Objekte 403, welche innerhalb des File-Systems 400 gehalten werden. Um ein bisher noch nicht benutztes File zu benutzen, führt das Applikations- und Betriebssystem eine File-System-Namensraum-Operation aus. Eine derartige Operation wird z.B. durchgeführt, um ein File zu öffnen, zu lesen oder zu schreiben, ein File umzubenennen oder es zwischen Directories zu bewegen. Es gibt auch andere wohl bekannte File-System-Namensraum-Operationen. Für die Zwecke dieser Erfindung werden einige dieser File-System-Namensraum-Operationen generell als "Öffnen eines Files", Bearbeiten einer "File-Öffnungsanforderung", Ausführen einer File-Operation o.Ä. genannt. Entsprechend dem Stand der Technik, falls eine Applikation die ersten tausend Bytes des "/home/joe/docs/homework.doc"-Files lesen soll, würde es den Computerprogrammcode ähnlich zu dem enthalten, was in dem folgenden C-Beispiel gezeigt wird.
  • Figure 00130001
  • Nach Ausführung dieser drei Systemrufe wird der Betriebssystem-Kernel die ersten tausend Bytes des Files in den Speicherpuffer, "buf", gegeben haben.
  • Der Betriebssystem-Kernel beinhaltet einen File-System-Namensraum-Cache 406. Der "offene" Systemruf, wie oben gezeigt, wird intern auf den File-System-Namensraum-Cache zugreifen, um das Zugreifen auf die Files zu beschleunigen, wenn einmal deren Pfad in dem File-System-Namensraum-Cache gespeichert ist. Der File-System-Namensraum-Cache wird auch manchmal als "Dentry-Cache" bezeichnet. Man beachte, dass der Namensraum-Cache keine File-Inhalte versteckt bzw. speichert. Er kann File-Attribute verstecken bzw. speichern. File-Inhalte werden in einer getrennten Datenstruktur gespeichert, wie z.B. in dem generischen fache, welcher in 1 gezeigt wird, häufig als "Seiten-Cache" bezeichnet, wie dies sehr wohl bekannt ist, und dies wurde der Klarheit wegen in 4 weggelassen.
  • Im Stand der Technik, wie es oben dargestellt wurde, kommt der Kernel zu dem File, was immer es bezüglich der Zeit und der Ressourcen in Anspruch nimmt, und er ist offen für die Applikation, gleichgültig ob der File-Pfad mit dem File-Namen bereits in dem Namensraum-Cache vorhanden war oder nicht. Falls nicht, würde der Kernel Details des File-Pfades von der Festplatte lesen, und die Bearbeitung, welche mit der Applikation verbunden ist, wird aufgeschoben und Kontextschalter treten auf, bis der I/O bzw. die E/A beendet wurde, was einen ernsten Leistungseingriff schafft.
  • Im Gegensatz zum Stand der Technik, welcher eben beschrieben wurde, beinhaltet das System der 4 eine atomare Look-up-Operation, 407, welche den atomaren File-Look-up entsprechend dieser Ausführungsform der Erfindung implementiert. Der atomare File-Look-up befähigt eine Applikation 405, zu detektieren, ob ein File bereits innerhalb des Namensraum-Cache gespeichert ist oder nicht. Der folgende Code zeigt, wie das Merkmal in der Praxis gebraucht wird.
  • Figure 00140001
  • Figure 00150001
  • Man beachte die "O ATOMICLOOKUP"-Kennzeichnung und den neuen "-EWOULDBLOCKIO"-Return-Code für den offenen Systemaufruf. Während des Lernvorgangs, dass der File-Pfad noch nicht gespeichert ist, kann die Applikation das File, welches offen für einen anderen Prozess ist, stürzen oder zurückführen, wie dies geeignet bzw. richtig durch den Applikationsentwickler bestimmt wurde. In einigen Fällen kann dieser Prozess ein Prozess sein, welcher das Handhaben des Blockierpunktes durchführt.
  • Der Prozess des Handhabens des Blockierpunktes kann in dem Nutzerraum bei 408 der 4 oder in dem Kernel bei 409 der 4 angesiedelt sein. Ein "Blockierpunkt" ist ein Punkt, bei welchem ein Look-up ein mögliches Kontextschalten auslösen würde. Das "Handhaben des Blockierpunktes" kann das Springen dieses Look-up zu einem anderen Prozess/Teilprozess beinhalten, welchen das File offen in einer Weise managen kann, welche die Leistungsfähigkeit verbessert.
  • 5 stellt ein Beispiel der atomaren Look-up-Operation in Form eines Flussdiagramms dar. Beim Schritt 501 bestimmt eine Applikation, welcher File-Name, wie durch eine Zeichenkette bezeichnet, geöffnet werden soll. Bei 502 wird die Anforderung zum File-Öffnen gegenüber dem Betriebssystem durchgeführt. Beim Schritt 500 empfängt der Betriebssystem-Kernel die Anforderung und versucht, das File atomar zu öffnen. Um das atomare Öffnen zu versuchen, überprüft der Kernel den File-System-Namensraum-Cache nach dem geeigneten File-Pfad. Der Schritt 503 ist ein Entscheidungspunkt, welcher nach Fehlern prüft bzw. sucht, z.B. nach dem Nichtvorhandensein eines derartigen Files. Dieser Prozess wird in der gleichen Weise wie im Stand der Technik gehandhabt. Wenn ein Fehler auftritt, wird er durch eine Fehlerhandhabungsroutine bei 504 behandelt. Wenn kein Fehler vorhanden ist, fährt die Bearbeitung fort. Der Betriebssystem-Kernel benachrichtigt die Applikation im Schritt 505, ob das File atomar geöffnet wurde oder wird, da sein Pfad in dem File-System-Namensraum-Cache gespeichert wurde. Falls das File atomar geöffnet wurde, wird das File im Schritt 506 benutzt. Falls nicht, da die Applikation von der Tatsache Kenntnis erlangte, dass ein atomares Öffnen im Schritt 505 nicht möglich war, wird ein möglicher Blockierpunkt im Schritt 507 angewandt.
  • Man beachte, dass in dieser Ausführungsform die Applikation keine Anforderung sendet, ob der File-Pfad gespeichert ist. Sie setzt einfach den Betriebssystem-Kernel in Kenntnis, dass sie ein File atomar öffnen will. Falls der Kernel zustimmt, da der File-Pfad gespeichert ist, wird das File geöffnet, und eine Kennung wird an die Applikation zurückgegeben. Falls der File-Pfad nicht gespeichert ist, wird dann das File nicht geöffnet, und -WOULDBLOCKIO wird an die Applikation zurückgegeben. Mit Bezug auf die Diskussion dieses Merkmales hier wird die Terminologie "wurde geöffnet", "könnte geöffnet werden", "wird geöffnet" und Ähnliches austauschbar verwendet. In ähnlicher Weise wird die Terminologie bezogen auf eine File-Operation, wie z.B. "wurde ausgeführt", "wird ausgeführt", "könnte ausführt werden", und Ähnliches austauschbar benutzt. Die Arbeitsweise der Erfindung ist die gleiche, ungeachtet des exakten Zeitverlaufs des Prüfens des Cache, des File-Öffnens und des Erkennens vom Betriebssystem-Kernel aus für eine Applikation.
  • Es gibt viele Variationen der Betriebssystemarchitektur, welche oben beschrieben wurden, eine jede davon kann auch die atomare Look-up-Operation beinhalten. Beispielsweise muss die File-System-Vorrichtung nicht auf dem Computersystem angesiedelt sein, welches den Betriebssystem-Kernel enthält, sondern auf sie kann stattdessen über ein Netzwerk zugegriffen werden. In diesem Fall kann der File-System-Namensraum mit der File-System-Vorrichtung vom Netzwerk ausfindig gemacht werden, welche auf dem System platziert ist, welches den Betriebssystem-Kernel enthält, oder auf beide Plätze aufgeteilt sein. Es ist auch wichtig zu beachten, dass nicht alle Betriebssystemumgebungen einen Nutzerraum als eine getrennte Schutzdomäne besitzen. Bei einigen Betriebssystemen, z.B. bei welchen diese im Allgemeinen mit eingebetteten Prozessoren benutzt werden, bleiben die Applikationen erhalten und werden innerhalb des Betriebssystem-Kernel ausgeführt. In diesem Fall liefert das Betriebssystem noch die APIs für die Applikationen, und das Betriebssystem kommuniziert mit einer Applikation über sein API, in der gleichen Weise, als ob die Applikation in einem Nutzerraum laufen würde.
  • Am Ende dieser Spezifikation, vor den Ansprüchen, ist ein Beispiel einer Quellcode-Auflistung eingefügt, welche einen Code zeigt, welcher das atomare Look-up-Merkmal implementiert. Diese Quellcode-Auflistung trägt den Titel "Quellcode-Beispiel". Der Quellcode ist in dem gut bekannten differentiellen Patch- bzw. Korrekturformat. Er korrigiert bzw. setzt die öffentlich erhältliche Version 2.4.2 des Linux-Betriebssystems in Stand, ein offenes Quellbetriebssystem, welches über das Internet bezogen werden kann, und von Firmen, welche Unterstützung für dieses liefern, wie z.B. Red Hat, Inc., der Bevollmächtigte der vorliegenden Anmeldung.
  • Wie vorher diskutiert, wird bei einigen Ausführungsformen die Erfindung über einen Computerprogrammcode implementiert, welcher auf einem programmierbaren Computersystem oder Befehlsausführsystem, wie z.B, einem Personal Computer oder einer Workstation oder einer anderen Mikroprozessor-basierten Plattform läuft. 6 stellt ein weiteres Detail eines Computersystems dar, welches die Erfindung in dieser Weise implementiert. Der Systembus 601 verbindet die Hauptkomponenten miteinander. Das System wird durch den Mikroprozessor 602 gesteuert, welcher als zentrale Verarbeitungseinheit (CPU) für das System dient. Der Systemspeicher 605 ist typischerweise in viele Typen von Speicher oder Speicherflächen, wie z.B. Read-only-Speicher (ROM), Zugriffsspeicher (RAM) und andere getrennt. Der Systemspeicher kann auch ein Basis-Eingangs-/Ausgangssystem (BIOS) beinhalten. Eine Vielzahl von allgemeinen Eingangs/Ausgangs-(I/O-)Adaptern oder -Vorrichtungen 606 sind vorhanden. Der Klarheit wegen werden nur drei gezeigt. Diese sind mit verschiedenen Vorrichtungen verbunden, welche ein Festplattenlaufwerk 607, ein Diskettenlaufwerk 608, ein Netz werk 610 und einen Monitor 609, beinhalten. Die Computerprogrammcode-Instruktionen zum Implementieren der Funktionen der Erfindung werden auf der Festplatte 607 gespeichert. Wenn das System arbeitet, werden die Instruktionen partiell in den Speicher 605 geladen und durch den Mikroprozessor 602 ausgeführt. Optional ist eines der I/O- bzw. E/A-Vorrichtungen ein Netzwerkadapter oder Modem für die Verbindung mit dem Netzwerk 610, welches das Internet sein kann. Es sollte beachtet werden, dass das System der 6 nur als erläuterndes Beispiel dienen soll. Verschiedene Arten von allgemein gebräuchlichen Computersystemen sind erhältlich und können benutzt werden.
  • Elemente der Erfindung können in Hardware und/oder Software als ein Computerprogrammcode (welcher Firmware, gespeicherte Software, Microcode, etc. beinhaltet) verkörpert sein. Außerdem kann die Erfindung die Form eines Computerprogrammproduktes annehmen, auf einem computernutzbaren oder computerlesbarem Speichermedium, welches einen computernutzbaren oder computerlesbaren Programmcode in dem Gebrauchsmedium beinhaltet mit oder in Verbindung mit einem Befehlsausführsystem, wie z.B. dem, welches in 6 gezeigt wird. Ein derartiges Medium wird graphisch in 6 dargestellt, um das Diskettenlaufwerk wiederzugeben. Ein computernutzbares oder computerlesbares Medium kann irgendein Medium sein, welches das Nutzerprogramm enthalten, speichern, kommunizieren oder transportieren kann durch oder in Verbindung mit einem Befehlsausführungssystem. Das computernutzbare oder computerlesbare Medium ist z.B. ein elektronisches, magnetisches, optisches, elektromagnetisches, infrarotes oder Halbleitersystem. Das Medium kann auch einfach ein Informations- bzw. Datenstrom sein, welcher zurückgeholt bzw. herausgeholt wird, wenn das Computerprogramm über ein Netzwerk, wie z.B. das Internet, "heruntergeladen" wird. Man beachte, dass das computernutzbare oder computerlesbare Medium auch Papier oder ein anderes geeignetes Medium sein kann, auf welchem ein Programm gedruckt ist.
  • Der Quellcode im differentiellen Patch-Format, welches die Merkmale implementiert, welche in dieser Spezifikation beschrieben werden, ist öffentlich erhältlich, ab dem Regist rierdatum dieser Anmeldung unter www.redhat.com/~mingo/TUX/. Ein kompletter Quellcode für ein Softwaresystem, welches die Erfindung implementiert, kann auch ab dem Registrierzeitpunkt dieser Anmeldung von Red Hat, Inc., dem Bevollmächtigten dieser Anmeldung, angefordert werden. Der Quellcode, welcher unter der obigen Internet-Adresse platziert ist, dient dazu, eine Version des Linux-Betriebssystems zu korrigieren bzw. in Stand zu setzen, ein offenes Quellcode-Betriebssystem, welches über das Internet angefordert werden kann, und von Firmen, welche Unterstützung für dieses liefern, wie z.B.
  • Red Hat, Inc., dem Bevollmächtigten der vorliegenden Anmeldung. Der Code soll die Version 2.4.5 des Linux-Betriebssystems korrigieren, welche bereits durch die bekannte so genannte "ac4"-Patch korrigiert wurde.
  • Die Version 2.4.5 von Linux ist neben anderen Orten erhältlich unter: www.kernel.org/pub/linux/kernel/v2.4/linux-2.4.5.tar.gz. Der oben erwähnte bekannte ac4-Patch ist neben anderen Orten erhältlich unter:
    www.kernel.org/pub/linux/kernel/people/alan/2.4/patch-2.4.5-ac4.gz.
  • Spezielle Ausführungsformen einer Erfindung wurden hier beschrieben. Eine Person mit normalen Fähigkeiten im Computerbereich wird schnell erkennen, dass die Erfindung andere Anwendungen in anderen Umgebungen besitzt. Tatsächlich sind viele Ausführungsformen und Implementierungen möglich. Die folgenden Ansprüche sollen in keiner Weise den Umfang der Erfindung auf spezielle Ausführungsformen, welche oben beschrieben wurden, begrenzen.
  • QUELLCODE-BEISPIEL
    Figure 00190001
  • Figure 00200001
  • Figure 00210001
  • Figure 00220001

Claims (10)

  1. Verfahren zum Antworten auf eine Applikationsprotokoll-Anforderung bei einem Computer-Server-System, welches einen Betriebssytem-Kernel bzw. -Kern (100) besitzt, welcher ein Protokoll-Subsystem (102) im Kernel beinhaltet, wobei das Verfahren die folgenden Schritte aufweist: a) Empfangen der Applikationsprotokoll-Anforderung und von Daten über ein Netzwerk (610) von einem Client-Computersystem; b) Erstellen (S201) einer Anwender-Space-bzw. -Platz-Anforderungsstruktur (user_reg) in einem Nutzer-Space (101) entsprechend der empfangenen Applikationsprotokollanforderung; c) Erstellen (S203) einer Kernel-Anforderungsstruktur (ker_reg), entsprechend der empfangenen Applikationsprotokoll-Anforderung in dem Betriebssystem-Kernel (100), welche die Daten, welche von dem Client-Computersystem in Verbindung mit der Applikationsprotokoll-Anforderung empfangen werden, nutzt; d) Aktualisieren (S204) der Anwender-Space-Anforderungsstruktur (user_reg) durch Verschieben nur der benutzten Bereiche der erzeugten Kernel-Anforderungsstruktur (ker_reg) zu der Anwender-Space-Anforderungsstruktur (101); e) Antworten auf die Applikationsprotokoll-Anforderung; und f) Löschen (5208) der Kerner-Anforderungsstruktur (ker_reg) nach dem Antworten auf die Applikationsprotokoll-Anforderung, während ein Kommunikationsprotokollstapel in dem Protokoll-Subsystem (102) im Kernel aufrechterhalten wird.
  2. Verfahren nach Anspruch 1, wobei die Applikationsprotokoll-Anforderung und eine Antwort auf die Applikationspro tokoll-Anforderung entsprechend einem Hypertext-Übertragungsprotokoll (HTTP) formatiert wird.
  3. Verfahren nach Anspruch 1, wobei die Applikationsprotokoll-Anforderung und eine Antwort auf die Applikationsprotokoll-Anforderung entsprechend einem File-Übertragungsprotokoll (FTP) formatiert wird.
  4. Computerprogramm-Produkt, welches einen Computerprogrammcode besitzt, welcher in diesem vorhanden ist, wobei der Computerprogrammcode, welcher ein Server-Rechnersystem, welches einen Betriebssystem-Kernel (100) aufweist, welcher ein Protokoll-Subsystem (102) im Kernel und einen Anwender-Space (101) beinhaltet, befähigt, auf eine Applikationsprotokoll-Anforderung zu antworten, wobei der Computerprogrammcode Instruktionen zum Ausführen der Schritte des Anspruchs 1 aufweist.
  5. Computerprogramm-Produkt nach Anspruch 4, wobei der Computerprogrammcode ferner Instruktionen zum Implementieren eines Hypertext-Übertragungsprotokolls (HTTP) aufweist.
  6. Computerprogramm-Produkt nach Anspruch 5, wobei der Computerprogrammcode ferner Instruktionen für das Implementieren eines File-Übertragungsprotokolls (FTP) aufweist.
  7. Gerät, welches ein Betriebssystem aufweist, welches einen Betriebssystem-Kernel (100) aufweist, welcher ein Protokoll-Subsystem im Kernel und einen Anwender-Space (101) beinhaltet, wobei das Gerät betrieben werden kann, um auf eine Applikationsprotokoll-Anforderung zu antworten, wobei das Gerät aufweist: a) eine Vorrichtung zum Empfangen der Applikationsprotokoll-Anforderung und von Daten über ein Netzwerk (610) von einem Client-Computersystem; b) eine Vorrichtung zum Erstellen einer Anwender-Space-Anforderungsstruktur in dem Anwender-Space (101), entsprechend der empfangenen Applikationsprotokoll-Anforderung; c) eine Vorrichtung zum Schaffen einer Kernel-Anforderungsstruktur entsprechend der empfangenen Applikationsprotokoll-Anforderung in dem Betriebssystem-Kernel (100), wobei die Daten benutzt werden, welche von dem Client-Computersystem zusammen mit der Applikationsprotokoll-Anforderung empfangen werden; d) eine Vorrichtung zum Aktualisieren der Anwender-Space-Anforderungsstruktur durch Verschieben von nur der benutzten Bereiche aus der erstellten Kernel-Rnforderungsstruktur zu der Anwender-Space-Anforderungsstruktur (101); e) eine Vorrichtung zum Antworten auf die Applikationsprotokoll-Anforderung; und f) eine Vorrichtung zum Löschen der Kernel-Anforderungsstruktur nach dem Antworten auf die Applikationsprotokoll-Anforderung, während ein Kommunikationsprotokollstapel in dem Protokoll-Subsystem (102) im Kernel aufrechterhalten wird.
  8. Gerät nach Anspruch 7, wobei der Betriebssystem-Kernel (100) ferner aufweist: wenigstens ein Protokollmodul (103); und das Protokoll-Subsystem (102), welches zum Betreiben mit dem Nutzer-Space (101) und dem wenigstens einen Protokollmodul (103) verbunden ist, wobei das Protokoll-Subsystem (102) wenigstens zum Teil den Betriebssystem-Kernel (100) befähigt, die Kernel-Anforderungsstruktur aufrechtzuerhalten.
  9. Gerät nach Anspruch 8, wobei das wenigstens eine Protokollmodul (103) ferner ein Hypertext-Übertragungsprotokoll-(HTTP)-Modul aufweist.
  10. Gerät nach Anspruch 8, wobei das wenigstens eine Protokollmodul (103) ferner ein File-Übertragungsprotokoll-(FTP-)Modul aufweist.
DE60108884T 2000-08-24 2001-08-23 Methode und gerät zur bearbeitung von kommunikationsanfragen durch einen server ohne kontextumschaltung Expired - Lifetime DE60108884T2 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US22751000P 2000-08-24 2000-08-24
US227510P 2000-08-24
PCT/US2001/041845 WO2002017597A1 (en) 2000-08-24 2001-08-23 Method and apparatus for handling communication requests at a server without context switching

Publications (2)

Publication Number Publication Date
DE60108884D1 DE60108884D1 (de) 2005-03-17
DE60108884T2 true DE60108884T2 (de) 2006-01-19

Family

ID=22853373

Family Applications (2)

Application Number Title Priority Date Filing Date
DE60108884T Expired - Lifetime DE60108884T2 (de) 2000-08-24 2001-08-23 Methode und gerät zur bearbeitung von kommunikationsanfragen durch einen server ohne kontextumschaltung
DE60141480T Expired - Lifetime DE60141480D1 (de) 2000-08-24 2001-08-23 Verfahren und vorrichtung zum atomischen nachschlagen einer datei

Family Applications After (1)

Application Number Title Priority Date Filing Date
DE60141480T Expired - Lifetime DE60141480D1 (de) 2000-08-24 2001-08-23 Verfahren und vorrichtung zum atomischen nachschlagen einer datei

Country Status (8)

Country Link
US (4) US6886004B2 (de)
EP (2) EP1312195B1 (de)
JP (3) JP4317361B2 (de)
AT (2) ATE289146T1 (de)
AU (2) AU2001287203A1 (de)
DE (2) DE60108884T2 (de)
TW (2) TW517190B (de)
WO (2) WO2002017070A2 (de)

Families Citing this family (45)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6886004B2 (en) * 2000-08-24 2005-04-26 Red Hat, Inc. Method and apparatus for atomic file look-up
GB2378270B (en) 2001-07-30 2005-04-20 Ibm Method and apparatus for data transfer across a network
DE10151115A1 (de) * 2001-10-15 2003-05-08 Siemens Ag Verfahren zum Bedienen und zum Beobachten von Feldgeräten
US20030105957A1 (en) * 2001-12-05 2003-06-05 International Business Machines Corporation Kernel-based security implementation
US7246233B2 (en) * 2001-12-05 2007-07-17 International Business Machines Corporation Policy-driven kernel-based security implementation
CN100378840C (zh) * 2002-05-10 2008-04-02 松下电器产业株式会社 制造多层光信息记录媒体的方法和设备
US7417987B2 (en) * 2002-06-04 2008-08-26 Lucent Technologies Inc. Distribution of forwarding information in a network node
US7458018B2 (en) * 2002-06-27 2008-11-25 Microsoft Corporation System and method for obtaining and using namespace related information for opening XML documents
US7152108B1 (en) 2002-08-30 2006-12-19 Signiant Inc. Data transfer system and method with secure mapping of local system access rights to global identities
US7343301B1 (en) 2002-08-30 2008-03-11 Signiant, Inc. Method and apparatus for notification of data transfer
US7155571B2 (en) * 2002-09-30 2006-12-26 International Business Machines Corporation N-source in-kernel cache for high performance in computer operating systems
US7448049B1 (en) 2002-10-18 2008-11-04 Crossroads Systems, Inc. System and method of supporting kernel functionality
US20040167961A1 (en) * 2003-02-26 2004-08-26 Microsoft Corporation Fragment response cache
US20040236824A1 (en) * 2003-05-23 2004-11-25 Millington Bradley D. Post-cache substitution
US7076500B2 (en) * 2003-06-30 2006-07-11 David Gallant Selective file caching method
US7949682B2 (en) * 2003-11-05 2011-05-24 Novell, Inc. Method for providing a flat view of a hierarchical namespace without requiring unique leaf names
US7349926B2 (en) * 2004-03-30 2008-03-25 International Business Machines Corporation Atomic renaming and moving of data files while permitting lock-free look-ups
US7683904B2 (en) * 2004-05-17 2010-03-23 Pixar Manual component asset change isolation methods and apparatus
GB2415797B (en) * 2004-06-24 2009-02-25 Symbian Software Ltd A method for improving the performance of a file system in a computer device
US7526557B2 (en) * 2004-06-30 2009-04-28 Signiant, Inc. System and method for transferring data in high latency firewalled networks
US7721298B2 (en) * 2004-12-03 2010-05-18 Microsoft Corporation Operating system performance
US8370317B2 (en) * 2005-09-22 2013-02-05 Microsoft Corporation Synchronizing shared resources in a collection
US20070078852A1 (en) * 2005-10-04 2007-04-05 Microsoft Corporation Synchronizing shared resources in a collection
US20070101061A1 (en) * 2005-10-27 2007-05-03 Guruprasad Baskaran Customized content loading mechanism for portions of a web page in real time environments
US8195640B2 (en) 2006-06-16 2012-06-05 Microsoft Corporation Online service for program lookup
US9860274B2 (en) 2006-09-13 2018-01-02 Sophos Limited Policy management
TW200826571A (en) * 2006-12-08 2008-06-16 Univ Nat Chiao Tung Identification and management system and method applicable to a point-to-point gateway
US7783677B2 (en) * 2007-03-30 2010-08-24 Microsoft Corporation Tracking file system namespace changes during transactions
US20090006179A1 (en) * 2007-06-26 2009-01-01 Ebay Inc. Economic optimization for product search relevancy
US8402151B2 (en) 2007-12-07 2013-03-19 Roche Diagnostics Operations, Inc. Dynamic communication stack
JP4479930B2 (ja) * 2007-12-21 2010-06-09 日本電気株式会社 ノードシステム、サーバ切換え方法、サーバ装置、データ引き継ぎ方法、およびプログラム
TW200933398A (en) * 2008-01-28 2009-08-01 Inventec Corp Method of accessing files with XML documents of Windows formation under Linux
US8624898B1 (en) 2009-03-09 2014-01-07 Pixar Typed dependency graphs
US8930475B1 (en) 2012-03-30 2015-01-06 Signiant Inc. Systems and methods for secure cloud-based media file sharing
CN102663067B (zh) * 2012-03-31 2013-09-25 中标软件有限公司 一种基于Linux操作系统终端的文件打开方法
US9692799B2 (en) 2012-07-30 2017-06-27 Signiant Inc. System and method for sending and/or receiving digital content based on a delivery specification
CN103123651B (zh) * 2013-03-06 2016-01-20 广东欧珀移动通信有限公司 一种查看多个同类文件的方法、装置和移动设备
US9542224B2 (en) * 2014-01-30 2017-01-10 Vmware, Inc. User space function execution from a kernel context for input/output filtering from a thread executing in the user space
US9646091B2 (en) * 2014-02-24 2017-05-09 Futurewei Technologies, Inc. File joining on back end device
US10248989B2 (en) * 2015-11-20 2019-04-02 Cvs Pharmacy, Inc. Digital order tracking
US10223271B2 (en) * 2017-03-31 2019-03-05 Intel Corporation Apparatus, computer program product, and method to perform cache operations in a solid state drive
US10878110B2 (en) 2017-09-12 2020-12-29 Sophos Limited Dashboard for managing enterprise network traffic
US10735516B1 (en) 2019-02-15 2020-08-04 Signiant Inc. Cloud-based authority to enhance point-to-point data transfer with machine learning
US11044348B1 (en) * 2020-11-05 2021-06-22 Atlassian Pty Ltd System, method, and computer program product for improved embedded application data management
US11811668B2 (en) 2021-08-19 2023-11-07 Bank Of America Corporation System for implementing disposition bias for validating network traffic from upstream applications

Family Cites Families (44)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
AU649455B2 (en) * 1990-07-11 1994-05-26 American Telephone And Telegraph Company Distributed computing system
US5515538A (en) 1992-05-29 1996-05-07 Sun Microsystems, Inc. Apparatus and method for interrupt handling in a multi-threaded operating system kernel
JPH0668010A (ja) * 1992-08-17 1994-03-11 Nippon Telegr & Teleph Corp <Ntt> 分散キャッシュ管理システム
US6098112A (en) 1995-10-19 2000-08-01 Hewlett-Packard Company Streams function registering
US5948062A (en) * 1995-10-27 1999-09-07 Emc Corporation Network file server using a cached disk array storing a network file directory including file locking information and data mover computers each having file system software for shared read-write file access
JPH09223027A (ja) 1996-01-31 1997-08-26 Hewlett Packard Co <Hp> メッセージ通信装置
US5781550A (en) * 1996-02-02 1998-07-14 Digital Equipment Corporation Transparent and secure network gateway
US6179489B1 (en) 1997-04-04 2001-01-30 Texas Instruments Incorporated Devices, methods, systems and software products for coordination of computer main microprocessor and second microprocessor coupled thereto
US5832513A (en) 1996-06-04 1998-11-03 Symantec Corporation Detecting significant file system alterations during execution of a storage media software utility
US5832515A (en) * 1996-09-12 1998-11-03 Veritas Software Log device layered transparently within a filesystem paradigm
US6034963A (en) 1996-10-31 2000-03-07 Iready Corporation Multiple network protocol encoder/decoder and data processor
US6011803A (en) 1997-01-13 2000-01-04 Lucent Technologies Inc. Distributed-protocol server
US5872963A (en) 1997-02-18 1999-02-16 Silicon Graphics, Inc. Resumption of preempted non-privileged threads with no kernel intervention
US5835914A (en) * 1997-02-18 1998-11-10 Wall Data Incorporated Method for preserving and reusing software objects associated with web pages
US5946458A (en) * 1997-03-24 1999-08-31 Xerox Corporation Network printing system for responding to remote print-related requests
US6209036B1 (en) * 1997-06-06 2001-03-27 International Business Machines Corporation Management of and access to information and other material via the world wide web in an LDAP environment
US6256712B1 (en) * 1997-08-01 2001-07-03 International Business Machines Corporation Scaleable method for maintaining and making consistent updates to caches
IL121815A (en) 1997-09-22 2000-09-28 Security 7 Software Ltd Method and system for the identification and the suppression of executable objects
US5974430A (en) * 1997-09-30 1999-10-26 Unisys Corp. Method for dynamically embedding objects stored in a web server within HTML for display by a web browser
US6427173B1 (en) 1997-10-14 2002-07-30 Alacritech, Inc. Intelligent network interfaced device and system for accelerated communication
US6389479B1 (en) * 1997-10-14 2002-05-14 Alacritech, Inc. Intelligent network interface device and system for accelerated communication
US6658480B2 (en) * 1997-10-14 2003-12-02 Alacritech, Inc. Intelligent network interface system and method for accelerated protocol processing
US6757746B2 (en) * 1997-10-14 2004-06-29 Alacritech, Inc. Obtaining a destination address so that a network interface device can write network data without headers directly into host memory
US6246683B1 (en) 1998-05-01 2001-06-12 3Com Corporation Receive processing with network protocol bypass
US6279001B1 (en) * 1998-05-29 2001-08-21 Webspective Software, Inc. Web service
US6625650B2 (en) 1998-06-27 2003-09-23 Intel Corporation System for multi-layer broadband provisioning in computer networks
US6022214A (en) * 1998-11-17 2000-02-08 Hirsch; James A. Intraoral illumination device and method of using the same
US6449614B1 (en) * 1999-03-25 2002-09-10 International Business Machines Corporation Interface system and method for asynchronously updating a share resource with locking facility
US6801529B1 (en) * 1999-06-08 2004-10-05 Amx Corporation Method and system for sending messages to multiple locations in a control system
US6615088B1 (en) * 1999-06-09 2003-09-02 Amx Corporation System and method of device interface configuration for a control system
US7174506B1 (en) * 1999-11-05 2007-02-06 International Business Machines Corporation Method and system for producing dynamic web pages
US6405252B1 (en) * 1999-11-22 2002-06-11 Speedera Networks, Inc. Integrated point of presence server network
US6694358B1 (en) * 1999-11-22 2004-02-17 Speedera Networks, Inc. Performance computer network method
US6606525B1 (en) * 1999-12-27 2003-08-12 Motorola, Inc. System and method of merging static data in web pages
US6363357B1 (en) * 1999-12-29 2002-03-26 Pitney Bowes, Inc. Method and apparatus for providing authorization to make multiple copies of copyright protected products purchased in an online commercial transaction
US7096418B1 (en) * 2000-02-02 2006-08-22 Persistence Software, Inc. Dynamic web page cache
US6934761B1 (en) * 2000-02-25 2005-08-23 Sun Microsystems, Inc. User level web server cache control of in-kernel http cache
US6662215B1 (en) * 2000-07-10 2003-12-09 I Novation Inc. System and method for content optimization
US6591266B1 (en) * 2000-07-14 2003-07-08 Nec Corporation System and method for intelligent caching and refresh of dynamically generated and static web content
US6826594B1 (en) * 2000-07-15 2004-11-30 Commission Junction Method and system for remote content management of a designated portion of a web page
US6678746B1 (en) * 2000-08-01 2004-01-13 Hewlett-Packard Development Company, L.P. Processing network packets
US6751635B1 (en) * 2000-08-18 2004-06-15 Network Appliance, Inc. File deletion and truncation using a zombie file space
US6886004B2 (en) 2000-08-24 2005-04-26 Red Hat, Inc. Method and apparatus for atomic file look-up
US6483840B1 (en) 2001-06-25 2002-11-19 Lsi Logic Corporation High speed TCP/IP stack in silicon

Also Published As

Publication number Publication date
US6886004B2 (en) 2005-04-26
TW517190B (en) 2003-01-11
AU2001287203A1 (en) 2002-03-04
TW535065B (en) 2003-06-01
US7082424B2 (en) 2006-07-25
JP4317361B2 (ja) 2009-08-19
WO2002017070A3 (en) 2003-04-24
EP1312195A1 (de) 2003-05-21
JP2008102935A (ja) 2008-05-01
WO2002017070A2 (en) 2002-02-28
EP1312195B1 (de) 2005-02-09
ATE289146T1 (de) 2005-02-15
DE60141480D1 (de) 2010-04-15
US6988142B2 (en) 2006-01-17
JP2004507815A (ja) 2004-03-11
DE60108884D1 (de) 2005-03-17
US20020049834A1 (en) 2002-04-25
ATE459927T1 (de) 2010-03-15
US20020059330A1 (en) 2002-05-16
EP1358577A2 (de) 2003-11-05
JP4778493B2 (ja) 2011-09-21
JP2004507825A (ja) 2004-03-11
WO2002017597A1 (en) 2002-02-28
US20020091868A1 (en) 2002-07-11
EP1358577B1 (de) 2010-03-03
US20050171981A1 (en) 2005-08-04
AU2001287204A1 (en) 2002-03-04
US8631092B2 (en) 2014-01-14

Similar Documents

Publication Publication Date Title
DE60108884T2 (de) Methode und gerät zur bearbeitung von kommunikationsanfragen durch einen server ohne kontextumschaltung
DE69824444T2 (de) Verfahren und system zur durchsetzung eines kommunikationsicherheitsverfahrens
DE60125599T2 (de) Verfahren und system zum transparenten zugreifen auf ferngespeicherte dateien
DE60038705T2 (de) Verfahren und vorrichtung für die aktivitäts-basierte zusammenarbeit eines rechnersystems, ausgestattet mit einem kommunikations-manager
DE69630480T2 (de) Verfahren, Vorrichtung und Datenstrukturen zur Objektverwaltung
DE60211254T2 (de) Fernereignis Behandlung in ein Paketnetzwerk
DE60025043T2 (de) Vorrichtung und verfahren mit verwendung von anwendungabhängigkeitsinformation für eine sicherungskopieherstellung in einem computersystem
DE60009489T2 (de) Vorrichtung und verfahren zum verwalten der verteilung von inhalten zu einem gerät
DE69729926T2 (de) Netzwerkbrowser
DE60125989T2 (de) Verfahren und apparat für eine verbesserte dateiverwaltung
DE69724356T2 (de) Verfahren und Apparat für die Darstellung von Information im Bezug auf jeden einzelnen von mehreren Hyperlinks
EP0849666B1 (de) Verfahren zum Instantiieren einer versionsbehafteten Klasse
DE60025488T2 (de) Vorrichtung und verfahren zur allgemeinen koordination und verwaltung von mehrfachen schnappschussanbietern
DE10064627B4 (de) Verfahren und System für die Verarbeitung von E-Mail-Nachrichten in einem Datenübertragungssystem
DE69926940T2 (de) Verfahren und System zum Auslagern der Konversionen von Nachrichtenanhängen
DE69818232T2 (de) Verfahren und system zur verhinderung des herunterladens und ausführens von ausführbaren objekten
DE69838262T2 (de) Allgemeine benutzer-authentifizierung für netz-rechner
DE69832354T2 (de) Netzwerkverwaltungsrahmenwerk
DE69731994T2 (de) Verfahren und Gerät, um Informationen über Netzwerkanbieter zu bekommen und anzuzeigen
DE69731318T2 (de) Herstellen von kommunikationsverbindungen in einem computernetzwerk
DE69728178T2 (de) Vorrichtung und verfahren zur fernen datenrückgewinnung
DE69814900T2 (de) Verfahren und system zur unterstützung verteilter software- entwicklung ohne bewusstsein der verteilten charakteristik der software
DE69832057T2 (de) Datendienst in einem mobilen kommunikationsnetz
DE69907631T2 (de) Netzzugang zu inhaltsadressierbaren daten
DE19848084A1 (de) Computersystem mit e-Mail Funktion

Legal Events

Date Code Title Description
8364 No opposition during term of opposition