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 speichers

Info

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
Application number
DE19742419522
Other languages
English (en)
Inventor
Robert E Hutton
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Bull HN Information Systems Italia SpA
Original Assignee
Honeywell Information Systems Italia SpA
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Honeywell Information Systems Italia SpA filed Critical Honeywell Information Systems Italia SpA
Publication of DE2419522A1 publication Critical patent/DE2419522A1/de
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management

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)

  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 und
    d) 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 und
    b) 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 ersten
    409845/0859
    Adresse 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 Adresse
    a) 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 und
    c) 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 und
    b) 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 Wortes
    40984S/08S
    eine 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 und
    d) 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/0859
    9. 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 Adresse
    a) 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 und
    c) 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 zweiten
    409 3 45/0859
    sr
    Lä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, und
    e) 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/0859
    c) 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, und
    e) 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 Unterteilung
    a) jeder der Bereiche des vierten Teiles in die maximal mögliche Anzahl von Blöcken einer ersten Länge unterteilt wird und
    b) 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/Q859
    17. 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, und
    c) 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, und
    c) 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/0859
    20. 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 und
    b) 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,und
    b) 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/0859
    24. 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, und
    b) 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, und
    b) 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 die
    A09845/0859
    maximale 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, und
    d) 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, und
    b) 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, und
    409845/0859
    b) 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, und
    b) 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 Anzahl
    409845/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, und
    d) 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 ist9
    d) 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, und
    409845/0859
    e) 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ögliche
    409845/0859
    Anzahl 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, und
    e) 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, und
    c) 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/0859
    die 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, und
    c) 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 859
    24Ί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, und
    b) 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, und
    b) 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/0859
    Leerseite
DE19742419522 1973-04-23 1974-04-23 Verfahren und anordnung zur unterteilung eines oder mehrerer nicht benutzter bereiche eines mit einem rechner verbundenen speichers Pending DE2419522A1 (de)

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)

* Cited by examiner, † Cited by third party
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

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