DE69926227T2 - System und verfahren zum verbessern von programmstartzeit - Google Patents

System und verfahren zum verbessern von programmstartzeit Download PDF

Info

Publication number
DE69926227T2
DE69926227T2 DE69926227T DE69926227T DE69926227T2 DE 69926227 T2 DE69926227 T2 DE 69926227T2 DE 69926227 T DE69926227 T DE 69926227T DE 69926227 T DE69926227 T DE 69926227T DE 69926227 T2 DE69926227 T2 DE 69926227T2
Authority
DE
Germany
Prior art keywords
disk
files
file
clusters
list
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 - Lifetime
Application number
DE69926227T
Other languages
English (en)
Other versions
DE69926227D1 (de
Inventor
Edward James WALSH
Aaron Benjamin RUDIAK-GOULD
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.)
Microsoft Corp
Original Assignee
Microsoft 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 Microsoft Corp filed Critical Microsoft Corp
Application granted granted Critical
Publication of DE69926227D1 publication Critical patent/DE69926227D1/de
Publication of DE69926227T2 publication Critical patent/DE69926227T2/de
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3466Performance evaluation by tracing or monitoring
    • G06F11/3485Performance evaluation by tracing or monitoring for I/O devices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0604Improving or facilitating administration, e.g. storage management
    • G06F3/0607Improving or facilitating administration, e.g. storage management by facilitating the process of upgrading existing storage systems, e.g. for improving compatibility between host and storage device
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0629Configuration or reconfiguration of storage systems
    • G06F3/0632Configuration or reconfiguration of storage systems by initialisation or re-initialisation of storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0674Disk device
    • G06F3/0676Magnetic disk device
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/61Installation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Human Computer Interaction (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Stored Programmes (AREA)

Description

  • TECHNISCHES GEBIET
  • Die vorliegende Erfindung betrifft die Speicherung von Daten auf einem Festplattenlaufwerk und betrifft besonders die Speicherung von Daten in einer Weise, die die Zeit verringert, die benötigt wird, um während des Programmstarts und anderer plattenintensiver Vorgänge Daten von einer Platte zu lesen.
  • HINTERGRUND DER ERFINDUNG
  • Im Kontext von Magnetplattenlaufwerken, die zum Speichern von Computerdaten verwendet werden, wird der Begriff Fragmentierung benutzt, um die nicht zusammenhängende Anordnung von Dateien auf einer Plattenpartition oder logischen Platte zu bezeichnen. Fragmentierte Dateien können sich auf Teile der gleichen Plattendatei, die über verschiedene Bereiche der logischen Platte verstreut sind, oder auf das Zerstreuen ganzer Dateien beziehen, sodass zwischen Dateien unbenutzter Platz vorhanden ist. Fragmentierung findet oft statt, wenn alte Dateien aus der logischen Platte gelöscht und neue Dateien hinzugefügt werden. Wenn Dateien gelöscht werden und der vorher benutzte Platz verfügbar wird, schreibt das Betriebssystem des Computers neue Dateien in die freien Bereiche der logischen Platte. Wenn aber eine neue Datei zu groß ist, um in einen freien Bereich zu passen, kann das Betriebssystem die Datei fragmentieren, indem Teile der Datei in mehreren freien Bereichen gespeichert werden, die über die ganze logische Platte verstreut sein können. Desgleichen kann eine bestehende Datei fragmentiert werden, wenn ihre Größe über die Größe des zusammenhängenden freien Platzes, der an den Platz grenzt, in dem die Datei gespeichert ist, hinaus zunimmt. Das Betriebssystem unterhält eine Aufzeichnung darüber, wo jeder Teil einer Datei gespeichert ist, sodass die Datei in der richtigen Reihenfolge zurückgewonnen werden kann, wenn die Datei von der logischen Platte gelesen wird.
  • In Situationen, wo eine Datei "linear" von Anfang bis Ende gelesen wird, verlangsamt Fragmentierung den Plattenzugriff und verschlechtert die Gesamtleistung von Plattenoperationen. Dienstprogramme stehen zur Verfügung, um die Dateien auf fragmentierten Platten zu defragmentieren. Zusätzlich zum Neuordnen der Dateien, sodass jede Datei in zusammenhängenden Abschnitten der Platte gespeichert ist, ordnen diese Programme die Dateien gewöhnlich so an, dass sie alle am Anfang der logischen Platte gespeichert sind. Dies konsolidiert freien Platz am Ende der Platte und wird für nützlich gehalten, weil das Betriebssystem nicht so lang suchen muss, um genug verfügbaren Platz zum Speichern neuer Dateien zu lokalisieren, und es wahrscheinlicher ist, dass die neuen Daten in zusammenhängenden Clustern (d.h. unfragmentiert) und nicht in zahlreichen kleineren, über die ganze Platte verstreuten Gruppen von Clustern gespeichert werden.
  • Defragmentierung ist vorteilhaft und verbessert die Leistung, wenn die unfragmentierten Dateien linear von Anfang bis Ende gelesen werden. Wenn jedoch bestimmte Operationen durchgeführt werden, gewinnt der Computer Blöcke von Daten aus mehreren verschiedenen Dateien in irgendeiner vorhersagbaren Folge zurück, während oft nur wenige Blöcke aus jeder Datei gelesen werden. Zum Beispiel kann das Starten eines Textverarbeitungsprogramms zur Folge haben, dass ein erster Teil des Hauptausführbaren, ein Abschnitt einer dynamisch gelinkten Bibliothek, einer zweiter Teil der Hauptausführbaren, eine Präferenz-Datei usw. geladen werden. Eine ähnliche Plattenaktivität findet statt, wenn bestimmte Programmbefehle (z.B. "Datei-Öffen") gewählt werden. Diese Arten von plattenintensiven Operationen können eine Menge an Plattenkopfbewegungen von einem physikalischen Cluster zu einem anderen zur Folge haben. Weil moderne Mikroprozessoren im Vergleich zu der mittleren Suchzeit eines Plattenlaufwerks so schnell sind und viele verschiedene Dateien von der Platte gelesen werden müssen, um ein typisches Programm zu starten, wird ein großer Teil der zum Starten eines Programms benötigten Zeit damit zugebracht, dass der Mikroprozessor leer läuft und daruf wartet, dass sich die Plattenköpfe von einem Cluster zu einem anderen bewegen.
  • Basierend auf diesen Beobachtungen ist es beim Durchführen eines plattenintensiven Vorgangs (z.B. Starten eines Programms oder Starten eines mit einigen Befehlen verbundenen Codes) vorteilhaft, die während des plattenintensiven Vorgangs benutzten Datenblöcke auf der logischen Plattenpartition (und somit auf der physikalischen Platte) in der Reihenfolge anzuordnen, in der auf sie während dieses Vorgangs zugegriffen wird. Dies hätte zur Folge, dass die Programmdateien druch Design "fragmentiert" werden, und würde die Leistung verbessern, indem die Zahl von nicht sequenziellen Plattenzugriffen, die nötigt sind, um die erforderlichen Daten von der logischen Platte zu laden, reduziert wird.
  • Der Stand der Technik schreibt diese Art Restrukturierung oder Fragmentierung von Anwendungsdateien, um den Anwendungsstartprozess zu optimieren. Zum Beispiel beschreibt IBM Technical Disclosure Bulletin Seriennumer TDB0196.0112, was es profilgeführtes Dateisystem-Restrukturieren nennt. Anstatt Dateien basierend auf statischen Annahmen von Dateireferenzmustern anzuordnen, bestimmt das System dynamisch Dateizugriffsmuster, wenn Programme gefahren werden, und teilt Plattenplatz zu, um die Dateisystemleistung für jede Hardware-/Software-Konfiguration, auf der das Programm gefahren wird, zu maximieren. Um dies zu Stande zu bringen, wird die Dateisystem Aktivität beim Anlaufen des Programms überwacht, und die Plattensektoren, auf die zugegriffen wird, werden in einer Datei eingetragen, die Profildaten enthält. In vorbestimmten Abständen werden die Profildaten analysiert, um festzustellen, ob eine optimalere Dateizuteilungsstruktur möglich ist. Wenn ja, kann der Operator ein Restrukturierungsprogramm fahren, das Dateien Plattenplatz basierend auf den in den Profildaten angegebenen Plattenzugriffsmustern zuteilt. Das Programm würde die Plattenblock-Zugriffsadressen aus den Profildaten ihren zugehörigen Dateien zuordnen und die Blöcke, auf die häufig zugegriffen wird, physikalisch dicht beieinander auf der Platte platzieren. Die resultierende Plattenblock-Zuteilungsstruktur würde für die gemeinsamen Zugriffsmuster für diese spezifische Computer-Konfiguration optimiert werden.
  • Microsoft Corporation hat auch angekündigt, dass sein Betriebssystem "WINDOWS 98" Merkmale enthalten wird, die ihm erlauben, die Plattenaktivität während des Anwendungsprogrammstarts zu überwachen und die gespeicherten Dateien so umzuordnen, dass während des Startens benutzte Datenblöcke in sequenzieller Weise angeordnet sind.
  • Obwohl der Stand der Technik einen Prozess zum Optimieren von Dateien für den Programmstart beschreibt, werden diese Verfahren durchgeführt, nachdem Programme auf einem Computer installiert sind, und anschließend durch einen Benutzer gestartet. Diese Lösung enthält mehrere Nachteile. Zum Beispiel kann die Optimierung erst stattfinden, wenn ein Programm installiert und gestartet wurde und der Startprozess überwacht wurde. Der Prozess des Überwachens von Plattenzugriffen während des Programmanlaufs kann den Anlaufprozess wesentlich verlangsamen. Nachdem der Anlaufprozess überwacht ist, muss der Computer eine zeitraubende Optimierungsroutine fahren, die den Benutzer daran hindern wird, den Computer während des Optimierungsprozesses zu benutzen, oder verlangt, dass der Benutzer den Computer in Betrieb lässt, sodass die Routine nach Feierabend gefahren werden kann. Schließlich ist diese Lösung nur zum Überwachen und Optimieren des Anlaufprozesses geeignet, nicht aber für andere plattenintensive Operationen, z.B. Laden des mit einigen Befehlen (z.B. "Datei-Öffnen") verbundenen Codes.
  • Wo die Optimierungsmerkmale in Betriebssystem-Software implementiert sind, müsste ein Benutzer eins Kopie der passenden Version des Betriebssystems erlangen und installieren, um sich diese Optimierungsmerkmale zu Nutze zu machen. In vielen Fällen sind Benutzer abgeneigt, das nötige Geld oder die Zeit aufzuwenden, um ihre Betriebssystem-Software aufzurüsten, um Nutzen aus neuen Merkmalen zu ziehen, oder können in einem Unternehmen sein, wo sie diese Entscheidung nicht selbst treffen. Dies resultiert in einer großen Zahl von Benutzern, die ältere Versionen eines Betriebssystems verwenden und nicht in der La ge sind, die verbesserte Leistung beim Anwendungsstart zu erfahren.
  • In der Technik besteht daher ein Bedarf an einem verbesserten System und Verfahren zum Speichern von Daten auf einer logischen Platte in der Reihenfolge, in der auf sie zugegriffen wird, wenn Anwendungen oder Befehle gestartet werden. Ein solches Verfahren sollte die Notwendigkeit umgehen, Anwendungsprogramm-Dateien, nachdem sie auf einer logischen Platte installiert sind, zu überwachen, und sollte nicht verlangen, dass Benutzer eine neue Version ihrer Betriebssystem-Software erlangen und installieren.
  • WO 97/37313 offenbart ein opportunistisches dateiziehendes lückenfüllendes Verfahren und Vorrichtung zur Dateistruktur Reorganisation. Das System unterteilt reorganisierbaren Speicherplatz in Dateibereiche. Jeder Dateibereich enthält Dateidaten oder enthält keine Dateidaten. Das System hat ein definiertes Ziel, wobei Dateien von Daten in einer opportunistischen Weise zu verfügbaren Lücken bewegt werden, um den Speicher in dem Speicherraum zu optimieren. Das System lokalisiert zuerst die größten Lücken, die mit der größten Menge an Daten entsprechend dieser Lücke zu füllen sind. Dateien können daher innerhalb des Speicherraumes von einer Position zu einer anderen bewegt werden, und mit der Zeit wird sich das definierte Ziel seiner Erfüllung nähern.
  • EP-A-690369 (Sony) beschreibt ein Plattensteuerverfahren, wobei eine externe Vorrichtung, z.B. ein Computer, die in eine Speichereinheit zu schreibenden Daten sowie die Sequenz, oder externe Adresse, liefert, in der die Daten in die Speichereinheit zu schreiben sind, um die Geschwindigkeit der Datenübertragung zwischen dem Computer und der Speichereinheit zu erhöhen.
  • Die vorliegende Erfindung ist durch die Merkmale, wie in den begleitenden Ansprüchen beansprucht, definiert. Die Erfindung erfüllt den oben genannten Bedarf durch Installieren oder späteres Neuordnen eines Programms, sodass startbezogene Abschnitte, die gelesen werden, wenn das Programm gestartet oder ein Befehl ausgeführt wird, in einer Reihenfolge so nahe wie möglich zu der, in der sie während eines typischen Starts gelesen werden, gespeichert werden. Die Software, die während oder nach der Installation benutzt wird, enthält die nötigen Programmdateien und eine Ladefolgeliste, die die Reihenfolge identifiziert, in der startbezogene Abschnitte der Dateien gelesen werden. Während der Installation oder späteren Umordnung werden die startbezogenen Abschnitte der Dateien in der in der Ladefolgeliste angegebenen Reihenfolge angeordnet, wobei die startbezogenen Abschnitte vorzugsweise in zusammenhängenden Clustern auf der logischen Platte gespeichert werden. Der Rest der Dateien wird in einem anderen freien Platz auf der Platte installiert. Wenn ein Be nutzer das Programm fährt, wird die Anlaufzeit verringert, weil der Computer in der Lage sein wird, die Startdateien in der richtigen Reihenfolge aus zusammenhängenden Clustern auf der logischen Platte zu lesen, um so mit dem Lesen von Daten aus nicht zusammenhängenden Clustern verbundene Verzögerungen zu verringern.
  • Allgemein beschrieben stellt die vorliegende Erfindung ein computerlesbares Installationsmedium bereit und erlaubt Programmen, in einer Weise installiert oder später umgeordnet zu werden, die den Prozess des Anlaufens oder Startens eines Programms oder anderer plattenintensiver Vorgänge beschleunigt.
  • Die verschiedenen Aspekte der vorliegenden Erfindung können aus einer Durchsicht der folgenden ausführlichen Beschreibung der offenbarten Ausführungen und durch Bezugnahme auf die anliegenden Zeichnungen und Ansprüche klarer verstanden und geschätzt werden.
  • KURZBESCHREIBUNG DER ZEICHNUNGEN
  • 1 ist ein Blockschaltbild eines Personal Computers, der eine Betriebsumgebung für eine Ausführung der vorliegenden Erfindung bereitstellt.
  • 2 ist ein Flussdiagramm, das ein exemplarisches Verfahren zum Erzeugen einer Installationsplatte zum Installieren von Daten auf einer logischen Platte in der Reihenfolge, in der sie während des Programmstarts geladen werden, veranschaulicht.
  • 3 ist ein Flussdiagramm, das ein exemplarisches Verfahren zum Installieren von Dateien von einer Installationsplatte auf einer logischen Platte und Speichern der Dateien in der Reihenfolge, in der sie während des Programmstarts geladen werden, veranschaulicht.
  • 4 ist eine Tabelle, die den Inhalt einer exemplarischen Ladesequenzdatei zeigt.
  • 5 ist eine Tabelle, die startbezogene Komponenten von drei Dateien und eine exemplarische Ladereihenfolge für diese Komponenten zeigt.
  • 6 ist eine Tabelle, die ein exemplarisches Verfahren zum Schreiben von Dateikomponenten in freie Cluster auf einer logischen Platte veranschaulicht.
  • 7 ist eine Tabelle, die ein exemplarisches Verfahren zum Schreiben von Dateikomponenten in freie Cluster auf einer logischen Platte veranschaulicht.
  • 8 ist ein Flussdiagramm, das ein alternatives Verfahren zum Optimieren von Abschnit ten von Dateien, nachdem sie auf einem logischen Laufwerk installiert wurden, veranschaulicht.
  • AUSFÜHRLICHE BESCHREIBUNG
  • Die vorliegende Erfindung ist auf ein verbessertes System und Verfahren zum Installieren eines Programms auf einem Festplattenlaufwerk gerichtet. Bei einer exemplarischen Ausführung werden die anwendungsbezogenen Dateien auf einer logischen Plattenpartition (d.h. auf einer logischen Untermenge eines physikalischen Plattenlaufwerks) so installiert, dass die startbezogenen Abschnitte, die gelesen werden, wenn das Programm gestartet oder ein Befehl ausgewählt wird, in der Reihenfolge gespeichert werden, in der sie während des Startens gelesen werden. Die Installations-Software enthält die nötigen Dateien und eine Ladefolgeliste, die die Reihenfolge identifiziert, in der startbezogene Abschnitte der Dateien während des Startens gelesen werden. Während der Installation werden die Abschnitte der Dateien, die während des Startens benutzt werden, in der in der Ladefolgeliste angegebenen Reihenfolge installiert, wobei die startbezogenen Abschnitte vorzugsweise in zusammenhängenden Clustern auf der logischen Platte gespeichert werden. Der Rest der Dateien wird in einem anderen freien Platz auf der Platte installiert. Alternativ können die Programmdateien in einer herkömmlichen Weise installiert und die startbezogenen Abschnitte anschließend in der in einer Ladefolgeliste angegebenen Reihenfolge umgeordnet werden. Wenn ein Benutzer das Programm startet oder einen Befehl auswählt, wird die Startzeit reduziert werden, weil der Computer in der Lage sein wird, die startbezogenen Abschnitte der Dateien in der richtigen Reihenfolge aus zusammenhängenden Clustern auf der Platte zu lesen, um so mit dem Lesen von Daten aus nicht zusammenhängenden Clustern verbundene Verzögerungen zu verringern.
  • Mit Verweis auf die Zeichnungen, in denen gleiche Verweiszeichen gleiche Elemente überall in den Figuren darstellen, werden Aspekte der vorliegenden Erfindung und eine exemplarische Betriebsumgebung beschrieben.
  • EXEMPLARISCHE BETRIEBSUMGEBUNG
  • 1 und die folgende Erörterung sind gedacht, eine kurze allgemeine Beschreibung einer geeigneten Rechenumgebung zu geben, in der die Erfindung implementiert werden kann. Während die Erfindung im allgemeinen Kontext eines Einrichtungsprogramms beschrieben wird, das verwendet wird, um ein Anwendungsprogramm auf einem mit einem Personal Computer verbundenen Festplattenlaufwerk zu installieren, werden die Fachleute in der Technik erkennen, dass die Erfindung auch in Kombination mit einer Vielfalt von Programmmodulen, einschließlich Anwendungsprogrammmodulen, Betriebssystem-Programmmodu len, Dienstprogrammmodulen usw., implementiert werden kann. Programmmodule umfassen gewöhlich Routinen, Programme, Komponenten, Datenstrukturen usw., die bestimmte Tasks durchführen oder bestimmte abstrakte Datentypen implementieren. Außerdem werden die Fachleute erkennen, dass die Erfindung mit anderen Computersystem-Konfigurationen praktiziert werden kann, einschließlich handgehaltener Geräte, Multiprozessorsystemen, mikroprozessorbasierter oder programmierbarer Verbraucherelektronik, Minicomputern, Mainframe-Computern und dergleichen. Die Erfindung kann auch in verteilten Rechenumgebungen praktiziert werden, wo Tasks durch entfernte Verarbeitungseinrichtungen durchgeführt werden, die durch ein Kommunikationsnetz verbunden sind. In einer verteilten Rechenumgebung können sich Programmmodule sowohl in lokalen als auch in entfernten Speichereinrichtungen befinden.
  • Auf 1 verweisend enthält ein exemplarisches System zur Implementierung der Erfindung einen herkömmlichen Personal Computer 20, der eine Verarbeitungseinheit 21, einen Systemspeicher 22 und einen Systembus 23 enthält, der den Systemspeicher mit der Verarbeitungseinheit 21 verbindet. Der Systemspeicher 22 enthält einen Nurlese-Speicher (ROM) 24 und einen Direktzugriffsspeicher (RAM) 25. Ein Basis-Eingabe/Ausgabesystem (BIOS) 26, das die Basisroutinen enthält, die helfen, Information zwischen Elementen in dem Personal Computer 20 zu übertragen, z.B. während des Hochlaufens, ist im ROM 24 gespeichert. Der Personal Computer 20 enthält weiter ein Festplattenlaufwerk 27, ein wechselbares Magnetplattenlaufwerk 28, z.B. zum Lesen oder Beschreiben einer wechselbaren Platte 29 und ein optisches Plattenlaufwerk 30, z.B. zum Lesen einer CD-ROM Platte 31 oder zum Lesen oder Beschreiben eines anderen optischen Mediums. Das Festplattenlaufwerk 27, das wechselbare Magnetplattenlaufwerk 28 und das optische Plattenlaufwerk 30 sind mit dem Systembus 23 über eine Festplattenschnittstelle 32, eine Magnetplattenschnittstelle 33 und eine optische Plattenschnittstelle 34 verbunden. Die Laufwerke und ihre zugehörigen computerlesbaren Medien liefern nicht flüchtige Speicherung für den Personal Computer 20. Die Fachleute werden erkennen, dass ein einzelnes Festplattenlaufwerk 27 eine oder mehrere "Partitions" oder "logische Platten" enthält, die logische Untermengen einer physikalischen Laufwerksvorrichtung sind. Obwohl sich die obige Beschreibung von computerlesbaren Medien auf ein Festplattenlaufwerk, eine wechselbare Magnetplatte und eine CD-ROM Platte bezieht, sollten die Fachleute erkennen, dass andere Arten von Medien, die von einem Computer lesbar sind, verwendet werden können. Zum Beispiel können Magnetkassetten, Flash-Speicherkarten, digitale Videoplatten, Bernoulli-Kassetten und dergleichen ebenfalls in der exemplarischen Betriebsumgebung verwendet werden.
  • Eine Anzahl von Programmmodulen können auf den Laufwerken und im RAM 25 gespei chert werden, einschließlich eines Betriebssystems 35 (z.B. das Betriebssystem "WINDOWS 95" von Microsoft Corporation, einer Reihe von Anwendungsprogrammen 35 (z.B. die "MICROSOFT OFFICE" Programmreihe), eines oder mehr anderer Anwendungsprogramme 37 und Daten 38. Betriebssystem-Software und Anwendungsprogramme werden typischerweise auf dem Festplattenlaufwerk 27 von einer CD-ROM 31 oder Floppydisk 29 installiert. In den meisten Fällen wird der Installationsprozess durch ein Einrichtungsprogramm oder Installationsprogramm gesteuert, das auf der CD-ROM oder Floppydisks zusammen mit dem Betriebssystem oder anwendungsbezogenen Dateien gespeichert ist.
  • Ein Benutzer kann Befehle und Information über eine Tastatur 40, ein Zeigegerät, z.B. eine Maus 42, in den Personal Computer 20 eingeben. Andere Eingabeeinrichtungen (nicht gezeigt) können ein Mikrofon, Joystick, Gamepad, Satellitenschüssel, Scanner oder dergleichen umfassen. Diese und andere Eingabeeinrichtungen werden oft mit der Verarbeitungseinheit 21 durch eine Serialport-Schnittstelle 46 verbunden, die mit dem Systembus 23 verbunden ist, können aber durch andere Schnittstellen verbunden werden, z.B. einem Gameport oder einem Universal-Serienbus (USB). Ein Monitor 47 oder eine andere Art von Anzeigeeinrichtung ist ebenfalls mit dem Systembus 23 über eine Schnittstelle, z.B. einen Videoadapter 48, verbunden. Zusätzlich zu dem Monitor umfassen Personal Computer typischerweise andere periphere Ausgabeeinrichtungen (nicht gezeigt), wie z.B. Lautsprecher oder Drucker.
  • Der Personal Computer 20 kann unter Verwendung von logischen Verbindungen zu einem oder mehr entfernten Computern, z.B. ein entfernter Computer 49, in einer vernetzten Umgebung arbeiten. Der entfernte Computer 49 kann ein Mail-Server (der einen oder mehrere Nachrichtenspeicher enthält), ein Datei-Server (der einen oder mehrere Dateispeicher enthält), ein Router, ein Netzwerk-PC, eine Peer-Einrichtung oder ein anderer gewöhlicher Netzwerkknoten sein und enthält typischerweise viele oder alte oben bezüglich des Personal Computers 20 beschriebenen Elemente, obwohl in 1 nur eine Speichereinrichtung 50 gezeigt wurde. Die in 1 gezeigten logischen Verbindungen umfassen ein lokales Netzwerk (LAN) 51 und ein Weitbereichs-Netzwerk (WAN) 52. Solche Netzwerkumgebungen sind in Büros, unternehmensweiten Computernetzwerken, Intranetzen und dem Internet an der Tagesordnung.
  • Wenn in einer LAN-Netzwerkumgebung benutzt, ist der Personal Computer 20 über eine Netzwerkschnittstelle 53 mit dem LAN 51 verbunden. Wenn in einer WAN-Netzwerkumgebung benutzt, enthält der Personal Computer 20 typischerweise einen Modem 54 oder eine andere Einrichtung zum Errichten von Kommunikationen über das WAN 52, z.B. Internet.
  • Der Modem 54, der intern oder extern sein kann, ist mit dem Systembus 23 über eine Serialport-Schnittstelle 46 verbunden. In einer vernetzten Umgebung können bezüglich des Personal Computers 20 gezeigte Programmmodule oder Teile davon in der entfernten Speichereinrichtung gespeichert sein. Man wird einsehen, dass die gezeigten Netzwerkverbindungen exemplarisch sind und andere Einrichtungen zum Herstellen einer Kommunikationsverbindung zwischen den Computern verwendet werden können.
  • HERKÖMMLICHE PLATTENLAUFWERKSFORMATIERUNG
  • Bevor die Merkmale der vorliegenden Erfindung beschrieben werden, ist es hilfreich, die Art und Weise zu beschreiben, in der Daten auf herkömmlichen Festplattenlaufwerken gespeichert werden.
  • Festplattenlaufwerke erlauben Computern, die darauf gespeicherten Daten zu ändern, sodass Daten von der Magnetplatte sowohl gelesen als auch darauf geschrieben werden können. Ein physikalisches Plattenlaufwerk enthält eine oder mehrere Partitions oder logische Platten, die logische Untermengen des physikalischen Laufwerks sind. Die Daten werden gewöhnlich als getrennte Dateien auf einer logischen Platte gespeichert, wobei auf jede Datei unabhängig zugegriffen werden kann. Die Stelle auf der Platte, wo jede Datei gespeichert ist, wird identifiziert und in einer Datenstruktur gespeichert, die dem Computer erlaubt, auf jede der Dateien auf der logischen Platte schnell zuzugreifen.
  • Wenn ein Festplattenlaufwerk für den Gebrauch formatiert wird, wird der Speicherbereich auf der Platte in konzentrische Kreise, genannt Spuren, geteilt. Die Zahl von Spuren auf einer Platte hängt von der Größe der Platte ab. Jede Spur auf der Platte wird in eine gleiche Zahl von Sektoren geteilt. Die Sektoren sind typischerweise in Scheiben so angeordnet, dass die Sektoren am äußeren Rand der Platte mehr linearen Platz entlang einer Spur in Anspruch nehmen als die Sektoren nahe dem inneren Rand der Platte. Jeder Sektor wird jedoch benutzt, um eine identische Menge an Daten, typischerweise 512 Byte, zu speichern.
  • Die Sektoren auf jeder Spur werden zu Clustern gruppiert. Das Gruppieren von Sektoren zu Clustern wird durch das Betriebssystem durchgeführt und ist somit keine physikalische Abgrenzung. Jede Spur auf der Platte enthält die gleiche Zahl von Clustern, und jeder Cluster auf der Platte enthält die gleiche Zahl von Sektoren. Ein Cluster umfasst gewöhnlich 1 bis 64 Sektoren, abhängig von der Größe der Platte, wobei jeder Sektor gewöhnlich 512 Byte an Daten sichert. Jeder Cluster ist unabhängig zugänglich.
  • Das Betriebssystem eines Computers speichert jede Datei in einem oder mehreren Clustern auf der logischen Platte. Große Dateien können mehrere Cluster benötigen, um alle mit der Datei verbundenen Daten zu halten, während sehr kleine Dateien in einem einzigen Cluster gespeichert werden können. Weil ein Cluster Daten von mehr als einer Datei nicht speichern kann, bleiben ein oder mehrere Sektoren eines Clusters leer, wenn die Datei nicht genug Daten enthält, um alle Sektoren des Clusters zu füllen. Der Plattenplatz wird daher am effizientesten genutzt, wenn die in jedem Cluster gespeicherte Menge an Daten in Bezug auf die Größe der meisten Dateien recht klein ist.
  • Magnet-Festplattenlaufwerke enthalten typischerweise einen Stapel von steifen Aluminiumscheiben, oder Plattem, die mit einem magnetischen Material beschichtet sind. Jeder Platter kann Daten auf seiner oberen und unteren Oberfläche speichern. Daten werden auf jeder der Platten durch Magnetisieren von Bereichen der Plattenoberfläche codiert. Daten werden durch einen Lese/Schreib-Kopf von der Platte zurückgewonnen oder derselben hinzugefügt. Jeder Kopf des Magnetplattenlaufwerks besteht aus einem winzigen Elektromagneten, der an einem Schwenkarm befestigt ist, wobei der Elektromagnet sehr nahe an der Oberfläche der Platten positioniert ist. Ein solcher Kopf wird für jede Aufzeichnungsoberfläche auf jedem Platter bereitgestellt. Die Arme schwenken, um die Köpfe über die Oberfläche der Platten in einem im Allgemeinen radialen Pfad hin und her zu bewegen. Kopf-Aktuatoren schwenken die Arme, um die Bewegung der Köpfe zu steuern. Wenn Daten auf eine Platte geschrieben werden, wird der Kopf über dem geeigneten Bereich der Platte positioniert, wo die Daten zu schreiben sind. Ein dem Kopf zugeführter elektrischer Strom erzeugt ein Magnetfeld, das einen kleinen Bereich der Platte in der Nähe des Kopfes magnetisiert. Dieser kleine magnetisierte Bereich stellt ein digitales Bit dar. Desgleichen wird, wenn Daten von einem Plattenlaufwerk gelesen werden, der Kopf über dem geeigneten magnetisierten Bereich der Platte positioniert, wodurch ein Strom in dem Kopf induziert wird. Der in dem Kopf induzierte Strom wird dann in digitale Daten decodiert.
  • Die Platter des Plattenlaufwerks sind alle mit einer einzigen Spindel verbunden. Die Spindel ist mit einem Motor verbunden, der die Platten unison mit einer konstanten Rate dreht. Obwohl die Sektoren der Platte verschiedene Mengen an Platz in Anspruch nehmen können, ist die in jedem Sektor gespeicherte Menge an Daten identisch. Dies erlaubt der Platte, sich mit einer konstanten Rate zu drehen, um ungeachtet der Stelle des Sektors auf der Platte gleiche Mengen an Daten zurückzugewinnen.
  • Wenn auf einen neuen Cluster auf der Platte zugegriffen wird, müssen zwei mechanische Vorgänge stattfinden, bevor der Kopf wirklich Daten zu lesen oder zu schreiben beginnt. Erstens, der Kopf wird radial von seiner gegenwärtigen Stelle zu der Stelle der Spur bewegt, die den Ziel-Cluster enthält. "Suchzeit" betrifft die Zeit, die der Arm, der den Kopf hält, benötigt, um die Wirkungen von Trägheit und Reibung zu überwinden und um seine Bewegung durchzuführen. Die Suchzeit umfasst auch "Absetzzeit", die die Zeit ist, die der Kopf benötigt, um sich nach seiner Bewegung in einer stationären Position abzusetzen. Zweitens, der Kopf muss warten, bis der Cluster, der die gewünschten Daten enthält, sich unter den Kopf gedreht hat. Diese Zeit wird als "Rotationslatenz" bezeichnet. Weil sich die Platte mit einer konstanten Rate dreht, ist die maximale Menge an Zeit, die der Kopf warten muss, damit der gewünschte Cluster unter ihm durchläuft, die Zeit, die der Platter benötigt, um eine Umdrehung zu vollenden. Jeder Zugriff auf einen neuen Cluster erzeugt daher infolge der mechanischen Bedingungen des Zugreifens auf den richtigen Bereich der Platte eine inhärente Verzögerung.
  • Das Betriebssystem muss eine Aufzeichnung der Stelle der auf der logischen Platte gespeicherten Dateien unterhalten. Mehrere Datenstrukturen werden zum Dateizugriff verwendet. Jeder Sektor auf der logischen Platte hat eine eindeutige Identifizierungsnummer, die auf der Stelle des Sektors auf der logischen Platte basiert. Desgleichen hat jeder Cluster eine eindeutige Cluster-Nummer. Die Identifizierungsnummern werden so zugeteilt, dass aneinandergrenzende Sektoren und Cluster aufeinanderfolgend nummeriert werden. Die Hauptdatenstruktur, die benutzt wird, um zu bestimmen, welche Teile der logischen Platte für die Dateidatenspeicherung verwendet werden, ist die Dateizuteilungstabelle (FAT). Andere Dateisysteme enthalten das Hochleistungs-Dateisystem (HPFS) und das NT-Dateisystem (NTFS). Obwohl die vorliegende Erfindung im Kontext eines FAT-Dateisystems beschrieben wird, ist die Erfindung auf andere Arten von Dateisystemen anwendbar.
  • Bei einem FAT-Dateisystem wird die FAT in der Nähe des Anfangs der logischen Platte oder Partition gespeichert und enthält einen Eintrag für jeden Cluster auf der logischen Platte. Die Cluster werden in der FAT nach ihrer Cluster-Nummer aufeinanderfolgend aufgeführt. Der FAT-Eintrag für jeden Cluster enthält die Nummer des Clusters, in dem der nächste Teil dieser Datei enthalten ist. Der FAT-Eintrag für den Cluster, der die letzten Daten einer Datei enthält, enthält einen Dateiende-Eintrag (EOF). Jede auf der logischen Platte gespeicherte Datei wird daher in der FAT als eine Kette von einem oder mehreren Clustern dargestellt. Die FAT gibt an, ob jeder Cluster einer Datei zugeteilt ist, sagt aber dem Betriebssystem des Computers nicht direkt, zu welcher Datei ein gegebener Cluster gehört.
  • Wie oben erwähnt, kann Plattenplatz am wirkungsvollsten genutzt werden, wenn jeder Clusster recht klein ist (z.B. 4 kB). Die Größe der FAT einer Plattenpartition bestimmt jedoch die maximale Zahl von Clustern, die auf einer logischen Platte enthalten sein können, und folg lich die Größe der Cluster. In einem FAT 16 Dateisystem benutzt z.B. die FAT eine 16-Bit Zahl, um jeden Cluster darzustellen. Dies gestattet maximal 65,536 (d.h. 64 k) Cluster auf der Platte. Die Größe einer Platte kann durch die Größe der FAT geteilt werden, um die Mindestgröße jedes Clusters zu bestimmen, wie in Tabelle I veranschaulicht:
    Plattengröße Min. Clustergröße (Bytes)
    Bis zu 32 MB 512
    > 32 MB bis 64 MB 1 k
    > 64 MB bis 128 MB 2 k
    > 128 MB bis 256 MB 4 k
    > 256 MB bis 512 MB 8 k
    > 512 MB bis 1 GB 16 k
    > 1 GB bis 2 GB 32 k
    Tabelle 1
  • Das FAT 32 Dateisystem verwendet eine 28-Bit Zahl, um jeden Cluster darzustellen, und ist in der Lage, 228 Cluster zu verfolgen, was Cluster von 4 kB oder kleiner auch auf sehr großen logischen Platten erlaubt. FAT 32 ist in den OSR2 (OEM Service Release 2) Versionen des Betriebssystems "WINDOWS 95" und nachfolgenden "WINDOWS" Betriebssystemen, wie z.B. dem "WINDOWS 98" Betriebssystem, verfügbar.
  • Eine Datenstruktur, genannt Verzeichnis, enthält eine Liste aller auf der logischen Platte gespeicherten Dateien und Unterverzeichnisse (von denen einige als reguläre Dateien mit dem Verzeichnisbit gesetzt gespeichert sind). Das Stammverzeichnis unterscheidet sich von den Unterverzeichnissen dadurch, dass das Stammverzeichnis kein Elternverzeichnis hat und typischerweise in der Nähe des Anfangs der logischen Platte vor den zum Speichern von Dateidaten benutzten Sektoren gespeichert wird. Das Verzeichnis hat einen Eintrag für jede Datei, der die Cluster-Nummer enthält, in der der erste Teil dieser Datei gespeichert ist. Indem die Anfangs-Cluster-Nummer jeder Datei gespeichert wird, verknüpft das Verzeichnis jede Datei mit der FAT.
  • Um auf eine Datei auf der logischen Platte zuzugreifen, liest das Betriebssystem des Computers den Verzeichniseintrag für die Datei, um den FAT-Eintrag zu bestimmen, der dem ersten Cluster entspricht, in dem die Dateidaten gespeichert sind. Das Betriebssystem liest dann die ganze Kette von FAT-Einträgen, beginnend bei dem ersten FAT-Eintrag der Datei. Unter Verwendung der Stelle des ersten Clusters und der Kette von Clustern aus der FAT kann das Betriebssystem jeden Cluster bestimmen, der zu der Datei gehört, und folglich auf jeden Cluster zugreifen.
  • Wenn der logischen Platte Daten hinzugefügt oder daraus gelöscht werden, kann die Platte fragmentiert werden. Fragmentierung betrifft das Speichern von Teilen einer einzelnen Datei in nicht zusammenhängenden Clustern auf der logischen Platte. Wenn eine Datei auf die logische Platte geschrieben wird, speichert das Betriebssystem die Daten in freiem Platz, der durch die Liste freier Cluster der FAT identifiziert wird. Der zum Speichern der Daten benutzte freie Platz kann mehrere nicht zusammenhängende Cluster umfassen.
  • INSTALLIEREN ODER NEUORDNEN EINES PROGRAMMS ZUM VERBESSERN DER STARTZEIT
  • Ein exemplarisches Verfahren zum Installieren von anwendungsbezogenen Dateien in einer Weise, die die Startzeit eines Programms verbesert, wird in 2 bis 7 veranschaulicht. Die Fachleute in der Technik werden verstehen, dass die vorliegende Erfindung in Verbindung mit einer Vielfalt von Anwendungs-, Dienst- und betriebssystembezogenen Programmen, einschließlich der "MICROSOFT OFFICE" Serie von Anwendungsprogrammen, die von Microsoft Corporation, Redmond, Washington, veröffentlicht wird, eingesetzt werden kann.
  • Wie der Stand der Technik muss die vorliegende Erfindung die Reihenfolge bestimmen, in der während des Startens Teile von Dateien von einer logischen Platte gelesen werden. Anders als der Stand der Technik, der diese Entscheidung trifft und die Dateien umordnet, nachdem die Dateien bereits auf der logischen Platte installiert sind, arrangiert jedoch die vorliegende Erfindung die Dateien in einer fast optimalen Reihenfolge, wenn sind anfangs auf der logischen Platte installiert werden. Allgemein ausgedrückt, dies wird erreicht durch Bestimmen der Reihenfolge, in der auf verschiedene Teile der Dateien während des Startens zugegriffen wird, Erzeugen einer Ladefolgeliste, die auf der Installationsplatte enthalten ist, und Installieren der startbezogenen Teile der Dateien in der durch die Ladefolgeliste vorgegebenen Reihenfolge. Alternativ kann die Ladefolgeliste benutzt werden, um die Dateien umzuordnen, nachdem sie auf der logischen Platte installiert wurden. Die Ladefolgeliste kann auf einer Installationsplatte, über das Internet oder über andere Verteilungseinrichtungen verteilt werden.
  • 2 und 3 sind Flussdiagramme, die exemplarische Verfahren zur Erzeugung einer Installationsplatte und zum Installieren von Dateien auf einer logischen Platte in der Reihenfolge, in der sie während des Startens geladen werden, veranschaulichen. Das Flussdiagramm von 2 veranschaulicht ein Verfahren 200 zum Erzeugen einer Installationsplatte, die anwen dungsbezogene Dateien, eine oder mehrere Ladefolgelisten und ein Installationsprogramm enthält. Das Flussdiagramm von 3 veranschaulicht ein Verfahren 300 zum Installieren von Dateien von der Installationsplatte auf einer logischen Platte und Speichern derselben in der Reihenfolge, in der sie während des Startens gelesen werden.
  • Zuerst wird auf 2 Bezug genommen, die ein Verfahren 200 zum Erzeugen einer Installationsplatte veranschaulicht. Der erste Schritt in dem Verfahren 200 ist die Erzeugung der anwendungsbezogenen Dateien (Schritt 205). Bei einem exemplarischen Verfahren wird dieser Schritt in einer den Fachleuten vertrauten herkömmlichen Weise durchgeführt und umfasst das Erzeugen aller mit dem Programm (z.B. ein Anwendungsprogramm) verbundenen Dateien. Diese Dateien können ausführbare Dateien, dynamisch gelinkte Bibliotheken, Datendateien, Präferenz-Dateien und dergleichen umfassen.
  • Nachdem die Dateien erzeugt sind, geht das Verfahren 200 zu Schritt 210. An diesem Punkt werden die Dateien auf einem Computer installiert, und das Programm wird gestartet. Der Startprozess wird durch einen Instrumentierungscode überwacht oder instrumentiert, der in der Lage ist, zu bestimmen, auf welche Teile der Dateien während des Startens zugegriffen wird. Der Instrumentierungscode erzeugt eine Ladefolgeliste, die angibt, welche Dateiteile gelesen wurden, und die Reihenfolge, in der sie gelesen wurden.
  • Das Format einer exemplarischen Ladefolgeliste wird in 4 veranschaulicht. Jeder Eintrag in der Liste identifiziert die Datei, auf die zugegriffen wurde, den Offset in die Datei und die Menge an Daten, die gelesen wurde. Der Offset und die Länge werden in Bytes und relativ zum Anfang der Datei gemessen. Der Offset und die Länge definieren den Start und die Länge des Abschnitts, der gelesen wurde. Dieser Schritt resultiert in einer Liste aller während des Programmstarts berührten Dateien, der Stelle in jeder Datei, die gelesen wurde, und der Menge an Daten, die von der Platte gelesen wird, wenn das Programm gestartet wird.
  • Von Schritt 210 geht das Verfahren 200 zu Schritt 220. Die Fachleute werden erkennen, dass die anfängliche Ladefolgeliste, die in Schritt 210 erzeugt wurde und eine Aufzeichnung aller Dateien enthält, die während des Bootens berührt wurden, Dateien enthält, die nicht Teil des Programms selbst sein können. Zum Beispiel, wenn ein Anwendungsprogramm gestartet wird, kann es erforderlich sein, dass der Computer Teile von verschiedenen Systemdateien oder gemeinsam benutzten Dateien liest, die getrennt von dem Anwendungsprogramm selbst existieren. In Schritt 220 analysiert das Verfahren 200 den inhalt der anfänglichen Ladefolgeliste und entfernt Dateien, die auf dem Computer eines Benutzers nicht optimiert oder neu installiert werden, wenn das Programm installiert wird. Die ausgeschlosse nen Dateien werden Dateien umfassen, die durch das Installationsprogramm nicht geändert werden können oder sollten, und Dateien, die sich wahrscheinlich recht häufig ändern (z.B. Präferenz-Dateien). Die Fachleute werden einsehen, dass dieser Schritt auf verschiedene Weise durchgeführt werden kann, einschließlich des Verwendens einer Ausschlußlisste, die verhindert, dass sie in die anfängliche Ladefolgeliste einbezogen werden, oder Verarbeiten der Ladefolgeliste zur Installationszeit, um bestimmte Dateien zu ignoriern.
  • Nachdem die Ladefolgelist editiert ist, um Dateien, die nicht optimiert werden, zu entfernen, geht das Verfahren 200 zu Schritt 225, wo eine oder mehrere endgültige Ladefolgelisten erzeugt werden. Die Fachleute werden einsehen, dass die Abfolge zum Laden von Dateien durch eine Vielfalt von Faktoren beeinflusst werden kann, die mit dem Computer verbunden sind, auf dem das Programm installiert werden wird. Zum Beispiel können die spezifische Version des Betriebssystems (einschließlich größerer Releases oder kleinerer Updates) und die mit dem Computer verbundene Cluster-Größe einen gewissen Einfluss auf die beste Abfolge zum Installieren der Dateiabschnitte auf der logischen Platte haben. Daher können für jedes dieser Szenarios verschiedene Ladefolgelisten erzeugt werden. Zum Beispiel kann eine Ladefolgelsite zur Verwendung mit einer bestimmten Version eines Betriebssystems für eine andere Maschinenkonfiguration zusätzliche Dateien hinzufügen oder Dateien aus der Ladefolge entfernen. Ebenso kann eine Ladefolgelsite zur Verwendung mit verschiedenen Cluster-Größen bereitgestellt werden. Alternativ kann eine einzelne Ladefolgeliste zur Verwendung mit kleinen (z.B. 4 k) Clustern bereitgestellt werden, und Ladefolgelisten für andere Cluster-Größen, die zur Zeit des Dateiordnens daraus gewonnen werden. Die endgültigen Ladefolgelisten können das gleiche Format haben wie das Beispiel von 4.
  • In Schritt 230 wird die wirkliche Installationsplatte (z.B. eine CD-ROM oder Floppydisks) erzeugt. Die Installationsplatte wird die anwendungsbezogenen Dateien, die Ladefolgelisten und ein Einrichtungs oder Installationsprogramm enthalten. Wenn die Installationsplatte in ein Laufwerk des Computers des Benutzers eingelegt wird, wird der Benutzer das Installationsprogramm starten, um die Dateien auf der logischen Platte des Benutzers zu installieren. Basierend auf Benutzereingabe und von dem Computer gelesener Konfigurationsinformation wird das Installationsprogramm bestimmen, welche Dateien installiert werden müssen, und die Reihenfolge, in der die Dateien installiert werden sollten, und wird veranlassen, dass die Dateien von der Installationsplatte gelesen und in der richtigen Reihenfolge auf die Platte geschrieben werden.
  • 3 veranschaulicht ein Verfahren 300 zum Installieren von Dateien von einer Installationsplatte auf einer logischen Platte und Speichern der startbezogenen Programmteile in der Reihenfolge, in der sie während des Programmstarts gelesen werden. Bei einer exemplarischen Ausführung wird das Verfahren 300 durch das Installationsprogramm ausgeführt, das auf der Installationsplatte enthalten ist, die eine CD-ROM ist, die in das Plattenlaufwerk 30 (1) eingelegt wird.
  • Das Verfahren 300 beginnt, wenn ein Benutzer das Installationsprogramm startet und geht zu Schritt 305. In Schritt 305 fragt das Installationsprogramm den Computer ab und erlangt Daten, die das auf dem Computer installierte Betriebssystem, die Eigenschaften des Festplattenlaufwerks usw. betreffen.
  • In Schritt 310 fragt das Installationsprogramm den Benutzer und erlangt Information, die das einzelne Programm oder Programme betrifft, die der Benutzer zu installieren wünscht. Das Installationsprogramm kann auch den Benutzer auffordern, seinen oder ihren Namen und eine Seriennummer einzugeben, bevor das Installationsprogramm fortfahren wird.
  • In Schritt 315 benutzt das Installationsprogramm die in Schritten 310 und 315 erlangte Information, um zu bestimmen, welche Dateien von der Installationsplatte auf dem Festplattenlaufwerk installiert werden sollten.
  • In Schritt 320 benutzt das Installationsprogramm die in Schritten 310 und 315 erlangte information, um zu bestimmen, welche Ladefolgeliste benutzt werden sollte, um die Reihenfolge zu bestimmen, in der die startbezogenen Teile der Dateien installiert und auf der logischen Platte gespeichert werden sollten. Wie früher erwähnt, können verschiedene Ladefolgelisten bereitgestellt werden, um verschiedene Versionen eines Betriebssystems, verschiedene Festplattenlaufwerks-Cluster-Größen usw. zu akkommodieren.
  • 5 zeigt Beispiele von Teilen von vier Anwendungsdateien (Dateien A, B, C und D) und eine einfache Ladefolgeliste, die startbezogene Dateiabschnitte und die Reihenfolge identifiziert, in der sie geladen werden, wenn das Programm gestartet wird. In diesem Beispiel umfasst das Anwendungsprogramm die Dateien A, B, C und D. Natürlich kann ein Anwendungsprogramm viele zusätzliche Dateien enthalten. Jede Datei enthält mehrfache Abschnitte (z.B. A1–A8, B1–B6, C1–C5 und D!–D5). Nur die Dateien A, B und C enthalten jedoch Abschnitte, die während des Anwendungsstarts geladen werden. Diese startbezogenen Abschnitte umfassen Abschnitte A1–A4, B1–B3 und C1–C3. Die übrigen Abschnitte der Dateien A, B und C sowie das Ganze von Datei D werden während des Startens nicht geladen. Die Fachleute werden verstehen, dass die startbezogenen Abschnitte jeder Datei (z.B. A1–A4) nicht zusammenhängend sein müssen oder den nicht startbezogenen Abschnitten der Da tei (z.B. A5–A8) vorangehen müssen. Die letzte Zeile von 5 zeigt die Startladefolge, die die Reihenfolge beschreibt, in der die startbezogenen Abschnitte der Dateien A, B und C während des Starts geladen werden. In diesem Beispiel ist die Startladefolge A1, B3, A3, B2, B1, C2, C1, A2, C3, A4.
  • Die Aufgabe des Rests des Installationsprozesses (Schritte 325, 330 und 335) ist, die startbezogenen Dateiabschnitte in zusammenhängenden Clustern auf der logischen Platte in der oben beschriebenen Startladefolge zu installieren. Der Installationsprozess kann daher als zwei Aufgaben umfassend beschrieben werden: (1) Schreiben der startbezogenen Dateiabschnitte in der richtigen Reihenfolge und (2) Sicherstellen, dass die startbezogenen Dateiabschnitte in zusammenhängenden Sektoren auf der logischen Platte gespeichert werden. Das Ziel des Schreibens der startbezogenen Dateiabschnitte in der richtigen Reihenfolge wird durch die Bereitstellung der Ladefolgeliste angesprochen. Sicherstellen, dass die Dateiabschnitte in zusammenhängenden Clustern gespeichert werden, ist infolge verschiedener Eigenschaften der FAT-Dateisysteme, die auf den meisten Personal Computern verwendet werden, eine Herausforderung.
  • Im Allgemeinen schreiben FAT-Dateisysteme Dateien in der Reihenfolge einer "Lister freier Cluster" auf die logische Platte. Mit anderen Worten, wenn eine Datei auf ein Festplattenlaufwerk geschrieben wird, wird der erste Cluster der Datei in den in der FAT identifizierten ersten freien Cluster geschrieben, und der zweite Cluster der Datei wird in den nächsten in der FAT identifizierten freien Cluster geschrieben usw. In vielen Fällen ist es wünschenswert, einen Teil der logischen Platte zu identifizieren, der genügend zusammenhängende freie Cluster enthält, um die startbezogenen Dateiabschnitte des Programms zu speichern. Die restlichen Abschnitte der Dateien können in der Reihenfolge der Liste freier Cluster geschrieben werden.
  • In Schritt 325 identifiziert das Installationsprogramm Blöcke von zusammenhängenden freien Clustern (auf der logischen Platte), die benutzt werden, um die startbezogenen Abschnitte der Dateien zu speichern. Die vorliegende Erfindung erwägt verschiedene Verfahren zum Identifizieren von verfügbarem Plattenplatz, der ausreicht, um die startbezogenen Dateiabschnitte zu speichern.
  • Ein erster Ansatz ist, anzunehmen, dass bestehende Dateien am Anfang der logischen Platte gespeichert sind und dass es am Ende eine ausreichende Menge an zusammenhängendem freien Platz gibt. Obwohl diese Annahme unrealistisch ist, könnte sie erfüllt werden, indem während des Installationprozeses vorgeschlagen wird, dass der Benutzer die logische Platte unter Verwendung eines herkömmlichen Defragmentierungs-Dienstprogramms defragmentiert. Nachdem die Platte defragmentiert ist, kann das Anwendungsprogramm in dem freien Platz am Ende der Platte installiert werden, wobei die startbezogenen Teile der Dateien in zusammenhängenden Clustern gespeichert werden. Die Fachleute werden einsehen, dass diese Lösung etwas unerwünscht ist, wegen der Zeit, die nötig sein würde, um die logische Platte vor der Installation zu defragmentieren, und der Tatsache, dass einige Benutzer abgeneigt oder unfähig sein können, die vorgeschlagene Defragmentierung durchzuführen.
  • Ein zweiter Ansatz ist, anzunehmen, das am Ende der Platte ein großer freier Platz vorhanden ist, aber einige nicht zusammenhängende Cluster am Anfang der Platte. Bei dieser Lösung werden die startbezogenen Dateiabschnitte aus der Ledefolgeliste zuletzt installiert werden. Dies wird dem Rest der Anwendungsdateien (d.h. den nicht startbezogenen Abschnitten) erlauben, zuerst installiert und auf der Platte in der Reihenfolge der Liste freier Cluster gespeichert zu werden. In den meisten Fällen sollte das Speichern dieser großen Menge an Dateidaten zur Folge haben, dass die nicht zusammenhängenden freien Cluster mit nicht startbezogenen Dateiabschnitten gefüllt werden und die startbezogenen Abschnitte der Dateien schließlich in den zusammenhängenden freien Clustern, die am Ende der Platte verfügbar bleiben, installiert werden.
  • Ein dritter Ansatz, um genügend zusammenhängende freie Cluster zu identifizieren, umfasst das Lesen der ganzen Liste freier Cluster und Verfolgen der Größen aller Gruppen von zusammenhängenden freien Clustern. Die Liste wird dann nach Größe sortiert, um die größten Gruppen zusammenhängender freier Cluster zu finden. Die größten Gruppen zusammenhängender freier Cluster werden identifiziert und zur Speicherung der startbezogenen Dateiabschnitte gekennzeichnet. Nachdem die Ziel-Cluster für die Startdateien identifiziert sind, geht der Prozess zurück zu der ursprünglichen Liste freier Cluster und beginnt, Daten auf die logische Platte zu schreiben. Wenn die Ziel-Cluster nicht die ersten freien Cluster in der Liste sind, wird eine temporäre Datei in die freien Cluster geschrieben, die nicht gefüllt werden müssen, um die gewünschten Ziel-Cluster zu erlangen. Nachdem die Startdateien in die zusammenhängenden Ziel-Cluster geschrieben sind, wird die temporäre Datei gelöscht, und diese Cluster werden an die Liste freier Cluster zurückgegeben. Der Gebrauch von temporären Dateien wird unten ausführlicher erörtert.
  • Ein vierter Ansatz ist ähnlich dem dritten, verringert aber die Menge an Daten, die in die temporäre Datei zu schreiben sein kann. Es ist möglich, dass die dritte Lösung erfordern wird, eine große Menge an Daten in eine Menge von kleinen Gruppen von Clustern in den frühen Abschnitten der Platte zu schreiben. Um diese Aktivität zu minimieren, benutzt die vierte Lösung die frühesten zusammenhängenden Cluster-Gruppen oder Sätze von Gruppen, um eine wesentliche Verbesserung in der Programmstartzeit bereitzustellen.
  • Nachdem genug zusammenhängende freie Cluster für die Installation der startbezogenen Dateiabschnitte identifiziert sind, geht das Installationsprogramm zu Schritt 330 und schreibt die startbezogenen Dateiabschnitte in der richtigen Reihenfolge in den freien Platz. Die Fachleute werden erkennen, dass die einzelnen Schritte, die nötig sind, um die Startdateiabschnitte in den freien Platz in der durch die Ladefolgeliste vorgegebenen Reihenfolge zu schreiben, von einer Vielfalt von Faktoren abhängen werden. Der wichtigste Faktor ist wahrscheinlich das einzelne Betriebssystem des Computers, das Werkzeuge zum Schreiben von Dateien auf die logische Platte und Einschränkungen dahin gehend bereitstellt, wie Dateien auf die Festplatte geschrieben werden können. Zwei zur Verwendung mit dem Betriebssystem "WINDOWS 95" geeignete Lösungen werden unten beschrieben.
  • Die Fachleute werden erkennen, dass das einfachste Szenario zum Schreiben der Startdateien vorkommt, wenn der freie Platz ganz zusammenhängend ist und sich am Ende der logischen Platte befindet, und das Betriebssystem nicht versucht, Dateien zu zwingen, zusammenhängend zu sein. In diesem einfachen und vielleicht unrealistischen Szenario könnte der Process des Schreibens der Dateien auf die logische Platte wie folgt implementiert werden. Zuerst öffnet das Installationsprogramm die nötigen Dateien auf der DC-ROM (zum Lesen) und auf der logischen Platte (zum Schreiben). Als Nächstes wird der erste in der Ladefolgeliste aufgeführte Cluster von der CD-ROM gelesen und auf die Festplatte geschrieben. In einigen Fällen ist es erforderlich, die Ausgabedatei zu spülen, um sicherzustellen, dass die Daten tatsächlich auf die Platte geschrieben werden. Diese Schritte werden wiederholt, bis alle Cluster in der Ladefolgeliste auf die logische Platte geschrieben sind. An diesem Punkt kann das Installationsprogramm zu Schritt 335 gehen, wo die restlichen Abschnitte (d.h. die nicht startbezogenen Abschnitte) der Dateien von der CD-ROM gelesen und auf die logische Platte geschrieben werden. Wenn alle Dateien geschrieben sind, werden Lese- und Schreibdateien geschlossen, und das Betriebssystem aktualisiert das FAT-Dateisystem. Das Verfahren 300 endet dann in Schritt 340, und die Installation ist vollendet.
  • Spezifische Verfahren zum Schreiben einzelner Dateien in nicht zusammenhängende Cluster (Schritt 330) werden im Kontext des Betriebssystems "WINDOWS 95" erörtert. Das Betriebssystem "WINDOWS 95" versucht, Dateien in zusammenhängenden Clustern zu halten. Wenn mehrfache Cluster in eine einzelne Datei geschrieben werden, versucht daher das Betriebssystem, sie in zusammenhängende Cluster zu legen. Bei einer Ausführung der vorlie genden Erfindung wird dieses Merkmal des Betriebssystems durch Verwenden von temporären Daten überwunden, um Platz auf der Festplatte zu belegen und die startbezogenen Abschnitte jeder Datei zu zwingen, in der gewünschten Reihenfolge in nicht zusammenhängende Cluster geschrieben zu werden. Die Fachleute werden einsehen, dass das Betriebssystem und das Dateisystem bestimmte Bedingungen bezüglich der Reihenfolge auferlegen, in der Dateien geschrieben werden können. Am wichtigsten, die Cluster einer Datei werden in monotonisch ansteigender Ordnung zugeteilt. Mit anderen Worten, der erste Cluster einer Datei wird vor dem zweiten Cluster der Datei zugeteilt usw., ungeachtet der Reihenfolge, in der Information in die Datei geschrieben wird.
  • Ein Beispiel des Gebrauchs von temporären Dateien wird in 6 veranschaulicht, die den Inhalt von 12 Clustern auf der logischen Platte während verschiedener Phasen des Installationsprozesses widerspiegelt. In diesem Beispiel werden die 10 Dateiabschnitte von 5 in die in 6 gezeigten 12 Cluster geschrieben werden. Bevor die Installation beginnt, sind die 12 Cluster (beliebig nummeriert von 0–11) zusammenhängende Cluster in der Liste freier Cluster. Wenn die zusammenhängenden Cluster 0–11 nicht die ersten Cluster in der Liste freier Cluster sind, schreibt das Installationsprogramm eine temporäre Datei in die Cluster vor Cluster 0. Dies hat zur Folge, dass Cluster 0 der erste freie Cluster in der Liste freier Cluster ist.
  • Das Installationsprogramm wird die gewünschte Cluster-Reihenfolge aus der geeigneten Ladefolgeliste lesen, die Cluster von der CD-ROM lesen und sie in die Cluster 0–9 der logischen Platte schreiben. Weil das Betriebssystem verlangt, dass die Cluster jeder Datei in monotonisch ansteigender Ordnung geschrieben werden, kann der Prozess des Schreibens der Dateien auf die logische Platte mehrfache Durchgänge durch den freien Platz erfordern und den Gebrauch von temporären Dateien mit sich bringen, um sicherzustellen, dass Daten in die gewünschten Cluster geschrieben werden.
  • Nun auf 6 verweisend liest im ersten Durchgang das Installationsprogramm die Ladefolgeliste und bestimmt, dass Cluster A1 zuerst geladen werden sollte. Weil dies der erste Cluster in Datei A ist, kann er sofort in Cluster 0 geschrieben werden.
  • Als Nächstes bestimmt das Installationsprogramm, dass Cluster B3 in Cluster 1 geschrieben werden sollte. Cluster B3 kann jedoch noch nicht gespeichert werden, weil die Cluster B1 und B2 noch nicht auf die Festplatte geschrieben wurden. Das Installationsprogramm schreibt daher eine temporäre Datei t1 in Cluster 1.
  • Nachdem die temporäre Datei t1 geschrieben ist, bestimmt das Installationsprogramm, dass Cluster A3 geschrieben werden sollte. Cluster A3 kann aber nicht gespeichert werden, weil Cluster A2 noch nicht auf die Festplatte geschrieben wurde. Das Installationsprogramm schreibt deshalb eine temporäre Datei t2 in Cluster 2.
  • Eine temporäre Datei t3 wird dann in Cluster 3 geschrieben, weil Cluster B2 erst gespeichert werden kann, nachdem Cluster B1 auf die Festplatte geschrieben wurde.
  • Nachdem die temporäre Datei t3 geschrieben ist, bestimmt das Installationsprogramm, dass Cluster B1 in Cluster 4 geschrieben werden sollte. Weil dies der erste Cluster in Datei B ist, kann er in Cluster 4 der Festplatte geschrieben werden.
  • Nach Cluster B1 schreibt das Installationsprogramm eine temporäre Datei t4 in Cluster 5, weil Cluster C2 erst gespeichert werden kann, nachdem Cluster C1 gespeichert wurde.
  • Als Nächstes bestimmt das Installationsprogramm, dass Cluster C1 in Cluster 6 geschrieben werden sollte. Weil Cluster C1 der erste Cluster in Datei C ist, wird er in Cluster 6 geschrieben.
  • Als Nächstes bestimmt das Installationsprogramm, dass Cluster A2 in Cluster 7 geschrieben werden sollte. Weil Cluster A1 bereits geschrieben wurde, kann Cluster A2 in Cluster 7 geschrieben werden.
  • Nachdem Cluster A2 auf die Festplatte geschrieben ist, bestimmt das Installationsprogramm, dass Cluster C3 in Cluster 8 geschrieben werden sollte. Cluster C3 kann aber noch nicht geschrieben werden, weil Cluster C2 noch nicht gespeichert wurde. Das Installationsprogramm schreibt eine temporäre Datei t5 in Cluster 8.
  • Als Nächstes bestimmt das Installationsprogramm, dass Cluster A4 in Cluster 9 geschrieben werden sollte. Weil aber Cluster A3 noch nicht auf die Festplatte geschrieben wurde, schreibt das Installationsprogramm eine temporäre Datei t6 in Cluster 9.
  • Nachdem das Installationsprogramm in alle Cluster geschrieben hat, die benutzt werden, um die startbezogenen Dateiabschnitte zu speichern, schreibt das Installationsprogramm eine große temporäre Datei t7 in den restlichen freien Platz auf der Platte.
  • Während des zweiten Durchgangs setzt das Installationsprogramm den Prozess des Schrei bens der startbezogenen Dateien auf die Festplatte in monotonisch ansteigender Reihenfolge fort.
  • Während des zweiten Durchgangs kann Cluster B3 noch immer nicht auf die Festplatte geschrieben werden, weil Cluster B2 noch nicht gespeichert wurde.
  • Cluster A3 kann in Cluster 2 geschrieben werden, weil die Cluster A1 und A2 bereits gespeichert wurden. Das Installationsprogramm löscht daher die temporäre Datei t2 und schreibt Cluster A3 in Cluster 2.
  • Cluster B2 kann in Cluster 3 geschrieben werden, weil Cluster B1 bereits gespeichert wurde. Das Installationsprogramm löscht die temporäre Datei t3 und schreibt Cluster B2 in Cluster 3.
  • Cluster C2 kann in Cluster 5 geschrieben werden, weil Cluster C1 bereits gespeichert wurde. Das Installationsprogramm löscht die temporäre Datei t5 und schreibt Cluster C2 in Cluster 5.
  • Cluster C3 kann in Cluster 8 geschrieben werden, weil die Cluster C1 und C2 bereits gespeichert wurden. Das Installationsprogramm löscht die temporäre Datei t5 und schreibt Cluster C3 in Cluster 8.
  • Schließlich kann Cluster A4 in Cluster 9 geschrieben werden, weil die Cluster A1–A3 bereits gespeichert wurden. Das Installationsprogramm löscht die temporäre Datei t6 und schreibt Cluster A4 in Cluster 9.
  • Während des Durchgangs 3 kann schließlich Cluster B3 in Cluster 1 geschrieben werden, weil die Cluster B1 und B2 bereits gespeichert wurden. Das Installationsprogramm löscht die temporäre Datei t1 und schreibt Cluster B3 in Cluster 1.
  • Nachdem alle startbezogenen Dateiabschnitte geschrieben sind, löscht das Installationsprogramm die temporäre Datei t7 und alle temporären Dateien, die in Cluster vor Cluster 0 geschrieben wurden. Dies gibt die unbenutzten Cluster an die Liste freier Cluster zurück. An diesem Punkt werden die übrigen Programmabschnitte (d.h. die nicht startbezogenen Dateiabschnitte) von der CD-ROM gelesen und auf die Festplatte geschrieben. Diese Dateien werden auf der Festplatte in der Reihenfolge der Liste freier Cluster gespeichert werden.
  • Einige Versionen des Betriebssystems "WINDOWS 95" verwenden eine Dateizuteilungsstrategie, die annimmt, dass, wenn zwei Dateien offen sind und ein Programm in beide schreibt, das Programm etwas freien Platz zwischen den Dateien wünschen würde. 7 veranschaulicht ein zweites Verfahren zum Schreiben von Startdateiabschnitten in die Festplatten-Cluster 0–9 trotz dieser Eigenschaft des Betriebssystems. Diese zweite Lösung ist der in 6 gezeigten Lösung sehr ähnlich, benötigt aber einen zusätzlichen Durchgang durch die freien Cluster, um temporäre Dateien in jedem der freien Cluster zu erzeugen.
  • In dem Beispiel von 7 werden die 10 Dateiabschnitte von 5 in die Cluster 0–9 der Festplatte geschrieben. Bevor die Installation beginnt, sind die 12 Cluster (nummeriert von 0–11) zusammenhängende Cluster in der Liste freier Cluster. Wenn die zusammenhängenden Cluster 0–11 nicht die ersten Cluster in der Liste freier Cluster sind, schreibt das Installationsprogramm eine temporäre Datei in die Cluster vor Cluster 0. Dies hat zur Folge, dass Cluster 0 der erste freie Cluster in der Liste freier Cluster ist.
  • Im Durchgang 1 schreibt das Installationsprogramm getrennte temporäre Dateien (t1–t10) in jeden der Cluster, die benutzt werden, um einen in der Ladefolgeliste identifizierten Datei-Cluster zu speichern. Eine andere temporäre Datei t11 wird in alle freien Cluster geschrieben, die Cluster 9 folgen. Dies stellt sicher, dass das Betriebssystem nicht in der Lage sein wird, Platz zwischen den Clustern zu lassen, die durch das Installationsprogramm geschrieben werden.
  • Die Durchgänge 2–4 gehen genau wie die Durchgänge 1–3 von 6 vonstatten und werden verwendet, um die Datei-Cluster in monotonisch ansteigender Reihenfolge zu schreiben. Im Durchgang 2 müssen jedoch die temporären Dateien t1, t5, t7 und t8 gelöscht werden, bevor die Cluster A1, B1, C1 und A1 in die Cluster 1, 4, 6 bzw. 7 geschrieben werden können.
  • Nachdem alle startbezogenen Dateiabschnitte auf die logische Platte geschrieben sind, löscht das Installationsprogramm die temporäre Datei t11 und alle temporären Dateien, die in Cluster vor Cluster 0 geschrieben wurden. Dies gibt die unbenutzten Cluster an die Liste freier Cluster zurück. An diesem Punkt werden die restlichen Dateiabschnitte (d.h. die startbezogenen Dateiabschnitte) von der CD-ROM gelesen und auf die logische Platte geschrieben. Diese Dateien werden auf der logischen in der Reihenfolge der Lister freier Cluster gespeichert.
  • Die vorangehende Erörterung hat die vorliegende Erfindung im Kontext mehrerer Ausführungen beschrieben. Im Allgemeinen enthalten diese Ausführungen eine Ladefolgeliste, die identifiziert, welche startbezogenen Programmabschnitte in zusammenhängenden Clustern auf der logischen Platte installiert werden sollten, Verfahren zum Identifizieren einer ausreichenden Zahl von zusammenhängenden freien Clustern sowie Verfahren zum Schreiben von Programmabschnitten in die zusammenhängenden Cluster in der gewünschten Reihenfolge.
  • Die vorliegenden Erfinder haben mehrere zusätzliche Merkmale erwogen, die in Ausführungen der vorliegenden Erfindung einbezogen werden können.
  • Die Verfahren der vorliegenden Erfindung können erweitert werden, um nicht nur die startbezogenen Abschnitte von neuen Dateien, sondern auch bestehende Dateien auf der logischen Platte und zusätzliche Abschnitte des neuen Programms einzuschließen.
  • Zum Beispiel kann die vorliegende Erfindung verwendet werden, um Systemdateien und andere vorher installierte Dateien zu optimieren, wenn sie in der Ladefolgeliste enthalten sind. Um diese Optimierung zu Stande zu bringen, wird der Installationsprozess wie oben beschrieben vonstatten gehen, wird aber auch das Öffnen der bestehenden Datei zum Lesen und einer neuen temporären Datei zum Schreiben einschließen. Die relevanten Cluster der bestehenden Datei werden in die zusammenhängenden freien Cluster zusammen mit anderen startbezogenen Programmabschnitten geschrieben werden. Nachden die startbezogenen Abschnitte alle in zusammenhängende Cluster auf der logischen Platte geschrieben sind, wird die ursprüngliche bestehende Datei gelöscht, und die temporäre Datei wird umbenannt, um den gleichen Namen wie die gelöschte Originaldatei zu haben.
  • Wie oben beschrieben, können die Prinzipien der vorliegenden Erfindung verwendet werden, um andere übliche plattenintensive Abschnitte des Programms zu instrumentieren oder zu installieren (oder umordnen). Zum Beispiel könnte der Code, der Routinen wie OPEN, SAVE, LOAD und PRINT ausführt, instrumentiert und die Ergebnisse in eine Ladefolgedatei auf der Installationsplatte eingeschlossen werden. Das Installationsprogramm könnte dann diese Information verwenden, um diese Teile des Codes in zusammenhängende Abschnitt der logischen Platte zu schreiben, wenn das neue Programm installiert wird, oder die relevanten Abschnitte des Codes, nachdem er installiert ist, neu zu ordnen.
  • Wie oben beschrieben, können temporäre Dateien benutzt werden, um fast den ganzen freien Platz auf der logischen Platte während einiger Phasen des Installationsprozesses zu belegen. Diese temporären Dateien werden typischerweise nach Vollendung des Installationsprozesses durch das Installationsprogramm gelöscht. Um aber sicherzustellen, dass die temporären Dateien gelöscht werden und der unbenutzte Platz dem Computer zur Verfügung steht, kann der von dem Betriebssystem durchgeführte "Post-Reboot"- oder "Tune-up"-Process programmiert werden, um das Vorhandensein einer oder mehrerer temporärer Dateien zu prüfen, und sie, wenn gefunden, zu löschen. Der Post-Reboot-Abschnitt des Einrichtungsprozesses kann auch verwendet werden, um alle optimierten Systemdateien zu löschen oder umzubenennen, die nicht gelöscht oder umbenannt werden konnten, weil sie während des Installationsprozesses in Gebrauch waren.
  • 8 ist ein Flussdiagramm, das ein alternatives Verfahren 800 zur Verwendung der Prinzipien der vorliegenden Erfindung veranschaulicht, um startbezogene Codeabschnitte und andere plattenintensive Vorgänge zu optimieren, nachdem der Code auf einer logischen Platte installiert wurde. Wie das Verfahren von 3 setzt das Verfahren 800 eine Installationsplatte ein, die eine oder mehrere Ladefolgelisten und Programmdateien enthält. Bei diesem Verfahren werden jedoch die Programmdateien zuerst auf einer logischen Platte in einer herkömmlichen Weise zusammen mit einer Kopie der Ladefolgeliste installiert. An einem Punkt nach der Installation kann ein Tune-up-Programm die Ladefolgeliste verwenden, um die plattenintensiven Daten in einer optimalen Weise neu zu ordnen.
  • In Schritt 805 installiert das Verfahren 800 die Programmdateien auf der logischen Platte in einer herkömmlichen Weise. An diesem Punkt wird auch eine Kopie der Ladefolgeliste auf die logische Platte kopiert.
  • Nachdem das Programm installiert ist, kann ein getrenntes Programm benutzt werden, um die Programmabschnitte neu zu ordnen, die mit plattenintensiven Operationen, z.B. einem Programmstart, verbunden sind. Dieses "Tune-up"- oder Neuordnungsprogramm kann zu verschiedenen Zeiten gefahren werden. Zum Beispiel kann das Tune-up-Programm automatisch gefahren werden, wenn der Computer nach der Programminstallation erstmals neu gestartet wird. Das Tune-up-Programm kann auch manuell gefahren werden, wann immer der Benutzer Wartungsaktivitäten auf seinem Computer durchzuführen wünscht.
  • Schritt 810 ist der erste Schritt in dem Tune-up- oder Neuordnungsprozess. In Schritt 810 fragt das Tune-up-Programm den Computer ab und erlangt Daten, die das auf dem Computer installierte Betriebssystem, Eigenschaften der Festplatte usw. betreffen.
  • In Schritt 815 benutzt das Tune-up-Programm die in Schritt 810 erlangte Information, um zu bestimmen, welche Ladefolgeliste verwendet werden sollte, um die Reihenfolge zu bestimmen, in der die plattenintensiven Abschnitte der Dateien auf der logischen Platte angeord net werden sollten. Wie früher erwähnt, können verschiedene Ladefolgelisten bereitgestellt werden, um verschiedene Versionen eines Betriebssystems, verschiedene Festplatten-Cluster-Größen usw. zu akkommodieren.
  • Die Fachleute werden einsehen, dass Programmserien, z.B. die Programmserie "MICROSOFT OFFICE" mehr als ein Anwendungsprogramm umfassen können. Die vorliegende Erfindung kann auf die Installation einer Serie von Programmen durch Bereitstellen einer Ladefolgeliste für jedes Anwendungsprogramm angewandt werden. Wenn mehrfache Versionen eines Betriebssystems unterstützt werden, kann die Erfindung eine Ladefolgeliste pro Anwendungsprogramm pro unterstütztes System bereitstellen. Wenn die Programme "optimiert" (während oder nach der Installation) werden, können die anwendbaren Ladefolgelisten in einer vorbestimmten Reihenfolge miteinander verkettet werden. Wenn ein startbezogener Dateiabschnitt in mehr als einer Ladefolgeliste enthalten ist, kann dieser Abschnitt aus allen außer der ersten Ladefolgeliste, die ihn enthält, entfernt werden. Die Optimierung würde dann entsprechend der verschmolzenen Ladefolgeliste vonstatten gehen.
  • In Schritt 820 identifiziert das Tune-up-Programm Blöcke von zusammenhängenden freien Clustern (auf der logischen Platte), die benutzt werden, um die plattenintensiven Abschnitte der Dateien zu speichern. Wie oben beschrieben, erwägt die vorliegende Erfindung mehrere Verfahren zum Identifizieren von verfügbarem Plattenplatz, der ausreicht, um die Startdateiabschnitte zu speichern.
  • Nachdem genügend zusammenhängende freie Cluster zum Installieren der startbezogenen Dateiabschnitte identifiziert ist, geht das Installationsprogramm zu Schritt 825 und ordnet die plattenintensiven Dateiabschnitte in dem freien Platz in der richtigen Reihenfolge neu an.
  • Zusammengefasst, das Verfahren von 8 erlaubt Dateien, bei der Installation (oder kurz danach) neu geordnet zu werden, und ihnen auch, zu jeder Zeit nach der Installation optimiert oder eingerichtet zu werden. Unter Verwendung der Ladefolgeliste wird diese Optimierung ohne die beim Stand der Technik verwendete Überwachungsfunktion zu Stande gebracht.
  • Schließlich verwenden die oben beschriebenen Prozesse die von dem Betriebssystem bereitgestellten Lese- und Schreibfunktionen. Diese Lösung ist sehr robust und beseitigt im Wesentlichen die Möglichkeit, dass der Installationsprozess Daten auf der Festplatte des Benutzers zerstören wird. Die Fachleute werden jedoch einsehen, dass Daten auf die Festplatte unter Verwendung von niederstufigen Funktionen, die Daten auf der Cluster-Stufe schreiben, geschrieben werden können. Diese Lösung verlangt, dass das Installationsprogramm die Dateiabschnitte in die richtigen Cluster schreibt und dann zurückgeht und die FAT aktualisiert. Obwohl diese Lösung im Kontext der vorliegenden Erfindung eingesetzt werden kann, bietet sie eine größere Gefahr, dass Daten auf der Festplatte in irgendeiner Weise verfälscht werden.
  • REZENSION DER AUSFÜHRLICHEN BESCHREIBUNG
  • Aus der vorangehenden Beschreibung ist zu ersehen, dass die vorliegende Erfindung ein verbessertes System und Verfahren zum Installieren oder Neuordnen von Dateien in einer Weise, die die Programmstartzeit verbessert, bereitstellt. Ein Hauptvorteil der Erfindung ist, dass sie die Notwendigkeit, den Anlaufprozess nach dem Installieren eines Programm zu überwachen, durch Bereitstellen einer oder mehrerer Ladefolgelisten beseitigt.
  • Die oben beschriebenen Ausführungen überwachen den Anlaufprozess des Programms und bestimmen die Reihenfolge, in der Dateiabschnitte von einer Platte während plattenintensiver Operationen, z.B. Starten des Programms oder Auswählen bestimmter Programmbefehle, gelesen werden. Diese Daten werden verwendet, um eine Ladefolgeliste zu erzeugen, die die Reihenfolge angibt, in der verschiedenen Abschnitte der Dateien während des Starts gelesen werden. Während der Installation liest das Installationsprogramm die Daten aus der Ladefolgeliste und schreibt die startbezogenen Dateiabschnitte in dieser Reihenfolge in zusammenhängende Cluster auf der logischen Platte. Alternativ werden die startbezogenen Abschnitte der Dateien entsprechend der Ladefolgeliste nach dem Installieren des Programms neu geordnet. Danach kann der Computer startbezogene Daten von der logischen Platte in der richtigen Reihenfolge auf zusammenhänganden Platten-Clustern lesen, wodurch verschwendete Zeit minimiert oder beseitigt wird, die aus Plattenzugriffen entstehen würde, wenn sich die Plattenköpfe zwischen nicht zusammenhängenden Clustern bewegen müssten, um die Startdaten zu lesen.
  • Die Erfindung kann in einem oder mehreren Programmmodulen implementiert werden, die auf den in 28 veranschaulichten Merkmalen basieren oder diese implementieren. Keine besondere Programmiersprache wurde zur Durchführung der verschiedenen oben beschriebenen Prozeduren beschrieben, weil in Erwägung gezogen wird, dass die oben beschriebenen und in den begleitenden Zeichnungen veranschaulichten Operationen, Schritte und Prozeduren ausreichend offenbart werden, um einer in der Technik erfahrenen Person zu erlauben, die vorliegende Erfindung zu praktizieren. Außerdem gibt es viele Computer und Betriebssysteme, die beim Praktizieren der vorliegenden Erfindung verwendet werden können, und daher könnte kein detailliertes Computerprogramm bereitgestellt werden, das auf all diese vielen verschiedenen Systeme anwendbar wäre. Jeder Benutzer eines bestimmten Computers wird sich der Sprache und der Werkzeuge bewusst sein, die für seine Bedürfnisse und Zwecke am nützlichsten sind.
  • Obwohl die Erfindung hauptsächlich im Kontext eines Installationsprogramms, das Anwendungsprogramme unter dem Betriebssystem "WINDOWS 95" installiert, beschrieben wurde, werden die Fachleute einsehen, dass die Erfindung auf Programmmodule verschiedener Arten und auf Systeme anwendbar ist, die eine Vielfalt von Betriebssystemen fahren und eine Vielfalt von Dateisystemen verwenden. Zum Beispiel kann die vorliegende Erfindung verwendet werden, um Anwendungsprogramme, Dienstprogramme, Betriebssystem-Programmmodule und dergleichen zu installieren. Wie oben beschrieben, kann die vorliegende Erfindung auch eingesetzt werden, um die mit einer Vielfalt von plattenintensiven Operationen, die das Starten eines Anwendungsprogramms, das Starten des mit einem Programmbefehl (z.B FILE OPEN) verbunden Codes und dergleichen einschließen, verbundenen Programmdaten anzuordnen.

Claims (17)

  1. Computerlesbares Medium, das umfasst: eine Vielzahl von Dateien, die startbezogene Abschnitte enthalten; eine Ladefolgeliste, die die Reihenfolge angibt, in der die startbezogenen Abschnitte der Vielzahl von Dateien auf einer Platte (27) zu installieren sind; computerausführbare Anweisungen zur Durchführung von Schritten, die umfassen: Identifizieren wenigstens einer Gruppe von zusammenhängenden freien Clustern auf der Platte, und Installieren, von der Installationsplatte, der startbezogenen Abschnitte der Vielzahl von Dateien in der wenigstens einen Gruppe von zusammenhängenden freien Clustern, wobei die startbezogenen Abschnitte auf der Platte (27) in der in der Ladefolgeliste angegebenen Reihenfolge gespeichert werden, durch Schreiben einer temporären Datei, um wenigstens einen der freien Cluster der Gruppe von zusammenhängenden freien Clustern zu belegen und, in mehrfachen Durchgängen, die startbezogenen Abschnitte jeder Datei zu zwingen, während der Installation in nicht zusammenhängende Cluster in der in der Ladefolgeliste angegebenen Reihenfolge geschrieben zu werden.
  2. Computerlesbares Medium nach Anspruch 1, wobei die Ladefolgeliste eine Vielzahl von Einträgen enthält, wobei jeder der Einträge eine der Vielzahl von Dateien und den zu installierendenden Abschnitt der Datei identifiziert.
  3. Computerlesbares Medium nach Anspruch 1 oder 2, wobei der Schritt des Installierens der startbezogenen Abschnitte der Vielzahl von Dateien die folgenden Schritte umfasst: Lesen eines Eintrags in der Ladefolgeliste, wobei der Eintrag eine der Vielzahl von Dateien und einen zu lesenden Abschnitt der Datei identifiziert; Lesen des Abschnitts der Datei aus der identifizierten der Vielzahl von Dateien, und Schreiben des Abschnitts der Datei auf die Platte (27).
  4. Computerlesbares Medium nach einem der Ansprüche 1 bis 3, wobei der Schritt des Identifizierens wenigstens einer Gruppe von zusammenhängenden freien Clustern die folgenden Schritte umfasst: Lesen einer Liste von verfügbaren freien Clustern aus auf der Platte (27) gespeicherten Daten, und Identifizieren der Gruppen von zusammenhängenden freien Clustern mit den größten Zahlen von zusammenhängenden freien Clustern.
  5. Computerlesbares Medium nach einem der Ansprüche 1 bis 4, wobei die Vielzahl von Dateien nicht startbezogene Abschnitte enthaften, wobei die nicht startbezogenen Abschnitte nach dem Schritt des Installierens der startbezogenen Abschnitte der Vielzahl von Dateien auf der Platte (27) gespeichert werden.
  6. Computerlesbares Medium nach einem der Ansprüche 1 bis 5, wobei die startbezogenen Abschnitte während des Programmanlaufs gelesen werden.
  7. Computerlesbares Medium nach einem der Ansprüche 1 bis 5, wobei die startbezogenen Abschnitte gelesen werden, wenn ein Programmbefehl ausgeführt wird.
  8. Computerlesbares Medium nach Anspruch 4, wobei der Schritt des Identifizierens wenigstens einer Gruppe von zusammenhängenden freien Clustern auf der Platte (27) die folgenden Schritte umfasst: Feststellen, ob die identifizierte Gruppe von zusammenhängenden freien Clustern die erste freie Cluster-Gruppe auf der Platte (27) ist, und wenn nicht, Schreiben einer temporären Datei in die freien Cluster, die gefüllt werden müssen, um zu der identifizierten Gruppe von zusammenhängenden freien Clustern zu gelangen.
  9. Verfahren zum Installieren eines Programmcodes von einer Installationsplatte auf eine Platte (27), das die folgenden Schritte umfasst: Erzeugen einer Vielzahl von Dateien, die startbezogene Abschnitte enthalten; Bestimmen der Reihenfolge, in der die startbezogenen Abschnitte während des Programmstarts gelesen werden; Erzeugen einer Ladefolgeliste, die die Reihenfolge angibt, in der die startbezogenen Abschnitte gelesen werden, und Speichern der Vielzahl von Dateien, der Ladefolgeliste und eines Installationsprogramms auf einer Installationsplatte; wobei das Installationsprogramm computerausführbare Anweisungen zum Durchführen von Schritten enthält, die umfassen: Identifizieren wenigstens einer Gruppe von zusammenhängenden freien Clustern auf einer Platte (27), und Installieren, von der Installationsplatte, der startbezogenen Abschnitte der Vielzahl von Dateien in wenigstens einer Gruppe von zusammenhängenden freien Clustern, wobei die startbezogenen Abschnitte auf der Platte (27) in der in der Ladefolgeliste angegebenen Reihenfolge gesichert werden, durch Schreiben einer temporären Datei, um wenigstens einen der freien Cluster der Gruppe von zusammenhängenden freien Clustern zu belegen und, in mehrfachen Durchgängen, die startbezogenen Abschnitte jeder Datei zu zwingen, während der Installation in nicht zusammenhängende Cluster in der in der Ladefolgeliste angegebenen Reihenfolge geschrieben zu werden.
  10. Verfahren nach Anspruch 9, wobei der Schritt des Installierens der startbezogenen Abschnitte der Vielzahl von Dateien die folgenden Schritte umfasst: Lesen einer Vielzahl von Einträgen aus der auf der Installationsplatte gespeicherten Ladefolgeliste, wobei jeder Eintrag eine der Vielzahl von Daten und einen zu lesenden Abschnitt der Datei identifiziert; für jeden aus der Ladefolgeliste gelesenen Eintrag, Lesen, von der Installationsplatte, des durch den Eintrag identifizierten Dateiabschnitts, und Schreiben des gelesenen Dateiabschnitts in die Gruppe von zusammenhängenden freien Clustern auf der Platte (27) in einer Reihenfolge, die den Einträgen in der Ladefolgeliste entspricht.
  11. Verfahren nach einem der Ansprüche 9 oder 10, wobei jeder Eintrag in der Ladefolgeliste einen Datei-Identifikator und die Stelle der aus der identifizierten Datei zu lesenden Daten enthält.
  12. Verfahren nach einem der Ansprüche 9 oder 10, wobei jeder Eintrag in der Ladefolgeliste einen Dateinamen, einen Versatz in die genannte Datei und eine aus der genannten Datei zu lesende Datenmenge enthält.
  13. Verfahren nach einem der Ansprüche 9 bis 12, wobei der Schritt des Identifizierens wenigstens einer Gruppe von zusammenhängenden freien Clustern die folgenden Schritte umfasst: Lesen einer Liste von verfügbaren freien Clustern aus auf der Platte (27) gespeicherten Daten, und Identifizieren der Gruppen von zusammenhängenden freien Clustern mit den größten Zahlen von zusammenhängenden freien Clustern.
  14. Verfahren nach einem der Ansprüche 9 bis 13, wobei die Vielzahl von Dateien nicht startbezogene Abschnitte enthalten, wobei die nicht startbezogenen Abschnitte nach dem Schritt des Installierens der startbezogenen Abschnitte der Vielzahl von Dateien auf der Platte (27) gespeichert werden.
  15. Verfahren nach einem der Ansprüche 9 bis 14, wobei das Erzeugen einer Ladefolgeliste, die die Reihenfolge angibt, in der die startbezogenen Abschnitte gelesen werden, das Analysieren des Inhalts der anfänglichen Ladefolgeliste und Entfernen aller Dateiabschnitte enthält, die nicht optimiert oder neu installiert werden, wenn die Programmdateien installiert werden.
  16. Verfahren nach einem der Ansprüche 9 bis 15, wobei der Schritt des Identifizierens wenigstens einer Gruppe von zusammenhängenden freien Clustern auf der Platte (27) die folgenden Schritte umfasst: Feststellen, ob die identifizierte Gruppe von zusammenhängenden freien Clustern die erste freie Cluster-Gruppe auf der Platte (27) ist, und wenn nicht, Schreiben einer temporären Datei in die freien Cluster, die gefüllt werden müssen, um zu der identifizierten Gruppe von zusammenhängenden freien Clustern zu gelangen.
  17. Verfahren zum Installieren und Optimieren von Programmcodedaten auf einer logischen Platte, das die folgenden Schritte umfasst: Erzeugen einer Vielzahl von Dateien, die mit plattenintensiven Operationen verbundene Abschnitte enthalten; vor dem Installieren der Vielzahl von Dateien auf der logischen Platte (27), Bestimmen der Reihenfolge, in der die plattenintensiven Abschnitte während der plattenintensiven Operationen gelesen werden; Erzeugen einer Ladefolgeliste, die die Reihenfolge angibt, in der die plattenintensiven Abschnitte während der plattenintensiven Operationen gelesen werden; Speichern der Vielzahl von Dateien, der Ladefolgeliste und eines Installationsprogramms auf einer Installationsplatte; Installieren der Vielzahl von Dateien und der Ladefolgeliste von der Installationsplatte auf die logische Platte (27) mittels des Installationsprogramms; nach Installation auf der logischen Platte (27), Optimieren der plattenintensiven Abschnitte durch Ausführen der folgenden Schritte: Identifizieren wenigstens einer Gruppe von zusammenhängenden freien Clustern auf der logischen Platte (27), und Umordnen in der wenigstens einen Gruppe von zusammenhängenden freien Clustern der plattenintensiven Abschnitte in der in der Ladefolgeliste angegebenen Reihenfolge durch Schreiben einer temporären Datei, um wenigstens einen der freien Cluster der Gruppe von zusammenhängenden freien Clustern zu belegen und, in mehrfachen Durchgängen, die startbezogenen Abschnitte jeder Datei zu zwingen, in nicht zusammenhängende Cluster in der in der Ladefolgeliste angegebenen Reihenfolge geschrieben zu werden.
DE69926227T 1998-04-15 1999-04-08 System und verfahren zum verbessern von programmstartzeit Expired - Lifetime DE69926227T2 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US60702 1998-04-15
US09/060,702 US6202121B1 (en) 1998-04-15 1998-04-15 System and method for improved program launch time
PCT/US1999/007690 WO1999053395A1 (en) 1998-04-15 1999-04-08 System and method for improved program launch time

Publications (2)

Publication Number Publication Date
DE69926227D1 DE69926227D1 (de) 2005-08-25
DE69926227T2 true DE69926227T2 (de) 2006-04-13

Family

ID=22031234

Family Applications (2)

Application Number Title Priority Date Filing Date
DE69943066T Expired - Lifetime DE69943066D1 (de) 1998-04-15 1999-04-08 System und Verfahren zum Verbessern von Programmstartzeit
DE69926227T Expired - Lifetime DE69926227T2 (de) 1998-04-15 1999-04-08 System und verfahren zum verbessern von programmstartzeit

Family Applications Before (1)

Application Number Title Priority Date Filing Date
DE69943066T Expired - Lifetime DE69943066D1 (de) 1998-04-15 1999-04-08 System und Verfahren zum Verbessern von Programmstartzeit

Country Status (7)

Country Link
US (1) US6202121B1 (de)
EP (2) EP1607855B1 (de)
JP (2) JP4235362B2 (de)
CN (1) CN1212563C (de)
DE (2) DE69943066D1 (de)
TW (1) TW432317B (de)
WO (1) WO1999053395A1 (de)

Families Citing this family (81)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6675233B1 (en) * 1998-03-26 2004-01-06 O2 Micro International Limited Audio controller for portable electronic devices
US6895448B2 (en) * 1998-03-26 2005-05-17 O2 Micro, Inc. Low-power audio CD player for portable computers
US6954804B2 (en) * 1998-03-26 2005-10-11 Micro, Inc. Controller for portable electronic devices
US6202121B1 (en) * 1998-04-15 2001-03-13 Microsoft Corporation System and method for improved program launch time
US6317875B1 (en) * 1999-01-15 2001-11-13 Intel Corporation Application execution performance through disk block relocation
JP2001007745A (ja) * 1999-06-24 2001-01-12 Techno Collage:Kk 非接触データ転送システム
JP2001117783A (ja) * 1999-08-10 2001-04-27 Seiko Epson Corp プログラム起動システム及びプログラム起動制御方法
JP2003520365A (ja) * 1999-08-24 2003-07-02 オーツー・マイクロ・インターナショナル・リミテッド ポータブルコンピュータ用の起動キー及び低電力cd−romプレーヤ
US6496977B1 (en) * 1999-10-21 2002-12-17 International Business Machines Corporation Method and system for implementing network filesystem-based aid for computer operating system upgrades
US6735678B2 (en) * 2000-05-24 2004-05-11 Seagate Technology Llc Method and apparatus for disc drive defragmentation
US7130930B1 (en) * 2000-06-16 2006-10-31 O2 Micro Inc. Low power CD-ROM player with CD-ROM subsystem for portable computer capable of playing audio CDs without supply energy to CPU
US6681391B1 (en) * 2000-06-21 2004-01-20 Microsoft Corporation Method and system for installing software on a computer system
US6763428B1 (en) 2000-08-02 2004-07-13 Symantec Corporation Methods and systems for performing push-pull optimization of files while file storage allocations are actively changing
US7522964B2 (en) 2000-12-01 2009-04-21 O2Micro International Limited Low power digital audio decoding/playing system for computing devices
US7818443B2 (en) * 2000-12-01 2010-10-19 O2Micro International Ltd. Low power digital audio decoding/playing system for computing devices
US7522965B2 (en) * 2000-12-01 2009-04-21 O2Micro International Limited Low power digital audio decoding/playing system for computing devices
US7890741B2 (en) * 2000-12-01 2011-02-15 O2Micro International Limited Low power digital audio decoding/playing system for computing devices
US7526349B2 (en) * 2000-12-01 2009-04-28 O2Micro International Limited Low power digital audio decoding/playing system for computing devices
US20020069353A1 (en) * 2000-12-01 2002-06-06 Smith R. Doug Automated device driver installation
US7522966B2 (en) * 2000-12-01 2009-04-21 O2Micro International Limited Low power digital audio decoding/playing system for computing devices
JP2004517399A (ja) * 2000-12-22 2004-06-10 コーニンクレッカ フィリップス エレクトロニクス エヌ ヴィ フラグメンテーションを減少させるための方法及びシステム
US6480932B1 (en) * 2001-01-31 2002-11-12 Western Digital Technologies, Inc. Computer system having a host computer coupled to a disk drive with a drive-selected-application partition for storing data for execution by the host computer in response to drive-determined conditions
JP2002304823A (ja) * 2001-04-10 2002-10-18 Fujitsu Ltd リオーダリングコントローラ、リオーダリング方法及び記憶装置
US6990574B2 (en) * 2001-05-01 2006-01-24 General Electric Company Object oriented framework for scanner/workstation configuration
US20030079217A1 (en) * 2001-10-19 2003-04-24 Chern-Muh Wang Method for subserving preloaded programs
US6924667B2 (en) * 2002-07-19 2005-08-02 O2Micro International Limited Level shifting and level-shifting amplifier circuits
US20040068667A1 (en) * 2002-10-03 2004-04-08 International Business Machines Corporation Method and apparatus for securing and managing cluster computing in a network data processing system
EP1595259A1 (de) * 2003-02-12 2005-11-16 Koninklijke Philips Electronics N.V. Speichermedium mit reserviertem bereich für dateisystemdaten undanwendungs-startup-daten
GB2399188B (en) * 2003-03-04 2005-11-30 Fujitsu Serv Ltd Reducing the boot-up time of a computer system
US7607000B1 (en) 2003-05-13 2009-10-20 Apple Inc. Method for booting an operating system
TW591538B (en) * 2003-07-25 2004-06-11 Via Tech Inc Process for loading operating system
CN1890645B (zh) * 2003-12-03 2010-09-08 松下电器产业株式会社 信息记录介质的数据处理装置以及数据记录方法
US20050165856A1 (en) * 2004-01-27 2005-07-28 International Business Machines Corporation System and method for autonomic performance enhancement of storage media
US7536593B2 (en) * 2004-03-05 2009-05-19 International Business Machines Corporation Apparatus, system, and method for emergency backup
US7275150B2 (en) * 2004-03-15 2007-09-25 International Business Machines Corporation Method and system for adding frequently selected applications to a computer startup sequence
JP2005301801A (ja) * 2004-04-14 2005-10-27 Nec Corp 情報処理装置、メモリ管理装置、およびプログラム
JP4682139B2 (ja) * 2004-06-30 2011-05-11 パナソニック株式会社 プログラム実行機器およびそのプログラム実行方法
FR2875923B1 (fr) * 2004-09-28 2006-12-22 Thales Sa Dispositif d'optimisation et de mise en route d'une application commandee par un calculateur a systeme d'exploitation multitache
US7689979B1 (en) * 2005-08-02 2010-03-30 Adobe Systems Inc. Methods and apparatus to improve application launch time
US7926053B1 (en) * 2005-08-26 2011-04-12 Adobe Systems Incorporated Methods and apparatus for optimizing installation location of software
US7669044B2 (en) * 2006-09-29 2010-02-23 Microsoft Corporation Accelerated system boot
CN100451993C (zh) * 2006-12-21 2009-01-14 威盛电子股份有限公司 多来源数据处理方法
US8087017B1 (en) * 2007-04-09 2011-12-27 Moka5, Inc. Trace-assisted prefetching of virtual machines in a distributed system
US7793266B2 (en) * 2007-06-04 2010-09-07 International Business Machines Corporation Method, apparatus and computer program product for optimizing access to the content of a virtual application container on a fixed, read-only medium
US7793265B2 (en) * 2007-06-04 2010-09-07 International Business Machines Corporation Method, apparatus and computer program product for optimizing file accesses for an application executing in a virtual container
KR101434297B1 (ko) * 2007-09-11 2014-08-27 삼성전자주식회사 파일할당표를 이용한 파일 디바이드 및 머지 방법
US8799429B1 (en) * 2008-05-06 2014-08-05 American Megatrends, Inc. Boot acceleration by consolidating client-specific boot data in a data storage system
US8127122B2 (en) * 2008-09-16 2012-02-28 Hewlett-Packard Development Company, L.P. Selection of boot drive in a computer system
CN101478462B (zh) * 2008-12-17 2010-12-08 成都市华为赛门铁克科技有限公司 存储数据读取和写入的装置和方法及固态硬盘
US20110099327A1 (en) * 2009-10-27 2011-04-28 Sony Ericsson Mobile Communications Ab System and method for launching an application programming utilizing a hybrid version of demand paging
WO2011053312A1 (en) * 2009-10-30 2011-05-05 Hewlett-Packard Development Company, L.P. Systems and methods of creating a restorable computer installation
US8443167B1 (en) 2009-12-16 2013-05-14 Western Digital Technologies, Inc. Data storage device employing a run-length mapping table and a single address mapping table
US8194340B1 (en) 2010-03-18 2012-06-05 Western Digital Technologies, Inc. Disk drive framing write data with in-line mapping data during write operations
US9330715B1 (en) 2010-03-22 2016-05-03 Western Digital Technologies, Inc. Mapping of shingled magnetic recording media
US8693133B1 (en) 2010-03-22 2014-04-08 Western Digital Technologies, Inc. Systems and methods for improving sequential data rate performance using sorted data zones for butterfly format
US8856438B1 (en) 2011-12-09 2014-10-07 Western Digital Technologies, Inc. Disk drive with reduced-size translation table
US8687306B1 (en) 2010-03-22 2014-04-01 Western Digital Technologies, Inc. Systems and methods for improving sequential data rate performance using sorted data zones
US8699185B1 (en) 2012-12-10 2014-04-15 Western Digital Technologies, Inc. Disk drive defining guard bands to support zone sequentiality when butterfly writing shingled data tracks
US8621133B1 (en) 2010-06-29 2013-12-31 Western Digital Technologies, Inc. Reading multiple metadata files across multiple tracks
CN102375850B (zh) * 2010-08-23 2013-10-30 联想(北京)有限公司 电子设备的文件排布方法、启动方法及电子设备
JP5342522B2 (ja) * 2010-08-26 2013-11-13 株式会社デジタル インストール方法及びプログラム
US8478979B2 (en) 2010-09-09 2013-07-02 Hewlett-Packard Development Company, L.P. Disable a feature of a computing machine
US8756361B1 (en) 2010-10-01 2014-06-17 Western Digital Technologies, Inc. Disk drive modifying metadata cached in a circular buffer when a write operation is aborted
US8954664B1 (en) 2010-10-01 2015-02-10 Western Digital Technologies, Inc. Writing metadata files on a disk
US8832708B2 (en) 2010-10-12 2014-09-09 Microsoft Corporation Process pool of empty application hosts to improve user perceived launch time of applications
US9569351B2 (en) 2010-10-25 2017-02-14 Seagate Technology Llc Storing corresponding data units in a common storage unit
US8793429B1 (en) 2011-06-03 2014-07-29 Western Digital Technologies, Inc. Solid-state drive with reduced power up time
US8756382B1 (en) 2011-06-30 2014-06-17 Western Digital Technologies, Inc. Method for file based shingled data storage utilizing multiple media types
EP2557497A1 (de) * 2011-08-08 2013-02-13 Advanced Digital Broadcast S.A. Verfahren zur Verbesserung des Bootens einer Computervorrichtung
US9213493B1 (en) 2011-12-16 2015-12-15 Western Digital Technologies, Inc. Sorted serpentine mapping for storage drives
JP5679074B2 (ja) * 2011-12-19 2015-03-04 富士通株式会社 ソフトウェアのインストール順序を決定する方法、プログラム、及び装置
US8819367B1 (en) 2011-12-19 2014-08-26 Western Digital Technologies, Inc. Accelerated translation power recovery
US8612706B1 (en) 2011-12-21 2013-12-17 Western Digital Technologies, Inc. Metadata recovery in a disk drive
CN102609291B (zh) * 2012-02-29 2015-05-27 记忆科技(深圳)有限公司 基于固态硬盘的系统启动方法和固态硬盘
US10078474B1 (en) * 2012-06-29 2018-09-18 Emc Corporation Method of maintaining list of scratch volumes in shared filesystems across multiple nodes
CN102981874B (zh) * 2012-11-15 2015-12-02 北京奇虎科技有限公司 计算机处理系统和注册表重定向方法
CN103530319B (zh) * 2013-09-16 2017-12-15 华为技术有限公司 一种操作请求的处理方法和装置
US8953269B1 (en) 2014-07-18 2015-02-10 Western Digital Technologies, Inc. Management of data objects in a data object zone
US9875055B1 (en) 2014-08-04 2018-01-23 Western Digital Technologies, Inc. Check-pointing of metadata
JP6668840B2 (ja) * 2016-03-11 2020-03-18 富士通株式会社 ソフトウェア導入支援プログラム、ソフトウェア導入支援装置、及びソフトウェア導入支援方法
CN107402721A (zh) * 2017-06-30 2017-11-28 郑州云海信息技术有限公司 一种硬盘的控制方法、装置及服务器

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH05216594A (ja) * 1992-01-31 1993-08-27 Nec Corp 再配置ディスク装置
US5325532A (en) * 1992-09-25 1994-06-28 Compaq Computer Corporation Automatic development of operating system boot image
US5473767A (en) * 1992-11-03 1995-12-05 Intel Corporation Method and apparatus for asynchronously stopping the clock in a processor
US5432937A (en) * 1993-08-20 1995-07-11 Next Computer, Inc. Method and apparatus for architecture independent executable files
JP3564732B2 (ja) * 1994-06-30 2004-09-15 ソニー株式会社 ディスク制御方法および装置
US5732266A (en) * 1994-09-02 1998-03-24 Compaq Computer Corporation Storage medium storing application programs and application initialization files and automatic launching of computer applications stored on the storage medium
US5574907A (en) 1994-11-30 1996-11-12 Microsoft Corporation Two-pass defragmentation of compressed hard disk data with a single data rewrite
US5778392A (en) 1996-04-01 1998-07-07 Symantec Corporation Opportunistic tile-pulling, vacancy-filling method and apparatus for file-structure reorganization
JPH09293007A (ja) * 1996-04-26 1997-11-11 Nec Corp プログラムインストール装置
US5802593A (en) * 1996-09-06 1998-09-01 Intel Corporation Method and apparatus for improving disk drive performance
US5857101A (en) * 1997-04-15 1999-01-05 Acceleration Software International Corporation Program lunch acceleration
US5933630A (en) * 1997-06-13 1999-08-03 Acceleration Software International Corporation Program launch acceleration using ram cache
US6202121B1 (en) * 1998-04-15 2001-03-13 Microsoft Corporation System and method for improved program launch time

Also Published As

Publication number Publication date
JP4235362B2 (ja) 2009-03-11
JP2008251018A (ja) 2008-10-16
EP1607855A3 (de) 2007-07-04
WO1999053395A1 (en) 1999-10-21
EP1073947B1 (de) 2005-07-20
EP1607855A2 (de) 2005-12-21
JP2002511615A (ja) 2002-04-16
EP1073947A1 (de) 2001-02-07
CN1212563C (zh) 2005-07-27
DE69943066D1 (de) 2011-02-03
DE69926227D1 (de) 2005-08-25
CN1296582A (zh) 2001-05-23
JP4571992B2 (ja) 2010-10-27
EP1607855B1 (de) 2010-12-22
US6202121B1 (en) 2001-03-13
TW432317B (en) 2001-05-01

Similar Documents

Publication Publication Date Title
DE69926227T2 (de) System und verfahren zum verbessern von programmstartzeit
DE102013215535B4 (de) Sicherung oder wiederherstellung von daten mit hilfe eines hauptspeichers und nichtflüchtiger speichermedien
DE3743890C2 (de)
DE60313783T2 (de) Bewegen von daten zwischen speichereinheiten
DE69636192T2 (de) Datenmigrationssystem und -verfahren unter verwendung von undichten dateien
DE60025749T2 (de) Dateisystemabbildübertragung zwischen ungleichen dateisystemen
DE112017005868T5 (de) Verwaltung von e/a-abläufen für datenobjekte in einem speichersystem
US8886610B2 (en) Backup simulation for backing up filesystems to a storage device
DE102020106971A1 (de) Datenschreibverwaltung im nichtflüchtigen speicher
DE602005001041T2 (de) Speicherauszugssystem
US5808821A (en) Method for eliminating file fragmentation and reducing average seek times in a magnetic disk media environment
DE112018003585B4 (de) Verfahren, Computerprogrammprodukt und Speicherbandlaufwerk-Hardwareeinheit zum Verbessern der Deduplizierung eines Bandlaufwerkspeichers
DE19847133A1 (de) System und Verfahren zum Aktualisieren von Zuordnungen von Partitionen zu logischen Laufwerken in einem Computerspeichergerät
DE202010017667U1 (de) Datenspeichervorrichtung mit Flash-Speicherchips
DE112009004503T5 (de) Optimierung der zugriffszeit von auf speichern gespeicherten dateien
WO2015090668A1 (de) Posix-kompatibles dateisystem, verfahren zum erzeugen einer dateiliste und speichervorrichtung
DE60312527T2 (de) Verwalten von daten mittels einer mehrzahl von speicherattributen
DE102014116031A1 (de) SWAT-Befehl und API für atomare Auslagerung und Trimmen von LBAs
DE69920363T2 (de) Daten aufnahme/wiedergabgabegerät und verfahren hierfür
DE19846398A1 (de) Verfahren zm Simulieren eines Computerspeichergeräts
DE19847201A1 (de) System und Verfahren zur Verwendung eines RAM-Laufwerks
DE102012221814A1 (de) Neuanordnung von Software-Abbildern auf der Grundlage von deren vorhergesagter Verwendung
DE60105490T2 (de) Informationsaufzeichnungsmedium, Informationsaufzeichnungsverfahren, Informationsaufzeichnungsgerät, Informationswiedergabeverfahren und Informationswiedergabegerät
DE19956525B4 (de) Computersystem und Verfahren zum Vorbereiten eines computerlesbaren Mediums
DE69816472T2 (de) Einrichtung und verfahren zum zugreifen auf einen speicher mit wahlfreiem zugriff

Legal Events

Date Code Title Description
8364 No opposition during term of opposition