DE2801982A1 - Verfahren zum austausch von information zwischen einem externen speicher und einem arbeitsspeicher in einem textverarbeitungssystem - Google Patents
Verfahren zum austausch von information zwischen einem externen speicher und einem arbeitsspeicher in einem textverarbeitungssystemInfo
- Publication number
- DE2801982A1 DE2801982A1 DE19782801982 DE2801982A DE2801982A1 DE 2801982 A1 DE2801982 A1 DE 2801982A1 DE 19782801982 DE19782801982 DE 19782801982 DE 2801982 A DE2801982 A DE 2801982A DE 2801982 A1 DE2801982 A1 DE 2801982A1
- Authority
- DE
- Germany
- Prior art keywords
- block
- memory
- segment
- data
- segments
- 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.)
- Withdrawn
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/16—Error detection or correction of the data by redundancy in hardware
- G06F11/20—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F40/00—Handling natural language data
- G06F40/10—Text processing
- G06F40/12—Use of codes for handling textual entities
- G06F40/123—Storage facilities
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F40/00—Handling natural language data
- G06F40/10—Text processing
- G06F40/166—Editing, e.g. inserting or deleting
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10—TECHNICAL SUBJECTS COVERED BY FORMER USPC
- Y10S—TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10S707/00—Data processing: database and file management or data structures
- Y10S707/99951—File or database maintenance
- Y10S707/99956—File allocation
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Health & Medical Sciences (AREA)
- Artificial Intelligence (AREA)
- Audiology, Speech & Language Pathology (AREA)
- Computational Linguistics (AREA)
- General Health & Medical Sciences (AREA)
- Quality & Reliability (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Document Processing Apparatus (AREA)
Description
Anmelderin: International Business Machines
Corporation, Armonk, N.Y. 10504
heb-pi
Verfahren zum Austausch von Information zwischen einem externen Speicher und einem Arbeits-
spelcher in einem Textverarbeitungssystem
Die Erfindung betrifft ein Verfahren
zum übertragen und Austauschen von Information zwischen
einem als Serienspeicher aufgebauten externen Speicher und einem Arbeitsspeicher in einem Textverarbeitungssystem.
In der Deutschen Patentanmeldung P 22 30 681.6 ist ein Verfahren und eine Anordnung für eine fortlaufende Aufzeichnung
(Log) über die Verwendung von Speicherblocks in einem Serienspeicher beschrieben, wobei einzelne Blocks zur Speicherung
von neuen und revidierten Textseiten zugeordnet werden, wodurch bei der Bedienung eines Textverarbeitungssystems es nicht mehr
notwendig ist, die fortlaufende logische Folge von Speicherblöcken zu verfolgen, die den einzelnen Seiten eines zu erstellenden
oder zu revidierenden Dokuments entsprechen. Diese fortlaufende Aufzeichnung (Log) wird dabei in einem Block am
Anfang des Speichers nach jedem Speichervorgang oder nach jedem Löschvorgang aufgezeichnet.
Der in dieser Patentanmeldung beschriebene Serienspeicher ist dabei in eine Anzahl von Blocks unterteilt. Jeder dieser
Blocks entspricht dabei einer Seite. Dabei wird die Tatsache unterstellt, daß dann, wenn eine Seite über die Größe eines
Blockes hinaus erweitert wird, der restliche Text als eine weitere Seite in einem anderen Block aufgezeichnet werden
könnte. Insgesamt sind dabei 60 Blöcke in einem Magnetband-
AT 977 °°1 809830/0779
speicher vorgesehen, die 60 Textseiten entsprechen. Sind die Seiten nur kurz, dann wird eine Menge Speicherplatz auf
dem Magnetband nicht ausgenutzt.
Für eine bessere Ausnutzung eines solchen Speichers hat man schon vorgeschlagen, solche Blöcke oder Segmente in einzelne
Abschnitte oder Absätze zu unterteilen. Wenn man daher beispielsweise einen Block in acht Abschnitte unterteilt und
wenn eine Seite praktisch zu Beginn eines jeden solchen Abschnittes beginnen könnte, dann könnten beispielsweise bis
zu acht kurze Seiten in einem Block enthalten sein. Dazu ist aber ein wesentlich komplizierteres Aufzeichnungssystem
erforderlich, als in der oben genannten Patentanmeldung beschrieben ist, da dort der Beginn eines jeden Blocks gleichzeitig
den Beginn einer Seite anzeigt. Bei der in Aussicht genommenen Verbesserung durch Unterteilung der einzelnen
Blöcke gibt es verschiedene Möglichkeiten. Der erste Abschnitt eines Blockes kann am Anfang oder in der Mitte einer
Seite sein. Tatsächlich könnte eine Seite praktisch bei jedem beliebigen Abschnitt eines Blockes beginnen, doch werden
zusammen mit der Aufzeichnung dieses Abschnittes keine diese Tatsache kennzeichnenden Daten aufgezeichnet.
Im Hinblick auf diese Patentanmeldung soll die Möglichkeit betrachtet werden, bei der eine Textseite aus einem Block
für eine Korrektur oder Überarbeitung abgerufen werden soll. Es sei ferner angenommen, daß in dem externen Speicher auf
die abgerufene Seite eine weitere Textseite folgt, die in dem gleichen Block unmittelbar hinter dem Ende der abgerufenen
Seite beginnt. Wird die abgerufene Seite erweitert, dann ist tatsächlich in diesem Block kein Speicherraum mehr
vorhanden, diese Erweiterung aufzunehmen. Es kann dabei völlig unerwünscht sein, wie dies die oben genannte Patentanmeldung
lehrt, nur für die Erweiterung dieser abgerufenen Seite zur Aufnahme dieser Erweiterung eine neue Seite
AT 977 °°1 8 0 9 8 3 0/0779
zu belegen. Diese Patentanmeldung gibt daher keine Lehre dafür, wie eine solche Erweiterung einer Seite durchgeführt
werden soll, wenn gleichzeitig dabei eine dichte Packung der gespeicherten Daten auf dem Speicher beibehalten werden
soll.
Es wäre daher von Vorteil, wenn man eine Anordnung für die fortlaufende Erstellung eines Verzeichnisses und Steuerung
eines segmentierten Serienspeichers und ein entsprechendes Verfahren schaffen könnte, um die oben geschilderten Nachteile
des Standes der Technik zu überwinden und damit eine verbesserte Nutzung der Speicherkapazität des Serienspeichers
zu erzielen.
!Zusammenfassung der Erfindung
Demgemäß werden eine Anordnung und ein Verfahren zum Speichern und Abrufen von Textblöcken, die normalerweise Seiten
eines Dokumentes darstellen, geschaffen, die als eine Folge von nicht gekennzeichneten Abschnitten unterschiedlicher
Größe auf Segmenten eines Serienspeichers abgespeichert werden. Die fehlende Kennzeichnung soll dabei bedeuten,
daß in dem Text keine Seitenzahl oder irgendeine andere fortlaufende Angabe enthalten ist. Die Anordnung versucht
dabei, eine möglichst gute Ausnutzung des nicht ausgenutzten
Speicherplatzes dadurch, daß die Blöcke in den Segmenten des Speichers abgespeichert werden.
In diesem Speicher werden Daten serial von und nach einem Speichersegment übertragen, jedoch kann ein wahlfreier
oder peeudowahlfreier Zugriff zu dem Speichersegment auf der Ebene eines der Abschnitte erfolgen. Alle Segmente sind
von fester und gleicher Länge. Jedes Segment enthält daher
2^977001 809830/0779
— ο —
eine Anzahl von Abschnitten, wobei jeder der Abschnitte
eine feste und gleiche Länge aufweist.
Da die Daten seriell ohne Kennzeichnung einer laufenden Nummer (Seitenzahl) abgespeichert werden, läßt sich ein
gespeicherter Text nicht nur durch die Untersuchung des gespeicherten Textes selbst bestimmen. Stattdessen wird
in dem System ein Verzeichnis geführt, aus dem die laufende Nummer des Blockes und der Ort dieser Blöcke im Speicher
feststellbar sind. Diese fortlaufende Aufzeichnung besteht aus zwei Teilen: 1. einer Systemliste, d.h. einer Liste der
logischen Reihenfolge der benutzten Speichersegmente und einem Systemlog, das eine fortlaufende Aufzeichnung der
Datenkennzeichnung eines jeden Speichersegmentes im Speicher ist.
Die Anordnung versucht dabei die einzelnen Blöcke auf die Segmente des Speichers zu packen, jedoch nicht notwendigerweise
auf unmittelbar nebeneinander liegende Speichersegmente. Ein Block kann beispielsweise über mehrere Speichersegmente
gehen und die in der Systemliste aufgeführten Speichersegmente stellen eine Gruppe von Blöcken, beispiels-
; weise ein aus mehreren Seiten bestehendes Dokument dar. Die Systemliste gibt daher eine logische Anordnung der Spei-'
chersegmente und nicht eine Liste über ihre tatsächliche
Anordnung. Es sei beispielsweise die hypothetische Liste j von SpeicherSegmenten betrachtet: f/m/d/e. Das Segment f
j liegt physisch und logisch vor dem Segment m. Das Segment ι m liegt logisch jedoch nicht physisch vor dem Segment d.
Die beiden Segmente d und e liegen physisch nebeneinander, obgleich die beiden Segmente m und d und die beiden Segmente
f und ra nicht physisch nebeneinander liegen. In der Liste ist dabei jede Kombination von aufeinanderfolgenden, nicht
aufeinanderfolgenden, körperlich vor- oder nachher liegenden Anordnungen von Segmenten möglich. Die Liste unterstellt die
977 001 8 0 9 8 3 0/0779
logische Reihenfolge, in der die Daten abgespeichert sind.
In diesem Beispiel liegt beispielsweise m hinter dem Segment f, und das Segment d liegt hinter dem Segment m. Das Segment
d ist nicht hinter dem Segment f, und hinter dem Segment e folgt kein weiteres Segment.
Das Segment m liegt vor dem Segment df und das Segment f
liegt vor dem Segment m. Das Segment f folgt nicht auf das Segment d, und vor dem Segment f befindet sich kein Segment.
Das Systemlog der Speicherung der Segmentdaten stellt ein Verzeichnis darüber dar, wie jeder Abschnitt eines jeden
Segmentes derzeit im System benutzt wird. Jedem Abschnitt eines Segmentes ist dabei nur ein und nur eines der folgenden
Charakteristika in dem fortlaufenden Systemlog zugeordnet:
1. nicht benutzt, verfügbar, 2. Fehler, nicht verfügbar, 3. nur Daten oder 4. Beginn von Daten und Block. Ein Datenblock
(Seite) kann dabei über mehrere Abschnitte eines Speichersegments oder sogar über mehrere SpeicherSegmente gehen.
In einem Abschnitt kann nicht mehr als ein Datenblock bestehen. Wenn ein Datenblock über mehrere SpeicherSegmente
geht, dann liegen sie in der Systemliste nebeneinander. Wenn ein Block Abschnitte eines Segmentes überspannt, dann liegen
diese Abschnitte in dem Speichersegment hintereinander. Ein einziger Block wird durch eine Anfangskennzeichnung des
Block in dem Systemlog und durch die Anfangskennzeichnung eines nächstfolgenden Blocks oder durch das Ende der Systemliste
begrenzt. Abschnitte, in denen kein Text gespeichert ist, (Fehler nicht benutzbar, unbenutzt, verfügbar) die zwischen
Blockanfängen liegen, haben keine Wirkung. Die fortlaufende Nummer des Datenblockes (Seitenzahl) wird durch die Relativposition
des Datenblockanfangs in der Systemliste, wie
AT 977 001 8 0 9 8 3 0/0779
aus dem Systemlog bestimmt, ermittelt. Beispielsweise findet man den Block Nr. 3 dadurch, daß man durch überprüfung der
Systemliste und des Systemlogs der Kennzeichen den dritten Blockanfang ermittelt. Das Auffinden irgendeines Blocks mit
der Nr. i wird beispielsweise dadurch ermöglicht, daß man das Speichersegment, daß den Anfang des i-ten Blockes enthält,
ermittelt und dann den richtigen Abschnitt liest, sowie die darauffolgenden, nur Daten enthaltenden Abschnitte dieses
Segmentes oder nachfolgender Segmente in einer Systemliste bis 1.) ein v/eiterer (i + 1) Blockanfangsabschnitt festgestellt
wird oder 2.) die Liste endet. Nicht benutzte oder fehlerhafte und daher nicht benutzbare Abschnitte werden
übersprungen.
V7enn das Textverarbeitungssystem (Benutzer) willkürlich einen Block auswählt, dann kann dieser Block durch den Benutzer
überprüft und korrigiert werden. Daher kann dieser Block beispielsweise durch zusätzlichen Text erweitert
werden, so daß er nicht langer in dem Speicherplatz, den der Block zuvor im Speicher eingenommen hat, untergebracht
werden kann. Wenn das logische Ende dieses Blocks ein Speichersegment mit der nächsthöheren Nummer mit benutzt,
kann es zu Schwierigkeiten kommen. Wegen dieses möglichen Konflikts wird das System alle sich an das Ende des ausgewählten
Blockes anschließenden Daten, die dieses Segment mit benutzen, wenn ein solcher Konflikt mit anderen Daten
vorliegt, nach einem anderen Speicherort überführen. Diese den Konflikt verursachenden Daten werden vor dem ursprünglichen
Lesen des angeforderten Blockes nach einem anderen Ort überführt und zwar über einen Pufferspeicher mit wahlfreiem
Zugriff, der die angeforderten Daten hält. Diese Daten werden dann nach einem anderen Segment übertragen,
das zunächst nicht in der Systemliste oder dem fortlaufenden Systemlog enthalten ist. Diese an einem anderen Ort
AT 977 °°1 8098 3 0/0779
abgespeicherten Daten werden nicht in das Systemlog aufgenommen,
wenn 1) sie nicht nach Abspeicherung der ursprünglich angeforderten und korrigierten Daten im Speicher tatsächlich
benötigt werden, oder 2) wenn bei dem Versuch Fehler auftreten,
die angeforderten Daten in dem Segment abzuspeichern, von dem sie ursprünglich kamen, oder aber 3) wenn der auf
den ursprüglich angeforderten Block folgende Block ebenfalls ausgewählt wird. Falls die Daten nicht an einem anderen Ort
untergebracht werden können, wird der Datenblock doch abgerufen, und dem Benutzer wird diese besondere Bedingung mitgeteilt.
Dieses nicht abgespeicherte Segment wird als Kurzzeitspeicher bezeichnet.
Alle Daten, die bei einer solchen überführung nach einem neuen Speicherplatz nicht gelesen werden können, werden im
Kurzzeitspeicher durch unverwechselbare Fehlercodes gekennzeichnet. Daher wird während dieser Umspeicherung der Inhalt
eines Blockes nicht zusammengezogen, und alle Blockanfänge werden festgehalten.
: Eine Operation "Auswahl des nächsten Blocks" bewirkt den Ab-ι
ruf eines auf den zuvor ausgewählten Block folgenden Blocks. Diese Funktion kann nur dann durchgeführt werden, wenn sie
j an einem Punkt auf die oben beschriebene willkürliche : Auswahl eines Blockes folgt. Diese Funktion hat dieselbe
ί Wirkung, wie die Auswahl eines beliebigen Blocks mit der Ausnahme,
daß dabei der Status "Hückspeicherung nicht möglich" auftritt. Bei der Auswahl eines nächstfolgenden Blocks wird
keine Aufzeichnung im Kurzzeitspeicher bewirkt.
Eine Teilblockauswahl wird zur Fortsetzung der zuvor angeforderten
Daten über die willkürliche Auswahl eines Blocks oder die Auswahl des nächstfolgenden Blocks benutzt. Eingabe
AT 977 °°1 8 0 9 8 3 0/0779
und Ausgabe sind dabei die gleichen wie bei der Auswahl des nächstfolgenden Blocks mit der Ausnahme, daß die Blocknummer
nicht ausdrücklich an das System weitergeleitet wird. Diese Funktion dient der übertragung von so vielen Abschnitten
einer Seite im Bandspeicher nach dem Pufferspeicher, als in dem Arbeitsspeicher des Textverarbeitungssystems
entsprechende ganzzahlige Abschnitte vorhanden sind, worauf dann der Rest eines Blocks abgerufen und nach dem
Arbeitsspeicher des Textverarbeitungssystems dann übertragen wird, wenn dieser Arbeitsspeicher v/eiteren Text aufnehmen
kann.
Die aufgezeichneten Abschnitte werden zwangsweise zusammengeführt,
und die einzelnen Segmente werden durch abwechselndes Lesen eines Blocks und nachfolgendes Aufzeichnen eines
Blocks verdichtet. Auf diese Weise werden nicht benutzte Abschnitte zur Bildung von vollständigen nicht benutzten
Segmenten verwendet, so daß diese nicht benutzten Segmente aus der Systemliste gestrichen werden können.
Die Erfindung wird nunmehr anhand einer bevorzugten Ausführungsform
der Erfindung in Verbindung mit den beigefügten Zeichnungen näher beschrieben.
In den Zeichnungen zeigt:
Fig. 1 ein Blockschaltbild eines Teils eines Textverarbeitungssystems
mit einem segmentierten seriellen Speicher, der erfindungsgemäß angesteuert werden kann.
at 977 001 8 0 9 8 3 0/0779
Fign. 2 und 3 die einleitende Arbeitsweise des Systems,
wobei das zuletzt auf den neuesten Stand gebrachte Verzeichnis im Speicher für die
Steuerung des Zugriffs zu diesem Speicher benutzt wird,
Fign. 4 bis 9 die willkürliche Auswahl eines Blocks, Fig. 10 die Auswahl des nächstfolgenden Blocks,
Fig. 11 die Anschaltung eines Kurzzeitspeichers bei
der Auswahl sowohl des nächstfolgenden Blocks, als auch bei der Aufzeichnung des Blocks,
Fig. 12 eine Teil-Leseauswahl eines Blocks,
Fign. 13 die Aufzeichnungsoperation eines Blocks, bis 20
Fig. 21 die Fortschreibung als Teil der Aufzeichnung eines Blocks und
Fig. 22 die Fehlerkorrektur in Verbindung mit der Aufzeichnung eines Blocks.
In Fig. 1 ist ein Teil eines Textverarbeitungssystems mit einer Datenverarbeitungsanlage 1 gezeigt, die an einer
Adressenleitung 2 angeschlossen ist, über die in einem Steuerspeicher befindliche Befehle adressiert und über die
Leitung 4 an den Prozessor abgegeben werden. Ein Systemtaktgenerator 5 liefert die Taktsignale über die mit C bezeichneten
Leitungen. Die Datenverarbeitungsanlage 1 überträgt über Leitung 6 Steuersignale an einen segmentierten
AT977001 809830/0779
externen serialen Speicher 9, der beispielsweise ein Plattenspeicher,
dessen verschiedene Spuren die einzelnen Segmente darstellen, oder auch ein Magnetbandspeicher sein kann, dessen
Datenblöcke die Segmente darstellen. Der Speicher 9 liefert Unterbrechungs- und Statusinformation über Leitungen
7 bzw. 8 an die Datenverarbeitungsanlage 1.
Ein Speicher 21 mit wahlfreiem Zugriff dient der Speicherung von Textdaten, der Erzeugung und Korrektur von Text und
dient insgesamt als Pufferspeicher für die Rückspeicherung
von Daten im externen Speicher 9. Die Speichersteuerung 18 steuert den Zugriff zu dem Speicher 21 über eine Freigabeleitung
17, eine Datenleitung 19 und eine Adressenleitung 20. Eine unmittelbare Datenübertragung zwischen externem
Speicher 9 und Arbeitsspeicher 21 unter Umgehung der Datenverarbeitungsanlage 1 wird über eine Direkt-Speicherzugriffssteuerung
13 durchgeführt. Die Daten werden zwischen der Direkt-Speicherzugrlffssteuerung 13 und der Speichersteuerung
18 über die Datenleitung 15 und zwischen externem Speicher und Direkt-Speicherzugriffssteuerung 13 über Datenleitung
12 übertragen. Die Adressenleitung 14 weist dabei auf die entsprechende Adresse im Arbeitsspeicher 21 hin,
bei der entsprechend einem Freigabesignal auf der Leitung 16 Daten gelesen oder eingeschrieben werden sollen. Von
der Direktspeicherzugriffssteuerung 13 nach dem externen Speicher 9 übertragene Steuersignale und vom externen Speicher
9 nach der Direkt-Speichersteuerung übertragene Statussignale laufen über Leitungen 11 bzw. 10. Die Datenverarbeitungsanlage
1 überträgt die zum Lesen oder Schreiben im Arbeitsspeicher erforderliche Adresse über die Adressenleitung
22 an die Speichersteuerung 18. Die Daten werden zwischen Datenverarbeitungsanlage und der Speichersteuerung
18 in Verbindung mit einem auf Leitung 24 liegenden Freigabesignal über Datenleitung 23 übertragen. Der Steuer-
ÄT9770Oi 809830/0779
speicher 3 wird gewöhnlich als Festwertspeicher ausgeführt, bei dem die Befehle fest eingespeichert sind. Selbstverständlich
läßt sich der Steuerspeicher auch in Form eines
Speichers mit wahlfreiem Zugriff ausführen, so daß jedes Mal beim Einschalten des Systems die Befehle neu in den
Steuerspeicher geladen werden müssen. In einer anderen Ausführungsform
können Datenverarbeitungsanlage 1 und Steuerspeicher 3 vollständig durch eine kombinatorische logische
Schaltung ersetzt werden, so daß kein Prozessor und keine Befehle verwendet werden. Die im folgenden noch zu beschreibenden
Flußdiagramme machen es einem mit der Technik und Entwicklung logischer Schaltungen vertrauten Fachmann
möglich, die zur Durchführung der Erfindung erforderlichen logischen Schaltungen zu entwerfen. Diese Flußdiagramme
sind jedoch so angelegt, daß sie es einem Programmierer ohne weiteres gestatten, eine digitale Datenverarbeitungsanlage
für einen Zugriff zu einem segmentierten externen Speicher und für eine laufende Aufzeichnung der Benutzung
dieses Speichers gemäß des hier verwirklichten Erfindungsgedankens zu programmieren.
Fig. 2 zeigt die Anlaufphase des Systems, bei der eine An
zahl von im externen Speicher 9 aufgezeichneten Verzeich- nisse untersucht werden, um das zuletzt erstellte System-
! log festzustellen, das sich aus einem Zählerstand in einem
t
Aktivitätszählerfeld ermitteln läßt. Dabei geht man zunächst von der Annahme aus, daß der externe Speicher 9 eine Anzahl X von Systemlogs enthält. Block 31 zeigt, daß die Register "Zähler" und "Lesen OK" auf Null gebracht und das Register N auf Eins eingestellt werden. Im Block 32 wird die Verzeich- nienummer N aus dem Speicher 9 gelesen. Bei 33 wird die gelesene Zahl auf Lesefehler untersucht. Bei erfolgreichem Lese vorgang wird bei 36 das Register N um 1 erhöht, und bei 37 wird der Inhalt des N-Registers mit X verglichen. Angenommen,
Aktivitätszählerfeld ermitteln läßt. Dabei geht man zunächst von der Annahme aus, daß der externe Speicher 9 eine Anzahl X von Systemlogs enthält. Block 31 zeigt, daß die Register "Zähler" und "Lesen OK" auf Null gebracht und das Register N auf Eins eingestellt werden. Im Block 32 wird die Verzeich- nienummer N aus dem Speicher 9 gelesen. Bei 33 wird die gelesene Zahl auf Lesefehler untersucht. Bei erfolgreichem Lese vorgang wird bei 36 das Register N um 1 erhöht, und bei 37 wird der Inhalt des N-Registers mit X verglichen. Angenommen,
at 977 001 809830/0779
Registers ist nicht größer als X, dann müssen weitere Verzeichnisse
gelesen werden, und dieser Vorgang wird durch Auslesen des nächsten Systemverzeichnisses mit Nr. N aus dem
Speicher 9 wiederholt, wie dies bei 32 angedeutet ist. Angenommen, daß bei 33 der Lesevorgang erfolgreich verlaufen
ist, wird bei 34 das "Lesen OK"-Register auf Eins eingestellt, und der am Beginn des Verzeichnisses eingespeicherte Zählerstand
des AktivitätsZählers wird mit dem Inhalt des Zählerregisters
bei 35 verglichen.
Ist der Inhalt des Aktivitätszählers größer als oder gleich Null, dann wird das Verzeichnis, wie bei Block 38 angegeben,
in den Arbeitsspeicher 21 eingespeichert. (In diesem Beispiel wird der Zählerstand des Aktivitätszählers bei dem
ersten Vergleich des Zählerstandes des AktivitatsZählers
mit den Inhalt des Zählerregisters immer gleich oder größer sein als der Inhalt des Zählerregisters, da das Zählerregister
zu Anfang auf Null eingestellt war.) Bei 39 wird das Zählerregister mit dem Inhalt des Aktivitätszählers geladen,
und bei 36 wird der Inhalt des Registers N um Eins erhöht. Jedesmal dann, wenn der Inhalt des AktivitätsZählers größer
ist als der Inhalt des Zählerregisters, wird ein Verzeichnis im Arbeitsspeicher 21 eingespeichert. Wenn bei 37 alle
Verzeichnisse gelesen sind, dann ist das im Arbeitsspeicher 21 liegende Verzeichnis dasjenige, das mit dem höhsten
Zählerstand des Aktivitätszählers mit Erfolg gelesen worden ist.
Geht man von Fig. 2 auf Fig. 3 über, dann wird nach erfolgreichem Lesen aller Verzeichnisse das Register "Lesen OK"
bei 40 überprüft, ob der Inhalt 0 oder 1 ist. Ist der Inhalt eine Eins, dann wurde ein gültiges Verzeichnis aus dem
Speit her 9 entnommen, und der Ablauf geht im Block 42 zurück i an den Benutzer des Textverarbeitungssystems. Wenn jedoch !
kein gültiges Verzeichnis gelesen wurde, dann wird bei 41 ·
AT 977 001 - — - - — -—
der Benutzer davon verständigt, daß ein gültiges Verzeichnis nicht vorliegt, wodurch ein weiterer Zugriff zum externen
Speicher 9 verhindert wird.
In den Fign. 4 bis 9 wird ein beliebiger Block ausgewählt, wobei eine durch den Benutzer und wiederum durch das Textverarbeitungssystem
an die Verzeichnis- und Steuerschaltung gekennzeichnete beliebige Seite aus dem externen Speicher
9 abgerufen und in den Speicher 21 mit wahlfreiem Zugriff eingespeichert wird. Dieser Vorgang beginnt in Fig.
4 mit folgenden Annahmen. Für dieses Beispiel soll die angeforderte Blocknummer im N-Register enthalten sein und
wird mit N bezeichnet, die im Arbeitsspeicher liegende Anfangsadresse, bei der die vom externen Speicher 9 abgerufenen
Daten abgespeichert werden sollen, wird mit B bezeichnet und ist im B-Register eingespeichert, und die nicht
benutzte Kapazität des Arbeitsspeichers 21 wird mit M bezeichnet und ist im M-Register abgespeichert. Die Kapazität
M ist eine ganze Zahl/ die die Größe des Arbeitsspeichers 21 und des Puffers B anzeigt. Dies ist die Anzahl ganzer
Abschnitte im Speicher 9, die der Pufferspeicher B unter den gegebenen Umständen aufnehmen kann. Für eine beliebige
Blockauswahl muß M mindestens gleich der Anzahl der Abschnitte eines Segments minus 1 sein. Für dieses Beispiel
sei angenommen, daß jedes Segment im externen Speicher 9 acht Abschnitte enthält. Daher muß M mindestens gleich 7
sein. Am Anfang wird bei 46 geprüft, ob ein Block N vorhanden ist, wobei die Systemaufzeichnung des Verzeichnisses
abgetastet und die Daten- und Blockanfangsabschnitte gezählt werden. Ist der Datenblock N nicht vorhanden, dann
können natürlich auch keinerlei Textdaten aus dem externen Speicher 9 nach dem Arbeitsspeicher 21 übertragen werden.
Das anschließend beschriebene Verfahren wird für die Einstellung der Speichersteuerung für die Abspeicherung eines
weiteren, auf den letzten zuvor eingespeicherten Block folgenden Textes durchgeführt.
at 977 001 8 0 9 8 3 0/0779
at 977 001 8 0 9 8 3 0/0779
Das in der Speichersteuerung verwirklichte System wird an diesem Punkt wohl am besten gekennzeichnet - die Verwendung
von Auswahlzeigern und Aufzeichnungszeigern. In dem System
werden zwei in Registern abgespeicherte Zeiger verwendet, die auf Speicherplätze im segmentierten externen Speicher
9 hinweisen. Diese Zeiger enthalten jeweils ein einem Segment im Speicher 9 entsprechendes Feld und ein weiteres
einen bestimmten Abschnitt in diesem Segment entsprechendes Feld. Der Auswahlzeiger SP soll dabei auf den nächsten Abschnitt
eines anzusteuernden oder aufzurufenden Segmentes hinweisen. Da in diesem System ein Block nur teilweise gelesen
werden kann (wie dies in den nachfolgenden Flußdiagrammen im einzelnen noch gezeigt ist), um diesen teilweisen Lesevorgang
zu einem späteren Zeitpunkt fortzusetzen und zu beenden, weist der Zeiger SP nicht immer auf den Anfang eines Blockes hin.
Wenn sowohl das Segmentfeld als auch das Abschnittsfeld von SP Null ist, dann wurden alle Daten ausgewählt. Blöcke können
nur erzeugt, nicht jedoch revidiert werden, wenn der gesamte Zeiger SP Null ist.
Der Aufzeichnungszeiger RP weist auf den letzten im externen Speicher abgespeicherten Abschnitt eines Segmentes hin. Wenn
das Abschnittsfeld des Aufzeichnungszeigers RP gleich Null ist, dann zeigt dies, daß das im Segmentfeld bezeichnete
Segment in keinem Teil mit einer Aufzeichnung versehen ist. Der Zeiger RP kann niemals logisch größer oder gleich SP
sein, wie dies durch die Systemliste und das Systemlog bestimmt ist. (Für diese Definition gilt, daß dann,
wenn der Inhalt des Auswahlzeigerregisters gleich Null ist,
der Auswahlzeiger als nicht vorhanden betrachtet wird.) Die Zeiger können wohl auf das gleiche Speichersegment, jedoch
nicht auf den gleichen Abschnitt dieses Segmentes hinweisen.
AT977001 809830/0779
Nach Abschluß einer Blockspeicheroperation ist der logisch zwischen RP und SP liegende Bereich in dem Systeinlog bezüglich
der Datenkennzeichnung als unbenutzt gekennzeichnet (mit Ausnahme der durch Fehler unbenutzbaren Abschnitte). Ist
der Auswahlzeiger Null, dann wird der zwischen RP und dem Ende der Systemliste liegende Bereich in dem Systemlog als
unbenutzt gekennzeichnet. Jedes Segment, das keine Daten enthält, wird aus der Systemliste entfernt. Dadurch wird sichergestellt,
daß für nachfolgende Arbeiten Speicherplatz zur Verfügung steht.
In Fig. 4 werden für den Fall, daß ein Block nicht vorhanden ist, bei 49 beide Felder des SP-Registers auf Null eingestellt.
Das Kurzzeitregister wird dabei gelöscht. Bei 50 wird das Segmentfeld des RP-Registers auf das letzte in der
Systemliste befindliche logische Segment mit Daten eingestellt, und bei 51 wird das Abschnittsfeld des RP-Registers
auf den letzten mit Textdaten versehenen Abschnitt der im Segmentfeldabschnitt von RP angegebenen Segmentnummer eingestellt.
Bei 52 wird der Benutzer davon in Kenntnis gesetzt, daß der Block nicht gefunden wurde. Der Auswahlzeiger
wird daraufhin so eingestellt, daß er anzeigt, daß es keinen weiteren abgespeicherten Text zum Auswählen gibt, und
der Aufzeichnungszeiger wird so eingestellt, daß Text un-, mittelbar hinter dem zuletzt im externen Speicher 9 eingespei-
cherten Block im Arbeitsspeicher 21 abgespeichert werden kann.
Bei 46 soll nunmehr der wahrscheinlichere Fall betrachtet
werden, daß der bezeichnete Block N vorhanden ist. Beginnt der nächste Block N + 1 auf dem gleichen Segment des Spei
chers, auf dem auch der Block N endet, dann kann es zu ι einer Störung kommen· Das Problem besteht darin, daß dann, j
wenn der Text im Block N abgerufen und erweitert wird, dieser
AT 977Ί301
809830/0779
neue Text nicht mehr in denselben Speicherplatz paßt, aus dem er entnommen wurde. Wenn der nächste Textblock nicht im gleichen
Segment beginnt, in dem der bezeichnete Block N endet, dann kann es keine Schwierigkeiten geben, da jede Ausdehnung
eines Textes über die Segmentgrenze in einem bisher unbenutzen Segment abgespeichert würde. In Block 47 Fig. 4 sei
der störungsfreie Fall betrachtet. Dann wird bei 48 der Kurzzeitspeicher gelöscht, und das Verfahren wird bei C in
Fig. 7 fortgesetzt. Bei 70 wird dann das Segmentfeld des SP-Registers auf die Nummer des ersten Segmentes, in dem
der Block N abgespeichert ist, eingestellt. Diese Information wird dem Verzeichnis entnommen. Bei 71 wird das Abschnittsfeld
des SP-Registers auf die Nummer des ersten Datenabschnittes des Blockes N aus dem Systemaufzeichnungsabschnitt
des Verzeichnisses entnommene Information eingestellt. Ist bei 72 der anzusteuernde Block der erste Block
eines Dokumentes, dann wird bei 73 das Segmentfeld des RP-Registers auf die Segmentnummer des Speichers 9 eingestellt,
der das erste Segment des Blockes N bei 73 enthält, und bei 74 wird das Abschnittsfeld des RP-Registers auf Null eingestellt.
Bevor in Fig. 8 fortgefahren wird, soll angenommen werden, daß der angeforderte Block N nicht der erste Block ist,
so daß der Ablauf bei 75 fortgesetzt wird, wo das Segmentfeld des RP-Registers auf die Nummer des letzten Datensegments
des Blockes N - 1 eingestellt wird und bei 76 das Abschnittsfeld des RP-Registers auf die Nummer des letzten
Abschnittes eingestellt wird, auf dem Daten des Blockes N - 1 gespeichert wurden.
Fährt man bei D in Fig. 8 fort, dann bestimmt die Entscheidung
bei 78 ob ein partieller Lesevorgang vorliegt dadurch daß festgestellt wird, ob im Arbeitsspeicher 21 ausreichend
Speicherplatz zur Verfügung steht, um irgendeinen jenseits des Auswahlzeigers, aber noch aufdem gleichen, durch das
XT S77-ÖÖ1 βΟ983θ7θ77Ϊ
Segmentfeld des Auswahlzeigers gekennzeichneten Segments liegenden
Abschnitt aufzunehmen. Wenn bei 78 Il (die Speichergröße in Abschnitten) groß genug ist, um alle Abschnitte des
Blockes N in dem durch das Segmentfeld im SP-Register bezeichneten
Segment aufzunehmen, dann werden bei 79 die Textabschnitte des SP-Segmentes mit dem Block N bei der Adresse B
in den Arbeitsspeicher 21 eingelesen. Treten keine Lesefehler auf, dann geht es bei 80 weiter nach D1 in Fig. 9. Wenn jedoch
Lesefehler auftreten, dann werden bei 81 Lesefehlercodes vor jedem Speicherplatz in jedem Lesefehler enthaltenden Abschnitt
im Pufferspeicher B eingespeichert, wodurch dem Benutzer angezeigt wird, wo Lesefehler aufgetreten sind, worauf das Verfahren
weiter nach D1 läuft.
Wenn bei 78 in Fig. 8 M nicht groß genug war, den Block N im SP-Segment aufzunehmen, dann wird bei 82 dem Benutzer
mitgeteilt, daß der Lesevorgang nicht vollständig durchgeführt ist. Wenn bei 83 mit M gleich Null der Speicher als voll gekennzeichnet
ist, dann läuft das Verfahren weiter nach D1 und wenn M nicht gleich Null ist, dann wird bei 84 soviel
aus dem Block N im Segment SP ausgelesen, als der Arbeitsspeicher 21 aufnehmen kann. Alle in den Arbeitsspeicher
21 eingelesenen Daten werden auf Fehler überprüft, und es werden, falls erforderlich, gemäß 80 und 81 Fehlercodes eingegeben.
Bei D1 in Fig. 9 wird bei 86 angenommen, daß wegen unzureichender Pufferkapazität ein Teil-Lesevorgang erforderlich war.
Bei 87 wird das Auswahlzeigerregister auf das nächste nicht gelesene Segment und den Abschnitt des Blockes N eingestellt,
so daß das Lesen an diesem Punkt fortgesetzt werden kann, wenn Speicherplatz im Arbeitsspeicher 21 zur Verfügung steht.
Wenn bei den in den Arbeitsspeicher 21 eingeschriebenen Daten · Fehlercodes vorkommen, dann wird der Benutzer davon in Kenntnis
gesetzt. Ist dies nicht der Fall, geht das System zurück an den Benutzer.
AT 977 001
809830/0779
In Fig. 9 soll bei 86 nunmehr der Fall betrachtet werden, bei der kein teilweises Lesen erfolgt ist. Bei 91 wird das
M-Register um die Anzahl der soeben gelesenen Datenabschnitte vermindert. Wenn bei 92 der Block N + 1 in dem Segment SP
vorhanden ist, dann wurde der ganze Block N gelesen und bei 93 wird das Abschnittsfeld des SP-Registers auf dem
Blockanfangsabschnitt des Blockes N + 1 eingestellt. Der Auswahlzeiger zeigt damit auf den Anfang des nächsten Blockes
in der logischen Folge von Blöcken auf dem Dokument. Zu diesem Zeitpunkt wird eine Überprüfung auf Fehlercodes im
Arbeitsspeicher 21 durchgeführt und der Benutzer von gegebenenfalls vorhandenen Fehlercodes in Kenntnis gesetzt.
Ist bei 92 der Block N + 1 in dem Segment SP nicht enthalten, dann wird die Systemlistedes Verzeichnisses bei 94
daraufhin überprüft, ob auf das durch das Segmentfeld im SP-Register bezeichnete Segment ein weiteres Segment folgt.
Ist dies nicht der Fall, dann wird bei 98 das SP-Register auf Mull eingestellt und damit angezeigt, daß keine weiteren
Blöcke vorhanden sind, die gelesen werden können. Nach Mitteilung von gegebenenfalls zuvor in den Arbeitsspeicher 21
eingelesenen Fehlercodes wird das System an den Benutzer zurückgegeben. Wenn bei 94 festgestellt wird, daß auf das
durch den Auswahlzeiger festgelegte Segment ein weiteres Segment folgt, dann wird das Segmentfeld des SP-Registers auf
das nachfolgende Segment eingestellt, und das Abschnittsfeld des SP-Registers wird auf diesen ersten Datenabschnitt dieses
nächstfolgenden Segments bei 95 eingestellt, wobei diese Information aus dem Verzeichnis abgerufen wird. Wenn bei
96 das Abschnittsfeld des SP-Registers auf den Abschnitt eines Blockanfangs eingestellt ist, dann ist das Lesen des
angeforderten Blockes beendet, und das System wird nach Mitteilung von im Arbeitsspeicher gegebenenfalls liegenden
Fehlercodes an den Benutzer zurückgegeben. Zeigt jedoch das
AT 977 001
809830/0779
Abschnittsfeld des SP-Registers nicht auf einen Blockanfang eines nächstfolgenden Segments, dann wird bei 97 die Adresse
B um die Menge der soeben gelesenen Daten erhöht, und das Verfahren geht weiter nach D und fährt mit dem Lesen des
nächsten Segmentes fort.
Nunmehr sei in Fig. 4 bei 47 die Möglichkeit eines Konfliktes angenommen. D.h., daß der nächste Block (N+1) im gleichen
Segment wie der angeforderte Block liegt. Dieser Konflikt tritt dann ein, wenn der angeforderte Block erweitert wird,
so daß in dem Segment, in dem der Block N endet nicht genügend Platz vorhanden ist, um den erweiterten Block N aufzuzeichnen,
ohne dabei Daten in den Abschnitten einzuschreiben, in denen der Block N + 1 abgespeichert ist.
Geht man nunmehr nach B in Fig. 5 über, dann wird bei 55 ein mit ES bezeichnetes leeres Segment im Speicher 9 aufgefunden.
Dieses leere Segment wird durch Bezugnahme auf das Verzeichnis als ein Segment ermittelt, für das das Systemlog weder
Daten, noch wegen Fehler unbenutzbare Abschnitte auf v/eist, und das auch nicht in dem die Systemliste enthaltenden
Teil des Verzeichnisses enthalten ist. Wenn bei 56 angenommen wird, daß im Speicher 9 ein leeres Segment zur Verfügung
steht, dann werden bei 57 die einen Konflikt hervorrufenden Daten aus dem den Block N enthaltenden letzten Segment in
die Adresse B des Arbeitsspeichers 21 eingelesen. Diese störenden Daten sind dabei alle diejenigen Daten des Segments,
in dem der Block N endet und die auf das Ende des Blockes N folgen. Der Arbeitsspeicher 21 wirkt für diese
Daten als zeitweiliger Pufferspeicher, so daß diese später nach dem Segment ES Übertragen werden können. Wenn bei 58
beim Lesen der einen Konflikt hervorrufenden Daten Fehler festgestellt werden, dann werden für alle diejenigen aus dem
Speicher 9 in den Arbeitsspeicher 21 eingelesenen, fehlerbehafteten Abschnitte, wie bei 59 angezeigt, Fehlercodes in
809830/0779
den Arbeltsspeicher 21 eingeschrieben. Nach Einschreiben
der Fehlercodes oder wenn keine solche vorhanden sind, werden die einen Konflikt verursachenden Daten aus dem Arbeitsspeicher
ausgelesen und, wie bei 60 angedeutet, in das Segment ES eingeschrieben.
Dieser Schreibvorgang wird bei 61 auf Schreibfehler überprüft,
und beim Auftreten von Schreibfehlern werden die Datenkennzeichnungen des soeben eingeschriebenen Segmentes ES
zeitweilig bei 62 für eine Anzeige von Daten in jedem Abschnitt eingestellt, wodurch eine erneute Verwendung dieses
Segmentes bei einer versuchten Rückspeicherung der Daten verhindert wird. Das Verfahren läuft dann zurück nach 55,
wo dann der Versuch unternommen wird, ein weiteres leeres Segment für eine Rückspeicherung der störenden Daten aufzufinden.
Wenn bei 61 angenommen wird, daß beim Rückspeichern der Daten keine Fehler aufgetreten sind, dann geht das Verfahren
weiter nach B1 in Fig. 6. Bei 65 in Fig. 6 wird der Kurzzeitspeicher auf das Segment ES eingestellt. Bei 66 wird
die das Segment ES betreffende notwendige Information aufbewahrt, so daß sie später in das Verzeichnis aufgenommen
werden kann, sollte sie schließlich benötigt werden. (Sie wird beispielsweise dann benötigt, wenn die abgerufenen
Daten erweitert werden, da sonst die in dem Kurzzeitspeicher abgespeicherten störenden Daten überschrieben würden.) Die
für das Segment ES aufbewahrte Information ist die Segmentnumtner,
aus der die rückübertragenen Daten entnommen wurden, und wird im A-Register abgespeichert und als A bezeichnet,
sowie die Datenkennzeichen (unbenutzt-verfügbar, Fehlerunbenutzt, Daten oder Daten- und Blockanfang) des jetzt
existierenden Segmentes ES. Fährt man fort nach 67, dann werden alle Segmente, die bei der Rückübertragung von Da-
AT 977 001 80 98 30/0779
ten Schreibfehler aufwiesen, freigegeben. In Fig. 5 Block 62
waren bekanntlich diejenigen Segmente, bei denen Schreibfehler aufgetreten waren, in das Systemverzeichnis aufgenommen
worden, um Daten in allen deren Abschnitten anzuzeigen. Die Freigabe des Segmentes unterstellt dabei, daß diese
Datenabschnitte im Systemlog als nicht benutzt gekennzeichnet werden. Diese Segmente wurden niemals in der Systemliste
aufgenommen.
Nach Freigabe aller derjenigen Segmente, in denen Schreibfehler aufgetreten sind, wird das Verfahren in Fig. 7 bei
C fortgesetzt, so daß der angeforderte Block in den Arbeitsspeicher 21 eingeschrieben werden kann. Betrachtet man nochmal
Fig. 5, dann wird dann bei einem möglichen Konflikt bei der versuchten Rückspeicherung von einen Konflikt verursachenden
Daten, wenn bei 56 kein freies Segment aufgefunden wird, der Kurzzeitspeicher gelöscht und dem Benutzer bei 63 mitgeteilt,
daß keine Rückspeicherung möglich ist. Das Verfahren läuft weiter nach B2 in Fig. 6. Nachdem alle Segmente,
bei denen Schreibfehler vorgekommen sind, frei gegeben worden sind, läuft das Verfahren weiter nach C.
Eine weitere Art der Systemoperation ist die Auswahl des nächstfolgenden Blockes unter der Annahme, daß bereits eine
willkürliche Auswahl eines Blockes stattgefunden hat. Wichtig hierbei ist, daß am Ende der zuvor abgelaufenen Blockauswahloperation
der Auswahlzeiger auf denjenigen Block eingestellt worden ist, der bei die Auswahloperation des nächstfolgenden
Blocks angesteuert werden soll, wobei zu Beginn der Auswahloperation für den nächstfolgenden Block keine
Ersteinstellung des Auswahlzeigers erfolgt. In Fig. 10 beginnt dieses Verfahren mit einer vom Benutzer kommenden
Anforderung, den Block N in die Pufferspeicheradresse B des Arbeitsspeichers 21 einzulesen, der eine Kapazität M auf-
AT 977 001 8 0 9 8 3 0/0779
weist. Bei 101 wird der Systemlogteil des Verzeichnisses abgefragt, ob es tatsächlich einen Block N gibt. Ist dies
nicht der Fall, dann wird das Auswahlzeigerregister bei 103 auf Null gestellt, und bei 104 wird dem Benutzer mitgeteilt,
daß der Block im Speicher 9 nicht aufgefunden wurde. Bei 105 geht das Speichersteuersystem wieder an den Benutzer zurück.
Es sei nunmehr angenommen, daß bei 101 im Systemlog des Verzeichnisses
festgestellt wurde, daß ein Block vorhanden ist. Dann wird bei 102 das Unterprogramm SCPAD (Kurzzeitspeicher)
aufgerufen.
Dieses Unterprogramm (Kurzzeitspeicher) ist in Fig. 11 gezeigt. Wenn bei 108 das Kurzzeitspeicherregister leer ist,
läuft das Verfahren zurück an den Anrufer, nämlich Punkt D in Fig. 10. Das Verfahren fährt dann bei D in Fig. 8 fort
mit dem übertragen von Daten aus dem nächstfolgenden ausgewählten Block nach dem Arbeitsspeicher 21. Wenn jedoch der
Kurzzeitspeicher nicht leer 1st, dann wird das Kurzzeitspeicher
segment logisch in die Liste der Segmente in der Systemliste nach folgendem Verfahren aufgenommen. Bei 109 wird
die Systemlißte des Verzeichnisses für eine Einfügung der
auf die Nummer des Segmentes A folgenden Segmentnummer des Kurzzeitspeichers auf den neuesten Stand gebracht. Segment
A ist dabei das Segment, aus dem auf einen zuvor ausgewählten Block folgende Daten nach dem Kurzzeitspeicher übertragen
wurden. Bei 110 wird das Systemlog des Verzeichnisses insoweit berichtigt, daß die tatsächlichen Datenkennzeichen des Kurzzeitspeichersegments
berücksichtigt werden. Bei 111 wird das Systemlog des Verzeichnisses zur Berücksichtigung der neuen
Datenkennzeichen des Segments A berichtigt. Diejenigen Abschnitte dee Segments A, die nach dem Kurzzeitspeicher übertragen
worden sind, werden nunmehr in dem Systemlog als nicht-
AT 977 001
809830/0779
benutzt gekennzeichnet. Bei 112 wird das Segmentfeld des SP-Registers
auf das Segment des Kurzeitspeichers eingestellt. Bei 113 wird das Kurzzeitspeicherregister gelöscht, und das
System läuft wieder nach Punkt D in Fig. 10. Von diesem Punkt aus wird das Einlesen des angeforderten Blocks in den
Arbeitsspeicher 21 fortgesetzt. Es sei darauf hingewiesen, daß die Daten aus dem Kurzzeitspeichersegment und nicht
aus den Daten des Segments A ausgelesen werden, aus dem diese Daten nach dem Kurzzeitspeicher übertragen worden
sind.
Eine andere Arbeitsweise des Systems ist das teilweise Lesen eines Datenblocks, das in Fig. 12 beginnt. In diesem Fall
fordert ein Benutzer, daß das Lesen eines zuvor teilweise gelesenen Blocks aus dem externen Speicher 9 nach dem Arbeitsspeicher
21 bei der Pufferadresse B fortgesetzt wird. Wird die Pufferkapazität M größer als Null, dann kann das
Lesen eines Blocks oder eines Teils des Blocks bei D in Fig. 8 fortgesetzt werden.
Eine wichtige Operation der Speicheraufzeichnung und Steuerung
findet statt, wenn ein Block im externen Speicher aufgezeichnet werden muß. Für diese Aufzeichnung müssen die
entsprechenden Segmente und deren Abschnitte ausgewählt wer~ den, und diese Information muß aufgezeichnet werden. In Fig.
13 beginnt eine solche Aufzeichnung mit einer Anforderung durch den Benutzer, daß der Speicherinhalt an der Adresse
B im Arbeitsspeicher 21 an den externen Speicher 9 am Block N übertragen werden soll. Der Block soll dabei M Abschnitte
aufweisen.
Bei 116 wird das Systemlog des Verzeichnisses abgefragt, ob im Speicher 9 Aufzeichnungsblöcke existieren. Sind keine
Blöcke vorhanden, dann muß für die Aufzeichnung ein leeres Segment ausgewählt werden, und die Register für den Aus-
AT 977 001
ßngfl3n/0779
2B01982
wahlzeiger, für den Kurzzeitspeicher und für den Aufzeichnungszeiger
müssen eingestellt werden. Bei 117 wird eine leeres Segment aufgefunden und wird in die Systemliste
mit Bereich des Verzeichnisses aufgenommen. Bei 118 wird das SP-Eegister auf Null eingestellt, und das Kurzeitspeicherregister
wird gelöscht. Bei 119 wird der Segmentteil des RP-Registers auf das in der Systemliste befindliche
Segment eingestellt, und das Abschnittsfeld im RP-Register wird zu Null gemacht. Dieser Ablauf wird bei 120 fortgesetzt.
Wenn bei 116 ein Block vorhanden ist, dann läuft das Verfahren unmittelbar nach 120. Wenn ein Block vorhanden ist,
dann wird angenommen, daß die Aufzeichnungs- und Auswahlzeiger bereite eingestellt sind, da bei Vorhandensein von
Blöcken angenommen wird, daß bereits ein Versuch, einen dieser Blöcke auszuwählen, durchgeführt wurde, bevor ein Aufzeichnungsverfahren
stattfinden kann.
Bei 120 wird das SP-Register daraufhin überprüft, ob es
Null ist. Das SP-Register ist dann Null, wenn zuvor keine Blöcke vorhanden waren oder wenn Blöcke vorhanden sind und
der Aufzeichnungszeiger auf den letzten Abschnitt in den bestehenden Blöcken hinweist. In anderen Fällen ist das
Auewahlzeigerregister nicht Null, und das Verfahren läuft weiter nach H in Fig. 14,
Wenn der Auswahlzeiger nicht gleich Null ist, dann weist der Auewahlzeiger auf den nächsten Block eines oder mehrerer
Blöcke hin, und der Aufzeichnungszeiger liegt vor dem Auswahlzeiger.
Die Aufzeichnung beginnt bei dem Aufzeichnungszeiger, muß jedoch vor Erreichen des Auswahlζeigers beendet
werden. Somit wird in Fig. 14 bei 122 das Kurzzeitspeicherregister daraufhin untersucht, ob es leer ist. Ist dies
der Fall, dann ist hier keine Möglichkeit eines Konfliktes gegeben, bei dem der Aufzeichnungszeiger bis an den Auswahlzeiger
heran kommen könnte, so daß der Ablauf weiterführt
AT977001 809830/0779
nach G für eine fortgesetzte Aufzeichnung, wie dies noch beschrieben
wird.
Ist der Kurzzeitspeicher nicht leer, dann muß bestimmt werden,
ob der Text, der ursprünglich vor dem Speicherinhalt des Kurzzeitspeichers lag, erweitert worden ist, so daß er
nicht länger in das einen Block enthaltende Segment paßt, welcher nach dem zuvor ausgewählten Block beginnt, der abgespeichert
werden muß. Wenn also angenommen wird, daß der Kurzzeitspeicher nicht leer ist, dann wird bei 123 überprüft,
ob zwischen dem Aufzeichnungszeiger und dem Auswahlzeiger genügend Speicherplatz für die Aufnahme des Blockes
N vorhanden ist. Ist dies der Fall, dann kann die Aufzeichnung weitergehen nach D. Ist jedoch nicht genug Speicherplatz
vorhanden, dann wird das zuvor in Verbindung mit Fig. 11 beschriebene
Unterprogramm SCPAD (Kurzzeitspeicher) abgerufen.
Durch Abrufen dieses Unterprogramms wird der Kurzzeitspeicher
an die Systemliste und das Systemlog übertragen, so daß das gerade ablaufende Aufzeichnungsverfahren in den nunmehr unbenutzten
Abschnitt des Aufzeichnungszeigers und Auswahlzeigersegments einschreiben kann.
Das Verfahren läuft weiter nach G in Fig. 5 oder würde bereits bei G angelangt sein, wenn in Fig. 13 bei 120 der Auswahlzeiger
auf Null eingestellt worden wäre. Bei 126 wird das Abschnittsfeld des RP-Registers überprüft, um zu bestimmen,
ob der Aufzeichnungszeiger nach dem Ende eines Segmentes weist. Ist dies der Fall, dann läuft das Verfahren weiter
nach I, zu welchem Zeitpunkt ein weiteres Segment für die Aufzeichnung aufgefunden werden muß, wenn ein solches vorhanden
ist. Zeigt jedoch der Aufzeichnungszeiger nicht auf das Ende eines Segmentes, dann wird bei 127 der Inhalt des
Arbeitsspeichers 21 daraufhin überprüft, ob er Null ist. Dies ist ein Teil der Aufzeichnung, da bei der überführung
von Datenabschnitten und Segmenten vom benutzten zum nicht
at 977 001 8098 30/0779
benutzten Zustand Daten vom Speicher 9 nach dem Arbeitsspeicher
21 übertragen und diese Daten dann im Arbeitsspeicher 21 gelöscht werden, worauf nach Löschen dieser Daten die
Aufzeichnung angefordert wird.
Angenommen, daß Daten aus dem externen Speicher entfernt werden sollen, so daß der Speicherinhalt des Arbeitsspeichers
21 zu Null wird, dann geht der Ablauf bei 127 Fig. 15 nach J in Fig. 16. Bei 133 in Fig. 6 werden alle Abschnitte des
Systemlogs des Verzeichnisses zwischen, jedoch nicht einschließlich der Position des Aufzeichnungszeigers und des
Auswahlzeigers, auf unbenutzt eingestellt. Der Status irgendwelcher
aufgezeichneter fehlerhafter Abschnitte zwischen Aufzeichnungszeiger und Auswahlzeiger wird nicht verändert.
Bei 134 wird das Verzeichnis daraufhin durchsucht, ob in der Systemliste irgendwelche leeren Segmente vorhanden sind. Ist
das der Fall, dann werden bei 13S diese Segmente aus der Systemliste entfernt, so daß das System sie als benutzbare
leere Segmente betrachtet. Der Ablauf geht dann weiter nach L in Fig. 18. Enthält die Systemliste keine leeren Segmente,
dann läuft das Verfahren unmittelbar zu L.
In Fig. 18 verbleibt nur noch, bei diesem Löschabschnitt der Aufzeichnung von Daten das Verzeichnis auf den neuesten
Stand zu bringen und dieses berichtigte Verzeichnis im externen Speicher 9 abzuspeichern. Bei 148 wird ein Zähler
Y eingesetzt, der die im externen Speicher 9 abgespeicherten Verzeichnisse zählt. Bei 149 wird ganz zu Beginn des Verzeichnisses
im Arbeitsspeicher 21 um Eins erhöht. Bei 150 wird dann das Verzeichnis an dem für Verzeichnisse vorgesehenen
Speicherplatz im Speicher 9 aufgezeichnet, der der augenblicklichen Position des dem Speicher 9 zugeordneten
Lese/Schreibkopfes am nächsten liegt. Wenn bei 151 während
at 977 001 8 09830/07 7 9
2801382
der Aufzeichnung eines Verzeichnisses keine Aufzeichnungsfehler vorkommen, dann geht das Verfahren wieder an den Benutzer
zurück. Tritt bei 151 ein Aufzeichnungsfehler auf, dann wird bei 152 der Zähler Y um Eins im Zählerstand erhöht,
und es wird bei 153 bestimmt, ob der Zählerstand im Zähler Y die Anzahl der Verzeichnisse X überschreitet. Ist dies nicht
der Fall, dann gibt es weitere Aufzeichnungsplätze für Verzeichnisse im Speicher 9, und es wird bei 154 ein neuer Versuch
unternommen, das Verzeichnis in der nächsten besonders zugeordneten Aufzeichnungsfläche für Verzeichnisse abzuspeichern.
Ist Y größer als X, dann gibt es keine weiteren Aufzeichnungsflächen für Verzeichnisse, und dem Benutzer wird
mitgeteilt, daß die Verzeichnisse fehlerhaft sind und daß der externe Speicher nicht langer benutzbar ist.
In Fig. 15 war die unmittelbar vorhergegangene Diskussion
auf die Löschung bei der Aufzeichnung gerichtet worden, wenn bei 127 M gleich Null ist. Es sei nunmehr angenommen, daß
aus dem Arbeitsspeicher 21 Text nach dem externen Speicher 9 zurückübertragen werden soll, wobei M nicht gleich Null
ist. Der Aufzeichnungszeiger wird nunmehr auf Aufzeichnung eingestellt, und bei 128 wird, beginnend mit dem ersten auf
den Aufzeichnungszeiger folgenden Abschnitt soviel von den im Arbeitsspeicher 21 enthaltenen Daten aufgezeichnet, als
auf den nicht fehlerbehafteten Abschnitten des durch das Segmentfeld des Aufzeichnungsträgers ausgewiesenen Segmentes
möglich ist. Die Aufzeichnung wird dann unmittelbar vor dem durch das Aufzeichnungsfeld des Aufzeichnungszeigers bezeichneten
Abschnitt angehalten, wenn der Aufzeichnungszeiger in diesem Segment angetroffen wird. Bei 129 werden
die neu in dem Speicher 9 aufgezeichneten Daten auf Fehler überprüft. Sind keine Aufzeichnungsfehler vorhanden, dann
wird das Unterprogramm "Berichtigen" bei 130 abgerufen.
at 977 001 809830/0779
Das Berichtigungsprograrun läuft gemäß Fig. 21 ab, wobei das
Register M bei 176 um die soeben aufgezeichnete Datenmenge verringert wird (die Anzahl der Abschnitte von Daten im
Arbeitsspeicher 21). Bei 177 wird die Arbeitsspeicheradresse B um die soeben aufgezeichnete Datenmenge erhöht. Die Systemaufzeichnung
wird berichtigt und gibt damit die neuen Daten oder Daten- und Blockanfangsabschnitte an, die bei der Aufzeichnung
benutzt wurden. Schließlich wird bei 179 das Abschnittsfeld des RP-Registers auf den letzten Abschnitt,
auf dem eine Aufzeichnung versucht wurde, eingestellt, unabhängig davon, ob dies ein Fehlerabschnitt war oder nicht.
Zu diesem Zeitpunkt geht das Verfahren wieder nach 131 in Fig. 15.
Es sei angenommen, daß bei 129 Fig. 15 in den soeben aufgezeichneten
Daten Fehler aufgetreten sind. Das Verfahren läuft dann weiter nach K Fig. 17. Zunächst wird bei 138
das Unterprogramm SCPAD (Kurzzeitspeicher) abgerufen, das in Fig. 11 gezeigt und zuvor beschrieben wurde. Ist der
Kurzzeitspeicher leer, dann läuft das Verfahren unmittelbar nach 139, und ist der Kurzzeitspeicher nicht leer, dann wird
das Kurzzeitspeichersegment in das Verzeichnis eingebracht, und das Verfahren geht weiter bei 139. Wenn bei 139 weitere
zusätzliche leere Segmente im Speicher 9 vorhanden sind, dann wird das Unterprogramm ERRUP (Fehlerberichtigung) abgerufen.
In Fig. 22 beginnt das Unterprogramm ERRUP bei 182 durch Berichtigung des Systemlogs des Verzeichnisses zur Kennzeichnung
des Fehlerabschnitts. Für jeden aufgezeichneten Fehlerabschnitt wird bei 183 der Fehlerabschnittszähler um Eins
erhöht. Bei 184 wird überprüft, ob der Inhalt des Fehlerzählers gleich dem Fehlergrenzwert ist. Der Fehlergrenzwert
ist eine vorbestimmte Zahl, die um Eins größer ist als die
at 977 ooi 80 98 30/0779
Anzahl der Fehlerabschnitte, die ohne Warnung an den Benutzer zulässig sind. Wird dieser Grenzwert erreicht, dann wird bei
185 der Benutzer benachrichtigt, daß der Fehlergrenzwert erreicht ist. Nach dieser Benachrichtigung oder wenn der
Zählerstand den Grenzwert nicht erreicht hat, geht das Verfahren wieder bei Fig. 17 bei G an den Anrufer zurück. Dann
werden bei Fig. 15 weitere Aufζeichnungsversuche unternommen,
falls das angezeigt ist.
In Fig. 17 sei bei 139 angenommen, daß keine weiteren leeren
Segmente vorhanden sind. Dann wird bei 140 geprüft, ob für
den aufzuzeichnenden Block N ein Blockanfang aufgezeichnet
ist. Ist der Blockanfang aufgezeichnet, dann wird das Unterprogramm ERRUP in Fig. 22 abgerufen. Am Ende dieses Unterprogramms
werden keine weiteren Versuche zur Aufzeichnung von Daten unternommen, und der Benutzer wird bei 144 davon
in Kenntnis gesetzt, daß alle aufzuzeichnenden Daten nicht aufgezeichnet worden sind. Dann läuft das Verfahren weiter
nach L in Fig. 18, so daß das Verzeichnis berichtigt und erneut im Speicher 9 abgespeichert werden kann. Wenn bei
ein Blockanfang für den Block N nicht aufgezeichnet ist, dann wird das Abschnittsfeld des Aufzeichnungszeigers auf
den nächstfolgenden Abschnitt dieses Segments bei 142 eingestellt, und es wird bei 143 zwangsweise ein Blockanfang
eingeleitet. Das verhindert den Verlust von Blockanfängen und die damit zusammenhängende Umnumerierung von nachfolgenden
Blöcken.
Nunmehr soll der Ablauf in Fig. 15 ab I besprochen werden, wenn für die Aufzeichnung ein anderes Segment angesteuert
werden muß. Gemäß Fig. 19 wird bei 158 die Systemliste des Verzeichnisses daraufhin untersucht, ob ein in der Systemliste
enthaltenes Segment hinter dem durch das Segmentfeld des RP-Registers bezeichneten Segment liegt. Ist dies der
at 977 001 8 0 9 8 3 0/0779
Fall, dann wird bei 149 bestimmt, ob dieses dahinterliegende
Segment für eine Aufzeichnung zur Verfügung steht. Ein dahinter liegendes Segment wird dann als für eine Aufzeichnung
zur Verfügung stehend angenommen, wenn 1. der Segmentabschnitt
des SP-Registers nicht auf dieses nächstfolgende Segment hinweist und wenn das nächstfolgende Segment keine
Blockanfänge enthält. Steht dieses nächstfolgende Segment zur Verfügung, dann wird bei 160 der Segmentabschnitt des
RP-Registers auf die laufende Nummer des nächstfolgenden Segments eingestellt, und das Abschnittsfeld des RP-Registers
wird auf Null gebracht. Damit kann die Aufzeichnung vom Anfang dieses nächstfolgenden Segments an gemäß der Arbeitsweise
fortgesetzt werden, wie sie bei G in Fig. 15 beginnt.
Ist das nächstfolgende Segment für eine Aufzeichnung nicht verfügbar, dann wird bei 161 der Inhalt des Kurzzeitspeicherregisters
überprüft. Ist der Kurzzeitspeicher nicht frei, dann wird bei 160 für die Nichtaufzeichnung in dem nicht
zur Verfügung stehenden nächsten Segment eine Ausnahme gemacht. An diesem Punkt wird das Segmentfeld des RP-Registers
auf das nächstfolgende Segment und das Abschnittsfeld des
RP-Registers auf Null eingestellt, so daß die Aufzeichnung nach G fortfahren kann. Dieses Segment wird dann zur Aufzeichnung
benutzt, da der Kurzzeitspeicher später mit eingebracht werden kann, wenn dies wegen Fehlern bei der Aufzeichnung
in diesem nächstfolgenden Segment nötig werden sollte.
Wenn bei 161 der Kurzzeitspeicher leer ist, dann wird bei
162 das Verzeichnis daraufhin überprüft, ob leere Segmente
vorhanden sind. Wenn ein leeres Segment vorhanden ist, dann
wird das leere Segment in die Systemliste hinter dem laufenden RP-Segment aufgenommen, und das Verfahren läuft weiter
bei 160, wie oben beschrieben. Ist kein leeres Segment vor-
at 977 001 8 0 9 8 3 0/0779
handen, dann läuft das Verfahren weiter nach 12 in Fig. 20.
Vor Verlassen der Fig. 19 sei darauf hingewiesen, daß bei 158 dann, wenn in der Systemliste hinter dem RP-Segment
kein Segment liegt, das Verfahren nach 162 springt und dort
bestimmt, ob ein leeres Segment vorhanden ist oder nicht. Dies ist der Fall, bei dem der Aufzeichnungszeiger auf das
letzte Segment in der Systemliste hinweist.
Gemäß Fig. 20 bei 12 wird bei 166 der zwischen dem Aufzeichnungszeiger
und dem Auswahlzeiger und ohne diese beiden Zeiger vorhandene Speicherplatz berechnet. Ist der Auswahlzeiger
auf Null gestellt, dann ist definitionsgemäß der Speicherplatz gleich Null. Wenn bei 167 der Speicherplatz Null ist,
dann läuft das Verfahren nach K1 in Fig. 17. In diesem Fall wird der Benutzer davon in Kenntnis gesetzt, daß alle Daten
nicht aufgezeichnet sind und das Verfahren mit der Berichtigung des Verzeichnisses und der Wiedereinspeicherung des
berichtigten Verzeichnisses im Speicher 9 fortgesetzt wird. Wenn der im Speicher 9 zwischen Aufzeichnungszeiger und Auswahlzeiger
liegende Speicherraum größer als M ist (Inhalt des Arbeitsspeichers 21), dann geht das Verfahren weiter
nach 11 Fig. 19. Von dort läuft das Verfahren nach 160 Fig. 19, wie bereits beschrieben. Wenn in Fig. 20 bei Block 168
der im Speicher 9 zwischen Aufzeichnungszeiger und Auswahlzeiger liegende Platz kleiner ist als der Speicherinhalt des
Arbeitsspeichers 21, dann wird bei 169 der Benutzer davon in Kenntnis gesetzt, daß alle Daten nicht aufgezeichnet sind, worauf
das Verfahren weiter nach 170 läuft, wo M dann auf den berechneten Speicherplatz eingestellt wird. Das Verfahren geht
dann weiter nach 11 Fig. 19. In Fig. 19 wird das Aufzeichnungszeigersegmentfeld
auf das nächstfolgende Segment eingestellt und das Abschnittsfeld des Aufzeichnungszeigers auf Null. Das
Verfahren geht dann weiter nach G in Fig. 15 für eine Fortsetzung
der Aufzeichnung vom Aufzeichnungszeiger nach dem
977 OöT 809830/0 779
Auswahlzeiger. Das System hält dann an, bevor der Aufzeichnungszeiger
den Auswahlzeiger überläuft.
Zusammenfassend kann gesagt werden, daß ein System und ein
Verfahren zum Speichern und Abrufen von Textblöcken und deren Abschnitten für ein Textverarbeitungssystem geschaffen wurden.
Diese Textblöcke, die normalerweise Seiten eines Dokumentes darstellen, sind als Folge von nicht näher bezeichneten
Abschnitten unterschiedlicher Größe auf Segmenten eines Serienmassenspeichers abgespeichert. In dem System wird eine
möglichst hohe Ausnutzung des normalerweise nicht benutzten Systemspeicherraums dadurch versucht, daß die Speicherblöcke
auf einem Speichersegment dicht gepackt werden. Ein Systemverzeichnis
mit einer Systemliste und einem Systemlog liegt in einem Speicher des Systems mit wahlfreiem Zugriff und
wird auf dem segmentierten externen Speicher aufgezeichnet. Das Systemlog wird jedesmal dann in dem externen Speicher
aufgezeichnet, wenn auch dort Daten aufgezeichnet werden. Zur Verkürzung der Zugriffszeit während der Aufzeichnung und für
erhöhte Zuverlässigkeit wird das Systemlog an mehreren Orten, die nicht nebeneinander liegen, auf dem Speicher aufgezeichnet,
Das körperlich am nächsten liegende Systemlog wird bei jeder Datenspeicherung auf den neuesten Stand gebracht. Das Systemlog
enthält einen Aktivitätszähler, der bei jeder Berichtigung entsprechend fortgeschrieben wird, so da0 beim Systeraanlauf
das zuletzt benutzte und daher richtige Systemlog wieder aufgefunden werden kann. Dieses Systemlog enthält
eine Aufzeichnung von Speicherabschnitten mit nicht korrigierbaren Fehlern, so daß kein weiterer Versuch zur Benutzung
dieser Abschnitte unternommen wird. Außerdem wird eine Zählung dieser fehlerhaften Abschnitte aufrechterhalten,
und das Textverarbeitungssystem wird benachrichtigt, wenn dieser Zählerstand einen vorbestimmten Wert erreicht hat.
at 977 001 809 8 30/0779
Bei Zugriff zu einem ausgewählten Datenblock sucht das System
alle Daten, die auf den ausgewählten Block im gleichen Segment folgen, in dem der ausgewählte Block endet, auf. Diese
in Konflikt miteinander stehenden Daten werden vor dem ersten Lesen des angeforderten Blockes rückgespeichert, wobei
diese Rückspeicherung über einen Pufferspeicher mit wahlfreiem Zugriff erfolgt, in dem letztlich die angeforderten
Daten liegen werden. Diese Daten werden nach einem anderen Speichersegment zurückgespeichert, das zunächst in der
Systemliste nicht enthalten ist. Diese zurückgespeicherten Daten werden dann nicht vom Systemlog erfaßt, wenn T.) dies
nicht tatsächlich erforderlich ist, nachdem die ursprünglich angeforderten und berichtigten Daten wieder im externen Speicher
abgespeichert worden sind und 2.) solange nicht bei dem Versuch, die angeforderten Daten auf dem Segment, von dem sie
ursprünglich kamen, wieder abzuspeichern oder 3.) wenn der auf den ursprünglich angeforderten Block nachfolgende Block ebenfalls
ausgewählt wird. Lassen sich die Daten nicht zurückspeichern, dann wird trotzdem der Zugriff nach diesem Datenblock
durchgeführt, und das System wird von dieser Bedingung
in Kenntnis gesetzt. Das nicht in das Systemlog überführte Segment wird als Kurzzeitspeicher bezeichnet. Alle Daten, die
bei der Rückspeicherung nicht gelesen werden, werden in diesem Kurzzeitspeicher durch unverwechselbare Fehlercodes dargestellt.
Somit werden bei der Rückspeicherung alle Blockanfänge festgehalten.
Wenn der Arbeitsspeicher nicht den ganzen angeforderten
Block annehmen kann, dann wird eine Teilauswahloperation verwendet, und es werden dabei so viele Abschnitte des Blockes
übertragen, als es in dem Arbeitsspeicher des Textverarbeitungssystems
ganze ganzzahlige Abschnitte gibt, und zwar findet eine übertragung vom externen Speicher nach dem Arbeits*·
speicher statt, worauf anschließend der Rest des Blockes
at 977 001 8 0 9 8 3 0/0779
nach dem Arbeitsspeicher des Textverarbeitungssystems übertragen
wird, wenn dieser Arbeitsspeicher wieder Platz zur Aufnahme von weiteren Textdaten aufweist.
Die Segmente werden dadurch zusammengerückt, daß zunächst ein Block gelesen und anschließend der Block ohne Berichtigung
zwischen Lesen und Aufzeichnen wieder aufgezeichnet
wird. Auf diese Weise werden nicht benutzte Abschnitte zur Bildung vollständiger nicht benutzter Segmente verschoben, so daß diese unbenutzten Segmente aus der Systemliste entfernt werden können.
wird. Auf diese Weise werden nicht benutzte Abschnitte zur Bildung vollständiger nicht benutzter Segmente verschoben, so daß diese unbenutzten Segmente aus der Systemliste entfernt werden können.
at 977 001 8 0 9 8 3 0/0779
Claims (1)
- PATENTANSPRÜCHEVerfahren zum übertragen eines ersten willkürlich ausgewählten Blockes von Textdaten zwischen einem serialen Speicher und dem Arbeitsspeicher eines Textverarbeitungssystems gekennzeichnet durch folgende Verfahrensschritte tAbfragen eines gespeicherten Verzeichnisses zur Feststellung, ob im gleichen Segment des serialen Speichers an der Stelle, an der der erste Block endet, ein zweiter Block sich anschließt,Einschreiben dieses folgenden Blocks, soweit in dem gleichen Segment enthalten, in ein anderes Segment und übertragen des ersten Blocks nach dem Arbeitsspeicher.Verfahren nach Anspruch 1, dadurch gekennzeichnet, daß beim Einschreiben dieses zweiten Blocks, dieser, soweit er im gleichen Segment abgespeichert ist, zunächst an den Arbeitsspeicher des Textverarbeitungssystems als Kurzzeitspeicher und von dort nach dem anderen Segment Übertragen wird.Verfahen nach Anspruch 2, dadurch gekennzeichnet, daß in Abhängigkeit von der nachfolgenden übertragung des zweiten Blocks nach dem Arbeitsspeicher des Textverarbeitungssystems dieses weitere Segment in eine Syatemliste der Segmente aufgenommen wird, wobei diese Systemliste der Segmente eine logische Reihenfolge der in dem serialen Speicher abgespeicherten Folge von Segmenten enthält.BAD ORIGINALAT 977 00180983 0/0779Verfahren nach Anspruch 1, dadurch gekennzeichnet, daß nach überprüfung, Korrektur oder Änderung des ersten Blocks im Arbeitsspeicher geprüft wird, ob bei einer Rückspeicherung des ersten Blocks nach Korrektur oder Änderung in dem Speicherplatz, an dem dieser Block vorher eingespeichert war, ein Teil des nächstfolgenden Blockes im Speicher überschrieben werden würde, und daß für diesen Fall das erwähnte andere Segment in die Systemliste eingesetzt wird, wobei diese Systemliste eine logische Reihenfolge der Segmente enthält, in der ein Block oder mehrere Blöcke eines Vorgangs einschließlich des ersten Blockes in dem externen Speicher eingespeichert sind.Verfahren nach Anspruch 4, dadurch gekennzeichnet, daß in Abhängigkeit von einem Hinweis dafür, daß der erste Block nach Korrektur oder Änderung bei Rückspeicherung keinen Teil des nächsten Blockes überschreiben würde, dieses andere Segment nach Auftreten eines Schreibfehlers beim Obertragen des ersten im Arbeitsspeicher liegenden Blockes, nach Korrektur in den externen Speicher, in die Systemliste der Segmente übertragen wird.AT 977 001809830/0779
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US05/762,375 US4197588A (en) | 1977-01-25 | 1977-01-25 | Segmented storage logging and controlling for random entity selection |
Publications (1)
Publication Number | Publication Date |
---|---|
DE2801982A1 true DE2801982A1 (de) | 1978-07-27 |
Family
ID=25064865
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
DE19782801982 Withdrawn DE2801982A1 (de) | 1977-01-25 | 1978-01-18 | Verfahren zum austausch von information zwischen einem externen speicher und einem arbeitsspeicher in einem textverarbeitungssystem |
Country Status (5)
Country | Link |
---|---|
US (1) | US4197588A (de) |
JP (1) | JPS5942897B2 (de) |
AU (1) | AU3083977A (de) |
BE (1) | BE862295A (de) |
DE (1) | DE2801982A1 (de) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
DE2549147A1 (de) * | 1975-11-03 | 1977-05-05 | Itw Ateco Gmbh | Schraube |
Families Citing this family (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS56127242A (en) * | 1980-03-10 | 1981-10-05 | Canon Inc | Electronic typewriter |
DE3104941A1 (de) * | 1981-02-11 | 1982-08-26 | Siemens AG, 1000 Berlin und 8000 München | Mikrorechnersystem zum raschen auffinden von kennzeichenbloecken |
JPS5831483A (ja) * | 1981-08-20 | 1983-02-24 | Oki Electric Ind Co Ltd | 編集メモリ付テレツクス装置における電文編集方法 |
US4485438A (en) * | 1982-06-28 | 1984-11-27 | Myrmo Erik R | High transfer rate between multi-processor units |
JPS59231659A (ja) * | 1983-06-14 | 1984-12-26 | Canon Inc | メモリ制御装置 |
JPS60134953A (ja) * | 1983-12-23 | 1985-07-18 | Hitachi Ltd | デ−タ転送制御装置 |
US4680703A (en) * | 1984-06-25 | 1987-07-14 | International Business Machines Corp. | Data processing system with reorganization of disk storage for improved paging |
US4821180A (en) * | 1985-02-25 | 1989-04-11 | Itt Corporation | Device interface controller for intercepting communication between a microcomputer and peripheral devices to control data transfers |
US5109524A (en) * | 1985-07-02 | 1992-04-28 | Vlsi Technology, Inc. | Digital processor with a four part data register for storing data before and after data conversion and data calculations |
EP0225191B1 (de) | 1985-11-28 | 1991-12-11 | Canon Kabushiki Kaisha | Dokumentverarbeitungssystem |
US4761737A (en) * | 1986-01-16 | 1988-08-02 | International Business Machines Corporation | Method to automatically increase the segment size of unix files in a page segmented virtual memory data processing system |
WO1991019255A1 (en) * | 1990-06-04 | 1991-12-12 | Maxtor Corporation | Apparatus and method for efficient organization of compressed data on a hard disk |
US5237675A (en) * | 1990-06-04 | 1993-08-17 | Maxtor Corporation | Apparatus and method for efficient organization of compressed data on a hard disk utilizing an estimated compression factor |
JP3190748B2 (ja) * | 1992-11-19 | 2001-07-23 | エヌイーシーマイクロシステム株式会社 | Ramスキャン装置 |
US8145604B2 (en) * | 2007-10-19 | 2012-03-27 | Apple Inc. | Method and apparatus for relocating an active five system journal |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US3311891A (en) * | 1963-08-21 | 1967-03-28 | Ibm | Recirculating memory device with gated inputs |
GB1467037A (en) * | 1973-07-18 | 1977-03-16 | Siemens Ag | Electronic data storage systems |
-
1977
- 1977-01-25 US US05/762,375 patent/US4197588A/en not_active Expired - Lifetime
- 1977-11-22 AU AU30839/77A patent/AU3083977A/en active Pending
- 1977-12-20 JP JP52152519A patent/JPS5942897B2/ja not_active Expired
- 1977-12-23 BE BE183823A patent/BE862295A/xx not_active IP Right Cessation
-
1978
- 1978-01-18 DE DE19782801982 patent/DE2801982A1/de not_active Withdrawn
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
DE2549147A1 (de) * | 1975-11-03 | 1977-05-05 | Itw Ateco Gmbh | Schraube |
Also Published As
Publication number | Publication date |
---|---|
JPS5942897B2 (ja) | 1984-10-18 |
US4197588A (en) | 1980-04-08 |
JPS5393731A (en) | 1978-08-17 |
AU3083977A (en) | 1979-05-31 |
BE862295A (fr) | 1978-04-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
DE2801981C2 (de) | ||
DE19740525C1 (de) | Verfahren zur Abspeicherung und Wiedergewinnung von Daten in einem Steuersystem, insbesondere in einem Kraftfahrzeug | |
DE2801982A1 (de) | Verfahren zum austausch von information zwischen einem externen speicher und einem arbeitsspeicher in einem textverarbeitungssystem | |
DE60032531T2 (de) | Aufzeichnungsverfahren, Verwaltungsverfahren und Aufzeichnungsgerät | |
DE3131341C2 (de) | ||
DE1499182C3 (de) | Datenspeichersystem | |
DE3390315T1 (de) | Anpassungsfähige Unterteilung eines Chachespeicherraums in Domainen | |
DE2551238C3 (de) | Datenkonzentrator | |
DE2523414B2 (de) | Hierarchische Speicheranordnung mit mehr als zwei Speicherstufen | |
DE2230987C2 (de) | ||
DE2331589A1 (de) | Datenverarbeitungsanordnung | |
DE2432608C3 (de) | Speicheranordnung fur eine Datenverarbeitungseinrichtung | |
DE19633648A1 (de) | Verfahren und Schaltungsanordnung zur Speicherung von Diktaten bei einem digitalen Diktiergerät | |
DE112011102139B4 (de) | Bandspeichereinheit und Schreibverfahren dafür | |
DE3804261C2 (de) | ||
DE2647574C2 (de) | Vorrichtung zum Verarbeiten von durch ein Anfangs- und Endzeichen begrenzten Datenfeldsegementen variabler Länge bei einem Umlaufspeicher | |
DE1524788A1 (de) | Schaltungsanordnung zur Erkennung und zum automatischen Ersetzen von schadhaften Speicherstellen in Datenspeichern | |
DE2221442A1 (de) | Assoziativspeicher | |
DE2801989A1 (de) | Verfahren zum steuern der abspeicherung eines textes in einem textverarbeitungssystem | |
DE2906923A1 (de) | Anordnung zur steuerung des zeilenabstandes und des spaltenformats in kraftgetriebenen, speichergesteuerten druckwerken, insbesondere schreibmaschinen | |
DE3637767C2 (de) | ||
DE69812257T2 (de) | Verfahren zur Datenübertragung zwischen Rechnern über ein Speichersubsystem | |
DE2519195C2 (de) | Assoziativspeicher | |
DE60035114T2 (de) | Plattenmediumverwaltungsverfahren | |
DE2717244C2 (de) |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
8141 | Disposal/no request for examination |