DE2419522A1 - Verfahren und anordnung zur unterteilung eines oder mehrerer nicht benutzter bereiche eines mit einem rechner verbundenen speichers - Google Patents
Verfahren und anordnung zur unterteilung eines oder mehrerer nicht benutzter bereiche eines mit einem rechner verbundenen speichersInfo
- Publication number
- DE2419522A1 DE2419522A1 DE19742419522 DE2419522A DE2419522A1 DE 2419522 A1 DE2419522 A1 DE 2419522A1 DE 19742419522 DE19742419522 DE 19742419522 DE 2419522 A DE2419522 A DE 2419522A DE 2419522 A1 DE2419522 A1 DE 2419522A1
- Authority
- DE
- Germany
- Prior art keywords
- length
- blocks
- address
- area
- block
- 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.)
- Pending
Links
Classifications
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Memory System (AREA)
Description
Anmelder: Honeywell Information Systems Inc.
200 Smith Street
Waltham, Mass. 02154
V. St. A.
Verfahren und Anordnung zur Unterteilung eines oder mehrerer nicht, benutzter Bereiche eines mit
einem Rechner verbundenen Speichers
Die Erfindung bezieht sich generell auf eine Datenverarbeitungsanlage
und insbesondere auf die wirksame Ausnutzung von freien Speicherbereichen in einem Speicher
eines Digitalrechners.
Wenn ein Digitalrechner zu benutzen ist, wird er zuerst mit verschiedenen Programmen und/oder einer Information
geladen, die in dem mit dem Rechner verbundenen Speicher vorhanden sein muß. Wenn das Laden der Programme, etc.
erfolgt, werden die betreffenden Programme, etc. gewöhnlich nicht fortlaufend in dem Speicher untergebracht. Demgemäß
bilden sich verschiedene Lücken oder freie Speicherbereiche aus, die in dem Fall, daß sie nicht ausgenutzt werden, zu
9 845/0859
unausgenutzten Speicherbereichen führen. Es ist bekannt, die Adressen dieser Bereiche oder Lücken in einer Tabelle
aufzubewahren, die ebenfalls in dem Speicher untergebracht sein kann. Während des Programmablaufs bzw. Laufs oder der
Verarbeitung durch den Digitalrechner ist es jedoch häufig erforderlich, daß gewisse Programme einen bestimmten minimalen
Speicherplatz benötigen, um eine später benötigte Information kurzzeitig zu speichern. Dies bedeutet, daß es
während des Ablaufs irgendeines bestimmten Rechnerprogramms erforderlich sein kann, einen 8-Wort-Block zur Verfügung
zu haben, um eine bestimmte Information für ein bestimmtes Programm oder einen 32- oder 64-Wort-Block, etc. sicherzustellen.
Die verschiedenen freien Bereiche oder Lücken, die aus dem ursprünglichen Laden derartiger Programme und/oder
einer Information hervorgegangen sind, führen gewöhnlich zu verschiedenen Y/ortlängenbereichen, die eine große Länge
haben können, d.h. eine große Anzahl von"Worten enthalten können, und die demgemäß nicht zu einer wirksamen Ausnutzung
dieser Bereiche führen, wenn sie durch ein bestimmtes Programm aufgerufen werden. Derartige Programme können daher
nichts weiter benötigen als lediglich eine kleine Anzahl von Wortspeicherplätzen in dem Speicher zu irgendeinem
bestimmten Zeitpunkt, und demgemäß sollte lediglich eine begrenzte Anzahl derartiger Speicherplätze bei Bedarf zugeordnet
werden. Wenn z.B. die Bereiche jeweils ein Minimum von hundert Worten enthalten und wenn das den bestimmten
Bereich anfordernde Programm lediglich 10 oder 15 Worte benötigt, dann geht eine erhebliche Größe des Speicherbereichs
verloren, da das betreffende Programm, welches den betreffenden freien Bereich ausnutzt, tatsächlich für seinen
bestimmten Zweck den gesamten Bereich annehmen muß. Somit wird bei dem betreffenden Beispiel lediglich eine geringe
Menge von Worten benutzt, und die übrigen Worte in dem betreffenden Bereich sind nicht ausgenutzt.
409845/0859
Es sind, verschiedene Versuche unternommen worden, um jeden
derartiger nicht benutzter oder freier Bereiche, die sich nach der anfänglichen Ladung von Programmen und/oder einer
Information in den Speicher ergeben, auszunutzen, und zwar durch Unterteilung derartiger Bereiche in Blöcke einer vorgegebenen
Wortlänge. Bei der Unterteilung dieser Bereiche in vorgegebene Blocklängen wird jedoch ein Randbereich in
derartigen derart unterteilten freien Bereichen gebildet, was zu einem unausgenutzten Rechnerspeieher führt. Ferner
werden derartige Versuche, die Bereiche in Blöcke zu unterteilen, gewöhnlich während der Zeit unternommen, während
der die Verarbeitung durch den Rechner ausgeführt wird. Dies führt während einer derartigen Verarbeitung zu einer Organisationszeit,
wodurch sich das System verlangsamt.
Der Erfindung liegt demgemäß die Aufgabe zu Grunde, eine Programmvorbereitungseinrichtung für die Zuordnung von
freien Speicherbereichen eines mit einem Rechner verbundenen Speichers/, derart, daß die Initialisierung zu einer wirksamen
Unterteilung derartiger freier Bereiche in Blöcken verschiedener Wortlängen führt und dadurch den Umfang an
nicht benutzten Speicherbereichen während der durch den Rechner ausgeführten Verarbeitung auf einen minimalen Viert
herabsenkt.
Gelöst wird die vorstehend aufgezeigte Aufgabe erfindungsgemäß durch e_.ie Programmvorbereitungseinrichtung zur
Unterteilung verschiedener nicht benutzter Bereiche oder Lücken in einem mit einem Rechner verbundenen Speicher,
welche Lücken sich aus dem Laden verschiedener Programme und/oder Informationen in den Speicher ergeben, wobei die
betreffenden Bereiche oder Lücken in Blöcke verschiedener
409845/0859
Wortlängen unterteilt werden und dadurch eine maximale und wirksamste Ausnutzung derartiger freier Speicherbereiche
erreicht ist, so daß ein minimaler Speicherplatz unausgenutzt bleibt. Die Programmvorbereitungseinrichtung
arbeitet grundsätzlich in zwei Schritten. Im ersten Schritt werden die verschiedenen Lücken unterteilt, die in einem
ersten Bereich des Speichers enthalten sind; in dem zweiten Schritt wird ein zweiter Bereich des Speichers unterteilt,
und zwar in Abhängigkeit von den Anforderungen des Systems. Der zweite Schritt der Programmvorbereitungseinrichtung
gemäß der Erfindung wird außerdem dazu herangezogen, die bereits aus den freien Bereichen oder Lücken unterteilten
Blöcke in noch kleinere Blocklängen zu unterteilen, um, sofern möglich, der maximalen Anforderung des Systems zu
genügen. Das Endergebnis ist, z.B. für ein drei Blocklängen benötigendes System, eine Zuordnung in dem Ausmaß,
welches zumindest die minimal bezeichnete Anzahl der jeweiligen Blocklänge ermöglicht, und ferner in dem Ausmaß,
das den maximalen Umfang der durch das System bezeichneten jeweiligen Blocklänge ermöglicht. Die Programmvorbereitungseinrichtung
unterteilt jede Lücke in die maximale Anzahl von langen Blücken, und ferner unterteilt sie die Randbereiche
der freien Bereiche, die nicht in dieser Art unterteilt sind, in noch schmalere Blöcke auf, so daß die
maximale Anzahl von langen, mittleren und kurzen Blöcken in jedem freien Bereich oder in jeder Lücke in dem Speicher
erzeugt wird.
An Hand von Zeichnungen wird die Erfindung nachstehend bespielsweise näher erläutert.
409845/0859
Figuren 1 bis 4 zeigen verschiedene Zustände des in Verbindung
mit der vorliegenden Erfindung benutzten Speichers beim Betrieb durch die Programmvorbereitungseinrichtung
gemäß der Erfindung.
Fig. 5 zeigt eine Pool-Parametertabelle, welche Informationen
bezüglich der verschiedenen Blöcke festhält, die durch die Programmvorbereitungseinrichtung bzw. das Einleitungsprogramm
gemäß der Erfindung erzeugt worden sind. Fig. 6 zeigt eine einen freien Speicher oder "Kern"-Bereich
anzeigende Tabelle, welche die Adressen der durch die Programmvorbereitungseinrichtung
gemäß der Erfindung zuzuordnenden verschiedenen Bereiche in dem Speicher angibt.
Fig. 7 zeigt die Unterteilung einer typischen Lücke oder eines typischen Bereichs durch die Programmvorbereitungseinrichtung
gemäß der Erfindung.
Figuren 8 bis 15 zeigen in Flußdiagrammen die Arbeitsweise der Programmvorbereitungseinrichtung gemäß der Erfindung.
Im folgenden werden bevorzugte Ausführungsformen der Erfindung näher erläutert. Fig. 1 zeigt einen Speicher, der
gemäß der Erfindung sozusagen voreinzustellen ist. Der
Speicher ist in eine Vielzahl von Sektoren 0 bis X unterteilt, die jeweils eine gleiche Wortlänge haben können. In
dem Speicher sind bereits Programme in Bereichen 10 geladen, die durch von rechts nach links unten laufende Schrägschraffuren
angedeutet sind. Zwischen diesen Bereichen 10, in denen Programme gespeichert sind, existieren Lücken oder freie
Speicher- oder "Kern"-Bereiche 12. Diese freien Kernbereiche sind jene Bereiche, die in Wortblöcke unterteilt
werden und die demgemäß in Übereinstimmung mit der vorliegenden Erfindung voreingestellt werden. Die zur Ausführung
der Initialisierung dienenden Software-Routinen .sind in dem
40 9 8 45/0859
Speicher enthalten, und zwar beginnend am Speicherplatz 14 und fortlaufend bis zum Beginn der freie Speicherbereiche
bzw.' freie "Kern"-Bereiche anzeigenden Tabelle 16, die im folgenden auch nur kurz als FCAT-Tabelle 16 bezeichnet werden
wird. Die Lücken 12 sind ferner zwischen den verschiedenen Routinen des Binleitungsprogramms vorhanden, und zwar beginnend
an dem Speicherplatz 14 bis zu der Oberseite der FCAT-Tabelle 16 hin. Die FCAT-Tabelle 16 enthält, wie dies insbesondere in Fig.6
gezeigt ist, die Startadresse und die Endadresse der jeweiligen Lücken 12. Dort braucht kein besonderer Befehl von dem Speicherplatz
der betreffenden Lückeninformation in der FCAT-Tabelle 16 enthalten zu sein. So braucht z.B. die obere Lücke in Fig. 1 nicht
der obere Eingang bzw. Eintrag des freien Kernbereiches zu sein, wie dies in Fig. 6 veranschaulicht ist. Die freie Kernbereiche
angebende Tabelle enthält ferner ein Markierungswort, welches den letzten Speicherplatz in der FCAT-Tabelle 16 anzeigt. Durchläuft
man die FCAT-Tabelle, so zeigt sich, daß ein nicht benutzter freier "Kern" oder Bereich 18 vorhanden ist, der vom
Ende der FCAT-Tabelle 16 zum Anfang des angegebenen Endes des Speichers 16 festgelegt ist. Das bezeichnete Ende des Speichers
20 kann dasselbe sein wie das tatsächliche physikalische inde
des Speichers 22; dieser Zustand braucht jedoch nicht notwendigerweise vorzuliegen. Der zwischen den Stellen 20 und 22
liegende Bereich braucht daher nicht bezeichnet zu werden. Die Forderung nach einer solchen Unterscheidung kann jedoch
z. B. dann entstehen, wenn der Wunsch vorhanden sein sollte, über einen Bereich in dem Speicher zum Zwecke des Festhaltens
einer gewissen kritischen Information zu verfügen.
Es sei ferner darauf hingewiesen, daß keine besondere Beziehung zwischen den verschiedenen Lücken und Programmen
zu den verschiedenen Sektoren besteht und daß die Adressen vom Sektor 0 zum Sektor χ numerisch größer werden.
A098A5/0859
— '7 —
Um die verschiedenen Lücken 12 sowie die zusätzlichen
Speicherbereiche wie die Speicherbereiche 16 und 18, wirksam auszunutzen, ist es, wie oben ausgeführt, erforderlich,
die Lücken in verschiedene Blocklängen zu unterteilen. Dabei ist es wünschenswert, über unterschiedliche Blocklängen
zu verfügen, und zwar z.B. in Abhängigkeit von den veränderten Anforderungen der verschiedenen Programme, die
zu verarbeiten sind. Somit kann es z.B. erwünscht sein, über einen 32-Wort-Block, einen i6-¥ort-Block und einen
8-Wort-Block zu verfügen; diese Wortblöcke stehen zueinander
entsprechend dem Verhältnis von Zweierpotenzen in Beziehung. Eine geringere oder größere Anzahl von unterschiedlichen
Blocklängen kann ebenfalls erwünscht sein. Zum Zwecke der Veranschaulichung werden jedoch die verschiedenen
Lücken 12 zunächst so behandelt, daß sie die drei zuvor erwähnten Blocklängen enthalten.
Durch die vorliegende Erfindung und während der ersten Phase der Erfindung werden die Lücken 12 zwischen dem Beginn
des Sektors 0 und dem Beginn der Einleitungsprogrammroutinen 14 in Wortblöcke unterteilt. Dies ist in Fig. 2
gezeigt, wobei die Lücken 12 zwischen dem Sektor 0 und der Speicherstelle 14 unterteilt sind, was durch die von links
nach rechts unten verlaufende Schrägschraffur dargestellt
ist. Gemäß den Systemanforderungen muß eine Spezifikation bezüglich der Anzahl der Blöcke und der jeweils benötigten
Länge bzw. Größe getroffen werden, und zwar sowohl das Minimum als auch das Maximum. Wie noch erläutert werden
wird, kann die minimale Anzahl der benötigten Blöcke z.B. zu der Anzahl der Blöcke in Beziehung stehen, die erforderlich
sind, um die Einleitungsprogrammroutine zu verarbeiten. Die maximale Anzahl der Blöcke steht z.B. zu der Anzahl der
Blöcke in Beziehung, die möglicherweise während des Durch-
409845/0859
laufs oder der Verarbeitung der verschiedenen Programme
benötigt werden, die mit Hilfe des Rechners verwendet werden. Demgemäß können auch während der Phase 1 für den
Fall, daß die minimalen Anforderungen nach der Unterteilung der Lücken in der aus Fig. 2 ersichtlichen Weise nicht erfüllt
sein sollten, sodann, wie dies in Fig. 3 gezeigt ist, die Lücken und Bereiche 16 und 18 unterteilt werden, und
zwar beginnend vom Start der Einleitungsprogrammroutinen 14
aus. In Fig. 3 ist tatsächlich gezeigt, daß lediglich die Bereiche 16 und 18 gemäß der vorliegenden Erfindung unterteilt
sind. Es dürfte jedoch einzusehen sein und wird noch insbesondere ersichtlich werden, daß die Lücken 12 unter
den Einleitungsprogrammroutinen unterteilt sein können und daß die FCAT-Tabelle 16 nicht unterteilt oder voreingestellt
zu werden braucht. Sollte es, um ein Beispiel zu geben und noch auf Fig. 3 Bezug zu nehmen, erwünscht sein,
die Einleitungsprogrammroutinen festzuhalten bzw. sicherzustellen, so würden die Lücken 12 unter derartigen Routinen
zuerst unterteilt werden. Sollte es ferner gefordert sein, die Stelle der verschiedenen Lücken 12 beizubehalten, so
würde eine Entscheidung dahingehend erfolgen, die FCAT-Tabelle 1 6 nicht zu unterteilen. Sollten die obigen beiden Entscheidungen
bejahend ausfallen, nämlich dahingehend, daß die Einleitungsprogrammroutinen aufbewahrt bzw. gesichert
werden und daß die FCAT-Tabelle aufbewahrt wird, so würden demgemäß am Ende der Phase 1 des Betriebs der vorliegenden
Erfindung die unter den Einleitungsprogrammroutinen gezeigten Lücken 12 unterteilt werden, und der vom Ende der freie
Kernbereiche anzeigenden Tabelle 16 beginnende und zu dem bezeichneten Ende des Speichers 20 hin laufende Bereich 18
würde ebenfalls voreingestellt oder unterteilt werden. Wie in Fig. 3 dargestellt und als Beispiel angenommen, waren je-
409845/0859
doch die Antworten zu den beiden obigen Fragen, daß weder die Tabelle 16 noch die Einleitungsprogrammroutinen 14
aufzubewahren bzw. zu sichern waren. Demgemäß zeigt sich am Ende der Phase 1, wie dies in Fig. 3 veranschaulicht ist,
daß von der Oberseite der FCAT-Tabelle bis zu dem bezeichneten Ende des Speichers 20 hin eine Unterteilung in Übereinstimmung
mit den Prinzipien der vorliegenden Erfindung vorliegt. Ist die Phase 1 abgeschlossen und nimmt man an, daß
die Minimalbedingungen noch nicht erfüllt sind, so läuft nach einem Zwischenzeitbereich der Initiierung beispielsweise
des Betriebs der Systemsoftware, die in dem System enthalten sein kann - wodurch das System für die Verarbeitung
der Programme vorbereitet ist - die Phase 2 ab, gemäß der die Einleitungsprogrammroutinen unterteilt werden, wenn
die Entscheidung dahingeht, daß diese nicht aufzubewahren bzw. zu sichern sind. Dies ist in Fig. 4 wie in Fig. 3 durch
von links nach rechts unten laufende Schräglinien dargestellt, Es dürfte einzusehen sein, daß die Einleitungsprogrammroutine
gleichzeitig mit der Erzeugung von Wortblöcken aus dem Bereich in dem Speicher verarbeitet werden kann, der aus den
Einleitungsprogrammroutinen gebildet ist.
Während der Unterteilung der verschiedenen Lücken 12 und der anderen Bereiche, enthaltend z.B. die Programmvorbereitungsroutinen
bzw. Einleitungsprogrammroutinen, die FCAT-Tabelle 16 und den Bereich 18, ist es erforderlich,
eine Information bezüglich der Anzahl der Blöcke und ihrer Lagen, die derart unterteilt worden sind, zu speichern. Um
eine derartige Information festzuhalten, wird eine Pool-Parametertabelle entsprechend der in Fig. 5 gezeigten
Tabelle verwendet. Die Pool-Parametertabelle enthält drei Segmente, und zwar einen für jede Blocklänge, wie z.B. für
845/0859
die 32-Wort-, 16-Wort- und 8-Wort-Blocklängen. ¥ie angedeutet,
enthält jedes Segment eine Blocklängeninformation, die festliegt. Außerdem enthält jedes Segment die erste
Blockadresse und die letzte Blockadresse für die verschiedenen zugeordneten Blöcke. Die Blöcke selbst'enthalten Anschlußadressen.
Zu Beginn der Initialisierung des Speichers wird die Information für den ersten Block und den letzten
Block zu Null gemacht. Für den ersten Block der bestimmten Blocklänge, die gebildet oder unterteilt wird, sind die
erste Block- und die letzte Blockinformation gleich, da lediglich ein Block insoweit zugeordnet worden ist. Wenn
der nächste Block zugeordnet wird, dann wäre dies der letzte Block, und die Anschlußadresse würde in dem ersten
Block enthalten sein. Die Pool-Parametertabelle enthält ferner eine Information bezüglich der Anzahl der zugeordneten
Blöcke und bezüglich der Anzahl der verfügbaren Blöcke; diese Zahlen sind zu Beginn der Einleitungsprogrammroutinen
beide auf Null zurückgesetzt. Diese beiden zuletzt erwähnten Blöcke werden während des Initialisierungsprozesses
des Speichers erhöht und/oder vermindert. Nachdem der Speicher vollständig voreingestellt ist, wird die Nummer
der Blöcke, denen eine Information zugeordnet ist, gewissermaßen eingefroren, und die Nummer der für eine Information
verfügbaren Blöcke wird erhöht oder vermindert, und zwar wie die verwendete besondere Blocklänge, d.h.
zugeordnet oder freigegeben. Die Pool-Parametertabelle enthält ferner eine Information, die spezifiziert wird,
bevor die Einleitungsprogrammroutinen verarbeitet werden, line derartige Information bleibt fest liegen; sie enthält
die minimale Anzahl von Blöcken, die von dem System benötigt werden, und die maximale Anzahl von Blöcken, die
von dem System benötigt werden. Auch hier wird diese gesamte Information für jede Blocklänge in den dargestellten
409845/0859
drei Segmenten wiederholt.
Nunmehr sei zu den Routinen oder Programmen gemäß Figuren 8 bis 15 übergegangen. Diese Routinen können in einem
digitalen Allzweckrechner, wie z.B. dem Honeywell 716-Minirechner,
verarbeitet werden. In Fig. 8 ist der Prozessablauf für die Phase 1 der Einleitungsprogrammroutinen der
vorliegenden Erfindung gezeigt. Nachdem die Phase 1 eingeführt
ist, werden, wie oben ausgeführt, die zugeordneten Blöcke und die verfügbaren Blöcke sowie die erste und letzte
Blockinformation auf Null gebracht. Anschließend werden die in der FCAT-Tabelle 16 aufgeführten Bereiche in Übereinstimmung
mit der Routine unterteilt, wie sie insbesondere in Fig. 9 veranschaulicht ist und wie sie nachstehend erläutert
werden wird. Daraufhin wird eine Überprüfung vorgenommen, um festzustellen,, ob die minimalen Speicheranforderungen
in Übereinstimmung mit den Spezifikationen in der Pool-Parametertabelle erfüllt sind. Die Routine für eine
derartige Prüfung wird insbesondere im Zusammenhang mit Fig. 11 aufgezeigt. Wenn genügend Speicherplatz für die
Erfüllung der minimalen Anforderungen vorhanden ist, dann kommt die Routine zum Ende und der Speicher, wie im Zusammenhang
mit Fig. 2 aufgezeigt, wird demgemäß unterteilt. Eine Ausnahme hiervor besteht möglicherweise und zusätzlich
dann, wenn die Einleitungsprogrammroutinen zu sichern wären. Dann können auch die unter derartigen Routinen enthaltenen
Lücken 12 aufgeteilt sein. Wenn die minimalen Speicheranforderungen nicht erfüllt sind, wird der übrige Teil des
Speichers unterteilt, und zwar entweder vom Beginn oder vom Ende der FCAT-Tabelle 16 aus, wobei diese Unterteilung
in Übereinstimmung damit erfolgt, ob eine derartige Tabelle 16 zu erhalten oder nicht zu erhalten ist.
409845/0859
Die Art und Weise, in der die in der FCAT-Tabelle 16 -aufgeführten
Bereiche unterteilt werden, wird nunmehr im Zusammenhang mit dem Flußdiagraaim gemäß Fig. 9 erläutert»
Nach der Adressierung der FCAT-Tabelle 16 wird die Startadresse
des ersten Bereiches oder der ersten Lücke, die in der Tabelle 16 enthalten ist, überprüft, um festzustellen,,
ob es' sich dabei um das Markierungswort handelt oder nicht. Handelt es sich dabei um das Markierungswort,
•so legt dies fest, daß die Routine gemäß Fig„ 9 beendet ist
und daß daher eine Ausgabe stattfindet. Handelt es sich bei der betreffenden Adresse nicht um das Markierungswort, so
wird die betreffende Startadresse aufbewahrt;, und zwar in
einem ersten Speicherplatz, der mit Tem-Wort 1 bezeichnet ist. Nach Erlangung und Speicherung der Endadresse desselben
Bereichs oder derselben Lücke, für die die Startadresse erhalten ist, erfolgt eine Bestimmung dahingehend,
ob die Endadresse gegebenenfalls die Adresse für den Start der Einleitungsprogrammroutinen 14 ist oder auf diese Adresse
folgt. Wenn die Antwort nein lautet, dann wird der bestimmte Bereich in Übereinstimmung mit der Routine gemäß
Fig. 10 unterteilt, wie nachstehend erläutert wird. Nachdem die Routine gemäß Fig. 10 verarbeitet ist, wird der
nächste Eintrag in der FCAT-Tabelle 16 adressiert, und die
Sub-Routine gemäß Fig. 9 läuft im allgemeinen an» Dies bedeutet z»B., daß das Markierungswort im Hinblick auf die
Startadresse für den nächsten Eintrag, etc» überprüft wird, bis tatsächlich sämtliche Lücken oder Bereiche in Übereinstimmung
mit der Eoutine gemäß Figo 10 unterteilt sind.
Wenn die Endadresse irgendeines Bereiches der Bereiche in der Speicharstelle 14 enthalten ist oder dies, jerjcolgt, dann
erfolgt eine Feststellung dahingehend, ob die Einleitungsprogrammroutinen
zu bewahren sind oder nicht. Wenn die
409845/0859
Sinleitungsprogrammroutinen zu bewahren bzw. zu sichern
sind; was bedeutet, daß die Antwort ja lautet, dann werden
die Lücken oder Bereiche 12 unter den Einleitungsprogrammroutinen ebenfalls in Übereinstimmung mit der Routine gemäß
Figo 10 unterteilt, und zwar in ähnlicher Weise, wie die Lücken oberhalb des Speicherplatzes 14 unterteilt wurden.
Wenn die Einleitungsprogrammroutinen nicht zu sichern bzw. bewahren sind, dann wird der nächste Eintrag in die FCAT-Tabelle
16 adressiert. Demgemäß wird nach Feststellung des Markierungswortes die Routine gemäß Fig. 9 zum Ende kommen.
Damit sind die Lücken 12 vom Sektor 0 bis zur Oberseite der FCAT-Tabelle 16 in Abhängigkeit von den Forderungen des
Systems unterteilt worden. Ferner sowie in Abhängigkeit von den Forderungen des Systems sind gegebenenfalls die
Lücken 12 unter den Einleitungsprogrammroutinen nicht derart unterteilt worden.
Wie angedeutet, enthält die Routine gemäß Fig. 9 einen
Unterteilungsalgorithmus oder Unterteilungsroutinen, wie sie in Fig» 10 gezeigt sind, die nunmehr erläutert wird.
Die Routine gemäß Fig. 10 wird dazu benutzt, jede Lücke 12 in die maximale Anzahl von großen Blocklängen zu unterteilen,
gefolgt von der maximalen Anzahl von mittleren Blocklängen (16-Wort-BlocMängen) und der maximalen Anzahl von
kleinen Blocklängen in dem übrigen Platz. Grundsätzlich wird jeder Bereich oder jede Lücke unterteilt, z.B. in die genannten
drei Gruppen. Bezugnehmend auf Fig. 7 sei bemerkt, daß die Grundgruppe oder die erste Gruppe 5:4, die am
Punkt 30 beginnt und am Punkt 32 endet, die raaximale Anzahl von langen Blöcken enthält, in die die Lücke oder
der Bereich unterteilt sein kann. Im vorliegenden Beispiel sind drei lange Blöcke (32 Worte) vorhanden, wie dies durch
409845/0859
Blöcke dargestellt ist, die durch die gestrichelten Linien getrennt sind. Die Gruppe 34 ist die erste unterteilte
Gruppe» Die Gruppe 34 beginnt an der Stelle bzw. an dem Speicherplatz 3O9 die bzw„ der ausgewählt worden ist, um
die Gruppe 34 an einem geeigneten Speicherplatz zu beginnen«,
Dadurch vereinfacht sich die Verarbeitung der Adressen, die die bestimmten Blöcke kennzeichnen. Die Art und Weise, in
der der Speicherplatz 30 ausgewählt ists ist in Fig. 10
durch den Block 28 dargestellt. Durch Auffinden des Speicherplatzes
30, und zwar unter Heranziehung der im Block 28 angegebenen Formel, ist es möglich, die Adresse des ersten
Wortes irgendeines Blockes durch UND-mäßige Verknüpfung der
Adresse irgendeines Wortes des bestimmten Blockes mit dem Zweierkomplement der Blocklänge zu erhalten» Die Gruppe 36,
die an der Speicherstelle bzw. dem Speicherplatz 30 endet und die mit der Startadresse des bestimmten Bereiches beginnt, sowie die Gruppe 38, die mit dem Speicherplatz 32
beginnt und die mit der Endadresse des bestimmten Bereiches endetj sind kleiner als die größte Blocklänge» Dies bedeutet,
daß die Gruppen 36 und 38 weniger als 32 Worte enthalten.
Durch die in Fig. 10 dargestellten Routinen sowie nach der Unterteilung der Gruppe 34 wird die Gruppe 26 in die maximalen mittleren Blocklängen und in die maximalen kleinen Blocklängen
unterteilt. Daraufhin wird derselbe Prozess für die Gruppe 38 fortgesetzt.
Nunmehr sei besonders auf Fig. 10 Bezug genommen. Wach Eingabe
der unterteilten Routine ist die Startadresse definiert als N, und die Sndadresse ist definiert als M. Darüber hinaus
sind die Wortspeicherplätze tem 3 und tem 4 auf Null zurückgestellt, und S ist definiert als die größte gebildete
Blocklänge. Dies bedeutet, daß S gleich der maximalen Blocklänge oder gleich der 32-Wort-Blocklänge entsprechend
409845/0859
dem gegebenen Beispiel ist. Nachdem diese Definitionen gegeben sind, ist der Speicherplatz 30 durch, den Block 28
definiert. Dem Speicherplatz 30 ist der Buchstabe J gleichgesetzt , der ausgedrückt in Zahlen auf der Oktalbasis gleich
der Startadresse zuzüglich der Anzahl von Worten in der größten Blocklänge (S) abzüglich eins ist. Sämtliche Größen
v/erden UND-mäßig mit dem Zweierkomplement von S (minus S) verknüpft. Demgemäß ist dem Speicherplatz 30 (J) der Buchstabe
K gleichgesetzt. Somit ist K gleich die Adresse des Speicherplatzes 30. Die nächste Frage, die von der Routine
gestellt wirdj ist in dem Block 40 dargestellt. Gemäß diesem
Block wird die Frage gestellt, ob die größte Blocklänge S tatsächlich in den Bereich untergebracht werden kann. Wenn
K + S größer ist als M (die Endadresse), dann kann somit die
größte Blocklänge nicht in den Bereich untergebracht werden. Unter der Annahme, daß K + S nicht größer ist als M, würde
die Antwort nein lauten. Dies folgt aus dem angenommenen Beispiel. Demgemäß wird irgendeine bekannte Routine eingeführt,
wobei die sich auf den ersten Block beziehende Information, beginnend am Speicherplatz 30, in den Speicher
und insbesondere in die Pool-Parametertabelle eingeführt wird. Somit wird die Information bezüglich des ersten
Blockes, des letzten Blockes, der Anzahl verfügbarer Blöcke, etc. aktualisiert. Nachdem die Routine des Blockes
42 verarbeitet ist, wird K gleich der Definition K + S gesetzt. Demgemäß ist K nunmehr im Speicherplatz 31 (Fig. 7).
Mit nunmehr auf den Speicherplatz 31 zeigendem K wird wieder die im Block 41 sich ergebende Frage beantwortet.
Unter der Annahme, daß die Antwort nein lautet, wird die Routine des Blockes 42 verarbeitet, und die Pool-Parametertabelle
wird aktualisiert, usw., bis der dritte Block in
409845/0869
der Gruppe 34 bei dein in Fig. 7 veranschaulichten Beispiel
verarbeitet worden ist. Im nächsten Zyklus lautet die Antwort
zur Frage des Blockes 40 ja, An dieser Stelle wird über den Block 44 die Frage gestellt, ob K gleich J ist.
,Der Buchstabe K ist an dieser Stelle gleich dem Speicherplatz 32, und der Buchstabe K ist gleich dem Speicherplatz
Wenn demgemäß K gleich J ist und wenn demgemäß die Antwort ja lautet, bedeutet dies, daß ein großer Block niemals gebildet
wurde. In dem Beispiel wurde jedoch ein Block gebildet, und K ist nicht gleich J. Somit lautet die Antwort
des Blockes 44 nein, und demgemäß wird die Frage in dem Block 45 gestellt, nämlich ob der Speicherplatz Tem 3 gleich
Null ist. Durch die Routine gemäß Fig. 10 wurde der Speicherplatz Tem 3 auf Null gesetzt; demgemäß lautet die Antwort
zu der Frage des Blockes 45 zu diesem Zeitpunkt ja. Auf das betreffende Antwortsignal hin erfolgt eine Definition,
und die Information wird derart abgespeichert, daß K im Speicherplatz Tem 3 und M im Speicherplatz Tem 4 abgespeichert
sind. Da K dem Speicherplatz 32 entspricht und da M der Sndadresse entspricht, sind somit die Start- und
Stopadressen der Gruppe 38 in den Speicherplätzen Tem 3
bzw. Tem 4 festgehalten. An dieser Stelle wird M gleich J gesetzt.
Wenn M gleich J ist, bedeutet dies, daß M nunmehr dem Speicherplatz 30 entspricht und daß, wie noch ersichtlich
werden wird, die nächste Operation darin besteht, die Gruppe 36 zu unterteilen, und zwar beginnend mit der Startadresse
und endend mit dem Speicherplatz 30. Der Block 46 wird sodann eingeführt, und die Frage wird gestellt, ob
eine kleinere Blocklänge gebildet wird oder nicht. Bei dem vorliegenden Beispiel lautet die Antwort ja, da
409845/0859
nämlich tatsächlich 16- und 8-Wort-Blocklängen vorhanden
sind. Auf die Antwort hin wird S auf die nächst kleinere Blocklänge gesetzt, und die Verarbeitung der Unterteilung
von Blöcken für mittlere Blocklängen wird in gleicher Weise wiederholt wie für die großen Blöcke. Damit wird der Block
wieder eingeführt, und die Gruppe 36 wird in mittlere Blocklängen
unterteilt. Da die Gruppe 36 weniger als 32 Wörter haben muß, könnte, wie ersichtlich ist, nicht mehr als eine
mittlere Blocklänge in der Gruppe 36 gebildet werden. Nachdem die Gruppe in die mittlere Blocklänge unterteilt ist,
kann, wie ferner hervorgeht, kein größerer Bereich als ein kleiner Block vorhanden sein. Dies bedeutet, daß in
der Gruppe 36 der 8-Wort~Block gebildet wird. Somit wird der Vorgang wie für große und mittlere Blöcke für den kleinen
Block wiederholt, bis die Antwort zum Block 46 hin nein lautet. In diesem Fall wird die Frage beantwortet, ob der
Speicherplatz Tem 3 eine Null gespeichert hatte oder nicht. Da der Speicherplatz Tem 3 auf K gesetzt war, so daß die
Startadresse und die Stopadresse der Gruppe 38 gesichert
werden konnte, lautet die Antwort nein. Demgemäß werden die Speicherplätze Tem 3 und Tem 4 auf N bzw. M gesetzt,
so daß nunmehr die Gruppe 38 unterteilt wird.
Die Speicherplätze Tem 3 und Tem 4 werden unmittelbar auf Null gesetzt, und S wird auf die größte Blocklänge gesetzt;
dies ist der 32-Wort-Block. Wenn die Frage des Blockes jedoch bejahend beantwortet wird, wird J gebildet, da nämlich
die Gruppe 38 weniger als 32 Worte haben muß. Sodann ist die Antwort im Block 44 bezüglich J gleich K gegeben
durch ja, womit man zum Block 46 gelangt. S wird auf die kleinere Blocklänge gesetzt. Dies stellt allem Anschein
nach nutzlos verbrauchte Zeit dar; es dürfte jedoch ersicht-
409845/0859
lieh sein, daß die Einführung einer- Routine, die diese
eine -kurze Anforderung zum Übergang auf die nächst kleinere Blocklänge umgeht, tatsächlich das Programm
vereinfacht.
Ist S nunmehr gleich die mittlere Blocklänge, so wird wieder J gebildet, und die Gruppe 38 wird in derselben
Weise unterteilt wie die Gruppe 36 unterteilt wurde. Wenn die Antwort zu dem Block 46 hin schliei31ich nein lautet«
dürfte ersichtlich sein., daß die Antwort von dem Block 48
her Ja lautet. Demgemäß kommt die Routine gemäß Fig. 10
zum Ende.
Aus der Routine gemäß Figo 10 dürfte somit ersichtlich sein, daß die erste Gruppe 34 in die maximale Anzahl von
großen Blöcken unterteilt worden ist und daß die beiden Gruppen 36 und 38 vor bzw. nach der Gruppe 34 gebildet
worden sind. Dabei hat jede der Gruppen 36 und 38 eine geringere Anzahl von Worten als in dem großen Block enthalten
ist. Auf die Unterteilung der Gruppe 34 hin dürfte ersichtlich sein, daß die Gruppe 36 dann derart unterteilt
wird, daß maximal ein mittlerer Block und ein kleiner Block unterteilt werden. Auf die Unterteilung der Gruppe
36 in Blöcke dürfte ersichtlich sein, daß die Routine gemäß Fig. 10 dann dazu herangezogen wird, die Gruppe 38
in derselben Weise zu unterteilen, in der die Gruppe 36
unterteilt worden ist. Schließlich kommt die Routine zum Ende.
Sind die in der FCAT-Tabelle 16 angegebenen Bereiche
derart unterteilt, so wird eine Überprüfung vorgenommen, um festzustellen, ob minimale Speicheranforderungen erfüllt
worden sind« Die zur Vornahme dieser Prüfung dienende
4098^5/0859
Routine ist in Einzelheiten speziell in Fig. 11 dargestellt. Bezugnehmend auf Fig. 11 sei bemerkt, daß nach
Eingabe der Prüfungs-Minimalanforderungs-Routine ein Überschußzähler, der in dem Speicher enthalten ist, gelöscht
\tfird. Der Überschußzähler bzw. die Überschußzählung wird
im folgenden erläutert werden. Nachdem der Überschußzähler gelöscht ist, wird die Adresse des größten gebildeten
Blockes in der Pool-Parametertabelle erhalten. Bine bezeichnete Adresse wird somit der erste Block für die große
Blocklänge sein. Die Anzahl der zugeordneten Blöcke, die ebenfalls in der Pool-Parametertabelle enthalten ist, wird
sodann zu der Überschußzählung hinzuaddiert. Daraufhin wird die erforderliche minimale Anzahl von Blöcken von der
Überschußzählung oder in diesem Fall von der Anzahl der zugeordneten Blöcke subtrahiert. Sodann erfolgt eine
Feststellung dahingehend, ob das Ergebnis negativ ist oder nicht. Ist das Ergebnis negativ, so bedeutet dies,
daß die minimalen Anforderungen nicht erfüllt worden sind. Wenn demgemäß die Ant\/ort auf die Frage, ob das Ergebnis
negativ ist, ja lautet, wird die Routine gemäß Fig. 11 ausgeführt, da nämlich nicht genügend Blöcke in den
bereits unterteilten Bereichen vorhanden sind, um den minimalen Anforderungen zu genügen.
An dieser Stelle sei tatsächlich darauf hingewiesen, daß die Entscheidung, ob genügend Speicherplatz vorhanden ist,
für die Erfüllung der minimalen Anforderungen, wie dies in Fig. 8 angedeutet ist, tatsächlich in Fig. 11 speziell
gezeigt ist. Wenn demgemäß die Antwort in Fig. 11 zur Frage, ob das Ergebnis negativ ist, ja lautet, dann entspricht
dies der in Fig. 8 angegebenen Frage. Demgemäß wird der Speicher von der FCAT-Tabelle 16, und zwar
409845/0859
entweder von deren Anfang oder von deren Ende, in Übereinstimmung mit den Anforderungen des Systems bis zum
Speicherende unterteilt. Wenn die Antwort auf die Frage, ob das Ergebnis negativ ist, gemäß Fig. 11 nein lautet,
dann wird der Überschußzähler auf das Ergebnis eingestellt. Wenn an dieser Stelle und in dem Beispiel die
Anzahl der zugeordneten Blöcke gleich 23 ist und wenn die geforderte minimale Anzahl von Blöcken gleich 20 ist,
dann ist die Überschußzählung bzw. Überzählung gleich 3. Dies ist gleich dem Ergebnis, wie es in Fig. 11 veranschaulicht
ist. Dieses Ergebnis für die größeren Blöcke der 32-Wort-Länge wird demgemäß in dem Speicher gespeichert.
Wenn dies die kleinste gebildete Blocklänge war, würde das Programm zum Ende kommen. Da jedoch noch zusätzliche
kleinere Blocklängen gebildet werden, multipliziert die Routine gemäß Fig. 11 die Überschußzählung oder das Ergebnis
mit dem Divisionsparameter für den großen Block.
Der Divisionparameter für die jeweilige Blocklänge wird dadurch bestimmt, daß die Anzahl der Worte in der Blocklänge,
für die der Divisionsparameter zu berechnen ist, durch die Anzahl der Worte in der nächstkleinsten gebildeten Blocklänge
dividiert wird. Bei dem angenommenen Beispiel wäre der Divisionsparameter für die 32-Wort-Blocklänge 2, und
der Divisionsparameter für die 16-Wort-Blocklänge wäre
Der Divisionsparameter für die 8-Wort —Blocklänge wäre Wären lediglich 32-Wort-Blocklängen und eine 8-Block- Wortlänge
zu bilden, so wäre der Divisionsparameter für die 32-Wort-Blocklänge 4, und für die 8-Wort-Blocklänge wäre
er 0. Der Divisionsparameter kann vorzugsweise in der Pool-Parametertabelle gespeichert und aus dieser auf das
Auftreten der Routine gemäß Fig. 11 hin abgeholt werden.
409845/0859
Gemäß dem angenommenen Beispiel, bei dem die Überschuß-Zählung gleich 3 ist, wird die nächste Überschußzählung
bzw. Überzählung, die gleich dem Ergebnis gesetzt wird, dreimal 2 oder 6. Ist das neue Srgebnis bestimmt, so wird
die Adresse des Pool-Parametereintrags für die nächst kleinere gebildete Blocklänge ermittelt, und die Routine
wird wieder in der dargestellten Weise abgewickelt.bzw.
verarbeitet, und zwar unter Heranziehung des Ergebnisses von 6 z.B., bis die Antwort auf die Frage, ob es sich um
die kleinste gebildete Blocklänge handelt, "ja" lautet und die Routine gemäß Fig. 11 abgeschlossen wird. Wenn die
Antwort auf die Frage, ob das Ergebnis negativ ist, ja lautet, dann würde der Bereich vom Beginn oder Ende der
FCAT-Tabelle 16 bis zum Ende des bezeichneten Speichers unmittelbar in Übereinstimmung mit der Routine gemäß Fig.
aufgeteilt werden.
Mit Eintreten in den letzten Teil der Phase 1 lautet die erste zu beantwortende Frage, wie dies Fig. 12 zeigt, ob
die Einleitungsprogrammroutinen aufzubewahren sind. Wenn die betreffenden Routinen aufzubewahren sind, wird die
Adresse des ersten Wortes außerhalb der FCAT-Tabelle 16 abgeholt und in dem Speicherbereich gespeichert, der mit
Tem 1 bezeichnet ist. Daraufhin wird die Adresse des angegebenen Speicherendes abgeholt und in dem Speicherbereich
gespeichert, der als Speicherbereich Tem 2 bekannt ist. Die beiden nunmehr in derartigen Speicherplätzen gespeicherten
Adressen schließen den nicht benutzten freien Speicher- oder "Kern"-Bereich 18 ein. In Übereinstimmung
mit der Routine gemäß Fig. 10 wird dieser Bereich unterteilt, und demgemäß wird die Pool-Parametertabelle
aktualisiert. Ist der Speicher bis zu dem angegebenen Speicherende hin unterteilt, so wird dies angezeigt, und
A09845/0859
das Programm kommt zum Ende.
Wenn die Einleitungsprogrammroutinen nicht aufzubewahren sind, wird die erste Adresse der FCAT-Tabelle. 16 abgeholt,
und zwar an Stelle der ersten Adresse nach der FCAT-Tabel-Ie
16. Demgemäß wird der Speicher vom Beginn der FCAT-Tabelle 16 bis zu dem angegebenen Speicherende in ähnlicher
Weise unterteilt, in der der Bereich 18 unterteilt wurde, woraufhin die Routine gemäß Fig. 12 zum Ende kommt.
Demgemäß dürfte ersichtlich sein, daß während der Phase 1 der gemäß der Erfindung ausgeführten Speicherinitialisierung
die Pool-Parametertabelle aktualisiert worden ist, und zwar während der Initialisierung der Lücken oberhalb der Einleitungsprogrammroutinen,
und in Abhängigkeit davon, ob die Einleitungsprograinmroutinen aufzubewahren sind, erfolgt
auch eine Initialisierung der Lücken unter den Einleitungsprograinmroutinen. Ferner erfolgt eine Initialisierung des
übrigen Teiles des Speichers, einschließlich der FCAT-Tabelle 16, in Abhängigkeit davon, ob die FCAT-Tabelle aufzubewahren
ist oder nicht, und außerdem wird der Bereich 18 unterteilt. Somit verfolgt das System gemäß der Erfindung
die Anzahl der der jeweiligen Blocklänge zugeteilten Blöcke und bestimmt, ob die minimalen Speicheranforderungen
erfüllt sind oder nichto Auf die Beendigung der Phase 1 hin
ist eine Zwischenphase eingeführt, wodurch den Einleitungsprogrammroutinen ermöglicht sein kann, eine ansonsten "tote"
Maschine zu initialisieren, so daß sich ein Betriebssystem ergibt. Dies heißt, daß während einer derartigen Zwischenperiode
das System derart vorbereitet oder initialisiert wird, daß es bereit wird, um die verschiedenen Programme
und/oder Informationen zu verarbeiten. Wach dieser Zwischen-
409845/0859
periode wird die Phase 2 der Operation vorliegender Erfindung eingeführt.
In Fig. 13 ist die Routine der Phase 2 gezeigt. Während der Phase 2 können die Systeme sowohl die verschiedenen
Programme und/oder die Information verarbeiten als auch gleichzeitig eine weitere Initialisierung hervorrufen,
wie dies im folgenden erläutert wird. Die Art und Weise, in der eine derartige gleichzeitige Operation stattfinden
kann, wird weiter unten noch erläutert. Generell besteht die Aufgabe der Phase 2 darin, eine Unterteilung vorzunehmen,
und zwar irgendwo vom Start der Einleitungsprogrammroutinen 14 beginnend bis zum Speicherende hin. Dies
erfolgt in Abhängigkeit davon, ob dies während der Phase durchgeführt wurde. Außerdem werden während der Phase 2
die Blöcke aufgeteilt, um die maximalen Anforderungen des Systems zu erfüllen, wie sie in der Pool-Parametertabelle
bezeichnet sind. Ist somit die Phase 2 eingeführt, so lautet die erste Frage, ob der Bereich von der FCAT-Tabelle
16 bis zum Speicherende hin unterteilt worden ist. Wenn die Antwort des Blockes 60 ja lautet, dann lautet die
nächste Frage im Block 62, ob die Einleitungsprograminroutinen
aufzubewahren sind. Wenn die Antwort nein lautet, holt die Routine gemäß Fig. 13 die Adresse des ersten
Wortes des Initialisierungsbereichs ab und speichert sie in dem Speicherplatz Tem 1. Ferner holt die betreffende
Routine die Adresse des Wortes unmittelbar vor der FCAT-Tabelle 16 ab und speichert sie in dem Speicherplatz Tem2.
Dieser Bereich wird dann in Übereinstimmung mit der Routine gemäß Fig. 10 unterteilt, woraufhin die Routine des
Blockes 64 eingeführt wird. Die Routine des Blockes 64 ist im einzelnen in Fig. 14 gezeigt; sie betrifft die
Aufteilung der Blöcke zur Erfüllung der maximalen An-
409845/0859
forderungen des Systems. Der Block 64 kann auch in verschiedenen
anderen Wegen eingeführt werden. Wenn z.B. die Antwort des Blockes 62 ja lautet, wird unmittelbar in den
Block 64 eingetreten. Wenn die Antwort des Blockes 60 nein gelautet hat, wird im Block 66 dieselbe Frage gestellt wie
im Block 62, nämlich, ob die Einleitungsprogrammroutinen aufzubewahren sind. Wenn die Antwort ja lautet, wird der
Bereich von der FCAT-Tabelle 16 zu dem bezeichneten Speicherende hin in Übereinstimmung mit der Routine gemäß Fig.
unterteilt, woraufhin in den Block 64 eingetreten wird. Wenn die Antwort des Blockes 66 nein lautet,'werden das erste
Wort und das letzte Wort des in den Einleitungsprogrammroutinen enthaltenen Bereiches in den Speicherplätzen Tem
bzw. Tem 2 gespeichert, und dieser Bereich wird in Übereinstimmung mit der Routine gemäß Fig. 12 unterteilt. Daraufhin
wird in den Block 64 eingetreten. Nachdem die Blöcke in Übereinstimmung mit der Routine gemäß Fig. 14 aufgeteilt
sind, kommt die Phase 2 zum Ende.
Nunmehr sei auf die in Fig. 14 dargestellte Routine Bezug genommen, gemäß der die Adresse für den Poöl-Parameter-·
tabelleneintrag der größten gebildeten Blocklänge festgestellt wird. Ist diese Adresse bestimmt, so wird die für
diese Blocklänge oder diesen Pool zugeordnete Anzahl von Blöcken in der Pool-Parametertabelle festgestellt. Wenn
die Anzahl der zugeordneten Blöcke gleich der maximal geforderten Anzahl in Übereinstimmung mit der^ Pool-Parametertabelle
oder größer als diese Zahl ist, dann Y^rd.die Frage gestellt, ob dies die kleinste Blocklänge ist,"d.h·; die
8-tvort-Blocklänge. Wenn die Antwort ja lautet, kommt die
Routine zum Ende. Lautet die Antwort jedoch nein, so wird die Adresse des Pool-Parametertabelleneintrags für die
409845/0869
nächst kleinere Blocklänge festgestellt, und der Vorgang wird wiederholt. Wenn die Anzahl der zugeordneten Blöcke
nicht gleich der maximal geforderten Anzahl oder nicht größer als diese Anzahl ist, wird .die Frage gestellt, ob
ein wesentlich größerer Block vorliegt. Lautet die Antwort ja, so wird der Block in Übereinstimmung mit der Routine
gemäß Fig. 15 aufgeteilt, woraufhin die Routine gemäß Fig.i4
selbst wieder im Zyklus abläuft. Wenn kein wesentlich größerer Block vorhanden ist, kommt die Routine gemäß Fig. 15 zum
Ende, und zwar für den Fall, daß es sich um die kleinste Blocklänge von 8-Worten gehandelt hat, oder der nächst
kleinere Block wird adressiert, und die Routine gemäß Fig. 14 wird wiederholt. Wenn die Aufteilungsroutine gemäß
Fig. 15 verarbeitet wird, wird, wie ersichtlich sein dürfte, die Anzahl der zugeordneten Blöcke und die Anzahl
der verfügbaren Blöcke für den jeweiligen bestimmten Pool oder die jeweilige Blocklänge in Übereinstimmung mit der
ausgeführten Operation gesteigert oder vermindert.
Bezugnehmend auf Fig. 15 sei demgemäß bemerkt, daß nach Eintritt in die Aufteilungsroutine im Block 70 gefragt
wird, ob der bezeichnete Pool leer ist. Der bezeichnete Pool ist der Pool der gerade aufgeteilten Blocklängen.
Im Beispiel werden die größten Blöcke oder 32-Wort-Blöcke zuerst behandelt; demgemäß ist der bezeichnete Pool jener
der gebildeten größten Blöcke. Im Hinblick auf den Block 72 sei bemerkt, daß der gegenwärtige Pool der Pool oder
die Blocklänge der nächst kleineren gebildeten Größe ist. In dem Beispiel, in dem 32-Wort-Blöcke, 16-Wort-Blöcke
und 8-Wort-Blöcke vorkommen, wäre demgemäß bei Aufteilung
der 32-Wort-Blöcke der gebräuchliche Block öder Pool der 16-Wort-Block, während bei Aufteilung der
409.845/0859
24Ί9522
16-Wort-Blöcke der gebräuchliche Block oder Pool der
8-Wort-Block wäre. Wenn somit die Antwort des Blockes 70
ja lautet, kommt die Routine gemäß Fig. 15 zum Schluß zurück zur Fig. 14, bis tatsächlich die letzte kleinste
Blocklänge angezeigt ist. Daraufhin kommt die Routine gemäß· Fig. 14 zum Ende. Venn, die Antwort des Blockes 70 gemäß
Fig. 15 nein lautet, dann wird ein Block aus diesem bestimmten Pool von' Blöcken herausgenommen; die großen
Blöcke und die Anschlußadresse für Blöcke, die zuvor mit dem herausgenommenen Block verbunden sind, werden aktualisiert.
In Übereinstimmung mit den Herausnehmen eines Blockes aus dem Pool der großen Blöcke werden die die verfügbaren
Blöcke und die zugeordneten Blöcke betreffenden Zählungen bzw. Zählerstellungen der Pool-Parametertabelle vermindert.
Ist die Pool-Parametertabelle in geeigneter Weise aktualisiert, so wird der gerade aus der großen Gruppe von Blöcken
herausgetrennte Block in Blöcke der nächst kleinsten gebildeten Größe unterteilt. Unter der Annahme, daß die
nächst kleinste gebildete Größe die Hälfte der Größe des vorliegenden Blockes ist, werden sodann zwei derartige
Blöcke erzeugt; die Startadressen dieser beiden Blöcke werden gespeichert. Ist diese Division ausgeführt, so wird
im Block 74 gefragt, ob diese Blöcke, die unterteilt worden sind, die geforderte Größe haben. Wenn die Antwort ja
lautet, werden die beiden Blöcke mit dem gebrauchten Pool oder den gebrauchten Blöcken verbunden, d~h. mit der Pool-Parametertabelle,
die der Größe der gerade geteilten Blöcke entspricht., Demgemäß wird die Adresse des letzten Blockes
in der Pool-Parametertabelle, wie gefordert, aktualisiert. Ferner wird die Pool-Parametertabelle dadurch aktualisiert,
409845/0859
daß die die in Frage kommenden verfügbaren Blocklängen betreffende Zählerstellung und die die zugeordneten Blocklängen
betreffende Zählerstellung um die Anzahl der verbundenen Blöcke erweitert v/ird. "V/enn somit z.B. mit
einem zu unterteilenden 32-Wort-Block begonnen wird, dann
würde der 16-Wort-Blοcklängeneintrag in die Pool-Parametertabelle
aktualisiert werden, und zwar hinsichtlich ihres letzten Blockeintrags sowie hinsichtlich der Anzahl
der zugeordneten und verfügbaren Blöcke. Ist dies erfolgt, so kommt die Routine gemäß Fig. 14 zum Ende.
Hat die Antwort des Blockes 74 nein gelautet, was bedeutet, daß die Blocke nicht von der geforderten Größe sind, wie
z.B. in dem Fall, daß mit 32-Wort-Blöcken begonnen worden
ist und daß zusätzliche 8-Y/ört-Blöcke erwünscht sind, so
würde man in den Block 72 eintreten und mit Ausnahme eines
Blockes sämtliche dieser Blöcke mit dem gebrauchten Pool verbinden und die Schlangenanfänge aktualisieren. Dies
heißt in dem gerade erwähnten Beispiel, daß ein 16-Wort-BIock
mit dem Eintrag in die Pool-Parametertabelle für die i6-\iort-Bio cklänge verbunden würde und daß einer der 16-Wort-Blöcke
nicht verbunden würde. Nachdem dies ausgeführt ist, wird der Eintrag der die verfügbaren Blöcke betreffenden
Zählerstellung und der die zugeordneten Blöcke betreffenden Zählerstellung, z.B. für die 16-Wort-Blöcke, durch
die Anzahl der derart verbundenen Blöcke erweitert. Demgemäß würde eine solche Information in Bezug auf derartige
Zählersteilungen jeweils um 1 vergrößert werden. Der nicht
verbundene Block würde sodann in die Blöcke der nächst kleinsten Größe unterteilt werden, die zu bilden ist, das
sind zwei 8-Vort-Blöcke. Die Pool-Parametertabelle würde demgemäß aktualisiert werden, wie dies oben angegeben ist.
409845/08 6
Diese Schleife der Routine enthält den Block 72; sie wäre ferner zweckmäßig in jenen Fällen z.B., in denen ein
64-Wort-Block-Eintrag vorlage und nicht der Wunsch bestünde
nach einem 32-Wort-Block-Sintrag, sondern nach einem aufzuteilenden
16-Wort-Block. Somit kommt die Routine gemäß
Fig. 15 zum Ende; sie hat zu zwei nächst kleineren Blocklängen für die Zwecke der Pool-Parametertabelle geführt.
Wie in Fig. 14 gezeigt, wiederholt sich dieser Vorgang für jede Blocklänge, wenn eine derartige Blocklänge, in typischer
Weise die größte Blocklänge, tatsächlich einen Überschuß an Blöcken aufweist. Somit werden die im Überschuß vorhandenen
Blocklängen in Übereinstimmung mit der Routine gemäß Fig.15 aufgeteilt, bis die maximalen Anforderungen bezüglich der
nächst kleinsten Blocklänge erfüllt sind. Dies setzt sich fort für den Fall, daß Blöcke verfügbar sein sollten, bis
die Anzahl der 8-Wort-Blocklängen ebenfalls die maximalen
Anforderungen erfüllt. In Übereinstimmung mit Fig. 15 ist noch zu bemerken, daß in dem Fall, daß keine weiteren
Blöcke vorhanden sein sollten, die Antwort des Blockes 70 ja lautet und die Aufteilungsroutine zum Ende kommt. Die
Phase 2 wird schließlich beendet, wenn die kleinste Blocklänge, d.h. die 8-Wort-Blocklänge, in Übereinstimmung mit
der Routine gemäß Fig. 14 ermittelt wird.
Wie oben ermähnt, kann die Phase 2 des Betriebs,der vorliegenden
Erfindung gleichzeitig mit der Verarbeitung der verschiedenen Programme und/oder der Information beibehalten
werden» die im Speicher gespeichert sein kann. Erreicht wird dies dadurch, daß nicht jeder achte Wortspeicherplatz
in dem Speicherbereich benutzt wird, der die Einleitungsprogrammroutinen speichert. Der erste derartige Speicherplatz,
der nicht benutzt wird, würde dem Speicherplatz
409845/Ü859
entsprechen, der sich in Übereinstimmung mit der Formel des Blockes 28 der in Fig. 10 gezeigten Routine ergeben
würde. Somit könnten die lüinleitungsprogrammroutinen bzw.
Programmvorbereitungsroutinen ablaufen, während der eine derartige Routine enthaltende !Bereich unterteilt wird, und
zwar einfach dadurch, daß die Schlangenköpfe oder Anschlußadressen
in jedem vierten derartiger nicht benutzter Speicherplätze für den 32-Wort-Block, in jedem zweiten nicht benutzten
Speicherplatz für den i6-urort-Block und in jedem nicht benutzten
Speicherplatz derartiger nicht benutzter Speicherplätze für die 8-Wort-Blöcke untergebracht werden. Sind die
Anschlußadressen in die in Frage kommenden Wortspeicherplätze eingefügt, die in dem Speicherbereich enthalten sind, der die
Programmeinleitungsroutine speichert, so können die Routinen selbst ablaufen, und zwar sogar während der Unterteilung des
diese Routinen enthaltenden Speicherbereichs und/oder nach der Unterteilung des betreffenden Speicherbereichs. Wenn
die Blöcke benutzt werden müssen, die aus'dem die Programmeinleitungsroutinen
speichernden Speicherbereich gebildet sind, so werden die Routinen einfach mit der neuen Information
übergeschrieben, wodurch der spezielle Teil der Programmeinleitungsroutinen zerstört ist.
Durch die vorliegende Erfindung werden also Lücken oder freie Speicherbereiche, die nach dem Laden eines mit einem
Rechner verbundenen Speichers durch verschiedene Rechnerprogramme und/oder Informationen gebildet sind, in eine
Vielzahl von unterschiedlichen v/ortlängen oder Blocklängen
unterteilt, um derartige freie Bereiche während des Ablaufs oder der Verarbeitung durch ein den Rechner und den Speicher
enthaltendes System wirtschaftlicher auszunutzen. Der Speicher enthält einen ersten festgelegten Bereich zur
4 09845/085
Speicherung derartiger Programme, wodurch sich eine Vielzahl von Lücken oder freien Bereichen ergibt, und einen
zweiten festgelegten Bereich zur Speicherung der jüinleitungsroutinen
gemäß der Erfindung, was ebenfalls zu einer Vielzahl von Lücken führt, üinefreie Speicher- oder "Kenr'-Bereiche
anzeigende Tabelle gibt die Adressen der verschiedenen Lücken an; diese Tabelle ist- zusätzlich zu den insgesamt
nicht ausgenutzten großen Speicherbereichen ebenfalls in dem Speicher enthalten. Die Programmvorbereitungseinrichtung
gemäß der Erfindung arbeitet grundsätzlich in zwei Stufen. Zum ersten werden die verschiedenen Lücken unterteilt, z.B.
in lange, mittlere und kurze Wortbläcke, und sodann erfolgt eine Unterteilung der Lücken unter den Einleitungsroutinen
und/oder der Binleitungsroutinen selbst und/oder der die freie Speicherbereiche angebenden Tabelle und/oder eines
derartigen nicht benutzten großen Speicherbereiches, und zwar in Abhängigkeit von den Anforderungen des Systems.
Ferner werden in Abhängigkeit von minimalen und maximalen Anforderungen des Systems die die maximalen Anforderungen
des Systems übersteigenden Wortblöcke irgendeiner bestimmten Länge in kleinere Blöcke unterteilt, um nämlich in dem möglichen
Ausmaß die angegebene maximale Menge an Blöcken für die jeweilige Blocklänge bereitzustellen.
Claims (1)
- Patentansprüche/1. Verfahren zur Unterteilung eines nicht ausgenutzten Bereiches in einem mit einem Rechner verbundenen Speicher in eine Vielzahl von Wortblöcken einer ersten Länge und zumindest in einen Wortblock einer zweiten Länge, die kleiner ist als die erste Länge, dadurch gekennzeichnet, a)daß eine erste Adresse in dem betreffenden Bereich bestimmt wird, und zwar beginnend von der Stelle, von der aus eine Unterteilung in Blöcke der ersten Größe vorzunehmen ist,b) daß der von der ersten Adresse aus beginnende Bereich in die maximale Anzahl von Blöcken der ersten Länge unterteilt wird,c) daß bezüglich des auf die unterteilten Worte der ersten Länge folgenden Wortes eine zweite Adresse bestimmt wird undd) daß von der durch die zweite Adresse bestimmten stelle ausgehend bis zu der Stelle hin, die durch die iindadresse des Bereichs gegeben ist, der betreffende Bereich ein . Block der zweiten Längeharausgeteilt wird.2. Verfahren nach Anspruch 1, dadurch gekennzeichnet,a) daß bezüglich des auf den unterteilten Block der zweiten Länge folgenden Wortes eine dritte Adresse bestimmt wird undb) daß mit der dritten Adresse beginnend und mit der j^ndadresse des Bereiches endend aus einem Randbereich des ersten Unterbereichs ein Block einer dritten Länge gebildet wird, die kleiner ist als die zweite Länge.3. Verfahr·' ι nach Anspruch 1, dt.durch gekennzeichnet, daß zu! :l'L Stimmung der ersten Adresse die der ersten409845/0859Adresse entsprechende Adresse berechnet wird, die durch UND-mäßige Verknüpfung irgendeiner Adresse in dem ersten Block der Blöcke der ersten Länge mit einer Funktion der Länge des Blockes der ersten Länge feststellbar ist.4. Verfahren nach Anspruch 39 dadurch gekennzeichnet, daß als Funktion für die Berechnung das Zweierkomplement der ersten Blocklänge verwendet wird.5. Verfahren nach einem der Ansprüche 1 bis 4, dadurch gekennzeichnet, daß zur Bestimmung der ersten Adressea) die Startadresse des betreffenden Bereichs zu der Länge des Blockes der ersten Blocklänge unter Bildung eines ersten Ergebnisses addiert wird,b) die Zahl 1 von dem ersten Ergebnis zur Bildung eines zweiten Ergebnisses subtrahiert wird undc) das zweite Ergebnis undmäßig mit dem Zweierkomplement der Länge des Blockes der ersten Blocklänge zur Bildung der ersten Adresse verknüpft wird.6. Verfahren nach einem der Ansprüche 1 bis 5, dadurch gekennzeichnet,a) daß bezüglich des der ersten Adresse vorangehenden Wortes eine vierte Adresse bestimmt wird undb) daß beginnend von der Startadresse des Bereichs und endend bei der vierten Adresse ein zweiter Unterbereich in einen Block der zweiten Länge unterteilt wird.-7. Verfahren nach Anspruch 6, dadurch gekennzeichnet, a)ybezüglich des dem unterteilten Block der zweiten Länge in dem zweiten Unterbereich vorangehenden Wortes40984S/08Seine fünfte Adresse bestimmt wird und b) daß von der Startadresse des Bereiches beginnend und bei der fünften Adresse endend in dem Randbereich des zweiten Unterbereichs eine Unterteilung in einen Block einer dritten Länge vorgenommen wird, die kleiner ist als die zweite Länge.8. Verfahren zur Unterteilung eines eine Startadresse und eine Endadresse aufweisenden nicht benutzten Bereiches in einem mit einem Rechner verbundenen Speicher in zumindest einen Wortblock einer ersten Länge, in zumindest einen Wortblock einer zweiten Länge und in zumindest einen Wortblock einer dritten Länge, wobei die erste Länge größer ist als die zweite Länge und wobei die zweite Länge größer ist als die dritte Länge, dadurch gekennzeichnet,a) daß von der Stelle aus, von der aus eine Unterteilung in zumindest einen Block der ersten Länge vorzunehmen ist, eine erste Adresse in dem Bereich bestimmt wird,b) daß der mit der ersten Adresse beginnende Bereich in eine maximale Anzahl von Blöcken der ersten Länge unterteilt wird,c) daß bezüglich des auf die unterteilten Blöcke der ersten Länge folgenden Wortes eine zweite Adresse bestimmt wird undd) daß ein mit der Startadresse beginnender und einer der ersten Adresse vorangehenden dritten Adresse endender erster Unterbereich und ein mit der zweiten Adresse beginnender und an der Endadresse endender zweiter Unterbereich in die maximal möglich Anzahl von Blöcken der zweiten Länge und dritten Länge unterteilt werden.409845/08599. Verfahren nach Anspruch 8, dadurch gekennzeichnet, . daß als maximale Anzahl der.Blöcke der zweiten Länge und der dritten Länge in dem ersten Unterbereich und dem zweiten Unterbereich jeweils ein Block, gebildet wird.10. Verfahren nach Anspruch 9, dadurch gekennzeichnet, daß. zur Bestimmung der ersten"Adresse diese durch undmäßige Verknüpfung irgendeiner Adresse in dem ersten Block der Blöcke der ersten Länge mit einer Funktion der Länge des Blockes der ersten Länge gebildet wird.11. Verfahren nach Anspruch 9, dadurch gekennzeichnet, daß zur Bestimmung der ersten Adressea) die Startadresse des Bereiches zu der Länge des Blockes der ersten Länge unter Bildung eines ersten Ergebnisses addiert wird,b) die Zahl 1 von diesem ersten Ergebnis unter Bildung eines zweiten Ergebnisses subtrahiert wird undc) das zweite Ergebnis mit dem Zweierkomplement der Größe des Blockes der ersten Länge zur Bildung der ersten Adresse undmäßig verknüpft wird.12. Verfahren nach Anspruch 8, dadurch gekennzeichnet, daß die Unterteilung des ersten Unterbereichs und des zweiten Unterbereichs folgende Schritte umfaßt:a) Feststellen, ob der erste Unterbereich in einen der Blöcke der zweiten Länge unterteilt werden kann,b) Unterteilen des ersten Unterbereichs in einen der Blöcke der zweiten Länge für den Fall, daß die Feststellung eine positive Antwort ergibt,c) Feststellen, ob der übrige Randbereich des ersten Unterbereichs nach Unterteilung in den Block der zweiten409 3 45/0859srLänge in einen Block der Blöcke der dritten Länge unterteilbar ist,d) Unterteilen des ersten Unterbereichs in "einen der Blöcke der dritten Länge für den Fall, daß der zuletzt• genannte Schritt der Feststellung eine bejahende Antwort liefert, unde) Wiederholen der zuletzt genannten Schritte des Feststeilens, Unterteilens, Feststellens und Unterteilens bezüglich des zweiten Unterbereichs, derart, daß der zweite Unterbereich in einen Block der zweiten Länge und in einen Block der dritten Länge unterteilt wird.13» Verfahren zur Unterteilung einer Vielzahl von Bereichen in einem mit einem Digitalrechner verbundenen Speicher in eine Vielzahl von Wortblöcken zumindest zweier Wortlängen, wobei zuvor in einem ersten Teil des Speichers eine Vielzahl von Programmen und/oder eine Information gespeichert wird, zwischen denen einige der Bereiche liegen, wobei in einem zweiten Teil des Speichers zuvor eine zweite Vielzahl von Programmen und/oder eine Information gespeichert wird, zwischen denen andere Bereiche liegen, wobei in einem dritten Teil des Speichers zuvor eine Tabelle gespeichert wird, die die Adressen der Bereiche in dem ersten Teil und dem zweiten Teil angibt, und wobei in einem vierten Teil des Speichers zuvor keine Programme und/oder keine Information gespeichert werden, dadurch gekennzeichnet,a) daß die Bereiche in dem ersten Teil in die maximal mögliche Anzahl von Blöcken der jeweiligen Länge unterteilt werden,b) daß festgestellt wird, ob die Programme und die Information in dem zweiten Teil festzuhalten sind,409845/0859c) daß die Bereiche in dem zweiten Teil in die maximal mögliche Anzahl von Blöcken der jeweiligen Länge in dem Fall unterteilt werden, daß die Programme und die Information in dem zweiten Teil festzuhalten sind,d) daß festgestellt wird, ob eine Unterteilung in eine bestimmte Mindestanzahl der Blöcke der jeweiligen Länge vorgenommen worden ist, unde) daß der Vorgang in dem Fall beendet wird, daß durch den letzten Schritt der Feststellung ein positives Ergebnis erhalten wird.14. Verfahren nach Anspruch 13, dadurch gekennzeichnet, daß der vierte Teil in die maximal mögliche Anzahl von Blöcken der jeweiligen Länge in dem Fall unterteilt wird, daß durch den letztgenannten Schritt der Feststellung ein negatives Ergebnis erhalten wird.15. Verfahren nach Anspruch 14, dadurch gekennzeichnet, daß zur Unterteilunga) jeder der Bereiche des vierten Teiles in die maximal mögliche Anzahl von Blöcken einer ersten Länge unterteilt wird undb) der noch nicht unterteilte Unterbereich des jeweiligen Bereiches und des vierten Teiles in die maximal mögliche Anzahl von Blöcken einer zweiten Länge unterteilt wird, die kleiner ist als die erste Länge.16. Verfahren nach Anspruch 15, dadurch gekennzeichnet, daß zur Unterteilung die noch nicht unterteilten Unterbereiche des jeweiligen Bereiches und des vierten Teiles in die maximal mögliche Anzahl von Blöcken einer dritten Länge unterteilt werden, die kleiner ist als die zweite Länge.409845/Q85917. Verfahren nach Anspruch 13, dadurch gekennzeichnet,a) daß festgestellt wird, ob die Tabelle in dem dritten Teil zu erhalten ist,b) daß der dritte Teil und der vierte Teil in die maximal mögliche Anzahl von Blöcken der jeweiligen Länge in dem Fall unterteilt werden, daß durch den zuletzt genannten Schritt der Feststellung ein negatives Ergebnis geliefert wird, undc) daß der vierte Teil in die maximal mögliche Anzahl von Blöcken der jeweiligen Länge in dem Fall unterteilt wird, daß durch den zuletzt genannten Schritt der Feststellung ein positives' Ergebnis geliefert wird.18. Verfahren nach Anspruch 17, dadurch gekennzeichnet,a) daß festgestellt wird, ob die Programme und die Information in dem zweiten Teil festzuhalten sind,b) daß lediglich der zweite Teil in die maximal mögliche Anzahl von Blöcken der jeweiligen Länge und in dem Fall unterteilt wird, daß durch den zuletzt genannten Schritt der Feststellung ein negatives Ergebnis geliefert wird und daß der vierte Teil zuvor unterteilt worden ist, undc) daß der zweite Teil, der dritte Teil und der vierte Teil in die maximal mögliche Anzahl der Blöcke der jeweiligen Länge in dem Fall unterteilt werden, daß durch den zuletzt genannten Schritt der Feststellung ein negatives Ergebnis geliefert wird und daß der vierte Teil zuvor nicht unterteilt worden ist.19. Verfahren nach Anspruch 18, dadurch gekennzeichnet, daß bei der Verarbeitung gleichzeitig mit einem der zuletzt genannten beiden Schritte des Unterteilehs die Programme und/oder die Information in dem zweiten.Teil gespeichert werden.409845/085920. Verfahren nach Anspruch 18, dadurch gekennzeichnet, daß der vierte Teil in die maximal mögliche Anzahl von• Blöcken der jeweiligen Länge in dem Fall unterteilt wird, daß die Programme und Information in dem zweiten Teil festzuhalten sind und daß der vierte Teil nicht zuvor unterteilt worden ist.21. Verfahren nach Anspruch 18, dadurch gekennzeichnet,a) daß jeder der Bereiche und der vierte Teil in die maximal mögliche Anzahl von Blöcken einer ersten Länge unterteilt wird undb) daß der noch nicht unterteilte Unterbereich des jeweiligen Bereiches und des vierten Teiles in die maximal mögliche Anzahl von Blöcken einer zweiten Länge unterteilt wird, die kleiner ist als die erste Länge.22. Verfahren nach Anspruch 21, dadurch gekennzeichnet,daß zur Unterteilung ferner die noch nicht unterteilten Unterbereiche des jeweiligen Bereiches und des vierten Teiles in die maximal mögliche Anzahl von Blöcken einer dritten Länge unterteilt werden, die kleiner ist als die zweite Länge.23. Verfahren nach Anspruch 18, dadurch gekennzeichnet,a) daß festgestellt wird, ob die Anzahl der unterteilten Blöcke einer ersten Länge größer ist als eine bestimmte maximale Anzahl der Blöcke der ersten Länge,undb) daß die die bestimmte maximale Anzahl übersteigende Anzahl der Blöcke der ersten Länge in die maximal mögliche Anzahl von Blöcken einer zweiten Länge aufgeteilt wird, die kleiner ist als die erste Länge.409845/085924. Verfahren nach Anspruch 23, dadurch gekennzeichnet,a) daß festgestellt wird, ob die Anzahl der unterteilten Blöcke einer zweiten Länge größer ist als eine bestimmte maximale Anzahl von Blöcken der zweiten Länge, undb) daß die die bestimmte maximale Anzahl überschreitende Anzahl von Blöcken der zweiten Länge in die maximal mögliche Anzahl von Blöcken einer dritten Länge unterteilt wird, die kleiner ist als die zweite Länge.25. Verfahren nach Anspruch 13, dadurch gekennzeichnet,a) daß der zweite Teil in die maximal mögliche Anzahl von Blöcken der jeweiligen Länge in dem Fall unterteilt wird, daß die Programme und die Information in dem zweiten Teil nicht festzuhalten sind, undb) daß gleichzeitig mit der zuletzt genannten Unterteilung die in dem zweiten Teil'gespeicherten Programme und/oder Information verarbeitet werden.26. Anordnung zur Unterteilung eines nicht benutzten Bereiches in einem mit einem Rechner verbundenen Speicher in eine Vielzahl von Wortblöcken einer ersten Länge und in zumindest einen Wortblock einer zweiten Länge, die kleiner ist als die erste Länge, insbesondere zur Durchführung des Verfahrens nach einem der Ansprüche 1 bis 2 5, dadurch gekennzeichnet,a) daß eine Einrichtung vorgesehen ist, die eine erste Adresse in dem Bereich festzustellen gestattet, von der aus eine Unterteilung in die Blöcke der ersten Länge vorzunehmen ist,b) daß eine Einrichtung vorgesehen ist, die den' betreffenden Bereich von der ersten Adresse aus beginnend in dieA09845/0859maximale Anzahl der Blöcke der ersten Länge unterteilt,c) daß eine Einrichtung vorgesehen ist, die eine zweite Adresse des Wortes festzustellen gestattet, welches den eingeteilten Blöcken der ersten Länge nachfolgt, undd) daß eine Einrichtung vorgesehen ist, die aus einem ersten Unterbereich, der bei der zweiten Adresse beginnt und der bei der Endadresse des Bereiches endet, einen Block der zweiten Länge einteilt.27. Anordnung nach Anspruch 26, dadurch gekennzeichnet,a) daß eine Einrichtung vorgesehen ist, die eine dritte Adresse des Wortes festzustellen gestattet, welches auf den eingeteilten Block der zweiten Länge folgt, undb) daß eine Einrichtung vorgesehen ist, die einen Randbereich des ersten Unterbereiches von der dritten Adresse aus beginnend und an der Endadresse des Bereiches endend in einen Block einer dritten Länge einteilt, welche kleiner ist als die zweite Länge.28. Anordnung nach Anspruch 26, dadurch gekennzeichnet,daß die die erste Adresse bestimmende Einrichtung eine Einrichtung umfaßt, die die der ersten Adresse entsprechende Adresse berechnet, welche erste Adresse dadurch feststellbar ist, daß irgendeine Adresse in dem ersten Block der Blöcke der ersten Länge mit einer Funktion der Länge des Blockes der ersten Länge undmäßig verknüpft wird.29. Anordnung nach Anspruch 26, dadurch gekennzeichnet, a) daß eine Einrichtung vorgesehen ist, die bezüglich des der ersten Adresse vorangehenden Wortes eine vierte Adresse festzustellen gestattet, und409845/0859b) daß eine Einrichtung vorgesehen ist, die aus einem mit der Startadresse des Bereiches beginnenden und an der vierten Adresse endenden zweiten Unterbereich einen Block der zweiten Länge einteilt.30. Anordnung nach Anspruch 29, dadurch gekennzeichnet,a) daß eine Hinrichtung vorgesehen ist, die bezüglich des dem eingeteilten Block der zweiten Länge in dem zweiten Unterbereich vorangehenden Wortes eine fünfte Adresse festzustellen' gestattet, undb) daß eine Einrichtung in dem mit der Startadresse des Bereiches beginnenden und an der fünften Adresse endenden Randbereich des zweiten Unterbereichs einen Block einer dritten Länge einteilt, die kleiner ist als die zweite Länge.31. Anordnung zur Unterteilung eines eine Startadresse und eine Sndadresse besitzenden nicht benutzten Bereiches in einem mit einem Rechner verbundenen Speicher in zumindest einen Wortblock einer ersten Länge, in zumindest einen Wortblock einer zweiten Länge und in zumindest einen Wortblock einer dritten Länge, wobei die erste Länge größer ist als die zweite Länge und wobei die zweite Länge größer ist als die dritte Länge, insbesondere zur Durchführung des Verfahrens nach einem der Ansprüche 1 bis 25, dadurch gekennzeichnet,a) daß eine Einrichtung vorgesehen ist, die eine erste Adresse in dem Bereich festzustellen gestattet, von der aus eine Unterteilung in zumindest einen Block der ersten Länge vorzunehmen ist,b) daß eine Einrichtung vorgesehen istj, die den. mit der ersten Adresse beginnenden Bereich in die maximale Anzahl409845/0859■ von Blöcken der ersten Länge unterteilt,c) daß eine Einrichtung vorgesehen ist, die bezüglich des Wortes, welches den unterteilten Blöcken der ersten Länge nachfolgt, eine zweite Adresse festzustellen gestattet, undd) daß eine Einrichtung vorgesehen ist, die einen ersten Unterbereich, der mit der Startadresse beginnt und der mit einer der ersten Adresse vorangehenden dritten Adresse endet, und einen zweiten Unterbereich, der von der zweiten Adresse aus beginnt und der an der Endadresse endet, in die maximal mögliche Anzahl von Blöcken der zweiten Länge und der dritten Länge unterteilt.32. Anordnung zur Durchführung des Verfahrens nach Anspruch 8, dadurch gekennzeichnet, daß für die Unterteilung des ersten Unterbereichs und des zweiten Unterbereichs folgende Einrichtungen vorgesehen sind:a) Eine Einrichtung, die feststellt, ob der erste Unterbereich in einen Block der zweiten Länge unterteilbar ist,b) eine Einrichtung zur Unterteilung des ersten Unterbereichs in einen der Blöcke der zweiten Länge für den Fall, daß die genannte Einrichtung zur Feststellung eine bejahende Antwort liefert,c) eine Einrichtung, die feststellt, ob der übrige Randbereich des ersten Unterbereichs nach dem eingeteilten Block der zweiten Länge in einen der- Blöcke der dritten Länge unterteilbar ist9d) eine Einrichtung zur Unterteilung des ersten Unterbereichs in einen der Blöcke der dritten Länge für den FaIl5 daß die zuletzt genannte Einrichtung zur Feststellung eine bejahende Antwort liefert, und409845/0859e) eine Einrichtung zur Wiederholung der Operationen der zuletzt genannten Einrichtungen zur Bestimmung, Unterteilung, Bestimmung und Unterteilung des zweiten Unterbereichs, derart, daß eine Unterteilung des zweiten Unterbereichs in einen Block der zweiten Länge und in einen Block der 'dritten Länge erfolgt.Anordnung zur Unterteilung einer Vielzahl von Bereichen in einem mit einem Digitalrechner verbundenen Speicher in eine Vielzahl von ¥ortblöcken zumindest zweier Längen, wobei in einem ersten Teil des Speichers zuvor eine erste Vielzahl von Programmen und/oder Informationen eingespeichert sind, zwischen denen einige der Bereiche liegen, wobei in ei-nem zweiten Bereich des Speichers zuvor eine zweite Vielzahl von Programmen und/oder Informationen gespeichert sind, zwischen denen andere Bereiche liegen, wobei in einem dritten Teil des Speichers zuvor eine Tabelle gespeichert ist, die die Adressen der Bereiche in dem ersten Teil und dem zweiten Teil angibt, und wobei der Speicher einen vierten Teil aufweist, in dem keine Programme und/oder Informationen zuvor eingespeichert worden sind, insbesondere zur Durchführung des Verfahrens nach einem der Ansprüche 1 bis 25, dadurch gekennzeichnet,a) daß eine "Einrichtung vorgesehen ist, die jeden Bereich in dem ersten Teil in die maximal mögliche Anzahl von Blöcken der jeweiligen Länge unterteilt,b) daß eine Einrichtung vorgesehen ist, die feststellt, ob die Programme und die Information in dem zweiten Teil festzuhalten sind,c) daß eine Einrichtung vorgesehen ist, die jeden der Bereiche in dem zweiten Teil in die maximal mögliche409845/0859Anzahl von Blöcken der jeweiligen Länge in dem Fall . unterteilt, daß die Programme und die Information in dem zweiten Teil festzuhalten sind,d) daß eine Einrichtung vorgesehen ist, die feststellt, ob eine bestimmte Mindestanzahl an Blöcken der jeweiligen Länge eingeteilt worden ist, unde) daß eine Einrichtung vorgesehen ist, die eine Beendigung des Vorgangs in dem Fall vornimmt, daß die zuletzt genannte Einrichtung ein positives Ergebnis liefert.34. Anordnung nach Anspruch 33, insbesondere zur Durchführung des Verfahrens nach Anspruch 13, dadurch gekennzeichnet, daß eine Einrichtung vorgesehen ist, die den vierten Teil des Speichers in die maximal mögliche Anzahl von Blöcken der jeweiligen Länge in dem Fall unterteilt, daß die Einrichtung, die festzustellen gestattet, ob eine bestimmte Mindestanzahl der Blöcke der jeweiligen Größe eingeteilt worden ist, ein negatives Ergebnis liefert.35. Anordnung nach Anspruch 33 oder 34, dadurch gekennzeichnet,a) daß eine Einrichtung vorgesehen ist, die feststellt, ob die Tabelle in dem dritten Teil des Speichers fest-' zuhalten ist,b) daß eine Einrichtung vorgesehen ist, die den dritten Teil und den vierten Teil des Speichers in die maximal mögliche Anzahl von Blöcken der jeweiligen Länge in dem Fall unterteilt, daß die zuletzt genannte Einrichtung ein negatives Ergebnis liefert, undc) daß eine Einrichtung vorgesehen ist, die den vierten Teil des Speichers in die maximal mögliche Anzahl von Blöcken der jeweiligen Länge in dem Fall unterteilt, daß409845/0859die unter a) genannte Einrichtung ein positives Ergebnis liefert.36. Anordnung nach einem der Ansprüche 33 bis 35, insbesondere zur Durchführung des Verfahrens nach Anspruch 17, dadurch gekennzeichnet,·a) daß eine Einrichtung vorgesehen ist, die feststellt, ob die Programme und die Information in dem zweiten Teil des Speichers festzuhalten sind,b) daß eine Einrichtung vorgesehen ist, die lediglich den zweiten Teil des Speichers in die maximal mögliche Anzahl von Blöcken der jeweiligen Länge in dem Fall unterteilt, daß die zuletzt genannte Einrichtung ein negatives Ergebnis liefert und daß der vierte Teil nicht zuvor unterteilt worden ist, undc) daß eine Einrichtung vorgesehen ist, die den zweiten Teil, den dritten Teil und den vierten Teil des Speichers, in die maximal mögliche Anzahl der Blöcke der jeweiligen Länge in dem Fall unterteilt, daß die unter a) genannte Einrichtung ein negatives Ergebnis liefert und daß der vierte Teil des Speichers nicht zuvor unterteilt worden ist.37. Anordnung nach einem der Ansprüche 33 bis 36, insbesondere zur Durchführung des Verfahrens nach Anspruch 18, dadurch gekennzeichnet, daß eine Einrichtung vorgesehen ist, die gleichzeitig mit einer der Einrichtungen zur Unterteilung die in dem zweiten Teil des Speichers gespeicherten Programme und/oder Information verarbeitet.409845/0 85924Ί9522:>8. Anordnung nach einem der Ansprüche 33 bis 37, insbesondere zur Durchführung des Verfahrens nach Anspruch 18, dadurch gekennzeichnet,a) daß eine Einrichtung vorgesehen ist, die feststellt, ob die Anzahl der unterteilten Blöcke einer ersten Länge größer ist als eine bestimmte Maximalanzahl der Blöcke der ersten Länge, undb) daß eine Einrichtung vorgesehen ist, die die die bestimmte Maximalanzahl überschreitende Anzahl von Blöcken der ersten Länge in die maximal mögliche Anzahl von Blöcken einer zweiten Länge aufteilt, wobei die erste Länge größer ist als die zweite Länge.39· Anordnung nach einem der Ansprüche 33 bis 38, insbesondere zur Durchführung des Verfahrens nach Anspruch 23, dadurch gekennzeichnet,a) daß eine Einrichtung vorgesehen ist, die feststellt, ob die Anzahl der unterteilten Blöcke der zweiten Länge größer ist als eine bestimmte Maximalanzahl an Blöcken der zweiten Länge, undb) daß eine Einrichtung vorgesehen ist, die die Anzahl der die Maximalanzahl überschreitenden Blöcke der zweiten Länge in die maximal mögliche Anzahl von Blöcken einer dritten Länge aufteilt, wobei die zweite Länge größer ist als die dritte Länge.409845/0859Leerseite
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US35382073A | 1973-04-23 | 1973-04-23 |
Publications (1)
Publication Number | Publication Date |
---|---|
DE2419522A1 true DE2419522A1 (de) | 1974-11-07 |
Family
ID=23390709
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
DE19742419522 Pending DE2419522A1 (de) | 1973-04-23 | 1974-04-23 | Verfahren und anordnung zur unterteilung eines oder mehrerer nicht benutzter bereiche eines mit einem rechner verbundenen speichers |
Country Status (5)
Country | Link |
---|---|
JP (1) | JPS5014237A (de) |
CA (1) | CA1014671A (de) |
DE (1) | DE2419522A1 (de) |
FR (1) | FR2226705B1 (de) |
GB (1) | GB1431163A (de) |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
DE2265603C2 (de) * | 1971-05-26 | 1983-02-03 | General Electric Co., Schenectady, N.Y. | Schneideinsatz mit einer nicht metallischen Zwischenschicht zwischen Grundkörper und Deckbeschichtung und Verfahren zu seiner Herstellung |
CH540990A (fr) * | 1971-07-07 | 1973-08-31 | Battelle Memorial Institute | Procédé pour augmenter la résistance à l'usure de la surface d'un outil de coupe |
JPS5823468B2 (ja) * | 1975-07-07 | 1983-05-16 | 松下電器産業株式会社 | 耐摩耗性薄膜の製造方法 |
JPH03260047A (ja) * | 1990-03-09 | 1991-11-20 | Agency Of Ind Science & Technol | 高温耐摩耗溶射材料及びその製造方法 |
GB9113469D0 (en) * | 1991-06-21 | 1991-08-07 | Anamartic Ltd | Data storage management systems |
US6247105B1 (en) * | 1996-06-20 | 2001-06-12 | Sun Microsystems, Inc. | Externally identifiable descriptor for standard memory allocation interface |
-
1974
- 1974-01-22 CA CA190,689A patent/CA1014671A/en not_active Expired
- 1974-04-15 JP JP4109174A patent/JPS5014237A/ja active Pending
- 1974-04-22 FR FR7413901A patent/FR2226705B1/fr not_active Expired
- 1974-04-23 GB GB1766474A patent/GB1431163A/en not_active Expired
- 1974-04-23 DE DE19742419522 patent/DE2419522A1/de active Pending
Also Published As
Publication number | Publication date |
---|---|
GB1431163A (en) | 1976-04-07 |
CA1014671A (en) | 1977-07-26 |
JPS5014237A (de) | 1975-02-14 |
FR2226705A1 (de) | 1974-11-15 |
FR2226705B1 (de) | 1978-04-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
DE3784387T2 (de) | Vorrichtung und verfahren zur parallelen verwaltung von freien speicherbereichen. | |
DE2431379C3 (de) | Datenverarbeitungseinrichtung | |
EP0703534B1 (de) | Speicherverwaltungssystem eines Rechnersystems | |
DE3741953A1 (de) | Multiprozessorsystem und verfahren zur arbeitslastverteilung bei einem solchen | |
DE3416939A1 (de) | Verfahren zur steuerung von betriebseinrichtungen | |
DE2055784A1 (de) | Datenverarbeitungssystem | |
DE69208789T2 (de) | Sortierverfahren | |
DE3726192A1 (de) | Stacksteuerung | |
DE2218839C3 (de) | Einrichtung zur Zuteilung von Speicheradressen zu einer Gruppe von Datenelementen | |
DE2133638C3 (de) | Verfahren zum Betrieb eines lernfähigen Systems aus in Kaskade geschalteten, zur nicht linearen Datenverarbeitung geeigneten lernfähigen Datenverarbeitungseinheiten | |
DE3507584C2 (de) | ||
DE2419522A1 (de) | Verfahren und anordnung zur unterteilung eines oder mehrerer nicht benutzter bereiche eines mit einem rechner verbundenen speichers | |
DE69031361T2 (de) | Taktsignalgeneratorsystem | |
DE102018125090A1 (de) | Verfahren zur Datenverarbeitung und speicherprogrammierbare Steuerung | |
DE2558417A1 (de) | Datenverarbeitungssystem | |
DE69030942T2 (de) | Verfahren und Vorrichtung zur Zuweisung von Operationen | |
DE1285218B (de) | Datenverarbeitungsanlage | |
DE69123319T2 (de) | Bilddatenverarbeitungsgerät | |
DE3640355A1 (de) | Verfahren zur bestimmung des zeitlichen verlaufs eines sprachparameters und anordnung zur durchfuehrung des verfahrens | |
DE2259726A1 (de) | Verfahren zur optimierung einer halbleiterschaltung | |
EP0925540B1 (de) | Synchronisationsverfahren | |
DE3784189T2 (de) | Vorrichtung und verfahren zur steuerung der loeschung eines speicherbereichs. | |
EP0284605B1 (de) | Software-werkzeug zur automatischen erzeugung einer funktionsplangraphik | |
EP1728162A1 (de) | Speicherbereinigung (garbage collection) für smart cards | |
WO2023102583A1 (de) | Verfahren zur additiven fertigung eines werkstücks |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
OHJ | Non-payment of the annual fee |