DE69132139T2 - Effiziente nicht-virtuelle hauptspeicherverwaltung - Google Patents
Effiziente nicht-virtuelle hauptspeicherverwaltungInfo
- 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
Links
- 238000000034 method Methods 0.000 claims description 296
- 238000012545 processing Methods 0.000 claims description 8
- 230000009977 dual effect Effects 0.000 claims description 5
- 230000006870 function Effects 0.000 claims description 4
- 238000006073 displacement reaction Methods 0.000 claims 1
- 238000013507 mapping Methods 0.000 claims 1
- 238000010586 diagram Methods 0.000 description 14
- 238000000638 solvent extraction Methods 0.000 description 7
- 238000012546 transfer Methods 0.000 description 4
- 239000012634 fragment Substances 0.000 description 2
- 230000007246 mechanism Effects 0.000 description 2
- LPLLVINFLBSFRP-UHFFFAOYSA-N 2-methylamino-1-phenylpropan-1-one Chemical compound CNC(C)C(=O)C1=CC=CC=C1 LPLLVINFLBSFRP-UHFFFAOYSA-N 0.000 description 1
- 241000132539 Cosmos Species 0.000 description 1
- 235000005956 Cosmos caudatus Nutrition 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000012946 outsourcing Methods 0.000 description 1
- 238000005192 partition Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/4881—Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
- G06F12/1027—Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
- G06F12/1036—Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB] for multiple virtual address spaces, e.g. segmentation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
- G06F12/109—Address translation for multiple virtual address spaces, e.g. segmentation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/12—Replacement control
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/43—Checking; Contextual analysis
- G06F8/433—Dependency analysis; Data or control flow analysis
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/44—Encoding
- G06F8/445—Exploiting fine grain parallelism, i.e. parallelism at instruction level
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/45—Exploiting coarse grain parallelism in compilation, i.e. parallelism between groups of instructions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5011—Allocation 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/5016—Allocation 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
- 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.
- 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.
- 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.
- 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.
- 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 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.
- 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.
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)
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)
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 | 株式会社日立製作所 | 主記憶管理方法 |
-
1990
- 1990-08-23 US US07/572,045 patent/US5159678A/en not_active Expired - Lifetime
-
1991
- 1991-06-10 EP EP99117731A patent/EP0969380A3/de not_active Withdrawn
- 1991-06-10 EP EP91911776A patent/EP0533805B1/de not_active Expired - Lifetime
- 1991-06-10 EP EP99117733A patent/EP0969382A3/de not_active Withdrawn
- 1991-06-10 WO PCT/US1991/004077 patent/WO1991020036A1/en active IP Right Grant
- 1991-06-10 DE DE69132139T patent/DE69132139T2/de not_active Expired - Fee Related
- 1991-06-10 EP EP99117732A patent/EP0969381A3/de not_active Withdrawn
- 1991-06-10 EP EP99117734A patent/EP0969383A3/de not_active Withdrawn
- 1991-06-10 JP JP91511492A patent/JPH05508043A/ja active Pending
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 |