DE3743890C2 - - Google Patents

Info

Publication number
DE3743890C2
DE3743890C2 DE3743890A DE3743890A DE3743890C2 DE 3743890 C2 DE3743890 C2 DE 3743890C2 DE 3743890 A DE3743890 A DE 3743890A DE 3743890 A DE3743890 A DE 3743890A DE 3743890 C2 DE3743890 C2 DE 3743890C2
Authority
DE
Germany
Prior art keywords
entry
file
entries
drive
files
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired
Application number
DE3743890A
Other languages
English (en)
Other versions
DE3743890A1 (de
Inventor
Kenneth Walter Jr. Lighthouse Point Fla. Us Christopher
Barry Alan Feigenbaum
Jin Boca Raton Fla. Us Kim
Douglas Carleton Delray Beach Fla. Us Love
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.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
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 International Business Machines Corp filed Critical International Business Machines Corp
Publication of DE3743890A1 publication Critical patent/DE3743890A1/de
Application granted granted Critical
Publication of DE3743890C2 publication Critical patent/DE3743890C2/de
Granted 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/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0866Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/901Indexing; Data structures therefor; Storage structures
    • G06F16/9017Indexing; Data structures therefor; Storage structures using directory or table look-up
    • G06F16/902Indexing; Data structures therefor; Storage structures using directory or table look-up using more than one table in sequence, i.e. systems with three or more layers
    • YGENERAL 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
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99931Database or file accessing

Description

Die Erfindung bezieht sich auf ein Verfahren zum Zugriff zu Dateien nach dem Oberbegriff des Anspruchs 1.
Die Erfindung wurde entworfen als eine Verbesserung eines bekannten, kommerziell verfügbaren Systems von einem Typ, in welchem Hardware, wie z. B. ein IBM PC, unter einem Plattenbetriebssystem (Disk Operating System, DOS) betrieben wird, und in welchem Dateien auf Festplatten unter Verwendung von Inhaltsverzeichnissen mit Baumstruktur und Pfadnamen gespeichert werden. Die Information ist auf einer Platte gemäß eines vorbestimmten Musters von Zylindern und Sektoren gespeichert, wobei jeder Sektor eine vorbestimmte Zahl von Bytes enthält. Um zu einem gewünschten Sektor zuzugreifen, muß der Lese/Schreib-Kopf zunächst zu dem Zylinder bewegt werden, der den gewünschten Sektor enthält, und die Platte muß am Kopf vorbei bewegt werden, bis der gewünschte Sektor erreicht ist, dann wird der Sektor gelesen und sein Inhalt in einem Puffer gespeichert. Betrachtet man den gesamten Zeitaufwand, der notwendig ist, um auf Daten einer Platte zuzugreifen, dann sieht man, daß die hauptsächliche Verzögerung durch die physische Bewegung des Kopfes zustande kommt. Wo eine Anwendung eine große Eingabe/Ausgabe (E/A) Aktivität erfordert, ist es wünschenswert, die Kopfbewegung soweit wie möglich zu reduzieren.
Dateien werden auf der Platte in einer Gruppe (Cluster) oder in Gruppen von Sektoren gespeichert, wobei jedes Cluster eine vorbestimmte Zahl von Sektoren umfaßt. Jedes Cluster hat eine eindeutige, eigene Startadresse. Die Orte, an denen die Dateien auf einer Platte gespeichert sind, werden mittels einer Dateizuordnungstabelle (FAT, File Allocation Table), die ihrerseits auf der Platte gespeichert ist, registriert. Jede Position in der FAT ist einem anderen Cluster zugeordnet und enthält einen Eintrag, welcher besagt, daß keine weiteren Cluster mit einer Datei verbunden sind, oder welcher auf das nächste Cluster einer Datei zeigt. Kleine Dateien sind in einem einzigen Cluster enthalten. Lange Dateien sind in Clustern enthalten, die miteinander verkettet sind.
Dateien werden durch die Benutzung von Inhaltsverzeichnissen mit Baumstruktur aufgefunden. Jede Platte enthält ein Stamm(inhalts)verzeichnis, viele Unter(inhalts)verzeichnisse und eine Vielzahl von Dateien. Eine gegebene Datei mag sich am Ende eines Pfades, der durch das Stammverzeichnis und mehrere Unterverzeichnisse geht, befinden. Jedes Verzeichnis enthält Einträge über zusätzliche Verzeichnisse und Dateien. Eine spezielle Datei kann durch die Angabe von Laufwerk, Pfad und Dateinamen identifiziert werden; z. B. C:/Verz 1/Verz 2/Datei 1 identifiziert einen Dateinamen Datei 1, der sich in einem Verzeichnis Verz 2 befindet, welches ein Unterverzeichnis von Verz 1 ist und darin aufgeführt wird, wobei Verz 1 ein Unterverzeichnis vom Stammverzeichnis des Laufwerks C ist und darin aufgeführt wird. Die Struktur solcher baumartiger Inhaltsverzeichnisse ist z. B. in dem Buch "Data-Base Organisation" von J. Martin, 2. Auflage, 1977 beschrieben; zum schnellen Durchsuchen werden die Inhaltsverzeichnisse ganz oder abschnittsweise in den Hauptspeicher des angeschlossenen Rechners geladen. Nach dem Abschluß (Close) einer Datei sind diese Indices im Hauptspeicher nicht mehr verfügbar.
Wenn eine Datei eröffnet wird, ist es notwendig, auf das Laufwerk zuzugreifen und durch alle Verzeichnisse zu suchen, die in dem Pfad angegeben sind, um das Verzeichnis zu finden, das den Eintrag des Dateinamens enthält. In diesem letzteren Verzeichnis werden alle Einträge und Dateinamen gesucht, bis der gewünschte Dateiname gefunden ist. Wenn eine Datei vorher noch nicht eröffnet wurde, dann wird es keinen Eintrag geben und darum müssen Einträge gemacht werden, bevor eine Datei benutzt werden kann. Wenn die Datei vorher eröffnet wurde, dann ist im Eintrag des Verzeichnisses, in welchem der Dateiname aufgeführt ist, ein Index in der FAT eingetragen, der dem Cluster entspricht, bei dem die Datei beginnt. Während einer solchen Eröffnungsprozedur müssen physische E/A Aktivitäten vorgenommen werden, um auf das Stammverzeichnis und jedes Unterverzeichnis zuzugreifen, und um durch eine lange Liste von Dateinamen zu suchen. In einigen Anwendungen müssen dieselben Dateien mehrfach im Lauf eines gegebenen Programms eröffnet werden, wobei ein relativ großer Zeitverlust entstehen kann, weil jedes Eröffnen mit viel E/A Aktivität verbunden ist.
Die Erfindung, wie sie in den Ansprüchen gekennzeichnet ist, stellt sich daher die Aufgabe, ein Verfahren gemäß dem Oberbegriff von Anspruch 1 bereitzustellen, bei dem die mit dem Eröffnen einer Datei verbundene physische E/A Aktivität sehr reduziert wird und eine anfänglich bereits einmal eröffnete Datei später schnell eröffnet werden kann.
Diese Aufgabe wird durch die in Anspruch 1 genannten Maßnahmen gelöst. Die Unteransprüche betreffen weitere Ausgestaltungen der Erfindung. Kurz gesagt wird diese Aufgabe gelöst, indem in einem Cachebereich des Hauptspeichers die Geschichte der Dateibenutzungen erzeugt und aufrechterhalten (gespeichert) wird. Jedesmal wenn auf ein Verzeichnis oder eine Datei zugegriffen werden soll, dann wird diese Geschichte überprüft, und wenn sich die zum Eröffnen erforderliche Information im Cache befindet, dann wird die Geschichte direkt benutzt, ohne daß ein weiterer Suchprozeß über die Baumstruktur nach einem Verzeichnis oder Dateinamen notwendig wäre, der mit physischen E/A Aktivitäten verbunden sein könnte. Durch Festhalten in einem Cachebereich des Hauptspeichers wird auf solche Informationen mit den hohen Geschwindigkeiten des Hauptspeichers zugegriffen, und es sind damit nicht die niedrigeren Geschwindigkeiten der physischen E/A Aktivität eines Plattenzugriffs verbunden.
Es ist ein Vorteil des erfindungsgemäßen Verfahrens, daß der Zeitverlust beim Eröffnen einer früher schon einmal eröffneten Datei sehr klein ist. Es ist ein weiterer Vorteil, daß beim Eröffnen einer Datei nicht mehr durch alle Verzeichnisse eines Plattenlaufwerks und durch viele Dateinamen gesucht werden muß, wenn zu dieser Datei kurz vorher zugegriffen wurde. Diese Vorteile gelten insbesondere auch für verschachtelte Dateien.
Im folgenden Ausführungsbeispiel wird auf die Abb. 1 bis 9 Bezug genommen. Hierbei bedeuten:
Fig. 1 ein schematisches Diagramm, in welchem in allgemeiner Weise die Beziehung der Erfindung zur Umgebung oder zum Stand der Technik, in welchem das erfindungsgemäße Verfahren ausgeführt wird, dargestellt ist;
Fig. 2 ein Flußdiagramm der allgemeinen Schritte der gemäß einem Ausführungsbeispiel der Erfindung, die in Antwort auf eine Benutzeranforderung vorgenommen werden;
Fig. 3 ein Flußdiagramm für die Anzahl von verschiedenen Unterprozeduren aus den Hauptprozeduren;
Fig. 4 ein Flußdiagramm der Prozedur "Nachschlagen";
Fig. 5 ein Flußdiagramm der Prozedur "Einfügen";
Fig. 6 ein Flußdiagramm der Prozedur "Benutzeranforderung löschen";
Fig. 7 ein Flußdiagramm der Prozedur "Löschen";
Fig. 8 ein Flußdiagramm der Prozedur "Fortschreiben";
Fig. 9 ein Flußdiagramm, das zeigt, wie DOS verschiedene Prozeduren aufrufen kann.
Im folgenden wird auf Fig. 1 Bezug genommen. Ein Datenverarbeitungssystem 10, wie z. B. ein IBM PC AT, enthält einen Prozessor 12, der über eine Datensammelleitung (Bus) 14 mit einem Hauptspeicher 16 und einer Plattensteuereinheit 18 verbunden ist. Die Plattensteuereinheit ihrerseits ist mit einem Plattenlaufwerk 20 verbunden, welches eine Platte 22 enthält, die ein übliches Speichermedium zur Aufzeichnung von Informationsbits hat. Während des Betriebs des Systems 10 werden DOS Prozeduren 24 in den Hauptspeicher 16 geladen oder sind dort resident. Diese Prozeduren werden hauptsächlich dazu benutzt, um den Zugriff zu den Informationen auf der Platte 22 zu steuern. Zu DOS gehören Systempuffer 26, in welche oder über welche Informationen zwischen der Platte 22 und dem Hauptspeicher 16 in der üblichen Art und Weise übertragen werden.
Darüber hinaus wird ein Satz von Prozeduren mit Namen "Schnell-Eröffnen" 28, die dem Betrieb des Cache 30 "Schnell-Eröffnen" zugeordnet sind, in den Hauptspeicher 16 geladen und verbleiben resident in ihm. Die Details dieser Prozeduren werden weiter unten beschrieben. Wenn es mehr als ein Laufwerk in dem System gibt, dann gibt es eine entsprechende Anzahl von Caches 30, einen für jedes Laufwerk. Die Platte 22 selbst wird so formatiert, so daß sie eine Dateizuordnungstabelle (FAT) 32 und ein Stamminhaltsverzeichnis 34 enthält. In Fig. 1 ist auch ein Beispiel einer Dateienstruktur dargestellt, in welcher Datei 40 mit Namen Datei 1 in einem Unterverzeichnis 38 mit Namen Verz 2 enthalten ist, welches seinerseits ein Unterverzeichnis von Unterverzeichnis 36 mit Namen Verz 1 ist, das ein Unterverzeichnis des Stammverzeichnisses 34 ist. Ohne Installation der Prozedur Schnell- Eröffnen 28 arbeitet das System in der üblichen bekannten Art und Weise. Die Prozedur Schnell-Eröffnen 28 wird installiert, indem verschiedene Variable, die weiter unten beschrieben werden, initialisiert werden, und sie wird danach beendet, verbleibt aber resident im Hauptspeicher 16, um bei Bedarf für die Benutzung verfügbar zu sein.
Wie bereits erwähnt, gibt es einen Cache 30 für jedes Plattenlaufwerk im System. Jeder Cache enthält einen Informationsblock, der als Kopf des Laufwerkscaches bekannt ist. Ein solcher Kopf enthält verschiedene Felder, deren Bedeutung in Tabelle 1 angegeben ist.
Feld
Bedeutung
1
Kopf der LRU-Kette von diesem Laufwerk
2 Abstand (Offset) zum letzten Eintrag der LRU-Kette
3 Zeiger zum ersten Kind in der Kette der Einträge
4 Zeiger zum Kopf des nächsten Laufwerkscaches
5 Laufwerkskennzeichnung
Darüber hinaus sind in jedem Cache 30 eine Anzahl von Verzeichnis- und Dateieinträgen gespeichert, von denen jeder die Informationsfelder enthält, die in Tabelle 2 aufgeführt sind. Diese Einträge bilden eine verkettete Datenstruktur, die weiter unten ausführlicher beschrieben wird. Die Größe des Caches 30 wird durch die gewünschte Anzahl von Einträgen bestimmt. Diese Anzahl kann gewählt werden durch einen vom System bestimmten Standardwert oder durch den Benutzer, der die Anzahl
Feld
Bedeutung
1
Zeiger zum nächsten LRU-Eintrag
2 Zeiger zum nächsten MRU-Eintrag
3 Zeiger zum Kind
4 Zeiger zum Mitkind
5 Zeiger zum vorherigen Knoten
6 Verzeichnis/Datei-Information
der Einträge wählt. Normalerweise sollte die vom Benutzer gewählte Anzahl größer als die tiefste Verschachtelung der Pfadeinträge in diesem Laufwerk sein.
Wie man erkennt, werden die Einträge in einer Kette so verwaltet, daß, wenn Cache 30 mit Einträgen voll ist und ein neuer Eintrag hinzugefügt werden soll, dieser neue Eintrag den am längsten nicht mehr angesprochenen (Least Recently Used, LRU) Eintrag im Cache ersetzt. So werden die Felder 1 und 2 gebraucht, um die Einträge gemäß des LRU-, MRU- (Most Recently Used, zuletzt angesprochen) Konzepts zu verketten. Jeweils ein Eintrag wird für jede eröffnete Datei und für jedes Unterverzeichnis, das in dem Pfad zu dieser Datei liegt, hinzugefügt. Zwei Dateien oder Verzeichnisse, oder Kombinationen davon, im selben Unterverzeichnis werden als auf der gleichen Stufe befindlich betrachtet und als "Mitkinder" bezeichnet. Jeder Eintrag, der ein Unterverzeichnis eines anderen oder eine Datei ist, wird "Kind" genannt. Für Suchzwecke werden die Einträge in dem Cache durch die Zeigerfelder 3 bis 5 in einer Baumstruktur angeordnet. Feld 6 enthält jene Information, die zum üblichen Verzeichniseintrag gehört, der auf dem Plattenmedium enthalten ist, mit dem Unterschied, daß diese Information in das Feld 6 des Namenseintrages eingefügt wird und darum im Hauptspeicher resident ist. Auf solche Informationen kann deshalb schnell zugegriffen werden, wenn es notwendig ist, eine Datei zu eröffnen, für die ein entsprechender Eintrag im Cache 30 vorhanden ist. Die Informationen für eine Datei sind Dateiname und Erweiterung, Attribute, Zeit des letzten Schreibens, Datum des letzten Schreibens, das erste Cluster der Datei und die Dateigröße.
Im folgenden wird Bezug genommen auf Fig. 2. Wenn die Anwendung oder das Benutzerprogramm eine Datei eröffnen will, dann wird der bekannte DOS-Aufruf "Unterbrechung (Interrupt) 21 Hex" für die Eröffnung einer Datei benutzt. Ein solcher Aufruf geht zu DOS 24 und das Schnell-Eröffnen ist, wie vorhin angezeigt, so installiert, um eine solche Unterbrechung abzufangen und darauf zu reagieren. Die erste Entscheidung besteht natürlich darin, zu bestimmen, ob das Schnell-Eröffnen bereits installiert ist oder nicht; dies wird in Schritt 52 getan. Wenn nicht, dann schreitet die Prozedur voran, gemäß des im Stand der Technik bekannten Plattenzugriffschrittes 54, um jedes Unterverzeichnis und die Datei in der bekannten Weise aufzufinden; danach kehrt Schritt 56 zum Benutzer oder zur Anwendung zurück. Wenn das Schnell-Eröffnen installiert ist, dann schlägt Schritt 58 die Anforderung in einer Weise aus, die ausführlicher weiter unten beschrieben werden soll. Wenn es während des Prozesses einen Fehler gab, verzweigt Schritt 60 nach 54 und der Prozeß schreitet gemäß dem Stand der Technik voran. Wenn es keinen Fehler gab, bestimmt Schritt 62, ob der Pfad teilweise oder vollständig gefunden wurde. Wenn er nicht teilweise gefunden wurde, d. h. wenn der ganze Pfad und der Dateiname gefunden wurde, dann wird in Schritt 56 dieselbe Information an den Benutzer zurückgegeben wie durch den Schritt 54. Wenn die Information nur teilweise gefunden wurde, dann greift Schritt 64, beginnend bei der Stelle der gefundenen Information, auf die Platte zu, um die restlichen Teile des Pfades und den Dateinamen aufzufinden. Jeder Teil wird in Schritt 66 eingefügt, und Schritt 68 veranlaßt, daß der Prozeß ab Schritt 64 wiederholt wird, bis das Ende des Pfads oder der Dateiname erreicht wird, woraufhin die entsprechende Information an den Benutzer zurückgegeben wird.
Im folgenden wird Bezug genommen auf Fig. 3. Der zentrale Teil der Prozedur ist bekannt als "Hauptprozedur", und er wird benutzt, um zu entscheiden, welche von 4 Unterprozeduren benutzt werden sollen. Die Unterprozeduren sind bezeichnet als "Nachschlagen", "Einfügen", "Löschen", bzw. "Fortschreiben". Diese verschiedenen Prozeduren können z. B. dadurch aufgerufen werden, daß verschiedene, ihnen entsprechende Nummern in eines der Prozessorregister eingesetzt werden. In jedem Fall entscheidet Schritt 70, ob es eine Nachschlagen-Operation ist, die Schritte 72, 74 und 76 entscheiden in ähnlicher Weise, ob es eine Einfügen-, Löschen- bzw. Fortschreiben-Operation ist. Wenn keine dieser Operationen aufgerufen ist, wird eine Fehlermeldung zurückgegeben. Diese verschiedenen Unterprozeduren werden mit Bezug auf die ihnen entsprechenden verschiedenen Figuren beschrieben.
Im folgenden wird Bezug genommen auf Fig. 4. In der Prozedur "Nachschlagen" findet Schritt 78 zunächst denjenigen Cache 30, der dem angesprochenen Laufwerk zugeordnet ist. Schritt 80 setzt die LRU-Kette aus dem Vor-LRU-Stapelspeicher. Dieser Stapelspeicher ist ein logischer Stapelspeicher, der benutzt wird, um das entsprechend einem Baum strukturierte Unterverzeichnis aufzunehmen und dabei die LRU-Kette aufrechtzuerhalten.
Als nächstes bildet Schritt 82 den Startpunkt einer Schleife, in welcher der jetzige (current, gerade angesprochene) Knoten ein Zeiger ist, welcher anfangs so gesetzt wird, daß er auf den Kopf des Laufwerkscaches zeigt, und welcher danach so gesetzt wird, daß er auf den Eintrag des jetzigen Knotens zeigt. Die Variable "jetziges Mitkind" wird auf 0 gesetzt, und dann wird das Verzeichnis oder der Dateinamen gelesen. Das Ende des Pfades oder der Dateiname wird dadurch bestimmt, daß der Ascii-Wert 0 gefunden wird, und Schritt 84 entscheidet dann, ob das Ende erreicht wurde. Wenn es nicht erreicht wurde, was gewöhnlich der Fall sein wird, wenn eine Suche zum ersten Mal beginnt, dann findet Schritt 86 üblicherweise einen Eintrag des Kindes des jetzigen Knotens, wobei der Zeiger zum Kind des jetzigen Eintrags benutzt wird. Schritt 88 schaut, ob es keine weiteren Kinder gibt, d. h. ob der Eintrag das letzte Kind in der Folge ist. Diese Tatsache würde durch eine -1 in dem Feld des Kindes angezeigt. Der gewünschte Name wird dann mit dem Dateinamen des Kindes verglichen. Wenn ein solcher Vergleich, als Resultat des Schrittes 90, eine Übereinstimmung feststellt, dann erzeugt Schritt 92 den Vor-LRU-Stapelspeicher, speichert die Adresse des jetzigen Knotens im Stapelspeicher und verzweigt nach Schritt 82 zurück. Diese Schritte laufen so oft ab, bis der Dateiname gefunden ist, wonach das Ja (positives Ergebnis) aus Schritt 84 die Verzweigung nach Schritt 94 verursacht und der gefundene Datensatz oder die gefundene Information an DOS zurückgegeben wird. Wenn Schritt 90 zu einem negativen Ergebnis führt, dann schaut Schritt 98 nach dem Zeiger für das Feld des Mitkindes und eine Schleife, die die Schritte 96, 90 und 98 umfaßt, würde so oft durchlaufen, bis keine weiteren Mitkinder mehr übrig sind, woraufhin dann Schritt 94 zu DOS zurückkehrt. Bei der Rückkehr zu DOS setzt die Prozedur "Schnell-Eröffnen" den Zeiger auf das Verzeichnis oder den Dateinamen, das bzw. der in der von DOS bereitgestellten Zeichenfolge Pfad/Dateinamen gefunden wurde. DOS seinerseits untersucht den Zeiger, um zu bestimmen, ober der ganze Pfad gefunden wurde, oder nur ein Teil oder gar nichts. Wenn es weitere Mitkinder gibt, dann setzt Schritt 96 den Zeiger des jetzigen Knotens auf das jetzige Mitkind.
Im folgenden wird Bezug genommen auf Fig. 5. Der Zweck der Prozedur "Einfügen" ist es, Information über das Verzeichnis oder die Datei als einen Eintrag in den Cache einzufügen, wobei von der Information über den jetzigen Knoten und das jetzige Mitkind ausgegangen wird. Schritt 102 macht einen Eintrag der Namensdaten aus der Eingabe und Schritt 104 holt den nächsten verfügbaren Eintrag. Solange der Cache nicht voll ist, wird ein neuer Eintrag einfach an irgend eine freie Stelle gesetzt werden. Sobald der Cache gefüllt ist, wird der in der LRU-Liste am längsten nicht mehr angesprochene Eintrag der nächste verfügbare Eintrag sein, der durch den neueren ersetzt werden soll. Schritt 106 löscht den Vor-LRU-Stapelspeicher, sofern etwas darin ist. Wenn der jetzige Zeiger zum Mitkind gleich 0 ist, dann wird der neue Eintrag durch Schritt 110 als ein Kind unter dem jetzigen Knoten installiert und Schritt 112 verzeichnet diesen Knoten in dem Vor-LRU-Stapelspeicher. Wenn ein jetziges Mitkind in Schritt 108 ungleich 0 ist, dann installiert Schritt 114 den neuen Eintrag als ein Mitkind des jetzigen Knotens.
Im folgenden wird Bezug genommen auf die Fig. 6 und 7. Wenn eine Anwendung oder ein Benutzer verlangt, daß eine bestimmte Datei gelöscht werde, dann löscht eine Prozedur nicht nur die Datei auf der Platte in der üblichen Art und Weise, sondern löscht auch alle entsprechenden Einträge im Cache. Als Antwort auf die Benutzeranforderung in Schritt 116 geht so der Prozeß über DOS 24, und Schritt 118 entscheidet, ob die Prozedur "Schnell-Eröffnen" installiert wurde. Wenn nicht, dann greift Schritt 122 auf die Platte zu und löscht die Datei, wonach Schritt 124 zum Benutzer zurückkehrt. Wenn die Prozedur "Schnell-Eröffnen" installiert ist, dann wird die Anforderung "Löschen" 120 gegeben. Infolge einer solchen Anforderung schlägt Schritt 126 im Cache nach, um festzustellen, ob es einen entsprechenden Eintrag gibt oder nicht. Wenn kein Eintrag gefunden wird, wird die Prozedur einfach verlassen. Wenn der Eintrag gefunden wird, dann wird er aus der LRU-Kette mit Baumstruktur von Schritt 132 entfernt, und dieser spezielle Eintrag wird an die oberste Stelle der LRU-Kette gesetzt, wodurch er für die Benutzung (Ersetzung) durch einen neuen Eintrag verfügbar wird. Der Eintrag des Dateinamens wird zuerst gelöscht und anschließend alle Eltern-Verzeichnisse, die keine Zeiger zu Kindern oder Mitkindern enthalten.
Im folgenden wird Bezug genommen auf die Fig. 8 und 9. Es gibt gewisse Funktionen, die in der Prozedur "Schnell-Eröffnen" enthalten sind und die direkt durch DOS aufgerufen werden können, um gewisse Funktionen auszuführen, die die von DOS bereitgestellten Funktionen unterstützen. Die DOS-Anforderungen betreffen die Funktionen, eine Datei abzuschließen, Null-Bytes in eine Datei zu schreiben oder einen Knoten zu erzeugen.
Die Schritte 142, 144 und 146 bestimmen dementsprechend, ob solche Funktionen angefordert sind und verzweigen dann zu den Schritten 134 bis 140 der Prozedur "Fortschreiben". Die positiven Ergebnisse der Schritte 136 bis 140 schreiben entsprechend die Verzeichniseinträge und die Anzahl der Cluster, die mit einer Datei verbunden sind, fort, bzw. löschen einen Eintrag.
In der vorangegangenen Diskussion wurde der Vor-LRU-Stapelspeicher erwähnt, und nun soll seine Beziehung zum LRU-Stapelspeicher erklärt werden. Beide Stapelspeicher schließen die Benutzung von LRU- und MRU-Zeigern in den Einträgen ein. Wenn der Prozeß einen Pfad verfolgt, dann geht er vom Stammverzeichnis aus durch alle Unterverzeichnisse, bis er den Dateinamen erreicht; ein Vor-LRU-Stapelspeicher wird in Übereinstimmung mit der Ordnung erzeugt, in welcher auf die verschiedenen Knoten zugegriffen wird. So ist z. B. bei einer Datei, die durch C:/Verz 1/Verz 2/Datei 1 spezifiziert ist, die Ordnung der Einträge: das Stammverzeichnis, Verz 1, Verz 2 und Datei 1. Diese Reihenfolge stellt deswegen ein Problem dar, weil das Stammverzeichnis den am längsten nicht mehr angesprochenen Eintrag darstellt, und sollte ein solcher Eintrag zum Ersetzt-werden freigegeben werden, dann würde ein Zugriff auf die übrigen Einträge abgeschnitten werden. Dieses Problem wird vermieden durch die Benutzung des Vor-LRU-Stapelspeichers und, sobald der Pfad aufgestellt ist, durch Neuordnung der Einträge, um ein LRU-Stapelspeicher zu erzeugen, in welchem der Dateiname als der am längsten nicht mehr angesprochene Eintrag erscheint, wodurch bei einer Ersetzung zunächst der Dateiname und nicht irgend ein Eltern-Verzeichnis ersetzt wird.

Claims (6)

1. Verfahren zum Zugriff zu Dateien in einem Datenverarbeitungssystem (10) mit mindestens einem Laufwerk (20) für ein externes Speichermedium (22), vorzugsweise einer Speicherplatte, auf dem die Dateien (40) und ein Inhaltsverzeichnis mit Baumstruktur für Datei- und Unterverzeichnisnamen (24, 36, 38) gespeichert sind, und mit einem Auszug des Inhaltsverzeichnisses im Hauptspeicher (16) zum schnelleren Aufsuchen der Einträge des Inhaltsverzeichnisses, dadurch gekennzeichnet, daß der Auszug des Inhaltsverzeichnisses bei jeder Anforderung zum Öffnen einer Datei (Open) auf den gewünschten Eintrag durchsucht wird und, falls der gewünschte Eintrag dort nicht vorhanden ist, aus dem Inhaltsverzeichnis des externen Speichers eingetragen wird, wobei gegebenenfalls ein anderer Eintrag überschrieben wird.
2. Verfahren nach Anspruch 1, dadurch gekennzeichnet,
daß im Hauptspeicher für jedes Laufwerk ein Bereich vorgebbarer Größe vorgesehen wird, der für eine feste Anzahl von verketteten Einträgen gleichen Formats für Namen von Dateien bzw. von Unterverzeichnissen vorgesehen ist,
und daß neue Einträge nach dem Prinzip des LRU verwaltet werden.
3. Verfahren nach Anspruch 2, dadurch gekennzeichnet, daß die Einträge in einem LRU-Stapelspeicher verwaltet und in einem Vor-LRU-Stapelspeicher vorbereitet werden.
4. Verfahren nach einem der Ansprüche 1 bis 3, dadurch gekennzeichnet, daß jeder Eintrag Zeiger enthält, von denen je einer auf den dem betreffenden Eintrag in der Baumstruktur übergeordneter Eintrag (Eltern), einer auf einen in der Baumstruktur gleichrangigen Eintrag (Mitkind) und einer auf einen dem betreffenden Eintrag in der Baumstruktur untergeordneten Eintrag (Kind) zeigt.
5. Verfahren nach einem der vorangehenden Ansprüche, dadurch gekennzeichnet, daß beim Eröffnen einer Datei möglicherweise fehlende weitere Informationen über den vollständigen Pfad des Datei-Inhaltsverzeichnisses aus dem externen Speichermedium gelesen werden.
6. Verfahren nach einem der Ansprüche 2 bis 5, dadurch gekennzeichnet, daß in jedem Hauptspeicherbereich ein Laufwerkskopf zur Identifikation des zugeordneten Laufwerkes enthalten ist, und daß die Laufwerkköpfe über Zeiger miteinander verkettet sind.
DE19873743890 1987-03-30 1987-12-23 Verfahren zum schnellen eroeffnen von plattendateien Granted DE3743890A1 (de)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US07/032,210 US5008820A (en) 1987-03-30 1987-03-30 Method of rapidly opening disk files identified by path names

Publications (2)

Publication Number Publication Date
DE3743890A1 DE3743890A1 (de) 1988-10-27
DE3743890C2 true DE3743890C2 (de) 1989-03-23

Family

ID=21863700

Family Applications (2)

Application Number Title Priority Date Filing Date
DE8787118540T Expired - Fee Related DE3780807T2 (de) 1987-03-30 1987-12-15 Verfahren zum schnellen oeffnen von mit pfadnamen identifizierten plattendateien.
DE19873743890 Granted DE3743890A1 (de) 1987-03-30 1987-12-23 Verfahren zum schnellen eroeffnen von plattendateien

Family Applications Before (1)

Application Number Title Priority Date Filing Date
DE8787118540T Expired - Fee Related DE3780807T2 (de) 1987-03-30 1987-12-15 Verfahren zum schnellen oeffnen von mit pfadnamen identifizierten plattendateien.

Country Status (19)

Country Link
US (1) US5008820A (de)
EP (1) EP0284664B1 (de)
JP (1) JPS63244243A (de)
KR (1) KR940005775B1 (de)
CN (1) CN1020014C (de)
AT (1) ATE78943T1 (de)
BE (1) BE1001068A4 (de)
BR (1) BR8801438A (de)
CA (1) CA1303747C (de)
DE (2) DE3780807T2 (de)
ES (1) ES2033786T3 (de)
FR (1) FR2613505A1 (de)
GB (1) GB2204161B (de)
GR (1) GR3005888T3 (de)
HK (1) HK33892A (de)
IT (1) IT8819948A0 (de)
MY (1) MY103353A (de)
PH (1) PH27427A (de)
SG (1) SG5292G (de)

Families Citing this family (39)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5649205A (en) * 1989-07-07 1997-07-15 Martins; Augusto Baronio File retrieval system
US5276874A (en) * 1989-08-11 1994-01-04 Digital Equipment Corporation Method for creating a directory tree in main memory using an index file in secondary memory
US5371885A (en) * 1989-08-29 1994-12-06 Microsoft Corporation High performance file system
US5150473A (en) * 1990-01-16 1992-09-22 Dantz Development Corporation Data storage format for addressable or sequential memory media
JPH03296841A (ja) * 1990-04-16 1991-12-27 Nec Corp キャッシュ制御方式
JP2746734B2 (ja) * 1990-06-08 1998-05-06 富士通株式会社 ストリームファイルに対してのアクセス処理方式
EP0463874A2 (de) * 1990-06-29 1992-01-02 Digital Equipment Corporation Cache-Anordnung für ein Dateisystem in einem digitalen Datenverarbeitungssystem
US5241672A (en) * 1991-04-01 1993-08-31 Xerox Corporation System using the storage level of file updates in nonvolatile memory to trigger saving of RAM to disk and using the file updates to reboot after crash
JPH06175914A (ja) * 1992-09-21 1994-06-24 Eastman Kodak Co メモリ管理装置
US5422762A (en) * 1992-09-30 1995-06-06 Hewlett-Packard Company Method and apparatus for optimizing disk performance by locating a file directory on a middle track and distributing the file allocation tables close to clusters referenced in the tables
US5701463A (en) * 1994-09-09 1997-12-23 Cheyenne Advanced Technology Limited Method of replacing the identity of a file with another as part of a file open request in a computer system
WO1996008772A1 (en) * 1994-09-14 1996-03-21 Micropolis Corporation Method of pre-caching data utilizing thread lists and multimedia editing system using such pre-caching
US5590320A (en) * 1994-09-14 1996-12-31 Smart Storage, Inc. Computer file directory system
US5644736A (en) * 1995-05-25 1997-07-01 International Business Machines Corporation System and method for selecting components of a hierarchical file structure
US5765192A (en) * 1996-05-01 1998-06-09 Sun Microsystems, Inc. Method and computer program product to reuse directory search handles
US5819298A (en) * 1996-06-24 1998-10-06 Sun Microsystems, Inc. File allocation tables with holes
US5924116A (en) * 1997-04-02 1999-07-13 International Business Machines Corporation Collaborative caching of a requested object by a lower level node as a function of the caching status of the object at a higher level node
US6094706A (en) * 1998-03-02 2000-07-25 International Business Machines Corporation Caching in a data processing system using the pigeon hole principle
US6151595A (en) * 1998-04-17 2000-11-21 Xerox Corporation Methods for interactive visualization of spreading activation using time tubes and disk trees
US6654761B2 (en) 1998-07-29 2003-11-25 Inxight Software, Inc. Controlling which part of data defining a node-link structure is in memory
US6216199B1 (en) * 1999-08-04 2001-04-10 Lsi Logic Corporation Hardware mechanism for managing cache structures in a data storage system
ID30033A (id) * 1999-11-10 2001-11-01 Koninkl Philips Electronics Nv Pembawa rekaman, peranti pemutar ulang pembawa rekaman, metoda pemutaran ulang pembawa rekaman, peranti untuk merekam pembawa rekaman dan metoda untuk merekam pembawa rekaman
DE19960114A1 (de) * 1999-12-08 2001-06-13 Heidenhain Gmbh Dr Johannes Verfahren zum Speichern von Daten in einer Datei eines Datenspeichersystems
US6643754B1 (en) * 2000-02-15 2003-11-04 International Business Machines Corporation System and method for dynamically allocating computer memory
US6529897B1 (en) 2000-03-31 2003-03-04 International Business Machines Corporation Method and system for testing filter rules using caching and a tree structure
US6928466B1 (en) 2000-09-28 2005-08-09 Emc Corporation Method and system for identifying memory component identifiers associated with data
TWI230858B (en) * 2000-12-12 2005-04-11 Matsushita Electric Ind Co Ltd File management method, content recording/playback apparatus and content recording program
DE10162046A1 (de) * 2001-12-17 2003-06-26 Thomson Brandt Gmbh Wiedergabegerät mit einem Zwischenspeicher zum Verringern der mittleren Zugriffszeit auf einen Informationsträger
EP1400970A1 (de) * 2002-09-10 2004-03-24 Siemens Aktiengesellschaft Verfahren und Gerät zur Steuerung einer Speicheranordnung für Kraftfahrzeuge
US7287046B2 (en) * 2002-09-30 2007-10-23 Emc Corporation Method and system of compacting sparse directories in a file system
JP4543363B2 (ja) * 2002-12-18 2010-09-15 ネッツエスアイ東洋株式会社 コンピュータのセキュリティシステム
KR100962763B1 (ko) * 2003-01-20 2010-06-10 엘지전자 주식회사 데이터 방송 파일 시스템 처리 방법
US7873685B2 (en) * 2004-05-13 2011-01-18 Pixar System and method for flexible path handling
AU2005263101B2 (en) * 2004-07-12 2008-05-15 Samsung Electronics Co., Ltd. Method and apparatus for searching rights objects stored in portable storage device using object location data
JP4659537B2 (ja) * 2005-07-05 2011-03-30 株式会社日立製作所 ファイル提供方法、ストレージ装置及びファイル提供プログラム
KR101130090B1 (ko) * 2010-04-05 2012-03-28 주식회사 안철수연구소 단말 장치 및 상기 단말 장치의 파일 배포처 확인 방법
CN102279734A (zh) * 2010-06-12 2011-12-14 环旭电子股份有限公司 自动映像数据的嵌入式系统及其方法
AT510716B1 (de) * 2011-04-08 2012-06-15 Albrecht Dipl Ing Kadlec Reiner allokations-cache für echtzeitsysteme
CN111054082B (zh) * 2019-11-29 2023-10-13 珠海金山数字网络科技有限公司 Unity资源数据集编码的方法

Family Cites Families (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3905023A (en) * 1973-08-15 1975-09-09 Burroughs Corp Large scale multi-level information processing system employing improved failsaft techniques
GB1504112A (en) * 1976-03-17 1978-03-15 Ibm Interactive enquiry systems
US4277826A (en) * 1978-10-23 1981-07-07 Collins Robert W Synchronizing mechanism for page replacement control
US4215402A (en) * 1978-10-23 1980-07-29 International Business Machines Corporation Hash index table hash generator apparatus
US4598357A (en) * 1980-11-14 1986-07-01 Sperry Corporation Cache/disk subsystem with file number for recovery of cached data
US4489378A (en) * 1981-06-05 1984-12-18 International Business Machines Corporation Automatic adjustment of the quantity of prefetch data in a disk cache operation
US4533995A (en) * 1981-08-03 1985-08-06 International Business Machines Corporation Method and system for handling sequential data in a hierarchical store
US4530055A (en) * 1982-03-03 1985-07-16 Sperry Corporation Hierarchical memory system with variable regulation and priority of writeback from cache memory to bulk memory
JPS6058492B2 (ja) * 1982-06-26 1985-12-20 富士通株式会社 デ−タベ−ス検索方式
JP2539347B2 (ja) * 1982-09-13 1996-10-02 株式会社日立製作所 フアイル管理方法
US4571674A (en) * 1982-09-27 1986-02-18 International Business Machines Corporation Peripheral storage system having multiple data transfer rates
DE3381124D1 (de) * 1983-02-03 1990-02-22 Ibm Dateiorganisation mit schluesselzugriff.
JPS59153251A (ja) * 1983-02-18 1984-09-01 Toshiba Corp デイスクキヤツシユシステム
JPS59163659A (ja) * 1983-03-07 1984-09-14 インタ−ナショナル ビジネス マシ−ンズ コ−ポレ−ション ワ−ド・プロセシング・システムにおけるデ−タ・セツトのアクセス方式
US4571700A (en) * 1983-06-16 1986-02-18 International Business Machines Corporation Page indexing system for accessing sequentially stored data representing a multi-page document
US4603380A (en) * 1983-07-01 1986-07-29 International Business Machines Corporation DASD cache block staging
JPS60254325A (ja) * 1984-05-31 1985-12-16 Fujitsu Ltd デ−タ検索キ−制御方式
JPS61175838A (ja) * 1985-01-31 1986-08-07 Ricoh Co Ltd デ−タ処理方式
JPS61228538A (ja) * 1985-04-01 1986-10-11 Nec Corp フアイル管理方式
JPS61271547A (ja) * 1985-05-27 1986-12-01 Mitsubishi Electric Corp デイスクフアイルアクセス方式
US4835686A (en) * 1985-05-29 1989-05-30 Kabushiki Kaisha Toshiba Cache system adopting an LRU system, and magnetic disk controller incorporating it
US4779189A (en) * 1985-06-28 1988-10-18 International Business Machines Corporation Peripheral subsystem initialization method and apparatus
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
US4827462A (en) * 1987-03-26 1989-05-02 International Business Machines Corporation Modular data storage directories for large-capacity data storage units

Also Published As

Publication number Publication date
SG5292G (en) 1992-03-20
IT8819948A0 (it) 1988-03-25
HK33892A (en) 1992-05-15
EP0284664B1 (de) 1992-07-29
BE1001068A4 (fr) 1989-06-27
BR8801438A (pt) 1988-11-01
JPS63244243A (ja) 1988-10-11
MY103353A (en) 1993-06-30
ATE78943T1 (de) 1992-08-15
ES2033786T3 (es) 1993-04-01
FR2613505A1 (fr) 1988-10-07
US5008820A (en) 1991-04-16
KR880011665A (ko) 1988-10-29
DE3743890A1 (de) 1988-10-27
DE3780807D1 (de) 1992-09-03
CN88100793A (zh) 1988-10-19
GR3005888T3 (de) 1993-06-07
CN1020014C (zh) 1993-03-03
GB8728924D0 (en) 1988-01-27
EP0284664A3 (en) 1989-03-15
KR940005775B1 (ko) 1994-06-23
GB2204161A (en) 1988-11-02
EP0284664A2 (de) 1988-10-05
CA1303747C (en) 1992-06-16
DE3780807T2 (de) 1993-03-11
PH27427A (en) 1993-06-21
JPH0519175B2 (de) 1993-03-16
GB2204161B (en) 1991-09-18

Similar Documents

Publication Publication Date Title
DE3743890C2 (de)
DE69333906T2 (de) Verfahren und System für die Dateienverwaltung mit einem schnell löschbaren, programmierbaren ROM
DE69926227T2 (de) System und verfahren zum verbessern von programmstartzeit
DE102013215535B4 (de) Sicherung oder wiederherstellung von daten mit hilfe eines hauptspeichers und nichtflüchtiger speichermedien
DE60035151T2 (de) Hardware-Anordnung zur Verwaltung von Cachespeicherstrukturen in einem Datenspeichersystem
DE69631749T2 (de) Speichergerät und Verfahren zur gemeinsamen Benutzung von Daten
DE60035432T2 (de) System zur verwaltung der rdbm fragmentierungen
DE112020000749T5 (de) Indexerstellung für sich entwickelnde umfangreiche Datensätze in Hybriden Transaktions- und Analysenverarbeitungssystemen mit mehreren Mastern
DE112018004178T5 (de) Mehrstufige speicherung in einem verteilten dateisystem
EP3084638A1 (de) Posix-kompatibles dateisystem, verfahren zum erzeugen einer dateiliste und speichervorrichtung
DE112017005868T5 (de) Verwaltung von e/a-abläufen für datenobjekte in einem speichersystem
DE60030872T2 (de) Verfahren und anordnung um atomische aktualisierungen durchzuführen durch verwendung eines logischen flaschspeichergerätes
DE60112257T2 (de) Virtuelles Dateisystem für dynamisch erzeugte Webseiten
DE19961499A1 (de) Caching von Objekten in Platten-gestützten Datenbanken
DE10162495A1 (de) Erweiterbare Datenbank
DE102014116031A1 (de) SWAT-Befehl und API für atomare Auslagerung und Trimmen von LBAs
DE4218025A1 (de) Datenspeicherverwaltungssystem und verfahren mit speicherzuordnung auf der basis nachgefragter dienstklassen
DE10238566A1 (de) Fenster-basierendes Flashspeicher-Speichersystem und Management und Zugriffsverfahren darauf
DE102004056701A1 (de) Verfahren und Einrichtung zur Erzeugung einer inhaltsbezogenen Adresse zum zeitnahen Hinweis auf in ein Speichersystem eingeschriebene Dateneinheiten
DE602004007925T2 (de) Verwalten einer beziehung zwischen einem zielvolumen und einem quellenvolumen
DE602004013397T2 (de) Verfahren und Apparat zum Verschieben von Daten zwischen Speichersystemen
DE102016001035A1 (de) Verfahren und Vorrichtung zum Aufbau einer Online-Aktualisierung von grossen Audio-Fingerabdruck-Datenbanken in Echtzeit
DE19645128C2 (de) Verfahren zum Verwalten von Dokumenten sowie Gerätetreiber zur Durchführung des Verfahrens
EP1276056B1 (de) Verfahren zum Verwalten einer Datenbank
DE3518818A1 (de) Datenverarbeitungsvorrichtung und verfahren und vorrichtung zur umsetzung von datenelementen

Legal Events

Date Code Title Description
OP8 Request for examination as to paragraph 44 patent law
D2 Grant after examination
8364 No opposition during term of opposition
8339 Ceased/non-payment of the annual fee