DE69132139T2 - Effiziente nicht-virtuelle hauptspeicherverwaltung - Google Patents

Effiziente nicht-virtuelle hauptspeicherverwaltung

Info

Publication number
DE69132139T2
DE69132139T2 DE69132139T DE69132139T DE69132139T2 DE 69132139 T2 DE69132139 T2 DE 69132139T2 DE 69132139 T DE69132139 T DE 69132139T DE 69132139 T DE69132139 T DE 69132139T DE 69132139 T2 DE69132139 T2 DE 69132139T2
Authority
DE
Germany
Prior art keywords
main memory
segment
space
segments
swap
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
DE69132139T
Other languages
English (en)
Other versions
DE69132139D1 (de
Inventor
G Gaertner
M Wengelski
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.)
Cray Research LLC
Original Assignee
Cray Research LLC
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
Priority claimed from US07/537,466 external-priority patent/US5179702A/en
Application filed by Cray Research LLC filed Critical Cray Research LLC
Publication of DE69132139D1 publication Critical patent/DE69132139D1/de
Application granted granted Critical
Publication of DE69132139T2 publication Critical patent/DE69132139T2/de
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1027Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
    • G06F12/1036Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB] for multiple virtual address spaces, e.g. segmentation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/109Address translation for multiple virtual address spaces, e.g. segmentation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/12Replacement control
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/43Checking; Contextual analysis
    • G06F8/433Dependency analysis; Data or control flow analysis
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/44Encoding
    • G06F8/445Exploiting fine grain parallelism, i.e. parallelism at instruction level
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/45Exploiting coarse grain parallelism in compilation, i.e. parallelism between groups of instructions
    • 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/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5011Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
    • G06F9/5016Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Description

    TECHNISCHES GEBIET
  • Die Erfindung bezieht sich allgemein auf Betriebssystem- Software für Computerverarbeitungssysteme. Insbesondere bezieht sich die vorliegende Erfindung auf Verfahren für das Hauptspeicher-Management für ein Computersystem mit nicht virtuellem Speicher.
  • STAND DER TECHNIK
  • Die derzeitigen Computersysteme besitzen normalerweise ein Betriebssystem, üblicherweise eine Software-Schnittstelle zur Hardware, das in der Weise arbeitet, daß es Operationen ausführt, die für das erfolgreiche Betreiben des Computersystems wesentlich sind (siehe z. B. Maurice J. Bach, "THE DESIGN OF THE UNIX OPERATING SYSTEM", (Prentice Hall, 1986), S. 271-285). Die Betriebssysteme für Computersysteme der Art, in die die vorliegende Erfindung integriert ist, besitzen ein aus komplexen Software- und Hardware-Mechanismen bestehendes Speichermanagementsystem. Computersysteme dieser Art können einen Mehrprogrammbetrieb ausführen, wobei sie mehrere eng gekoppelte Parallelprozessoren enthalten können, die einen gemeinsamen Hauptspeicher gemeinsam nutzen. Für den erfolgreichen Betrieb des Computersystems muß das Speichermanagementsystem deshalb sicherstellen, daß der gemeinsame Hauptspeicher zur Verwendung durch die mehreren Programme und Prozessoren ohne übermäßige Verzögerung verfügbar ist. Ein Verfahren, das durch das Speichermanagement verwendet wird, um dies auszuführen, ist die Prozeß- oder Programm-Auslagerung. Wenn mehr Programme oder Prozesse in verschiedenen Ausführungszuständen sind, als in dem Hauptspeicher gespeichert werden können, überträgt das Speichermanagementsystem einen oder mehr Prozesse in eine zweite Speichervorrichtung, die Auslagerungsvorrichtung genannt wird, etwa in einen Plattenspeicher, oder in einen andersartigen Massenspeicher, d. h. lagert aus, während ein ausführbarer Prozeß durch das Speichermanagementsystem aus der Auslagerungsvorrichtung in den Hauptspeicher übertragen, d. h. eingelagert, werden kann.
  • Außerdem besitzen einige Betriebssysteme ein Speichermanagementsystem, das zur Erleichterung des Mehrprogrammbetriebs einen Seitenabruf ausführen kann. In solchen Computersystemen braucht der Gesamtprozeß oder das Gesamtprogramm für die Ausführung nicht in dem Hauptspeicher vorhanden zu sein. Das Speichermanagementsystem lädt die Seiten eines Prozesses bei Bedarf zu dem Zeitpunkt, zu dem der Prozeß auf die angeforderten Seiten Bezug nimmt.
  • OUTPUT, Bd. 12, Nr. 5, 10. Mai 1983, CH, S. 45-48, ERWIN NIEVERGELT: 'Das Computer-Betriebssystem < < Unix> > ', beschreibt einen Aspekt des vorhandenen Unix-Betriebssystems, in dem bestimmt wird, wann ein besonderes Segment im Hauptspeicher freigegeben werden kann, da es von keinem Programm im Speicher verwendet wird. Insbesondere wird ein Segment ausgelagert, wenn es von sämtlichen Prozessen, die es verwenden, freigegeben wurde. Ein Kandidatensegment zum Auslagern wird anhand dieses besonderen Kriteriums gefunden, wobei hierauf eine Tabelle spezifiziert, wo es auf dem Plattenlaufwerk abzulegen ist. Es behandelt lediglich Segmente, die Anwenderdaten enthalten, und keine Programmsegmente.
  • PROCEEDINGS OF THE FIFTEENTH HAWAII INTERNATIONAL CONFER- ENCE ON SYSTEM SCIENCES, Bd. I, 6. Januar 1982, HONOLULU, HI, US, S. 43-51, RANCESCO LACAPRA u. a.: 'The virtual memory scheme of Cosmos', beschreibt ein virtuelles Speichersystem mit einigen Auslagerungskriterien.
  • IBM TECHNICAL DISCLOSURE BULLETIN, Bd. 28, Nr. 4, September 1985, NEW YORK, US, S. 1684-1686, 'Dynamic Storage Pool Manager', beschreibt einen dynamischen Speicherpoolmanager für das Management freier Bereiche eines Speicherpools.
  • Wie in Anspruch 1 definiert ist, wird gemäß einem Aspekt der vorliegenden Erfindung ein Verfahren zum Betreiben eines nicht virtuellen Hauptspeicher-Managers geschaffen, der Einlagerungs- und Auslagerungsoperationen verwendet, um Raum in einem nicht virtuellen Hauptspeicher an ein oder mehrere Segmente eines oder mehrerer Prozeßbilder zuzuweisen oder die Zuweisung dieses Raums aufzuheben, wobei die Prozeßbilder in einer Auslagerungsvorrichtung vorhanden sind und für die Ausführung in einem Computerverarbeitungssystem bereit sind, das einen oder mehrere Prozessoren enthält, die den Hauptspeicher und die Auslagerungsvorrichtung gemeinsam nutzen, wobei die Segmente Raum unterschiedlicher Größen erfordern und sämtliche Segmente für ein Prozeßbild im Hauptspeicher vorhanden müssen, bevor das Prozeßbild durch das Computerverarbeitungssystem ausgeführt werden kann, und wobei der Hauptspeicher-Manager eine Einlagerungsoperation für die Segmente eines ausgewählten Prozeßbildes, das für die Ausführung bereit ist, ausführt, wenn Raum im Hauptspeicher verfügbar ist, und eine Auslagerungsoperation für die Segmente eines oder mehrerer Prozeßbilder, die momentan im Hauptspeicher gespeichert sind, ausführt, wobei die Schritte des Verfahrens umfassen: Konstruieren wenigstens einer Segmentort-Liste, die sämtliche physikalischen Segmenträume im Hauptspeicher identifiziert, einer Liste aktiver Segmente, die Raum im Hauptspeicher identi fiziert, der momentan einem oder mehreren Segmenten zugewiesen ist, und einer Liste verfügbarer Segmente, die Raum im Hauptspeicher identifiziert, der momentan keinem der Segmente zugewiesen ist, Prüfen der Liste der verfügbaren Segmente auf ausreichenden zusammenhängenden Raum im Hauptspeicher, der keinem Segment zugewiesen worden ist und groß genug ist, um ein oder mehrere Segmente eines Prozeßbildes zu enthalten, die bereit sind, in den Hauptspeicher eingelagert zu werden, Ausführen einer Einlagerungszuweisungsoperation, um den zusammenhängenden Raum im Hauptspeicher dem einen oder den mehreren Segmenten zuzuweisen, falls ausreichend viel nicht zugewiesener, zusammenhängender Raum im Hauptspeicher verfügbar ist, um eines oder mehrere der Segmente des Prozeßbildes, die bereit sind, in den Hauptspeicher eingelagert zu werden, zu speichern, Aktualisieren wenigstens der Liste verfügbarer Segmente und der Liste aktiver Segmente nach der Ausführung der Einlagerungszuweisungsoperation, Prüfen der Liste aktiver Segmente auf einen Segmentkandidaten für die Auslagerung aus dem Hauptspeicher, falls der im Hauptspeicher verfügbare nicht zugewiesene zusammenhängende Raum unzureichend ist, um irgendeines oder mehrere Segmente des Prozeßbildes, die bereit sind, in den Hauptspeicher eingelagert zu werden, zu speichern, Ausführen einer Auslagerungsoperation am Segmentkandidaten, um die Zuweisung des Raums im Hauptspeicher, der dem Segmentkandidaten zugewiesen worden ist, aufzuheben, und Aktualisieren wenigstens der Liste verfügbarer Segmente und der Liste aktiver Segmente nach der Ausführung der Auslagerungsoperation am Segmentkandidaten.
  • Die vorliegende Erfindung ist in ein Computersystem integriert, das keinen Seitenabruf besitzt. Der gesamte auszuführende Prozeß muß in dem Hauptspeicher vorhanden sein und darin verbleiben, bis er für die Ausführung ungeeignet wird. Obgleich das Speichermanagementsystem einiger Computersysteme keinen Seitenabruf ausführen kann, um den Mehrprogrammbetrieb oder die Verwendung hochgradig paralleler Mehrfachprozessoren, die einen gemeinsamen Hauptspeicher verwenden, zu erleichtern, können sie somit eine Prozeßauslagerung verwenden. Einige Computersysteme, die das Auslagern verwenden, wie etwa das Unix®-System V wählen die Auslagerungskandidaten gemäß ihrer Priorität und ihrer Verweilzeit in dem Hauptspeicher. Es wird das gesamte Prozeßbild des ausgewählten Kandidaten ausgelagert. In einigen Fällen bewirkt die Menge des für das Einlagern des Prozesses benötigten freien Hauptspeicherraums das Auslagern mehr als eines Prozesses, jedoch mit den gleichen Auswahlparametern. Dies führt zu einem größeren Auslagerungsorganisationsaufwand und zu einem weniger effizienten und langsameren Speichermanagementsystem als die vorliegende Erfindung, da die vorliegende Erfindung bei der Auswahl der Auslagerungskandidaten den Ort und die Größe einbezieht.
  • Außer einer Liste verfügbarer Speichersegmente werden in der vorliegenden Erfindung getrennte Listen zugewiesener und freier Speicherräume bereitgestellt. Die zirkulären Verfügbar- und Zugewiesen-Listen sind elementfremde Listen von Segmenten, die zusammen den gesamten Speicher in Rechnung stellen. Diese Listen sind der Größe nach geordnet. Eine dritte zirkuläre Liste ordnet sämtliche sowohl zugewiesenen als auch verfügbaren Segmente nach ihrem Ort im Speicher. Da die Segmentgröße und der Segmentort jetzt ebenfalls als Parameter bei der Auswahl der Auslagerungskandidaten verwendet werden können, verbessert dies die Effizienz.
  • Außerdem besaßen ehemalige Speichermanagementsysteme wie etwa das Speichermanagementsystem von System V-Betriebssystemen keine Datenstruktur, die die Fähigkeiten der bevorzugten Ausführungsformen der vorliegenden Erfindung wie etwa die Segmentunterteilung einschließt. In einer bevorzugten Ausführungsform verbessert die vorliegende Erfindung die Effizienz und die Geschwindigkeit des Speichermanagementsystems durch Bereitstellen der Segmentunterteilungsfähigkeit. Ohne die Segmentunterteilungsfähigkeit mußten frühere Speichermanagementsysteme genügend zusammenhängende Segmente aus dem Hauptspeicher auslagern, die Raum für die Gesamtgröße des einzulagernden Segments schaffen würden.
  • Die Datenstruktur für ein gemeinsam genutztes Bild der vorliegenden Erfindung ermöglicht, daß das Hauptspeicher- Management seine Funktion für die Mehrfachverarbeitung ausführt, die in früheren Speichermanagementsystemen ebenfalls fehlte.
  • In einer bevorzugten Ausführungsform ist die vorliegende Erfindung dadurch eine Verbesserung gegenüber solchen früheren Speichermanagementsystemen, daß sie die kleinste Anzahl der ineffizientesten Prozesse als Kandidaten für die Auslagerung ausfällt. Außerdem schafft die vorliegende Erfindung in einer bevorzugten Ausführungsform das Auslagern einer Teilmenge des Gesamtprozeßbildes, d. h. eine partielle Auslagerung. Die partielle Auslagerung ermöglicht das Mischen von Stücken sehr großer Prozesse im Hauptspeicher mit kleineren Prozessen. Dies erfolgt, ohne daß wie in der Vergangenheit, als große Prozesse vollständig ausgelagert wurden, ein übermäßiger Systemorganisationsaufwand hervorgerufen wird. Diese Verbesserungen schaffen ein effizienteres und schnelleres Hauptspeicher-Managementsystem.
  • Die Hauptaufgabe der vorliegenden Erfindung besteht in der Schaffung eines verbesserten Hauptspeicher-Managementsystems für Computersysteme und insbesondere für nicht virtuelle Computersysteme, das den Mehrprogrammbe trieb unterstützt und das mehrere eng gekoppelte Prozessoren enthalten kann, die einen gemeinsamen Speicher gemeinsam nutzen, und weiter insbesondere in der Schaffung eines verbesserten Hauptspeicher-Managementsystems für solche Computersysteme, das effizienter und schneller ist.
  • In bevorzugten Ausführungsformen der vorliegenden Erfindung werden diese Aufgaben durch Integrieren der Prozeßauslagerung in das Hauptspeicher-Managementsystem gelöst, wobei die Auslagerungskandidaten gemäß der kleinsten Anzahl der ineffizientesten Prozesse ausgewählt werden, wobei eine Teilmenge eines gesamten Prozeßbildes zur Auslagerung ausgewählt werden kann.
  • Es werden neue Datenstrukturen geschaffen, so daß das Hauptspeicher-Managementsystem eine verbesserte Auslagerung ausführen kann. In bevorzugten Ausführungsformen nehmen diese neuen Datenstrukturen in der vorliegenden Erfindung die Form von Listen und Tabellen an. Eine Tabelle, die Segmenttabelle, enthält Segmenteinträge, die Felder und Merker enthalten, die logische Grenzen, physikalische Adressen und Segmentunterteilungen angeben, und die Felder enthalten, die angeben, ob ein Segment im Speicher, auf einer Auslagerungsvorrichtung oder in beiden vorhanden ist. Eine zirkuläre Liste, savail, ordnet die verfügbaren Speichersegmente nach der Größe. Eine weitere zirkuläre Liste, sactive, ordnet die zugewiesenen Speichersegmente nach der Größe. Eine nochmals weitere zirkuläre Liste, sloc, ordnet sowohl die verfügbaren als auch die zugewiesenen Speichersegmente nach dem Ort. Die Savail-, die Sactive- und die Sloc-Liste sind Prozeßstränge über den Segmenttabelleneinträgen. Eine Tabelle, die Prozeßtabelle für ein gemeinsam genutztes Bild, enthält Felder und Merker, die den Status der Prozeßbilder angeben.
  • In der bevorzugten Ausführungsform, d. h. in nicht virtuellen Computersystemen, die den Mehrprogrammbetrieb unterstützen und mehrere eng gekoppelte Prozessoren enthalten können, die einen gemeinsamen Hauptspeicher gemeinsam nutzen, besitzt jeder Prozessor minimal einen Satz und bevorzugt mehrere Sätze von Datensteuerregistern, die durch das Speichermanagementsystem zum Abbilden von Segmentunterteilungen verwendet werden, wobei sie somit ermöglichen, daß ein Anwenderprozeß ein unterteiltes Segment als zusammenhängend, d. h. als nicht unterteilt, betrachtet. Durch die Ausführung der Segmentunterteilung und der Segmentzusammenfügung kann verfügbarer Speicherraum ohne Neukonfigurieren des Speichers, d. h. unter Verwendung des Hauptspeichers so, wie er momentan zugewiesen ist, verwendet werden. Wenn Teilsegmente aus dem Hauptspeicher ausgelagert werden, werden sie in der Auslagerungsvorrichtung wiedervereinigt oder zusammengefügt, um zu ermöglichen, daß das Segment in einzigartige Bruchteile unterteilt wird, die zum Zeitpunkt des nächsten Einlagerns wieder in die momentane Speicherkonfiguration passen.
  • Außerdem enthalten die Tabellen einen zur Erleichterung der partiellen Auslagerung verwendeten Merker. Dieser Merker gibt an, ob ein Segment eines Prozesses im Hauptspeicher ist oder ausgelagert wurde. Falls ein Prozeß, der eingelagert werden soll, in ein Segment eines Prozesses eingepaßt werden kann, das ein Kandidat für die Auslagerung ist, ist es durch diese Anordnung anstelle des Auslagerns des Gesamtprozesses, wie es in der Vergangenheit erfolgte, lediglich erforderlich, das Segment auszulagern. Die partielle Auslagerung kann außerdem ein Segment versorgen, das zusätzlichen Speicherraum benötigt, um über den benachbarten freien Raum hinaus zu wachsen. Je nach Unterschied zwischen den Speicher-Spei cher- und den Speicher-Auslagerungsvorrichtungs- Übertragungsraten der Hardware, in der das Speichermanagementsystem verwendet wird, kann die partielle Auslagerung zum Ermöglichen des Wachsens effizienter als das frühere Verfahren der Speicher-Speicher-Segmentkopie sein.
  • Wenn sich einige Segmente eines Prozesses im Hauptspeicher und einige seiner Segmente in der Auslagerungsvorrichtung befinden, sind diejenigen Segmente, die bereits im Hauptspeicher sind, Doppelbildsegmente. Wenn dieser Prozeß eingelagert wird, werden anstelle des gesamten Prozeßbildes somit nur die Segmente eingelagert, die sich nicht bereits im Hauptspeicher befinden. Um die Menge der zum Bewegen eines gesamten Prozeßbildes in den Hauptspeicher erforderlichen Speicherzuweisung und physikalischen E/A zu verringern, werden die Doppelbilder eines Prozeßsegments so lange wie möglich gehalten.
  • Das Verfahren der vorliegenden Erfindung kann in anderen Funktionen und Hilfsmitteln realisiert werden, die ein Hauptspeicher-Managementschema für ein nicht virtuelles oder schnelles, stark paralleles Mehrprozessor-Computersystem erfordern.
  • Diese und weitere Aufgaben der vorliegenden Erfindung werden mit Bezug auf die Zeichnung, auf die ausführlichen Beschreibungen der bevorzugten Ausführungsform und auf die beigefügten Ansprüche offensichtlich.
  • BESCHREIBUNG DER BEGRIFFE
  • Zusammenfügen (Coalescing) von Speicher ist der Prozeß, durch den fragmentierte Datensegmente beim Auslagern zu einem zusammenhängenden Raum vereinigt werden.
  • Daten-, Steuerregistersätze sind Hardwareregister, die zum Abbilden fragmentierter Datensegmente verwendet werden, so daß der Anwender ein zusammenhängendes Segment sieht.
  • Doppelbilder (Dual Images) sind Prozesse, die gleichzeitig sowohl einen reservierten Hauptspeicher als auch ein Auslagerungsbild besitzen.
  • Fork ist ein Standard-UNIX-Systemaufruf, der durch einen Elternprozeß aufgerufen wird, um einen neuen Kindprozeß zu erzeugen.
  • Mikroprozesse (mprocs) sind eine Art Leichtprozeß, die einen sehr niedrigen Kontextumschalt-Organisationsaufwand besitzen, beim Verlassen verworfen werden können, vor der Beseitigung wiederverwendet werden können, eine Einrichtung zum Unterteilen zu erledigender Arbeit in sehr kleine Segmente schaffen und lediglich die Ergebnisse der Arbeit ohne weitere Kontextinformationen zurückgeben.
  • Eine partielle Auslagerung (partial swapping) ermöglicht, einen Teil eines großen Prozesses, der gegen einen weiteren Prozeß, der eingelagert werden soll, ausgelagert werden soll, oder der zum Wachsen über den benachbarten freien Speicher hinaus ausgelagert werden soll, auszulagern.
  • Ein Prozeßbild (process Image) ist die Darstellung der Prozeßbetriebsmittel in dem Betriebssystem wie etwa der Kontextinformationen, des ausführbaren Codes und der Daten für einen Prozeß.
  • Eine Prozeßtabelle enthält durch den Kern benötigte Steuer- und Statusinformationen über jeden Prozeß in dem System.
  • Sactive ist eine Scheinsegmentstruktur, die die Spitze einer zirkulär doppelt verknüpften Liste von der Größe nach geordneten zugewiesenen Segmenteinträgen bildet.
  • Savail ist eine Scheinsegmentstruktur, die die Spitze einer zirkulär doppelt verknüpften Liste von der Größe nach geordneten verfügbaren Segmenteinträgen bildet.
  • Eine Segmenttabelle enthält Segmenteinträge, die Attribute von Abschnitten des Speichers, die durch sie geregelt werden, wie etwa, ob sie Text oder Daten enthalten, ob sie gemeinsam genutzt oder privat sind, ob sie unterteilt oder nicht unterteilt sind und wo sich die Daten jedes Segments im Speicher und/oder auf einer Auslagerungsvorrichtung befinden, beschreiben.
  • Segmente sind zusammenhängende Teile eines Prozeßbildes, die während der Prozeßausführung im Hauptspeicher sein müssen.
  • Ein gemeinsam genutztes Bild ist ein einzelnes Prozeßbild, das möglicherweise von mehreren Mikroprozessen, die mehrere Prozeßstränge eines Programms mit mehreren Prozeßsträngen ausführen, gemeinsam genutzt wird.
  • Eine Prozeßtabelle für ein gemeinsam genutztes Bild enthält Einträge, die Informationen über ein Prozeßbild und über Segmente, die zu diesem Bild gehören, enthalten. Falls das Bild nicht gemeinsam genutzt wird, ist es das Bild eines Einzelprozesses. Falls Mikroprozesse das Bild gemeinsam nutzen, enthält dieser Eintrag Informationen in Bezug auf diese Mikroprozesse.
  • Ein gemeinsam genutzter Speicher ist ein Datensegmenttyp, der unterteilt, beschrieben und durch mehr als einen Prozeß gemeinsam genutzt werden kann, was eine direkte Kommunikation zwischen den ihn gemeinsam nutzenden Prozessen ermöglicht.
  • Sloc ist eine Scheinsegmentstruktur, die die Spitze einer zirkulär doppelt verknüpften Liste von nach dem Ort geordneten zugewiesenen und verfügbaren Segmenteinträgen bildet.
  • Split ist ein Fragment eines Segments, das im Hauptspeicher vorhanden ist und durch einen Segmenttabelleneintrag beschrieben wird.
  • Eine Auslagerungsvorrichtung (swap device) ist ein Bereich in einem alternativen Speicher, der zum vorübergehenden Halten eines momentan nicht laufenden Prozeßbildes verwendet wird, um den Hauptspeicher für einen Prozeß freizugeben, der zum Laufen bereit ist. Die Auslagerungsvorrichtung ist üblicherweise eine Blockvorrichtung in einem konfigurierbaren Abschnitt einer Platte.
  • Auslagern (swapping) ist der Akt des Zuweisens von Segmenten und des Bewegens der Daten in den Segmenten zwischen dem Hauptspeicher und einer Auslagerungsvorrichtung.
  • BESCHREIBUNG DER ZEICHNUNG
  • Fig. 1 ist ein schematischer Blockschaltplan eines einzelnen Mehrprozessor-Cluster-Systems, das die vorliegende Erfindung enthält.
  • Fig. 2a und 2b sind ein Diagramm, das die Softwarearchitektur für das Mehrprozessorsystem aus Fig. 1 erläutert.
  • Fig. 3 ist ein Blockdiagramm, das die Einlagerungs- und Auslagerungsfunktionen zeigt.
  • Fig. 4 ist ein Blockdiagramm relevanter Felder in der Segmenttabelle.
  • Fig. 5 ist ein Diagramm, das die Speicheranordnungslisten zeigt.
  • Fig. 6 ist ein Blockdiagramm relevanter Felder in der Prozeßtabelle für ein gemeinsam genutztes Bild.
  • Fig. 7 ist ein Diagramm, das die Beziehung zwischen Prozeßtabelleneinträgen, Einträgen in Prozeßtabellen für ein gemeinsam genutztes Bild, gemeinsam genutzten Speichersegmenten und Teilsegmenten zeigt.
  • Fig. 8 ist ein Diagramm, das das Doppelbildkonzept zeigt.
  • Fig. 9 ist ein Diagramm, das das Unterteilen eines Datensegments zeigt.
  • Fig. 10 ist ein Diagramm, das die Speicheranordnung in bezug auf die Auswahl eines Auslagerungskandidaten zeigt.
  • Fig. 11 ist ein Diagramm, das das Zusammenfügen eines Segments zeigt.
  • Fig. 12 ist ein Diagramm, das das nicht virtuelle UNIX- Standard-Verfahren zum Erzeugen eines Kindprozesses über eine Auslagerungsprozedur bei nicht ausreichend verfügbarem Hauptspeicher zeigt.
  • BESCHREIBUNG DER BEVORZUGTEN AUSFÜHRUNGSFORM SPEICHERMANAGEMENT
  • Mit Bezug auf die Zeichnung und insbesondere auf Fig. 1 ist die vorliegende Erfindung beispielhaft als in ein einzelnes Mehrprozessor-Cluster-System mit einem im Hauptspeicher 14 vorhandenen Betriebssystemkern 1100 integriert gezeigt. Fig. 1 ist im wesentlichen die gleiche Figur wie Fig. 5 der früher eingereichten Hauptpatentanmeldung mit dem Titel INTEGRATED SOFTWARE ARCHITEC- TURE FOR A HIGHLY PARALLEL MULTIPROCESSOR SYSTEM, Vereinigte Staaten, laufende Nr. 07/537.466, eingereicht am 11. Juni 1990 und erteilt als US-A-5179702 am 12. Januar 1993.
  • Die Fig. 2a und 2b zeigen den Betriebssystemkern 1100, der einen Speicherplaner oder ein Hauptspeicher-Managementsystem 1120 enthält. Die Fig. 2a und 2b sind im wesentlichen die gleichen wie die Fig. 8a und 8b der obenerwähnten Patentanmeldung. Das Hauptspeicher-Managementsystem 1120 arbeitet in der Weise, daß es Prozesse, die laufen sollen, Speicherraum im Hauptspeicher 14 zuweist, während es die Zuweisung von Speicherraum im Hauptspeicher 14 von jenen Prozessen, die gelaufen sind und in einem Wartezustand sind, aufhebt. Der Hauptspeicher 14 besitzt eine endliche Menge an Speicherraum, wobei es normalerweise in dem System mehr Prozesse gibt, als im Hauptspeicher 14 gespeichert werden können. Das Speichermanagement 1120 ist verantwortlich dafür, Raum des Hauptspeichers 14 für den Prozeß aufzufinden und verfügbar zu machen, der auf dem Computersystem momentan laufen soll. Ein Prozeßbild ist eine Darstellung der Prozeßbetriebsmittel in dem Betriebssystem wie etwa Code, Daten, Stapel, Kontextinformationen und Register. Dieses Prozeßbild ist in eine Mehrzahl von Segmenten vom Typ Text, Daten, gemeinsam genutzter Speicher, Bibliothekstext, Bibliotheksdaten oder Anwender unterteilt. Falls im Hauptspeicher 14 kein Raum für dieses Prozeßbild verfüg bar ist, kann der Speichermanager 1120, Fig. 3, ein gesamtes Prozeßbild, mehrere Prozeßbilder oder eine Teilmenge der Segmente in einem Prozeßbild auslagern und in einer Massenspeichervorrichtung wie etwa in einem alternativen Speicher, in einem Plattenspeichersystem oder in einer anderen geeigneten Speichervorrichtung, die als Auslagerungsvorrichtung bezeichnet wird, wie etwa in der Auslagerungsvorrichtung 70, anordnen. Das Prozeßbild, das laufen soll, ist in der Speichervorrichtung 70 vorhanden und wird in den Hauptspeicher 14 eingelagert. Dieser Prozeß wird hierauf durch einen Prozessor 10 ausgeführt, der entweder bis zum Abschluß läuft oder infolge einer Bedingung wie etwa des Wartens auf eine Eingabe/Ausgabe-Vorrichtung, eine E/A-Vorrichtung, in einen Wartezustand geht. Während der Prozeß in diesem Wartezustand ist, wird er zu einem Kandidaten für die Auslagerung.
  • Um Segmente, die zu Prozessen in dem System gehören, zu verfolgen, verwendet der Speichermanager 1120 in der bevorzugten Ausführungsform der Erfindung die Segmenttabelle 90, von der ein Teileintrag in Fig. 4 gezeigt ist. In dem Diagramm sind die Felder enthalten, die hier diskutiert werden und die meiste Relevanz für die Arbeit des Speichermanagers besitzen. Für jedes Segment und für jedes Segmentteil, das zu einem in dem System befindlichen Prozeß gehört, wird durch den Speichermanager 1120 ein Eintrag in der Segmenttabelle 90 erzeugt und unterhalten.
  • In der bevorzugten Ausführungsform der Erfindung verwendet der Speichermanager 1120 zum Verfolgen des Raums im Hauptspeicher 14 die drei zirkulär doppelt verknüpften Listen in Fig. 5. Die Liste sloc 20 ordnet sämtliche Segmente des Hauptspeichers 14, ob frei 50 oder zugewiesen 60, nach dem Ort. Die sloc 20 verwendet in jedem Eintrag der Segmenttabelle 90 gehaltene Zeiger (s bloc ist die Vorwärtsverknüpfung, s bloc die Rückwärtsverknüpfung) zum Verknüpfen sämtlicher Elemente. Die Liste savail 30 ordnet die Segmente des Hauptspeichers 14, die frei 50 oder zur Zuweisung verfügbar sind. Die Liste sactive 40 ordnet die Segmente des Hauptspeichers 14, die momentan aktiv sind 60 oder nicht zugewiesen werden können. Sowohl die Liste sactive 40 als auch die Liste savail 30 sind nach der Segmentgröße geordnet. Sowohl sactive 40 als auch savail 30 verwenden in jedem Eintrag der Segmenttabelle 90 gehaltene Zeiger (s_fsz ist die Vorwärtsverknüpfung, s bsz die Rückwärtsverknüpfung) zum Verknüpfen von Segmenten. Einträge in savail 30 und sactive 40 schließen sich ebenso wie die Verwendung der Zeiger sfsz und s bsz der Segmenttabelle 90 gegenseitig aus. Die Summe der Einträge in savail 30 und sactive 40 ist gleich den Einträgen in sloc 20. Jedesmal, wenn der Speicher 14 wegen des Anwachsens von Prozessen oder wegen des Eintritts oder des Austritts von Prozessen in das System bzw. aus dem System neu konfiguriert wird, aktualisiert der Speichermanager 1120 diese Listen in der Weise, daß sie die momentane Konfiguration des Speichers 14 widerspiegeln. Der Speichermanager 1120 verwendet diese Listen zum Zuweisen und Freigeben des Hauptspeichers 14.
  • In der bevorzugten Ausführungsform verwendet der Speichermanager 1120 die Prozeßtabelle 190 für ein gemeinsam genutztes Bild, von der ein Teileintrag in Fig. 6 gezeigt ist, um zu verfolgen, welche Prozesse jedes Segment nutzen, ob eine Segmentunterteilung möglich ist und um Informationen in bezug auf die Auslagerungskandidaten zu verfolgen. In dem Diagramm sind die hier diskutierten Felder mit der höchsten Relevanz für die Arbeit des Speichermanagers 1120 enthalten. Für jedes Prozeßbild in dem System existiert ein Eintrag in der Prozeßtabelle 190 für ein gemeinsam genutztes Bild. Obgleich der Speichermanager 1120 in der Prozeßtabelle 190 für ein gemeinsam genutztes Bild eine Anzahl von Feldern unterhält, werden die verbleibenden Felder durch andere Teile des Betriebssystemkerns 1100 unterhalten und verwendet.
  • Die Beziehung zwischen den Einträgen in der Prozeßtabelle 180, den Einträgen in der Prozeßtabelle 190 für ein gemeinsam genutztes Bild und den Einträgen in der Segmenttabelle 90 sind in Fig. 7 gezeigt. In diesem Beispiel sind die Einträge 1 und 2 in der Prozeßtabelle 180 tatsächlich Mikroprozesse, die den Text 1 und die Teildaten 1 gemeinsam nutzen. Mikroprozesse sind in dem Literaturhinweis des übertragenen Patents US-A-5339419 mit dem Titel Dual Level Scheduling of Processes to Multiple Parallel Regions of a Multi-threaded Program on a Tightly Coupled Multiprocessor Computer System genau beschrieben. Der Eintrag 3 in der Prozeßtabelle 180 ist ein Prozeß, der den Text 1 mit den Mikroprozessen 1 und 2 gemeinsam nutzt. Um dies zu zeigen, sind ihre Einträge in der Prozeßtabelle 190 für ein gemeinsam genutztes Bild über die gemeinsame Textverknüpfung (sz shtx link) verknüpft. Der Eintrag 3 in der Prozeßtabelle 180 nutzt die Daten 2 mit dem Eintrag 4 in der Prozeßtabelle gemeinsam. Um dies zu zeigen, sind ihre Einträge in der Prozeßtabelle 190 für ein gemeinsam genutztes Bild über die gemeinsam genutzte Datenverknüpfung (si shmm link) verknüpft. Der Eintrag 5 in der Prozeßtabelle 180 stellt einen Prozeß dar, der keine Segmente in seinem Bild gemeinsam nutzt.
  • Die folgende Funktionsbeschreibung des Speichermanagers 1120 bezieht sich direkt auf den im Anhang A gelieferten Speichermanagement-Pseudocode. Die Funktionsbeschreibung bezieht sich auf die Verwendungen der Tabellen und Felder in den zuvor erwähnten Tabellen.
  • Wie im Standard-UNIX wird der (häufig als Auslagerer bezeichnete) Sched-Prozeß als Teil der Initialisierung des Betriebssystemkerns 1100 ausgelöst, um den Hauptspeicher 14 sämtlichen Prozessen zuzuweisen, die für die Ausführung bereit sind, deren Prozeßbilder aber in der Auslagerungsvorrichtung 70 vorhanden sind und noch nicht in den Hauptspeicher 14 geladen wurden. Wenn es in der Auslagerungsvorrichtung 70 keine Prozeßbilder gibt, die für die Ausführung bereit sind, wird der Speichermanager 1120 in einen Ruhezustand versetzt, der seine Ausführung anhält, bis der Betriebssystemkern 1100 seine Ausführung sowohl periodisch als auch bei einer benötigten Speicherzuweisung fortsetzt. Sched durchläuft die Schleife über die Einträge in der Prozeßtabelle 180, Fig. 7, wobei es nach dem geeignetsten Prozeß sucht, der im "laufbereiten" Zustand ist, jedoch nicht in den Hauptspeicher 14 geladen wurde. Üblicherweise ist "am geeignetsten" als der älteste Prozeß definiert, der nur auf den Hauptspeicher 14 wartet, wobei einige Implementierungen auch die Priorität als ein Kriterium für "am geeignetsten" verwenden; solange keine Übereinkünfte (mit Ausnahme der Zuweisung des Hauptspeichers 14) die sofortige Ausführung verhindern, kann alternativ als "am geeignetsten" irgendeine Definition angenommen werden. Unabhängig von der Definition der Eignung werden die Felder in der Prozeßtabelle 180 wie etwa die "Hintergrund-Anwenderpriorität" und die "kürzliche Prozessornutzung" verwendet, um zu definieren, welcher Prozeß "am geeignetsten" ist.
  • Damit ein Prozeß ausgeführt werden kann, muß sein gesamtes Prozeßbild im Hauptspeicher 14 vorhanden sein. Jedes Segment, das zu einem Prozeßbild gehört, ist in einem Eintrag in der Segmenttabelle 90 beschrieben. Jeder Eintrag in der Segmenttabelle 90 enthält ein Feld s size, das die für dieses Segment benötige Menge des Hauptspeichers 14 angibt. Falls der benötigte Raum im Hauptspei cher 14 für sämtliche Segmente dieses Prozeßbildes erhalten wird, werden diese Segmente aus der Auslagerungsvorrichtung 70 in den Hauptspeicher 14 kopiert, d. h. eingelagert. Dieser Mechanismus wird durch eine im folgenden erläuterte sWapin genannte Routine ausgeführt. Falls im Hauptspeicher 14 nicht genügend Raum für alle Segmente erhalten werden kann, wird der Speicherraum, der erhalten wurde, freigegeben, und die Zuweisung erneut versucht. Dies ermöglicht das Zusammenfügen von Teilsegmenten, die hierauf auf neue Weise erneut unterteilt werden, wobei sie möglicherweise in den freien Raum 50, Fig. 5, passen (das Unterteilen und das Zusammenfügen werden im folgenden ausführlicher beschrieben). Falls die Speicherzuweisung immer noch nicht möglich ist, versetzt sich sched selbst in den Ruhezustand. Die Taktroutine weckt sched beim nächsten Haupttaktimpuls, wobei sched hierauf das sWapin zu diesem Zeitpunkt erneut versucht. Diese Verzögerung schafft eine Möglichkeit zum Neukonfigurieren des Hauptspeichers 14 vor dem erneuten Versuch der Zuweisung. Die Neukonfigurierung eines gemeinsam genutzten Hauptspeichers 14 während dieser Verzögerung kann wegen der Bewegung von auf anderen Prozessoren laufenden Prozessen im Speicher 14 stattfinden. Falls sWapin immer noch keinen Raum im Speicher 14 zuweist, wird der Raum im Hauptspeicher 14 vor einem erneuten Swapin-Versuch zwangsweise neu konfiguriert.
  • Die zwangsweise Neukonfigurierung wird durch Auslagern der aufeinanderfolgend im Speicher 14 vorhandenen nicht laufenden Prozeßbilder erreicht, bis für sämtliche geeigneten Prozeßbildsegmente genügend Hauptspeicher 14 freigegeben wurde; d. h., als letzter Ausweg zum Erzwingen einer Speicherneukonfigurierung wird das erste auslagerbare Segment in der Liste sloc 20 ausgelagert. Falls das swapin erfolgreich ist, wird aus der Prozeßtabelle 180 der nächste zum Einlagern geeignetste Kandidat zur Haupt speicherzuweisung ausgewählt. Falls swapin immer noch erfolglos war, wird sched bis zum nächsten Hauttaktimpuls erneut in den Ruhezustand versetzt, um ein Neukonfigurieren des Speichers 14 zu ermöglichen. Diese Schleife wird fortgesetzt, bis sämtliche ausgelagerten lauffähigen Prozesse eingelagert sind. Es wird angemerkt, daß die Sched- Schleife durch die Prozeßtabelle 180 wie im Standard-UNIX stattfindet, während das Verfahren des Erlangens von Raum im Hauptspeicher 14 für die vorliegende Erfindung einzigartig ist.
  • EINLAGERN
  • Einlagern bzw. swapin ist die von sched aufgerufene Prozedur, die für jedes zu einem Prozeßbild gehörende Segment den zuweisbaren oder freien Hauptspeicherraum 50 auffindet. Obgleich das Einlager- bzw. Swapin-Konzept im Standard-UNIX existiert, ist seine hier beschriebene Implementierung für die vorliegende Erfindung einzigartig. Swapin bestimmt unter Verwendung der Listen sloc 20, savail 30 und sactive 40 die Anordnung des Hauptspeichers 14. Für jedes Segment in einem Prozeßbild beginnt das Einlagern mit der Prüfung, ob das Segment bereits im Hauptspeicher 14 vorhanden ist; dies wird dadurch angegeben, daß das Feld s_flags der Segmenttabelle einen Wert von SG LOAD, Fig. 4, enthält.
  • Fig. 8 zeigt eine solche als Doppelbilder bezeichnete Situation, bei der Segmente eines Prozeßbildes im Hauptspeicher 14 vorhanden (gespeichert) sind, während sie ebenfalls in der Auslagerungsvorrichtung 70 vorhanden sind (gespeichert werden). Doppelbilder ergeben sich, wenn swapin nicht genügend Hauptspeicher 14 für sämtliche Segmente eines Prozeßbildes erlangen kann. Der Prozeß gibt den Raum im Speicher 14 zurück, den er für die Segmente des Prozeßbildes in der Hoffnung erhalten hatte, die Speicherzuweisung beim nächsten Versuch, sie einzulagern, abzuschließen. Wenn dieser Prozeß nicht für sämtliche seiner Segmente genügend Hauptspeicher 14 erlangt, wird er als Prozeß mit einem Doppelbild definiert. Das Auslagerungsbild wird nur dann freigegeben, wenn genügend Raum im Hauptspeicher 14 erhalten wird und wenn sämtliche Segmente eines Prozeßbildes aus der Auslagerungsvorrichtung 70 in den Hauptspeicher 14 kopiert werden. Doppelbilder sind Hauptkandidaten zur Auslagerung, da ihr Raum im Speicher 14, da die Auslagerungsbilder aus der Auslagerungsvorrichtung 70 noch nicht gelöscht wurden, nur freigegeben und nicht kopiert zu werden braucht.
  • Die partielle Auslagerung würde außerdem eine Situation erzeugen, in der swapin auf einige Segmente eines Prozesses im Hauptspeicher 14 treffen würde und auf andere Segmente treffen würde, die nicht im Speicher 14 sind. Die partielle Auslagerung ist der Prozeß, in dem nur eine Teilmenge der Gesamtzahl der Segmente eines Prozeßbildes ausgelagert wurden. Eine partielle Auslagerung kann erfolgen, um das Einlagern der Segmente eines anderen Prozesses zu ermöglichen. Eine partielle Auslagerung kann außerdem erfolgen, wenn ein einzelnes Segment eines Prozesses zum Wachsen ausgelagert wird. Das Auslagern zum Ermöglichen des Wachsens ist ein Standard-Echtspeicherverfahren (d. h. ein Verfahren ohne Seitenwechsel), um ein Segment im Speicher 14 wachsen zu lassen, wenn es nicht an seiner Stelle wachsen kann. Das heißt, falls der auf dieses Segment folgende Raum im Speicher 14 bereits zugewiesen ist (d. h. zugewiesener Speicher 60, Fig. 5, ist) und somit für das Wachsen dieses Segments nicht verfügbar ist, wird das Segment ausgelagert, wobei seine Größe in der Weise eingestellt wird, daß es die gewünschte Größe enthält, wobei dieses mit seiner neuen Größe in einen freien Speicherraum 50, der groß genug ist, um es zu enthalten, wiedereingelagert wird. Einige Speichermanagementsysteme führen dieses Wachsen dadurch aus, daß das Segment in einen größeren Bereich an freiem Speicherraum 50 bewegt wird, während es in der vorliegenden Erfindung wegen der besonderen Hardware-Plattform, deren Blockübertragungsrate schneller als die Wort-Wort- Speicherübertragungsrate ist, effizienter ist, das Segment auszulagern, als es aus dem Speicher 14 in den Speicher 14 zu kopieren.
  • Falls die einzulagernden Segmentdaten bereits im Hauptspeicher 14 vorhanden sind, ist unabhängig davon, ob die Situation durch das Vorhandensein von Doppelbildern oder von einer partiellen Auslagerung erzeugt wurde, keine weitere Zuweisungsverarbeitung für sie erforderlich. Falls dem einzulagernden Segment kein Raum im Hauptspeicher 14 zugewiesen wurde, wird durch Abtasten der Liste savail 30 ein einzelner Speicherblock gesucht, dessen Größe ausreicht, um das gesamte Segment zu halten. Falls im Speicher 14 kein einzelner freier Raum 50 wenigstens in der richtigen Größe vorhanden ist, wird die Segmentuntexteilung betrachtet.
  • Die Segmentunterteilung kann ausgeführt werden, falls das einzulagernde Segment unterteilbar ist und falls der Prozessor 10, in dem dieser Prozeß ausgeführt wird, nichtverwendete Datensteuerregistersätze 80, Fig. 9, besitzt. Die Datensteuerregister sind in dem Literaturhinweis des ebenfalls übertragenen Patents US-A-5165038 mit dem Titel Global Registers for a Multiprocessor System ausführlich beschrieben. Üblicherweise werden nur Datensegmente als unterteilbar definiert, wobei jedoch die Implementierung der bevorzugten Ausführungsform irgendeine alternative Definition akzeptiert. Die Datensteuerregistersätze 80 sind Entitäten des Hardwaresystems, die zu jedem Prozessor 10 gehören. Jeder Datensteuerregistersatz 80 enthält drei Steuerregister (das Register DSEGxS, das Register DSEGxE und das Register DSEGxD, wobei x zwischen O und der Maximalzahl der Datensegmente liegt), die zum Abbilden logischer auf physikalische Adressen verwendet werden. Jeder Datensteuerregistersatz 80 zeichnet die untere Grenze (die logische Startadresse) 100, die obere Grenze (die logische Endadresse) 110 und die Verschiebung 115 auf, die zu der logischen Adresse addiert werden muß, um die physikalische Adresse 120 zu erhalten. Die untere Grenze 100, die obere Grenze 110 und die tatsächliche physikalische Startadresse 120 werden in den Einträgen in der Segmenttabelle 90 in den in Fig. 4 aufgelisteten Feldern namens s Ib, s ub, und s base aufgezeichnet. Die Datensteuerregistersätze 80 bilden die Teile ab, um zu ermöglichen, daß der Anwender die Fragmente eines Segments als ein zusammenhängendes Segment interpretiert. Die Anzahl der Datensteuerregistersätze 60 pro Prozessor 10 bestimmt die Maximalzahl der Teile pro Prozeßbild. Das heißt, für jedes Teil muß es eine Menge von Registern zum Abbilden der logischen Adresse eines Anwenders auf seinen physikalischen Ort geben. Ein Feld in dem Eintrag der Prozeßtabelle 190 für ein gemeinsam genutztes Bild, Fig. 6, (si data avail) verfolgt, wieviel Datensteuerregistersätze 80 ungenutzt bleiben und kann somit zum Abbilden von Teilen verwendet werden. Falls bestimmt wird, daß das momentane Segment unterteilt werden kann, wird das größte Stück des freien Speichers 50 reserviert, wobei dessen Grenzen und Verschiebung zur Beschreibung des Teils in einen der Datensteuerregistersätze 80 eingegeben werden. Der Wert SG SPLIT wird in das Eintragsfeld sflags in der Segmenttabelle 90 eingegeben, um anzugeben, daß dies ein Teilsegment ist. Die Beschreibungen der oberen Grenze 100, der unteren Grenze 110 und der physikalischen Adresse 120 werden in dem Eintrag in der Segmenttabelle 90 für dieses Teil (in den Feldern s ub, s Ib, s base) gesichert. Außerdem wird der Eintrag in der Segmenttabelle 90 für dieses Teil aktualisiert, so daß er Verknüpfungen zu dem vorausgehenden und zu dem nächsten Teil dieses Segments (die Felder s prvsplt und s nxtsplt) enthält. Der Eintrag in der Prozeßtabelle 190 für ein gemeinsam genutztes Bild wird in der Weise eingestellt, daß er die momentane Anzahl der verbleibenden verfügbaren Teile hält (das Feld si data avail). Dieser Unterteilungsprozeß wird solange fortgesetzt, wie ungenutzte Datensteuerregistersätze 80 für diesen Prozessor 10 verbleiben und wie sich das einzulagernde Segment nicht vollständig im Speicher 14 befindet.
  • Falls es keinen freien Speicherraum 50 für das momentane nicht unterteilbare Segment gibt, werden intelligente Wahlen darüber getroffen, wie freier Raum 50 zu erzeugen ist. Es folgen die sechs Möglichkeiten für die Auslagerungskandidaten in der Reihenfolge der Priorität. Zunächst werden Segmente ausgelagert, die zu gemeinsam genutzten Prozeßbildern gehören, von denen bereits einige Segmente in die Auslagerungsvorrichtung 70 bewegt wurden. Dies schließt Doppelbildsegmente und teilweise ausgelagerte Bilder ein. Zweitens werden Segmente ausgelagert, die zu ruhenden Prozessen 150 gehören, deren Größe mit dem benachbarten freien Raum 50 für das momentane Segment ausreicht. Drittens werden Segmente ausgelagert, die zu benachbarten ruhenden Prozessen 150 gehören, die zusammen genügend Raum für das momentane Segment freigeben. Viertens werden Segmente ausgelagert, die sowohl zu lauffähigen Prozessen 160 als auch zu ruhenden Prozessen 150 gehören, deren Größe zusammen mit dem benachbarten freien Raum 50 für das momentane Segment ausreicht. Fünftens werden Segmente ausgelagert, die zu benachbarten lauffähigen Kandidaten 160 und ruhenden Kandidaten 150 gehören, die zusammen genügend Raum für das momentane Gebiet freigeben. Schließlich werden als letzter Ausweg gemeinsam genutzte Speichersegmente ausgelagert. Fig. 10 zeigt eine Hauptspeicheranordnung mit freiem Raum 50, mit Auslagerungskandidaten 150 und 160 und mit Nichtkandidaten 170 für die zuvor beschriebene Auslagerungsprozedur. Das heißt, zum Freigeben von genügend Raum des Hauptspeichers 14 für ein eingehendes Segment könnten erforderlichenfalls sämtliche Segmente unter dem dicken Pfeil ausgelagert werden.
  • Wenn durch die Swapin-Prozedur Speicher für ein Segment zugewiesen wird, wird in dem Feld sflags des Eintrags 90 der Segmenttabelle, Fig. 4, der Wert SG JUST IN eingestellt, um zu verfolgen, welche Segmente physikalisch kopiert werden müssen. Das heißt, Segmente, die bereits Daten enthalten, brauchen aus der Auslagerungsvorrichtung 70 nicht hereinkopiert zu werden; ihr Sflags-Feld gibt dies dadurch an, daß es den Wert SG LOAD enthält. Diese Situation tritt auf, wenn ein Prozeß ein Doppelbild oder teilweise ausgelagert ist. Wenn z. B. nur das Datensegment eines Prozesses ausgelagert wurde, wird nur dieses Datensegment aus der Auslagerungsvorrichtung 70 in den Speicher 14 zurückkopiert. Gleichzeitig wird auch die Anzahl der zugewiesenen (im Speicher befindlichen) Segmente in dem Eintragsfeld si segs in in der Prozeßtabelle 190 für ein gemeinsam genutztes Bild, Fig. 6, inkrementiert.
  • Wenn die Anzahl der zugewiesenen Segmente gleich der Gesamtzahl der Segmente für dieses Prozeßbild ist, wurde der Raum im Speicher 14 für das gesamte Bild zugewiesen, so daß die Segmente in der Auslagerungsvorrichtung in den Speicher 14 kopiert werden können. Die Segmente werden nacheinander verarbeitet. Diese Verarbeitung umfaßt das Verriegeln des Segmenttabellen-Eintrags, um ihn für andere Prozesse unzugänglich zu machen, das physikalische Kopieren der in dem Segment enthaltenen Daten der Größe s size von der Auslagerungsvorrichtung 70 bei der in dem Eintragsfeld s swapaddr 70 in der Segmenttabelle 90 gesicherten Adresse in den Hauptspeicher 14 an die in dem Eintragsfeld s base in der Segmenttabelle 90 gesicherte Adresse und das Einstellen des Werts SG LOAD in dem Eintragsfeld sflags in der Segmenttabelle 90 (der angibt, daß der Speicher 14 jetzt die Segmentdaten enthält).
  • Falls irgendwelche gerade eingelagerten Segmente gemeinsam genutzte Speichersegmente sind (wobei diese von mehr als einem Prozeß gemeinsam genutzt werden) wird jeder Eintrag in der Prozeßtabelle 190 für ein gemeinsam genutztes Bild aktualisiert. Dies umfaßt das Aktualisieren der Referenzzahlen und das Markieren dieses Prozeßbildes als geladen, falls sich sämtliche Segmente für dieses Prozeßbild jetzt im Speicher 14 befinden.
  • Beim erfolgreichen Abschluß der Speicherzuweisung für den momentanen Prozeß kann er ausgeführt werden. Hierauf setzt Sched das Durchsuchen der Prozeßtabelle 180 nach einem weiteren L-geeigneten. Prozeß für das Swapin fort, wobei die zuvor beschriebene Schleife fortgesetzt wird.
  • AUSLAGERUNG
  • Out seg ist die während der Auslagerung bzw. des Swapin aufgerufene Prozedur, die durch Bewegen von Daten in einem Segment aus dem Speicher 14 in die Auslagerungsvorrichtung 70 freien Raum 50 im Hauptspeicher 14 erzeugt. Die besonderen auszulagernden Segmente werden wie zuvor beschrieben bestimmt.
  • Zunächst wird der Segmenttabellen-Eintrag des Segments, dessen Inhalt ausgelagert werden soll, verriegelt, um ihn für andere Prozesse unzugänglich zu machen.
  • Falls die Einträge in der Segmenttabelle 90, Fig. 4, angeben, daß dieses Segment in mehr als ein Stück unterteilt wurde (sflags enthält den Wert SG SPLIT), werden diese Teile wiedervereinigt oder zusammengefügt. Das Zusammenfügen, das verwirklicht, daß in der Auslagerungsvorrichtung 70 für sämtliche Teile zusammenhängender Raum zugewiesen wird und daß der Inhalt der Teile beim Schreiben aus dem Speicher 14 zu diesem Bereich vereinigt wird, ist in Fig. 11 gezeigt.
  • Das unterteilte oder nicht unterteilte Segment der Größe s size wird physikalisch aus dem Hauptspeicher 14 an der im Eintragsfeld s base in der Segmenttabelle 90 gesicherten Adresse an die im Eintragsfeld s swapaddr 70 in der Segmenttabelle 90 gesicherte Adresse in die Auslagerungsvorrichtung 70 kopiert. Je nach den genauen Umständen werden hierauf die Merker aktualisiert, so daß sie den Auslagerungsstatus widerspiegeln. Die Referenzzahl (si segs in) des Eintrags in der Prozeßtabelle 190 für ein gemeinsam genutztes Bild, d. h. die Anzahl der Segmente im Speicher 14, wird für jedes Bild, das dieses Segment gemeinsam nutzt, dekrementiert. Das Eintragsfeld si data avail in der Prozeßtabelle 190 für ein gemeinsam genutztes Bild wird 37 in der Weise eingestellt, daß es das Zusammenfügen der Teile widerspiegelt. Die Werte SG SPLIT, SG JUST IN und SG LOAD werden aus dem Eintragsfeld sflags der Segmenttabelle gelöscht, um anzugeben, daß es nicht mehr unterteilt ist, daß kein Speicher mehr für es reserviert ist und daß die Daten für es nicht mehr im Hauptspeicher 14 vorhanden sind. Die Datensteuerregistersätze 80, die dieses Segment beschreiben, werden ebenfalls gelöscht.
  • Falls swapout im Ergebnis eines Fork aufgerufen wird (was angibt, daß ein Elternprozeßbild in die Auslagerungsvorrichtung 70 kopiert wird, um ohne Zerstören des Elternprozeßbildes ein neues Kindprozeßbild zu erzeugen) wird der Hauptspeicher 14 für dieses Segment nicht freigegeben. In allen anderen Fällen wird der Raum im Hauptspeicher 14 für die ausgelagerten Segmente eines Prozesses freigegeben. Im Fall eines Fork wird das Kindprozeßbild in der Auslagerungsvorrichtung 70 später eingelagert, wenn der Kindprozeß für die Ausführung geeignet ist. Dieses Standard-Echtspeicher-Erzeugungsverfahren (ohne Seitenwechsel) ist in Fig. 12 gezeigt. Anhang A SPEICHERMANAGEMENT-PSEUDOCODE

Claims (40)

1. Verfahren zum Betreiben eines nicht virtuellen Hauptspeicher-Managers (1120), der Einlagerungs- und Auslagerungsoperationen verwendet, um Raum in einem nicht virtuellen Hauptspeicher (14) an ein oder mehrere Segmente eines oder mehrerer Prozeßbilder zuzuweisen oder die Zuweisung dieses Raums aufzuheben, wobei die Prozeßbilder in einer Auslagerungsvorrichtung (70) vorhanden sind und für die Ausführung in einem Computerverarbeitungssystem bereit sind, das einen oder mehrere Prozessoren enthält, die den Hauptspeicher (14) und die Auslagerungsvorrichtung (70) gemeinsam nutzen, wobei die Segmente Raum unterschiedlicher Größen erfordern und sämtliche Segmente für ein Prozeßbild im Hauptspeicher vorhanden müssen, bevor das Prozeßbild durch das Computerverarbeitungssystem ausgeführt werden kann, und wobei der Hauptspeicher- Manager (1120) eine Einlagerungsoperation für die Segmente eines ausgewählten Prozeßbildes, das für die Ausführung bereit ist, ausführt, wenn Raum im Hauptspeicher verfügbar ist, und eine Auslagerungsoperation für die Segmente eines oder mehrerer Prozeßbilder, die momentan im Hauptspeicher gespeichert sind, ausführt, wobei die Schritte des Verfahrens umfassen:
Konstruieren wenigstens einer Segmentort-Liste (21), die sämtliche physischen bzw. physikalischen Segmenträume im Hauptspeicher identifiziert, einer Liste (40) aktiver Segmente, die Raum im Hauptspeicher identifiziert, der momentan einem oder mehreren Segmenten zugewiesen ist, und einer Liste (30) verfügbarer Segmente, die Raum im Hauptspeicher identifiziert, der momentan keinem der Segmente zugewiesen ist,
Prüfen der Liste der verfügbaren Segmente auf ausreichenden zusammenhängenden Raum im Hauptspeicher, der keinem Segment zugewiesen worden ist und groß genug ist, um ein oder mehrere Segmente eines Prozeßbildes zu enthalten, die bereit sind, in den Hauptspeicher eingelagert zu werden,
Ausführen einer Einlagerungszuweisungsoperation, um den zusammenhängenden Raum im Hauptspeicher dem einen oder den mehreren Segmenten zuzuweisen, falls ausreichend viel nicht zugewiesener, zusammenhängender Raum im Hauptspeicher verfügbar ist, um eines oder mehrere der Segmente des Prozeßbildes, die bereit sind, in den Hauptspeicher eingelagert zu werden, zu speichern,
Aktualisieren wenigstens der Liste (30) verfügbarer Segmente und der Liste (40) aktiver Segmente nach der Ausführung der Einlagerungszuweisungsoperation,
Prüfen der Liste (40) aktiver Segmente auf einen Segmentkandidaten für die Auslagerung aus dem Hauptspeicher (14), falls der im Hauptspeicher verfügbare nicht zugewiesene zusammenhängende Raum unzureichend ist, um irgendeines oder mehrere Segmente des Prozeßbildes, die bereit sind, in den Hauptspeicher eingelagert zu werden, zu speichern,
Ausführen einer Auslagerungsoperation am Segmentkandidaten, um die Zuweisung des Raums im Hauptspeicher, der dem Segmentkandidaten zugewiesen worden ist, aufzuheben, und
Aktualisieren wenigstens der Liste (30) verfügbarer Segmente und der Liste (40) aktiver Segmente nach der Ausführung der Auslagerungsoperation am Segmentkandidaten.
2. Verfahren nach Anspruch 1, bei dem die Segmentort-Liste durch den physischen bzw. physikalischen Ort sämtlicher Segmente im Hauptspeicher, sowohl der zugewiesenen als auch der nicht zugewiesenen, geordnet ist.
3. Verfahren nach Anspruch 1, bei dem die Liste aktiver Segmente durch die Größe des zusammenhängenden Raums im Hauptspeicher, der für jedes Segment erforderlich ist, geordnet ist.
4. Verfahren nach Anspruch 1, bei dem die Liste verfügbarer Segmente durch die Größe des zusammenhängenden Raums im Hauptspeicher, der keinem Segment zugewiesen ist, geordnet ist.
5. Verfahren nach Anspruch 1, bei dem die Segmentort-Liste, die Liste verfügbarer Segmente und die Liste aktiver Segmente zirkuläre doppelt verknüpfte Listen sind.
6. Verfahren nach Anspruch 1, ferner mit den folgenden Schritten:
nacheinander Wiederholen irgendeines der Schritte des Prüfens der Liste verfügbarer Segmente, des Ausführens einer Einlagerungszuweisungsoperation, des Aktualisierens wenigstens der Liste verfügbarer Segmente und der Liste aktiver Segmente nach der Ausführung der Einlagerungsoperation, des Prüfens der Liste aktiver Segmente, des Ausführens einer Auslagerungsoperation am Segmentkandidaten und des Aktualisierens wenigstens der Liste verfügbarer Segmente und der Liste aktiver Segmente, bis jedem Segment des Prozeßbildes, das bereit ist, in den Hauptspeicher eingelagert zu werden, Raum im Hauptspeicher zugewiesen worden ist,
Übertragen sämtlicher Segmente von der Auslagerungsvorrichtung (70) in den Hauptspeicher (14) und
Aktualisieren der Segmentort-Liste (20), der Liste (30) verfügbarer Segmente und der Liste (40) aktiver Segmente, um den momentanen Ort von Segmenten im Hauptspeicher und die momentanen Orte von Segmenten im Hauptspeicher, die zugewiesen worden sind und die nicht zugewiesen worden sind, wiederzugeben.
7. Verfahren nach einem der vorhergehenden Ansprüchen, ferner umfassend:
Ausführen einer Einlagerungszuweisungsoperation, um zusammenhängenden Raum im Speicher wenigstens einem Segment eines Prozeßbildes zuzuweisen, das in der Auslagerungsvorrichtung vorhanden ist,
wobei die Einlagerungszuweisungsoperation den Prüfschritt enthält, in dem bestimmt wird, ob dem einen Segment bereits Raum im Hauptspeicher zugewiesen worden ist,
wenn ja, Ausführen einer weiteren Einlagerungszuweisungsoperation, um einem weiteren Segment des einen Prozeßbildes zusammenhängenden Raum im Hauptspeicher zuzuweisen,
wenn nein, Prüfen auf einen nicht zugewiesenen zusammenhängenden Raum im Hauptspeicher, der groß genug ist, um das gesamte eine Segment zu speichern, Zuweisen dieses Raums an das eine Segment und Kopieren des Segments in den Hauptspeicher,
falls dem einen Segment Raum zugewiesen ist, Halten eines Bildes des Segments in der Auslagerungsvorrichtung, um eine Doppelbildzuweisung zu erzeugen, bei der es, falls das Segment durch eine Auslagerungsoperation aus dem Hauptspeicher entfernt werden soll, lediglich notwendig ist, die Zuweisung des dem einen Segment zugewiesenen Raums aufzuheben, ohne das Segment in die Auslagerungsvorrichtung zu kopieren.
8. Verfahren nach Anspruch 7, ferner mit dem folgenden Schritt:
Halten von zugewiesenem Raum im Hauptspeicher (14) für einige Segmente eines Prozeßbildes, bis sämtlichen Segmenten dieses Prozeßbildes Raum im Hauptspeicher zugewiesen worden ist.
9. Verfahren nach Anspruch 8, ferner mit dem folgenden Schritt:
Freigeben eines Prozeßbildes aus der Auslagerungsvorrichtung (70), falls sämtlichen Segmenten dieses Prozeßbildes Raum im Hauptspeicher zugewiesen worden ist.
10. Verfahren nach einem der vorhergehenden Ansprüche, ferner umfassend:
als einen Schritt in der Auslagerungsoperation Ausführen einer partiellen Auslagerungsoperation durch Auslagern von weniger als allen Segmenten des einen im Hauptspeicher enthaltenen Prozeßbildes aus dem Hauptspeicher, um zugewiesenen Raum im Hauptspeicher freizugeben, um der Einlagerungsoperation zu ermöglichen, den nun nicht zugewiesenen Raum im Hauptspeicher einem oder mehreren Segmenten eines weiteren Prozeßbildes zuzuweisen.
11. Verfahren nach Anspruch 10, bei dem der Schritt des Ausführens der partiellen Auslagerungsoperation einem oder mehreren der Segmente, die ausgelagert wurden, ermöglicht, zusätzlichen Raum im Hauptspeicher zu erhalten, falls das Segment erneut eingelagert wird, ohne daß sämtliche Segmente des Prozeßbildes zu dem Zeitpunkt ausgelagert werden, zu dem das eine oder die mehreren Segmente ausgelagert werden.
12. Verfahren nach einem der vorhergehenden Ansprüche, ferner umfassend:
Bestimmen, ob im Hauptspeicher (14) nicht zugewiesener Raum (50) ausreichender Größe vorhanden ist, um ein in den Hauptspeicher einzulagerndes Segment zu enthalten,
falls im Hauptspeicher nicht zugewiesener Raum ausreichender Größe vorhanden ist, um das in den Hauptspeicher einzulagernde Segment zu enthalten, Zuweisen dieses Raums an das Segment,
falls der nicht zugewiesene Raum im Hauptspeicher nicht ausreicht, um das in den Hauptspeicher einzulagernde Segment zu enthalten, Bestimmen, ob das Segment entsprechend einem vorgegebenen Kriterium in Teilsegmente unterteilt werden kann, und
falls das Segment in Teilsegmente unterteilt werden kann, Unterteilen des Segments in wenigstens zwei Teilsegmente, wovon wenigstens einem ein Speicherraum zugewiesen wird, der einem nicht zugewiesenen zusammenhängenden Raum im Hauptspeicher entspricht.
13. Verfahren nach Anspruch 12, ferner mit dem folgenden Schritt:
Aufzeichnen einer unteren Grenze (100), einer oberen Grenze (110) und einer Verschiebung (115) für das Segment, das in Teilsegmente unterteilt worden ist, um eine Abbildung einer logischen Speicheradresse auf ihren physischen bzw. physikalischen Ort im Hauptspeicher zu ermöglichen.
14. Verfahren nach Anspruch 13, bei dem die untere Grenze, die obere Grenze und die Verschiebung in einer Gruppe von Registern (80) im Computerverarbeitungssystem aufgezeichnet werden.
15. Verfahren nach Anspruch 14, bei dem das Multiprozessorsystem eine vorgegeben Anzahl von Gruppen von Registern besitzt, um zu ermöglichen, daß eine vorgegebene Anzahl von Segmenten in Teilsegmente unterteilt werden kann und um dadurch eine Abbildung einer logischen Speicheradresse auf ihren physischen bzw. physikalischen Ort im Hauptspeicher für jedes Teilsegment vorzunehmen.
16. Verfahren nach Anspruch 15, bei dem dann, wenn ein Teilsegment aus dem Hauptspeicher ausgelagert wird, die Gruppe von Registern, die die untere Grenze, die obere Grenze und die Verschiebung enthalten, gelöscht wird und dadurch für die Aufzeichnung der unteren Grenze, der oberen Grenze und der Verschiebung eines weiteren Segments, das in Teilsegmente unterteilt wird, verfügbar wird.
17. Verfahren nach Anspruch 16, ferner mit dem folgenden Schritt:
Zusammenfügen der Teilsegmente des einen Segments zu einem zusammenhängenden Raum in der Auslagerungsvorrichtung.
18. Verfahren nach einem der vorhergehenden Ansprüche, ferner umfassend:
Erzeugen eines nicht zugewiesenen Raums im Hauptspeicher durch Ausführen einer Auslagerungsoperation an einem Segment, das durch Analysieren der im Hauptspeicher gespeicherten Segmente gewählt wird, die an irgendeinen zusammenhängenden Raum im Hauptspeicher angrenzen, der einem in den Hauptspeicher einzulagernden Segment zugewiesen werden kann,
derart, daß ein Segment aus dem Hauptspeicher ausgelagert wird, bis dies im Hauptspeicher ausreichenden zusammenhängenden Raum erzeugt, um die Speichergröße des in den Hauptspeicher einzulagernden Segments zuzuweisen, wodurch die Effizienz des Hauptspeicher-Managers erhöht wird.
19. Verfahren nach Anspruch 18, bei dem das als Fokus der Auslagerungsoperation für die Erhöhung der Effizienz des Hauptspeicher-Managers gewählte Segment sowohl zugewiesenen Raum im Hauptspeicher als auch ein Bild des Prozesses, dem das Segment zugeordnet ist, in der Ausla gerungsvorrichtung besitzt.
20. Verfahren nach Anspruch 18, bei dem das als Fokus der Auslagerungsoperation für die Erhöhung der Effizienz des Hauptspeicher-Managers gewählte Segment ein Segment ist, das einem Prozeßbild zugeordnet ist, das momentan nicht ausgeführt werden kann und das zugewiesenen Raum im Hauptspeicher besitzt, der an nicht zugewiesenen Raum im Hauptspeicher angrenzt, der eine ausreichende Größe besitzt, damit, wenn der angrenzende nicht zugewiesene Raum im Hauptspeicher mit der Speichergröße des Raums, der dem auszulagernden Segment zugewiesen ist, kombiniert wird, die sich ergebende Speichergröße groß genug ist, um ein weiteres in dem kombinierten Raum im Hauptspeicher einzulagerndes Segment zu enthalten.
21. Verfahren nach Anspruch 18, bei dem das als Fokus der Auslagerungsoperation für die Erhöhung der Effizienz des Hauptspeicher-Managers gewählte Segment ein Segment ist, das einem Prozeßbild zugeordnet ist, das momentan nicht ausgeführt werden kann, und an ein zweites Segment angrenzt, das einem weiteren Prozeßbild zugeordnet ist, das momentan nicht ausgeführt werden kann, so daß, wenn der Raum im Hauptspeicher für das eine Segment mit dem Raum im Hauptspeicher für das zweite Segment kombiniert wird, die sich ergebende Speichergröße groß genug ist, um ein momentanes Segment, das in den kombinierten Raum in dem Hauptspeicher eingelagert werden soll, zu enthalten.
22. Verfahren nach Anspruch 18, bei dem das als Fokus der Auslagerungsoperation für die Erhöhung der Effizienz des Hauptspeicher-Managers gewählte Segment ein Segment ist, das entweder einem Prozeßbild, das momentan ausführbar ist, oder einem Prozeßbild, das momentan nicht ausführbar ist, zugeordnet ist und an nicht zugewiesenen Raum im Hauptspeicher angrenzt, dessen Größe ausreicht, damit, wenn die Speichergröße des Raums, der dem Segment zugewiesen ist, das der Fokus der Auslagerungsoperation ist, und der angrenzende nicht zugewiesene Raum im Hauptspeicher kombiniert werden, die sich ergebende Speichergröße groß genug ist, um ein weiteres in den kombinierten Raum in dem Hauptspeicher einzulagerndes Segment zu enthalten.
23. Verfahren nach Anspruch 18, bei dem das als Fokus der Auslagerungsoperation für die Erhöhung der Effizienz des Hauptspeicher-Managers gewählte Segment ein Segment ist, dem ein momentan nicht ausführbares Prozeßbild zugeordnet ist und das an ein zweites Segment angrenzt, dem ein momentan ausführbares Prozeßbild zugeordnet ist, so daß dann, wenn der Raum im Hauptspeicher für das eine Segment mit dem Raum im Hauptspeicher für das zweite Segment kombiniert wird, die sich ergebende Speichergröße groß genug ist, um ein in den kombinierten Raum im Hauptspeicher einzulagerndes momentanes Segment zu enthalten.
24. Verfahren nach einem der vorhergehenden Ansprüche, ferner umfassend:
Bestimmen für jedes Segment des gewählten Einlagerungsprozeßbildes, ob diesem Segment Raum im Hauptspeicher zugewiesen oder nicht zugewiesen worden ist,
falls einem Segment Raum im Hauptspeicher nicht zugewiesen worden ist, Bestimmen, ob ausreichend viel zusammenhängender Raum im Hauptspeicher diesem Segment zugewiesen werden kann oder nicht,
falls ausreichend viel zusammenhängender Raum im Hauptspeicher diesem Segment nicht zugewiesen werden kann, Versuchen, diesem Segment Raum im Hauptspeicher zuzuweisen, indem zugelassen wird, daß Segmente, die von mehr als einem Prozeßbild gemeinsam genutzt werden, aus dem Hauptspeicher gezwungen werden.
25. Verfahren nach Anspruch 24, bei dem der Schritt des Versuchens, Raum im Hauptspeicher zuzuweisen, umfaßt:
Ausführen einer Suche nach Raum im Hauptspeicher, um zu bestimmen, ob im Hauptspeicher ausreichend viel zusammenhängender nicht zugewiesener Raum vorhanden ist, der eine ausreichende Größe besitzt, um das Segment zu enthalten.
26. Verfahren nach Anspruch 24, bei dem der Schritt des Zuweisens von Raum im Hauptspeicher umfaßt:
Unterteilen dieses Segments in Teilsegmente, wovon jedes eine Speichergröße besitzt, die in die momentan nicht zugewiesenen Räume im Hauptspeicher paßt.
27. Verfahren nach Anspruch 24, bei dem der Schritt des Zuweisens von Raum im Hauptspeicher umfaßt:
Ausführen einer Auslagerungsoperation an Segmenten im Hauptspeicher, die anderen Prozeßbildern zugeordnet sind, bei denen nicht sämtliche dem Prozeßbild zugeordneten Segmente im Hauptspeicher enthalten sind.
28. Verfahren nach Anspruch 24, bei dem der Schritt des Zuweisens von Raum im Hauptspeicher umfaßt:
Ausführen einer Auslagerungsoperation an Segmenten im Hauptspeicher, die einem momentan nicht ausführbaren Prozeßbild zugeordnet sind und die an nicht zugewiesenen Raum im Hauptspeicher angrenzen, so daß die Speichergröße der Segmente kombiniert mit der Speichergröße des angrenzenden nicht zugewiesenen Raums im Hauptspeicher ein ausreichender zusammenhängender Raum im Hauptspeicher ist, um das Segment zu enthalten, das in den Hauptspeicher eingelagert werden soll.
29. Verfahren nach Anspruch 24, bei dem der Schritt des Zuweisens von Raum im Hauptspeicher umfaßt:
Ausführen einer Auslagerungsoperation an Segmen ten im Hauptspeicher, die einem momentan nicht ausführbaren Prozeßbild zugeordnet sind oder einem momentan ausführbaren Prozeßbild zugeordnet sind und an nicht zugewiesenen Raum im Hauptspeicher angrenzen, so daß die Speichergröße der Segmente kombiniert mit der Speichergröße des angrenzenden nicht zugewiesenen Raums im Hauptspeicher ausreichend viel zusammenhängender Raum im Hauptspeicher ist, um das Segment zu enthalten, das in den Hauptspeicher eingelagert werden soll.
30. Verfahren nach Anspruch 24, bei dem der Schritt des Zuweisens von Raum im Hauptspeicher umfaßt:
Ausführen einer Auslagerungsoperation an benachbarten Segmenten im Hauptspeicher, die einem weiteren momentan nicht ausführbaren Prozeßbild zugeordnet sind und einem momentan ausführbaren Prozeßbild zugeordnet sind, wobei solche benachbarten Segmente an einen nicht zugewiesenen Raum im Hauptspeicher angrenzen, so daß die Speichergröße jedes Segments kombiniert mit der Speichergröße des angrenzenden nicht zugewiesenen Raums im Hauptspeicher ausreichend viel zusammenhängender Raum im Hauptspeicher ist, um das Segment zu enthalten, das in den Hauptspeicher eingelagert werden soll.
31. Verfahren nach Anspruch 24, bei dem der Schritt des Zuweisens von Raum im Hauptspeicher umfaßt:
erstens Suchen von Raum im Hauptspeicher, um zu bestimmen, ob irgendein nicht zugewiesener Raum im Hauptspeicher vorhanden ist, der groß genug ist, um dieses Segment zu enthalten, und dann, wenn Raum im Hauptspeicher, der ausreicht, um dieses Segment zu enthalten, nicht nicht zugewiesen ist,
zweitens Versuchen, dieses Segment in Teilsegmente zu unterteilen, die in momentan nicht zugewiesene Räume im Hauptspeicher passen, und dann, wenn die Teilsegmente dieses Segments nicht in momentan nicht zugewie sene Räume im Hauptspeicher passen,
drittens Ausführen einer Auslagerungsoperation an Segmenten anderer Prozeßbilder, von denen bereits einige Segmente ausgelagert worden sind, und dann, wenn dieses Segment nicht in die nicht zugewiesenen Räume im Hauptspeicher paßt,
viertens Ausführen einer Auslagerungsoperation an Segmenten eines momentan nicht ausführbaren Prozeßbildes, was kombiniert mit angrenzendem nicht zugewiesenen Raum im Hauptspeicher zusammenhängenden Speicher einer Größe erzeugt, um das Segment zu enthalten, und dann, wenn das Segment nicht in die nicht zugewiesenen Räume im Hauptspeicher paßt,
fünftens Ausführen einer Auslagerungsoperation an Segmenten eines momentan nicht ausführbaren Prozeßbildes oder eines momentan ausführbaren Prozeßbildes, wobei diese Segmente kombiniert mit nicht zugewiesenem Raum im Hauptspeicher, der an diese Segmente angrenzt, einen zusammenhängenden Speicher einer Größe erzeugt, der das Segment, das in den Hauptspeicher eingelagert werden soll, enthalten kann.
32. Verfahren nach einem der vorhergehenden Ansprüche, ferner umfassend:
Zuweisen eines Raums in der Auslagerungsvorrichtung mit einer Größe, die ausreicht, um ein Segment eines gewählten Auslagerungssegments eines Prozeßbildes zu enthalten,
Bestimmen, ob das gewählte Auslagerungssegment in zwei oder mehr Teilsegmente unterteilt worden ist,
falls das gewählte Auslagerungssegment Teilsegmente besitzt, Zusammenfügen der Teilsegmente zu dem in der Auslagerungsvorrichtung zugewiesenen Raum und
falls das Segment keine Teilsegmente besitzt, Bewegen des Segments in den zugewiesenen Raum in der Auslagerungsvorrichtung.
33. Verfahren nach einem der vorhergehenden Ansprüche, ferner umfassend:
Bestimmen, ob ein aus dem Hauptspeicher auszulagerndes Segment eine Doppelzuweisung im Hauptspeicher (14) und in der Auslagerungsvorrichtung (70) besitzt,
falls das Segment eine Doppelzuweisung im Hauptspeicher und in der Auslagerungsvorrichtung besitzt, Aufheben der Zuweisung von Raum im Hauptspeicher, der dieser Doppelzuweisung des Segments zugewiesen ist, ohne das Segment in die Auslagerungsvorrichtung als Teil einer Auslagerungsoperation zu kopieren.
34. Verfahren nach Anspruch 33, ferner mit den folgenden Schritten:
Bestimmen, daß das auszulagernde Segment keine Doppelzuweisung im Hauptspeicher und in der Auslagerungsfunktion besitzt,
Zuweisen eines Raums in der Auslagerungsvorrichtung mit ausreichender Größe, um das Segment zu enthalten,
Bestimmen, ob das Segment in Teilsegmente unterteilt worden ist,
falls das Segment in Partialsegmente unterteilt worden ist, Zusammenfügen der Teilsegmente zu dem in der Auslagerungsvorrichtung zugewiesenen Raum und
falls das Segment keine Teilsegmente besitzt, Bewegen des Segments in den Raum in der Auslagerungsvorrichtung.
35. Verfahren nach einem der vorhergehenden Ansprüche, ferner mit den folgenden Schritten:
(a) Wählen eines Einlagerungsprozesses, der von der Auslagerungsvorrichtung in den Hauptspeicher eingelagert werden soll;
(b) für jedes Segment des Prozeßbildes des Einlage rungsprozesses Ausführen der folgenden Schritte:
(b1) Bestimmen, ob dem Segment Raum im Hauptspeicher zugewiesen worden ist;
(b2) falls dem Segment Raum im Hauptspeicher zugewiesen worden ist, Bestimmen, ob im Hauptspeicher irgendwelche nicht zugewiesenen zusammenhängenden Räume vorhanden sind;
(b3) falls keine nicht zugewiesenen zusammenhängenden Räume im Hauptspeicher vorhanden sind, Ausführen einer Auslagerungsprozedur, um einen oder mehrere nicht zugewiesene zusammenhängende Räume im Hauptspeicher zu erzeugen; und
(b4) falls wenigstens ein nicht zugewiesener zusammenhängender Raum im Hauptspeicher vorhanden ist, Versuchen, den zusammenhängenden Raum im Hauptspeicher dem Segment zuzuweisen, umfassend die folgenden Schritte:
(b41) Zuweisen von Raum an das Segment, falls ausreichend viel nicht zugewiesener zusammenhängender Raum im Hauptspeicher für die Speichergröße des Segments vorhanden ist,
(b42) Unterteilen des Segments in zwei oder mehr Teilsegmente, falls kein ausreichender zusammenhängender Raum im Hauptspeicher vorhanden ist, um die Speichergröße des Segments zuzuweisen, und falls das Segment einen einer vorgegebenen Menge von Typen von Informationen, die unterteilt werden können, enthält, so daß wenigstens eines der Teilsegmente eine Speichergröße besitzt, damit ausreichend viel nicht zugewiesener zusammenhängender Raum im Speicher dem Teilsegment zugewiesen werden kann, und
(b43) Ausführen der Auslagerungsprozedur, falls im Hauptspeicher kein ausreichender nicht zugewiesener zusammenhängender Raum für die Speichergröße des Segments oder eines der Teilsegmente vorhanden ist, und Wiederholen der Schritte (b41)-(b42); und
(c) falls sämtlichen Segmenten des Einlagerungspro zesses Raum im Hauptspeicher zugewiesen wurde, Kopieren sämtlicher Segmente des Prozeßbildes aus der Auslagerungsvorrichtung in den Hauptspeicher und Hinzufügen des Prozesses zu einer Ablaufwarteschlange von Prozessen, die von einem oder mehreren der Prozessoren ausgeführt werden sollen.
36. Verfahren nach Anspruch 35, das ferner dann, wenn sämtlichen Segmenten für den Einlagerungsprozeß als Ergebnis des Schrittes (b) kein Raum im Hauptspeicher zugewiesen wurde, die Ausführung der folgenden Schritte umfaßt:
(b5) Auslagern sämtlicher Segmente des Einlagerungsprozesses, denen Raum im Hauptspeicher zugewiesen wurde, um zuzulassen, daß irgendwelche Teilsegmente zusammengefügt werden, und Wiederholen der Schritte (b2)- (b4);
(b6) falls sämtlichen Segmenten für den Einlagerungsprozeß als Ergebnis des Schrittes (b5) kein Raum zugewiesen wurde, Verzögern um eine vorgegebene Zeitperiode und Wiederholen des Schrittes (b5); und
(b7) falls sämtlichen Segmenten für den Einlagerungsprozeß als Ergebnis des Schrittes (b6) kein Raum zugewiesen wurde, Auswählen eines neuen Einlagerungsprozesses und Wiederholen des Schrittes (b).
37. Verfahren nach Anspruch 35, bei dem die Auslagerungsoperation die aus dem Hauptspeicher auszulagernden Segmente wählt durch Analysieren der im Hauptspeicher gespeicherten Segmente, die an irgendwelche zusammenhängenden Räume im Hauptspeicher angrenzen, die dem Segment des Einlagerungsprozesses zugewiesen werden können, so daß ein Segment nicht aus dem Hauptspeicher ausgelagert wird, solange dies ausreichend zusammenhängenden, nicht zugewiesenen Raum im Hauptspeicher erzeugt, um die Speichergröße wenigstens einem der Segmente oder Teilsegmen ten des Einlagerungsprozesses zuzuweisen.
38. Verfahren nach Anspruch 37, bei dem die Auslagerungsoperation die folgenden Schritte umfaßt:
(a) Aufheben der Zuweisung von Raum an irgendwelche Segmente irgendwelcher Prozeßbilder, für die nicht sämtlichen Segmenten des Prozeßbildes Raum im Hauptspeicher zugewiesen worden ist;
(b) Bestimmen, ob das Auslagern eines Prozesses, der ruht und an irgendeinen nicht zugewiesenen Raum angrenzt, ausreichend Raum erzeugt, um ihn einem oder mehreren Segmenten oder Teilsegmenten des Einlagerungsprozesses zuzuweisen, und, wenn ja, Auslagern dieses Prozesses und Verlassen der Auslagerungsoperation;
(c) Bestimmen, ob die Auslagerung angrenzender Prozesse, die ruhen und an irgendeinen nicht zugewiesenen Raum angrenzen, ausreichenden Raum erzeugt, um ihn einem oder mehreren der Segmente oder Teilsegmente des Einlagerungsprozesses zuzuweisen, und wenn ja, Auslagern dieser Prozesse und Verlassen der Auslagerungsoperation; und
(d) Bestimmen, ob eine Kombination von ruhenden und auszuführenden Prozessen, die an irgendeinen nicht zugewiesenen Raum angrenzen, einen ausreichenden Raum erzeugt, um ihn einem oder mehreren der Segmente oder Teilsegmente des Einlagerungsprozesses zuzuweisen und, wenn ja, Auslagern dieses Prozesses und Verlassen der Auslagerungsoperation.
39. Verfahren nach einem der vorhergehenden Ansprüchen, ferner mit den folgenden Schritten:
während einer Einlagerungszuweisungsoperation, in der zusammenhängender Raum im Hauptspeicher einem oder mehreren der Segmente eines Prozesses zugewiesen wird, die von der Auslagerungsvorrichtung in den Hauptspeicher eingelagert werden sollen,
Versuchen, eines oder mehrere der Segmente des Prozesses in zwei oder mehr Teilsegmente zu unterteilen, falls kein ausreichender zusammenhängender Raum im Hauptspeicher vorhanden ist, um die Speichergröße des Segments zuzuweisen, und falls das Segment einen einer vorgegebenen Menge von Typen von Informationen enthält, die unterteilt werden können, so daß wenigstens eines der Teilsegmente ein Speicher mit einer Größe ist, damit ausreichend viel zusammenhängender Raum im Hauptspeicher dem Teilsegment zugewiesen werden kann; und
während einer Auslagerungsoperation, bei der ein oder mehrere der Segmente eines Prozesses aus dem Hauptspeicher in die Auslagerungsvorrichtung ausgelagert werden sollen,
Zusammenfügen irgendwelcher Teilsegmente eines Segments des Prozesses zu der Speichergröße dieses Segments, wenn die Segmente an die Auslagerungsvorrichtung übertragen werden,
wobei die Ausnutzung des Hauptspeichers gesteigert wird durch Unterteilen der Teilsegmente in Speichergrößen, die zusammenhängenden Speicherräumen im Hauptspeicher entsprechen, die jedesmal, wenn eine Einlagerungszuweisungsoperation für einen Prozeß ausgeführt wird, verfügbar sind.
40. Verfahren nach einem der vorhergehenden Ansprüche, ferner mit den folgenden Schritten:
während einer Auslagerungsoperation, bei der ein oder mehrere der Segmente eines oder mehrerer der Prozesse, die aus dem Hauptspeicher in die Auslagerungsvorrichtung ausgelagert werden sollen, Wählen der aus dem Hauptspeicher auszulagernden Segmente durch Analysieren der im Hauptspeicher zu speichernden Segmente, die an irgendeinen zusammenhängenden Raum im Hauptspeicher angrenzen, der dem in den Hauptspeicher einzulagernden Segment zugewiesen werden kann, so daß ein Segment nicht aus dem Hauptspeicher ausgelagert wird, bis dies einen ausrei chenden zusammenhängenden Raum im Hauptspeicher erzeugt, um die Speichergröße des in den Hauptspeicher einzulagernden Segments zuzuweisen.
DE69132139T 1990-06-11 1991-06-10 Effiziente nicht-virtuelle hauptspeicherverwaltung Expired - Fee Related DE69132139T2 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US07/537,466 US5179702A (en) 1989-12-29 1990-06-11 System and method for controlling a highly parallel multiprocessor using an anarchy based scheduler for parallel execution thread scheduling
US07/572,045 US5159678A (en) 1990-06-11 1990-08-23 Method for efficient non-virtual main memory management
PCT/US1991/004077 WO1991020036A1 (en) 1990-06-11 1991-06-10 Method for efficient non-virtual main memory management

Publications (2)

Publication Number Publication Date
DE69132139D1 DE69132139D1 (de) 2000-05-31
DE69132139T2 true DE69132139T2 (de) 2001-02-01

Family

ID=27065500

Family Applications (1)

Application Number Title Priority Date Filing Date
DE69132139T Expired - Fee Related DE69132139T2 (de) 1990-06-11 1991-06-10 Effiziente nicht-virtuelle hauptspeicherverwaltung

Country Status (5)

Country Link
US (1) US5159678A (de)
EP (5) EP0969380A3 (de)
JP (1) JPH05508043A (de)
DE (1) DE69132139T2 (de)
WO (1) WO1991020036A1 (de)

Families Citing this family (83)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0416768B1 (de) * 1989-09-08 1998-06-17 Digital Equipment Corporation Privatspeicher für Fäden in einem multifaden digitalen Datenverarbeitungssystem
US5359729A (en) * 1991-05-31 1994-10-25 Timeline, Inc. Method for searching for a given point in regions defined by attribute ranges, then sorted by lower and upper range values and dimension
US5659744A (en) * 1991-10-15 1997-08-19 International Computers Limited Data file store system with means for efficiently managing freeing of data blocks
US5359721A (en) * 1991-12-18 1994-10-25 Sun Microsystems, Inc. Non-supervisor mode cross address space dynamic linking
US5680582A (en) * 1991-12-20 1997-10-21 Microsoft Corporation Method for heap coalescing where blocks do not cross page of segment boundaries
US5649151A (en) * 1992-06-29 1997-07-15 Apple Computer, Inc. Efficient method and apparatus for access and storage of compressed data
US5734892A (en) * 1992-06-29 1998-03-31 Apple Computer, Inc. Efficient method and apparatus for access and storage of compressed data
US5727185A (en) * 1992-07-21 1998-03-10 Siemens Aktiengesellschaft Memory allocation method for allocating two logical store areas to a free store, that is one common physical store area of a computer
US5555388A (en) * 1992-08-20 1996-09-10 Borland International, Inc. Multi-user system and methods providing improved file management by reading
US5392415A (en) * 1992-12-15 1995-02-21 International Business Machines Corporation System for grouping non-contiguous pages belonging to a storage object for page out
US6131150A (en) * 1993-10-05 2000-10-10 Digital Equipment Corporation Scaled memory allocation system
ES2143556T3 (es) 1994-10-12 2000-05-16 Touchtunes Music Corp Sistema de reproduccion audiovisual digital inteligente.
US7188352B2 (en) 1995-07-11 2007-03-06 Touchtunes Music Corporation Intelligent digital audiovisual playback system
US5765210A (en) * 1994-12-12 1998-06-09 International Business Machines Corporation Allocation of real storage for hardware descriptors within virtual memory that are associated with on-line storage increments
US6081880A (en) * 1995-03-09 2000-06-27 Lsi Logic Corporation Processor having a scalable, uni/multi-dimensional, and virtually/physically addressed operand register file
US5966529A (en) * 1995-05-15 1999-10-12 Zsp Corporation Processor having auxiliary operand register file and complementary arrangements for non-disruptively performing adjunct execution
US6399533B2 (en) * 1995-05-25 2002-06-04 Basell Technology Company Bv Compounds and catalysts for the polymerization of olefins
US5900025A (en) * 1995-09-12 1999-05-04 Zsp Corporation Processor having a hierarchical control register file and methods for operating the same
US5860138A (en) * 1995-10-02 1999-01-12 International Business Machines Corporation Processor with compiler-allocated, variable length intermediate storage
US6308248B1 (en) * 1996-12-31 2001-10-23 Compaq Computer Corporation Method and system for allocating memory space using mapping controller, page table and frame numbers
US6393520B2 (en) * 1997-04-17 2002-05-21 Matsushita Electric Industrial Co., Ltd. Data processor and data processing system with internal memories
US6233599B1 (en) 1997-07-10 2001-05-15 International Business Machines Corporation Apparatus and method for retrofitting multi-threaded operations on a computer by partitioning and overlapping registers
FR2769165B1 (fr) 1997-09-26 2002-11-29 Technical Maintenance Corp Systeme sans fil a transmission numerique pour haut-parleurs
US5893159A (en) * 1997-10-22 1999-04-06 International Business Machines Corporation Methods and apparatus for managing scratchpad memory in a multiprocessor data processing system
US6018789A (en) * 1997-11-24 2000-01-25 Western Digital Corporation Disk drive with cache segment providing adaptively managed chunks
FR2771829B1 (fr) 1997-12-03 2000-02-18 Rue Cartes Et Systemes De Procede de gestion des ressources de memoire dans une carte a microcircuit
US6226725B1 (en) 1998-04-21 2001-05-01 Ibm Method and system in a data processing system for the dedication of memory storage locations
US6151666A (en) * 1998-05-27 2000-11-21 Storage Technology Corporation Method for reclaiming fragmented space on a physical data storage cartridge
FR2781580B1 (fr) 1998-07-22 2000-09-22 Technical Maintenance Corp Circuit de commande de son pour systeme de reproduction audiovisuelle numerique intelligent
FR2781591B1 (fr) 1998-07-22 2000-09-22 Technical Maintenance Corp Systeme de reproduction audiovisuelle
US8028318B2 (en) 1999-07-21 2011-09-27 Touchtunes Music Corporation Remote control unit for activating and deactivating means for payment and for displaying payment status
FR2796482B1 (fr) 1999-07-16 2002-09-06 Touchtunes Music Corp Systeme de gestion a distance d'au moins un dispositif de reproduction d'informations audiovisuelles
US6751249B1 (en) * 1999-09-24 2004-06-15 Agere Systems Inc. Received-signal-strength-based swap table for frequency hopping communication system
FR2805377B1 (fr) 2000-02-23 2003-09-12 Touchtunes Music Corp Procede de commande anticipee d'une selection, systeme numerique et juke-box permettant la mise en oeuvre du procede
FR2805060B1 (fr) 2000-02-16 2005-04-08 Touchtunes Music Corp Procede de reception de fichiers lors d'un telechargement
FR2805072B1 (fr) 2000-02-16 2002-04-05 Touchtunes Music Corp Procede d'ajustement du volume sonore d'un enregistrement sonore numerique
FR2808906B1 (fr) 2000-05-10 2005-02-11 Touchtunes Music Corp Dispositif et procede de gestion a distance d'un reseau de systemes de reproduction d'informations audiovisuelles
FR2811175B1 (fr) 2000-06-29 2002-12-27 Touchtunes Music Corp Procede de distribution d'informations audiovisuelles et systeme de distribution d'informations audiovisuelles
FR2811114B1 (fr) 2000-06-29 2002-12-27 Touchtunes Music Corp Dispositif et procede de communication entre un systeme de reproduction d'informations audiovisuelles et d'une machine electronique de divertissement
FR2814085B1 (fr) 2000-09-15 2005-02-11 Touchtunes Music Corp Procede de divertissement base sur les jeux concours a choix multiples
US6988177B2 (en) * 2000-10-03 2006-01-17 Broadcom Corporation Switch memory management using a linked list structure
US11029823B2 (en) 2002-09-16 2021-06-08 Touchtunes Music Corporation Jukebox with customizable avatar
US9646339B2 (en) 2002-09-16 2017-05-09 Touchtunes Music Corporation Digital downloading jukebox system with central and local music servers
US10373420B2 (en) 2002-09-16 2019-08-06 Touchtunes Music Corporation Digital downloading jukebox with enhanced communication features
US7822687B2 (en) 2002-09-16 2010-10-26 Francois Brillon Jukebox with customizable avatar
US12100258B2 (en) 2002-09-16 2024-09-24 Touchtunes Music Company, Llc Digital downloading jukebox with enhanced communication features
US8584175B2 (en) 2002-09-16 2013-11-12 Touchtunes Music Corporation Digital downloading jukebox system with user-tailored music management, communications, and other tools
US8103589B2 (en) 2002-09-16 2012-01-24 Touchtunes Music Corporation Digital downloading jukebox system with central and local music servers
US8332895B2 (en) 2002-09-16 2012-12-11 Touchtunes Music Corporation Digital downloading jukebox system with user-tailored music management, communications, and other tools
US7069523B2 (en) * 2002-12-13 2006-06-27 Lsi Logic Corporation Automated selection and placement of memory during design of an integrated circuit
EP1435576B1 (de) * 2003-01-03 2013-03-20 Austria Card Plastikkarten und Ausweissysteme GmbH Verfahren und Vorrichtung zur blockorientierten Speicherverwaltung in Smartcard-Steuerungen
US7409518B2 (en) * 2004-05-21 2008-08-05 International Business Machines Corporation Method for improving disk space allocation
US7516291B2 (en) * 2005-11-21 2009-04-07 Red Hat, Inc. Cooperative mechanism for efficient application memory allocation
US9171419B2 (en) 2007-01-17 2015-10-27 Touchtunes Music Corporation Coin operated entertainment system
US8332887B2 (en) 2008-01-10 2012-12-11 Touchtunes Music Corporation System and/or methods for distributing advertisements from a central advertisement network to a peripheral device via a local advertisement server
US10290006B2 (en) 2008-08-15 2019-05-14 Touchtunes Music Corporation Digital signage and gaming services to comply with federal and state alcohol and beverage laws and regulations
US8195915B2 (en) * 2008-02-29 2012-06-05 International Business Machines Corporation Mechanism for visualizing memory fragmentation
US8151266B2 (en) * 2008-03-31 2012-04-03 Qualcomm Incorporated Operating system fast run command
US20090302588A1 (en) * 2008-06-05 2009-12-10 Autoliv Asp, Inc. Systems and methods for airbag tether release
WO2010005569A1 (en) 2008-07-09 2010-01-14 Touchtunes Music Corporation Digital downloading jukebox with revenue-enhancing features
US9292166B2 (en) 2009-03-18 2016-03-22 Touchtunes Music Corporation Digital jukebox device with improved karaoke-related user interfaces, and associated methods
KR101748448B1 (ko) 2009-03-18 2017-06-16 터치튠즈 뮤직 코포레이션 엔터테인먼트 서버 및 관련 소셜 네트워킹 서비스
US10564804B2 (en) 2009-03-18 2020-02-18 Touchtunes Music Corporation Digital jukebox device with improved user interfaces, and associated methods
US10719149B2 (en) 2009-03-18 2020-07-21 Touchtunes Music Corporation Digital jukebox device with improved user interfaces, and associated methods
US12112093B2 (en) 2009-03-18 2024-10-08 Touchtunes Music Company, Llc Entertainment server and associated social networking services
US9465656B2 (en) * 2009-04-01 2016-10-11 International Business Machines Corporation Scheduler penalty for swapping activity
CN105354940A (zh) 2010-01-26 2016-02-24 踏途音乐公司 具有改进的用户界面的数字点播设备和相关方法
US8386981B1 (en) 2010-04-12 2013-02-26 Cadence Design Systems, Inc. Method and systems for implementing I/O rings and die area estimations
US9135373B1 (en) 2010-04-12 2015-09-15 Cadence Design Systems, Inc. Method and system for implementing an interface for I/O rings
EP2759126B8 (de) 2011-09-18 2021-03-31 Touchtunes Music Corporation Digitale jukebox mit karaoke- und/oder fotokabinenfunktion und zugehörige verfahren
US8832411B2 (en) * 2011-12-14 2014-09-09 Microsoft Corporation Working set swapping using a sequentially ordered swap file
US11151224B2 (en) 2012-01-09 2021-10-19 Touchtunes Music Corporation Systems and/or methods for monitoring audio inputs to jukebox devices
GB2509169B (en) * 2012-12-21 2018-04-18 Displaylink Uk Ltd Management of memory for storing display data
US9176889B1 (en) 2013-03-15 2015-11-03 Google Inc. Virtual machine memory management
GB2514777B (en) * 2013-06-03 2018-12-19 Displaylink Uk Ltd Management of memory for storing display data
US9921717B2 (en) 2013-11-07 2018-03-20 Touchtunes Music Corporation Techniques for generating electronic menu graphical user interface layouts for use in connection with electronic devices
US20150178186A1 (en) * 2013-12-20 2015-06-25 Huawei Technologies Co., Ltd. Method and apparatus for swapping in data to memory
CN103713882A (zh) * 2013-12-20 2014-04-09 华为技术有限公司 一种数据换入内存的方法和装置
WO2015148644A1 (en) 2014-03-25 2015-10-01 Touchtunes Music Corporation Digital jukebox device with improved user interfaces, and associated methods
US9483400B2 (en) * 2014-04-21 2016-11-01 Microsoft Technology Licensing, Llc Multiplexed memory for segments and pages
US9430401B2 (en) * 2015-01-16 2016-08-30 International Business Machines Corporation Implementing paging optimization to avoid populate on page fault during an IO read
TWI735673B (zh) 2016-10-03 2021-08-11 日商東邦鈦股份有限公司 烯烴類聚合用固體觸媒成分、烯烴類聚合用固體觸媒成分之製造方法、烯烴類聚合用觸媒、烯烴類聚合體之製造方法、丙烯系共聚合體之製造方法及丙烯系共聚合體
US20240104395A1 (en) * 2022-09-27 2024-03-28 Zhejiang Lab Memory optimization method and device oriented to neural network computing

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
FR2253434A5 (en) * 1973-11-30 1975-06-27 Honeywell Bull Soc Ind Ordinator for computer virtual memory - compares segment size in auxiliary memory with available storage space in main memory
US4229789A (en) * 1977-12-22 1980-10-21 Ncr Corporation System for transferring data between high speed and low speed memories
US4442488A (en) * 1980-05-05 1984-04-10 Floating Point Systems, Inc. Instruction cache memory system
JPS6032220B2 (ja) * 1980-07-07 1985-07-26 日本電気株式会社 情報処理装置
US4481573A (en) * 1980-11-17 1984-11-06 Hitachi, Ltd. Shared virtual address translation unit for a multiprocessor system
US4420807A (en) * 1981-08-31 1983-12-13 International Business Machines Corporation Selectively holding data in a buffer for defective backing store tracks
US4571674A (en) * 1982-09-27 1986-02-18 International Business Machines Corporation Peripheral storage system having multiple data transfer rates
US4607331A (en) * 1983-05-13 1986-08-19 Motorola, Inc. Method and apparatus for implementing an algorithm associated with stored information
US4685057A (en) * 1983-06-06 1987-08-04 Data General Corporation Memory mapping system
US4577274A (en) * 1983-07-11 1986-03-18 At&T Bell Laboratories Demand paging scheme for a multi-ATB shared memory processing system
JPS60221853A (ja) * 1984-04-18 1985-11-06 Mitsubishi Electric Corp コンピユ−タ−・オペレ−テイング・システムのスワツピング方法
US4758951A (en) * 1985-04-09 1988-07-19 Tektronix, Inc. Method for translating virtual addresses into real addresses
US4785395A (en) * 1986-06-27 1988-11-15 Honeywell Bull Inc. Multiprocessor coherent cache system including two level shared cache with separately allocated processor storage locations and inter-level duplicate entry replacement
US4967353A (en) * 1987-02-25 1990-10-30 International Business Machines Corporation System for periodically reallocating page frames in memory based upon non-usage within a time period or after being allocated
JPH0194457A (ja) * 1987-10-07 1989-04-13 Mitsubishi Electric Corp 高速スワップ イン/スワップ アウト方式
JP3226525B2 (ja) * 1988-10-07 2001-11-05 株式会社日立製作所 主記憶管理方法

Also Published As

Publication number Publication date
WO1991020036A1 (en) 1991-12-26
EP0969383A3 (de) 2000-02-02
EP0969380A2 (de) 2000-01-05
JPH05508043A (ja) 1993-11-11
EP0969381A2 (de) 2000-01-05
US5159678A (en) 1992-10-27
EP0969382A3 (de) 2000-02-02
DE69132139D1 (de) 2000-05-31
EP0969380A3 (de) 2000-02-02
EP0533805A1 (de) 1993-03-31
EP0533805A4 (en) 1994-04-20
EP0969383A2 (de) 2000-01-05
EP0969382A2 (de) 2000-01-05
EP0969381A3 (de) 2000-02-02
EP0533805B1 (de) 2000-04-26

Similar Documents

Publication Publication Date Title
DE69132139T2 (de) Effiziente nicht-virtuelle hauptspeicherverwaltung
DE3587398T2 (de) Datenspeicherhierarchie und deren Betriebsverfahren.
DE69031862T2 (de) Verfahren zum Lastausgleich für Kanälen und Verwendung desselben in einem Datenverarbeitungssystem
DE69507940T2 (de) Rechner-verfahren und gerät für asynchrone geordnete operationen
DE69819686T2 (de) Objekt und verfahren zum bereitstellen eines effizienten mehrbenutzerzugriff auf verteilten betriebssystemkernkode durch instanzierung
DE69322887T2 (de) Datenverarbeitung und Betriebssystem mit dynamischer Belastungsteilung in einem Netzwerk von verknüpften Prozessoren
DE102012216022B4 (de) Verwaltung einer Zeitpunktkopie-Beziehung für platzsparende Datenträger
DE69211231T2 (de) Verfahren und Vorrichtung zur Verwaltung eines gemeinsam genutzten Speichers ausserhalb des Bildschirms
DE69606648T2 (de) Verfahren und vorrichtung zur ablauffolgen von multiprozessoren mit starker affinität
DE69802836T2 (de) Anwendungsprogramierungsschnittstelle zum ermöglichen der zuordnung eines physikalischen speichers in einem virtuellen speicher zur steuerung von anwendungsprogrammen
DE69127011T2 (de) Speicherverwaltungsverfahren mit Hilfe einer Baumstruktur
DE3854384T2 (de) Verfahren zum Betreiben eines einen anteilig genutzten virtuellen Speicher verwendenden Multiprozessorsystems.
DE3781694T2 (de) Virtuelle prozessortechniken in einem feldmultiprozessor.
DE3587218T2 (de) Verfahren zur Ausführung von in einer hohen Programmiersprache geschriebenen Anwenderprogrammen.
DE69429777T2 (de) System zur dezentralen massenspeichersteuerung eines rechners mit virtuellem speicher
DE4221073A1 (de) Datenspeichersystem und -verfahren mit geraeteunabhaengigen dateiverzeichnissen
DE2449547A1 (de) Computer- und datenverarbeitungsanlage
DE60001170T2 (de) Betriebsystemsseitenplazierung zum maximieren der cachedatenwiederverwendung
DE69027017T2 (de) Anordnung und Verfahren zur Speicherverwaltung in einem Mikrorechner
DE19961499A1 (de) Caching von Objekten in Platten-gestützten Datenbanken
DE112013006646B4 (de) Computer, System und computerlesbares Ablagemedium zum Identifizieren von Arbeitslast und Dimensionierung von Puffern zum Zweck der Volumenreplikation
DE102017213160B4 (de) Kompilierung für knotenvorrichtungs-GPU-basierte Parallelverarbeitung
DE112005003222T5 (de) Dynamische Allokation eines Puffers auf mehrere Klienten bei einem Prozessor mit Threads
DE2004886A1 (de) Folgesteuerwerk für eine im Parallelbetrieb arbeitende Datenverarbeitungseinrichtung
DE102013020485A1 (de) Technik zur Ausführung von Speicherzugriffsoperationen über eine Textur-Hardware

Legal Events

Date Code Title Description
8364 No opposition during term of opposition
8328 Change in the person/name/address of the agent

Representative=s name: KUDLEK & GRUNERT PATENTANWAELTE PARTNERSCHAFT, 803

8339 Ceased/non-payment of the annual fee