DE60008929T2 - Schnellstart eines mikroprozessorbasierten systems - Google Patents

Schnellstart eines mikroprozessorbasierten systems Download PDF

Info

Publication number
DE60008929T2
DE60008929T2 DE60008929T DE60008929T DE60008929T2 DE 60008929 T2 DE60008929 T2 DE 60008929T2 DE 60008929 T DE60008929 T DE 60008929T DE 60008929 T DE60008929 T DE 60008929T DE 60008929 T2 DE60008929 T2 DE 60008929T2
Authority
DE
Germany
Prior art keywords
routine
memory
image
destination state
image storage
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
DE60008929T
Other languages
English (en)
Other versions
DE60008929D1 (de
Inventor
E. Richard STEIN
Eugene Khenson
T. Scott MAZAR
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.)
Cardiac Pacemakers Inc
Original Assignee
Cardiac Pacemakers Inc
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 Cardiac Pacemakers Inc filed Critical Cardiac Pacemakers Inc
Publication of DE60008929D1 publication Critical patent/DE60008929D1/de
Application granted granted Critical
Publication of DE60008929T2 publication Critical patent/DE60008929T2/de
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • 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/4401Bootstrapping
    • G06F9/4418Suspend and resume; Hibernate and awake

Description

  • Die Erfindung betrifft Systeme und Verfahren zum Betrieb von Computern und anderen Arten von mikroprozessorgestützten Systemen. Insbesondere betrifft die Erfindung ein System und ein Verfahren zum Schnellstart eines mikroprozessorgestützten Systems, wie beispielsweise ein externes Programmiergerät zum Datenerfassen und Programmieren eines Herz-Rhythmus-Steuergerätes.
  • Damit ein Computer oder ein anderes mikroprozessorgestütztes System in einem betriebsbereiten Zustand ist, in dem es zur Ausführung mehrerer Anwendungsprogramme (d.h. solcher Programme, die dem System spezielle Funktionalität geben) imstande ist, muss das System unter der Überwachung einer Betriebssystem-Software (OS) stehen. Dieser betriebsbereite Zustand umfasst in einem Speicher gespeicherten speziellen Code und Daten, die dem Betriebssystem das Aufrechterhalten der Überwachung darüber, wie die Systemressourcen auf die verschiedenen Anwendungsprozesse verteilt sind, ermöglichen. Das übliche Mittel, durch das der betriebsbereite Zustand erreicht wird, ist durch eine Boot-Sequenz, in der der Prozessor (CPU) die Ausführung (z.B. während des Startens aus einem abgeschalteten Zustand) an einer speziellen Stelle in einem nichtflüchtigen Festspeicher (ROM) beginnt. Das bedeutet, dass der Befehlszähler der CPU (oder Befehlszeiger bei Intel x86-Architekturen) zunächst mit der Startadresse der Software im ROM geladen wird, üblicherweise als BIOS (basic input/output system) aufgrund anderer von der Software ausgeführter Funktionen bezeichnet. Der im ROM beinhaltete BIOS-Code definiert die vom System beim Start durchgeführten grundlegenden Schritte inklusive Hardware-Erkennung und Initialisierung und Laden des Betriebssystems durch ein Systemeröffnungsprogramm.
  • Die Ausführung des Systemeröffnungsprogramms bewirkt, dass die Startroutine aus dem Speichermedium, das die Betriebssystemsoftware beinhaltet (z.B. eine Festplatte, Diskette, oder CD-ROM) in einen Systemspeicher eingelesen wird, der üblicherweise ein flüchtiger dynamischer Direktzugriffspeicher (DRAM) ist. Die Startroutine beinhaltet ein Startprogramm, das anschließend ausgeführt wird, um den Prozess des Ladens des Betriebssystems in Speicher aus dem Speichermedium zu laden.
  • Der Prozess des Startens des Systems ist zeitaufwendig, da das Betriebssystem bestimmte Berechnungen ausführen muss, um sich selbst im speziellen System zu konfigurieren, inklusive der Hardware-Detektion/-Initialisierung und der Einrichtung verschiedener Datenstrukturen, die bei der Steuerung von Systemressourcen verwendet werden, wie beispielsweise Speicher und Prozessorzeit. In bestimmten Situationen ist für ein System die Fähigkeit, schnell in einen gestarteten betriebsbereiten Zustand überzugehen, ohne einen langwierigen Startprozess zu durchlaufen, vorteilhaft. Die vorliegende Erfindung ist im wesentlichen auf diese allgemeine Aufgabe gerichtet.
  • Aspekte der Erfindung werden in den beigefügten Ansprüchen dargelegt.
  • Die vorliegende Offenbarung umfasst ein System und ein Verfahren, einem Computer oder einem anderen mikroprozessorgestützten System, wie beispielsweise einem externen Programmiergerät für ein Herz-Rhythmus-Steuergerät, das Übergehen in einen Zielzustand, ohne einen Startprozess zu durchlaufen, zu ermöglichen. Ein bisheriges Verfahren zur Wiederherstellung eines betriebsbereiten Zustands eines Computersystems ohne Durchlaufen eines Startprozesses wird im US-Patent Nr. 5,710,930 (im weiteren als '930-Patent bezeichnet) beschrieben. Das '930-Patent betrifft ein Verfahren zur Wiederherstellung eines betriebsbereiten Zustandes eines Computersystems nach einem Abschalten, ohne einen normalen Startprozess zu durchlaufen, bei dem das Betriebssystem und der Anwendungscode in einem nicht-flüchtigen Systemspeicher gespeichert sind und von dort ausgeführt werden. Da das Betriebssystem und der Anwendungscode immer im nichtflüchtigen Speicher verbleiben, wird der betriebsbereite Zustand dadurch wiederhergestellt, dass die Prozessor-Register einfach wieder auf ihre Vor-Abschalt-Werte gesetzt werden und anschließend die Ausführung des Codes an der passenden Stelle im Systemspeicher gestartet wird. Das '930-Patent beschreibt ein Abschaltprogramm, welches die Information in einem Abschalt-Zustands-Buffer-Bereich einher mit den Vor-Abschalt-Inhalten eines Grafikpufferspeichers speichert.
  • Die vorliegende Erfindung betrifft im Gegensatz dazu ein System zur Wiederherstellung eines Computersystems in einen betriebsbereiten Zielzustand, ohne dabei einen Startprozess zu durchlaufen, wobei die Inhalte (d.h. Betriebssystem und Anwendungscode) eines flüchtigen Systemspeichers aus einem Zielzustandsbild, das in einem nichtflüchtigen Bildspeichermedium gespeichert ist, rekonstruiert werden. Der Zielzustand ist ein gestarteter betriebsbereiter Zustand, in dem das Betriebssystem die Kontrolle über die Systemressourcen hat, und Anwendungsprogramme entweder in den Speicher geladen werden oder zum Laden aus einem Speichermedium durch das Betriebssystem zur Verfügung stehen. Entsprechend der Offenbarung wird ein Bild des Zielzustands festgehalten und in einem nicht-flüchtigen Bildspeichermedium gespeichert. Das Bild des Zielzustands umfasst die Inhalte des flüchtigen DRAM-Speichers und die in den Prozessor-Registern gespeicherten Werte, wenn das System im Zielzustand ist. In einer Ausführungsform wird die Wiederherstellungsroutine, die in einem nicht-flüchtigen Speicher enthalten ist, während des Startens des Systems ausgeführt. Die Wiederherstellungsroutine entnimmt anschließend das Zielzustandsbild aus dem Bildspeichermedium und beginnt den Prozess der Wiederherstellung des Zielzustands. Nachdem der Systemspeicher und die Register mit dem Zielzustand korrespondierenden Werten geladen sind, wird die Prozessor-Ausführung an eine Betriebssystem-Rückkehrroutine übertragen, die die Kontrolle über das System der Betriebssystemsoftware zurückgibt.
  • Entsprechend der Offenbarung umfasst das im Bildspeichermedium enthaltene Zielzustandsbild ein Speicherbild und eine Zielzustands-Datenstruktur. Die Zielzustands-Datenstruktur enthält in den Registern des Prozessors zu speichernde Werte und Information, die der Wiederherstellungsroutine das richtige Speichern des Speicherbilds in den Systemspeicher ermöglichen. In einer Ausführungsform wird das Speicherbild durch direktes Kopieren von Inhalten aus dem flüchtigen Systemspeicher gebildet. Die kopierten Inhalte werden anschließend im Bildspeichermedium mit oder ohne Datenkompression gespeichert. Das Speicherbild kann anschließend direkt aus dem Bildspeichermedium durch die Wiederherstellungsroutine in passende Speicherorte kopiert werden. In einer weiteren Ausführungsform wird das Zielzustandsbild durch eine Bildspeicherroutine erzeugt, die das vom Betriebssystem implementierte Paging-Schema verwendet, um ein aus Speicheradressbereichen hergestelltes Speicherbild zu erzeugen, d.h. nur den Speicherorten entsprechend, die tatsächlich vom Betriebssystem im Zielzustand verwendet werden. Information der vom Betriebssystem erhaltenen Seitentabellen werden anschließend in die Zielzustands-Datenstruktur kopiert, um die Wiederherstellung der Speicheradressbereiche im Speicher durch die Wiederherstellungsroutine zu ermöglichen.
  • Kurzbeschreibung der Zeichnungen
  • 1 ist ein System-Diagramm eines mikroprozessorgestützten Systems, das zum Integrieren eines den Ausführungsformen der Erfindung entsprechenden Systems geeignet ist.
  • 2 Ist ein Blockdiagramm der Software-Komponenten für eine spezielle Implementierung der Erfindung.
  • Detaillierte Beschreibung
  • Die vorliegende Erfindung kann als System zur Übertragung eines durch eine Betriebssystemsoftware gestarteten mikroprozessorgestützten Systems in einen Zielzustand ausgeführt werden. Das System wendet eine Wiederherstellungsroutine zum Wiederherstellen des flüchtigen Systemspeichers und der Prozessorregister an, um dem Zielzustand zu entsprechen. Ein Bildspeichermedium enthält ein Bild des aus einem Speicherbild und einer Zielzustands-Datenstruktur bestehenden Zielzustands. Das Bildspeichermedium ist ein nicht-flüchtiger Speicher oder Speichergerät, wie beispielsweise ein elektrisch löschbarer programmierbarer Festwertspeicher (EEPROM, auch bekannt als flash-ROM), eine Festplatte, eine Diskette, ein ferro-elektrischer Speicher, ein batterie-gesicherter RAM, oder ein optisches Speichermedium. Die Wiederherstellungsroutine ist in einem nicht-flüchtigen Speicher, wie beispielsweise einem flash-ROM oder einem batterie-gesicherten RAM, enthalten, kann sich aber während der Ausführung in einen Bereich des flüchtigen Speichers, der als im Zielzustand unbenutzt bekannt ist, verschieben. Die Wiederherstellungsroutine ist typischerweise im gleichen Medium wie das System-BIOS enthalten und wird anstelle des Startprogramms des BIOS ausgeführt. Das Bildspeichermedium kann ein flash-Rom oder ein anderes nicht flüchtiges Speichermedium mit ausreichender Speicherkapazität, wie beispielsweise eine Festplatte, sein. Die Wiederherstellungsroutine beinhaltet Code zum Abrufen des Speicherbildes und der Zielzustands-Datenstruktur aus dem Bildspeichermedium. Nach der Wiederherstellung des flüchtigen Speichers und der Prozessorregister entsprechend dem Zielzustand wird die Prozessorausführung auf eine Betriebssystem-Rückkehrroutine durch Laden des Prozessor-Befehlszeigers mit der Adresse der Routine übertragen. Die Betriebssystem-Rückkehrroutine übergibt anschließend die Kontrolle des Systems nach dem Durchführen jeglicher nötiger Einstellungen der Betriebssystemsoftware.
  • Eine Zielzustandsbildspeicherroutine, die vom Betriebssystem ausgeführt wird, kann dazu verwendet werden, ein Zielzustandsbild zu erzeugen und zu speichern. In einer Ausführungsform wird eine Kopie der Inhalte aller flüchtigen Speicher im Zielzustand als Teil des Zielzustands gespeichert. Um die Größe des Zielzustandsbilds zu reduzieren, können Datenkompressionstechniken auf die Speicherinhalte vor dem Speichern angewandt werden. In einer weiteren Ausführungsform der Erfindung werden anstelle des Speicherns des gesamten Inhalts des flüchtigen Speichers nur die Inhalte von Stellen im flüchtigen Speicher als Speicherbild gespeichert, die tatsächlich vom System im Zielzustand benutzt werden. Die Größe des Speicherbildes, das gespeichert werden muss, um den Zielzustand wiederherzustellen, wird so verringert. (Weitere Verringerung kann durch das Verwenden von Datenkompressionstechniken zum Komprimieren des Speicherbildes erreicht werden.) Um dies zu bewerkstelligen, verwendet die Bildspeicherroutine das Paging-Schema des Betriebssystems, um die verwendeten Speicherstellen in einem Zielzustand zu identifizieren. Paging ist eine Technik, bei der das Betriebssystem Speichereinheiten, die Seiten genannt werden, in einem linearen Adressbereich zuordnet und diese Seiten auf Speicheradressbereichen im physikalischen Adress-Speicher abbildet (d.h. auf physikalische Stellen im Speicher). Der lineare Adressbereich kann größer sein als der physikalische Adressbereich mit nichtabgebildeten Seiten, die in einem Speichermedium wie beispielsweise einer Festplatte aufbewahrt und bei Bedarf kopiert werden und so einen Weg der Implementierung eines virtuellen Speichers zu schaffen. Vom Betriebssystem erhaltenen Seitentabellen und der Paging-Mechanismus des Prozessors schaffen die Seiten-auf-Speicheradressbereiche-Abbildungsfunktion. Das Speicherbild entspricht Seiten im linearen Adressbereich, die auf Speicheradressbereiche im physikalischen Adressbereich durch das Paging-Schema des Betriebssystems im Zielzustand abgebildet werden. Es repräsentiert daher nur die Inhalte der Speicherstellen, die tatsächlich im Zielzustand verwendet werden. Die Zielzustands-Datenstruktur enthält aus den Seitentabellen des Betriebssystems erhaltene Information, die das gespeicherte Speicherbild zu physikalischen Adressen in Beziehung setzt. Die Wiederherstellungsroutine ruft die Zielzustands-Datenstruktur aus einer bekannten Stelle im Bildspeichermedium ab. Der Code in der Wiederherstellungsroutine kopiert anschließend das Speicherbild in den flüchtigen Speicher so, dass die Speicheradressbereiche des Zielzustands wiederhergestellt werden. Die Zielzustands-Datenstruktur beinhaltet auch die Inhalte der Register des Prozessors im Zielzustand, so dass die Register mit den Werten von der Wiederherstellungsroutine wiedergeladen werden können.
  • Wie zuvor gesagt, wird eine Zielzustandsbild-Speicherroutine ausgeführt, um eine Momentanaufnahme des Zielzustandes aufzunehmen. Ein Zielzustandsprozess kann zuerst ausgeführt werden, um das System in den gewünschten Zielzustand zu bringen, bevor die Bildspeicherroutine aufgerufen wird. Um die Systemressourcen zu isolieren und un beschränkten Speicherzugriff zu erlauben, während ein Bild des Systems aufgenommen wird, wird die Bildspeicherroutine als Interrupt-Wartungsroutine implementiert, die auf der Kernel-Vorrechts-Ebene mit deaktivierten Interrupts abläuft. Das Plattendateisystem wird von der Bildspeicherroutine außer Betrieb genommen, so dass keine Veränderungen an den Festplattendateien während des Bildaufnahmeprozesses gemacht werden. Nachdem das Bild im Bildspeichermedium gespeichert ist, springt der Ablauf in die Betriebssystem-Rückkehrroutine, die das Dateisystem wieder in Betrieb nimmt, die Interrupts reaktiviert und eine Interrupt-Rückkehr zum Zielzustandsprozess ausführt, um dem Betriebssystem die Kontrolle zurück zu überlassen. Dies ist die gleiche Betriebssystem-Rückkehrroutine, in die durch die Wiederherstellungsroutine in den letzten Schritten der Wiederherstellung des Zielzustands gesprungen wird. Die Betriebssystem-Rückkehrroutine ist daher in den Speicheradressbereichen des Zielzustands enthalten.
  • Bei der Aufnahme des Zielzustandsbilds fragt die Bildspeicherroutine das gegenwärtig verwendete Paging-Verzeichnis und die Paging-Tabellen ab und erzeugt eine Kopie des mit Linearadressen von Pagingtabellen gefüllten Seitenverzeichnisses. Diese Struktur ermöglicht das Übersetzen von Linearadressen in physikalische Adressen. Die Bildspeicherroutine erzeugt des weiteren eine Liste von physikalischen Adressen von Speicheradressbereichen, die im flüchtigen Speicher gespeichert sind, aus den Inhalten von Seitentabellen. Eine Liste von Linearadressen von Seiten, die auf Speicheradressbereiche im Speicher im Zielzustand abgebildet werden, wird ebenfalls erzeugt, um die Übersetzung von physikalischen Adressen in Linearadressen durch Indexierung in der Liste mit physikalischen Adressen zu ermöglichen. Die Zielzustandsbild-Speicherroutine verwendet die Liste von Linearadressen von abgebildeten Seiten und die Liste von physikalischen Adressen von Speicheradressbereichen, um das Speicherbild zum Speichern im Bildspeichermedium zu erzeugen.
  • In dem Fall, in dem das Bildspeichermedium ein flash-ROM ist, muss die Bildspeicherroutine das Paging-Schema zum Zugriff verwenden. Entsprechend ist ein Code in der Zielzustandsspeicherroutine vorgesehen zum: a) Erhalten einer physikalischen Adresse des Bildspeichermediums aus einer Hardware-Konfigurationsdatei, b) Direktkorrektur (patching) eines Leereintrages des Seitenverzeichnisses mit einer physikalischen Adresse einer Seitentabelle, die erzeugt wurde, um die physikalischen Adressen des Bildspeichermediums zu enthalten, c) Zugreifen auf das Speichergerät mit einer Linearadresse, die dem korrigierten Eintrag im Seitenverzeichnis und der Seitentabelle, auf die dadurch gezeigt wird, entspricht, und d) Speichern des Speicherbilds und der Zielzustands-Datenstruktur im Bildspeichermedium. Ist das Bildspeichermedium eine Festplatte, so werden andererseits während des Bildaufnahmeprozesses aus den oben genannten Gründen das Dateisystem abgeschaltet und die Interrupts deaktiviert. Daher ist in der Zielzustands-Speicherroutine Code vorgesehen zum: a) Zugreifen auf die Festplatte ohne Interrupts, b) Interpretieren einer Partitionstabelle auf der Festplatte, um eine vorgesehene Speicherdatei zu finden und eine Linearblockadresse davon zu berechnen, und c) Speichern der Zielzustands-Datenstruktur und des Speicherbildes in der vorgesehenen Speicherdatei.
  • Da kein Betriebssystem vorhanden ist, bevor der Zielzustand erreicht ist, wird die Abfrage und das Speichern des Speicherbilds durch die Wiederherstellungsroutine unter Verwendung physikalischer Adressen und ausgeschaltetem Paging ausgeführt. Die Zielzustands-Datenstruktur beinhaltet ein Liste physikalischer Adressen, den Stellen im flüchtigen Speicher entsprechen, in denen Speicherad ressbereiche im Zielzustand gespeichert werden. Die Liste wird anschließend von der Wiederherstellungsroutine verwendet, um das Speicherbild, das aus dem Speichergerät abgefragt wurde, in den flüchtigen Speicher an ausgewählte Stellen zu speichern. Die Wiederherstellungsroutine schaltet anschließend das Paging vor dem Übergang zur Betriebssystem-Rückkehrroutine ein. Die Zielzustands-Datenstruktur enthält die physikalischen Adressen des Seitenverzeichnisses im Zielzustand, und die Wiederherstellungsroutine beinhaltet dann Code zum: a) Direktkorrigieren des Seitenverzeichnisses, so dass physikalische Adressen der Wiederherstellungsroutinenbefehle auf die gleichen physikalischen Adressen abgebildet werden, b) Speichern von Information zur Rück-Korrektur des Seitenverzeichnisses in die Zielzustands-Datenstruktur, und c) Ermöglichen des Paging vor dem Springen in die Betriebssystem-Rückkehrroutine. Die Zielzustands-Datenstruktur enthält die physikalischen Adressen, die den Speicherstellen der Zielzustands-Datenstruktur im Zielzustand entsprechen, und ermöglicht der Wiederherstellungsroutine das Schreiben in die Zielzustands-Datenstruktur. Der Code in der Betriebssystem-Rückkehrroutine entwertet dann die Verschiebungspufferspeicher des Paging-Mechanismus und re-korrigiert das Seitenverzeichnis mit Information, die in der Zielzustands-Datenstruktur enthalten ist.
  • Die folgende Beschreibung ist eine beispielhafte Implementierung, bei der ein erfindungsgemäßes System in ein externes Programmiergerät für ein Herzrhythmus-Steuerungsgerät (z.B. einen Schrittmacher) eingebracht wird. Das Programmiergerät ist damit mit der Möglichkeit eines Schnellstarts aus einem ausgeschalteten Zustand versehen, ohne einen langwierigen Startprozess zu durchlaufen, und so für den Kliniker und den Patienten Zeit zu sparen, wenn der Schrittmacher entweder zum Zeitpunkt des Einsetzens oder in der folge überwacht und/oder program miert wird. Es wurde gezeigt, dass die beschriebene Implementierung in der Lage ist, von einem ausgeschalteten in einen betriebsbereiten Zustand in weniger als zwanzig Sekunden überzugehen, ein Ergebnis, das bislang von keinem derzeitig erhältlichen mit einem 16-bit- oder größeren Mikroprozessor arbeitenden externen Programmiergerät erreicht wurde.
  • Wie in 1 dargestellt, ist das Programmiergerät in diesem Beispiel ein mikroprozessorgestütztes System 10, das einen Pentium-Prozessor 12, einen DRAM-Speicher 14, ein Festplattenlaufwerk 16 mit integriertem Controller, einen Grafikadapter 18 zum Betreiben eines Bildschirms, einen Tastatur/Maus-Controller 20 und einen nichtflüchtigen flash-ROM-Speicher 35 umfasst. Die Komponenten sind mit dem System über einen System-Bus 30 oder einen PCI-Bus 40 verbunden. Ebenfalls verbunden mit dem System über einen ISA-Bus ist ein I/O-Untersystem, das Telemetrie und EKG-Schaltungen umfasst, jede mit einem Prozessor, einem Speicher und I/O-Interface-Schaltungen. Das flash-ROM 35 enthält das BIOS (basic input/output system) und eine Wiederherstellungsroutine, die den DRAM-Speicher und die Prozessor-Register in einen Zielzustand während des Startens der Einheit wiederherstellt. Bei einer solchen Konfiguration überträgt die BIOS-Startroutine die Kontrolle an die Wiederherstellungsroutine, nachdem die normale Hardware-Erkennungs- und Initialisierungsaufgaben abgeschlossen sind, anstatt das Betriebssystems von der Festplatte zu starten. Das Zielzustandsbild, das ein Speicherbild und eine Zielzustandsdatenstruktur enthält, ist entweder auf der Festplatte oder im flash-ROM gespeichert und wird von der Wiederherstellungsroutine zum Laden in den Speicher und die Prozessor-Register entnommen, um das System in den Zielzustand zu bringen. Das I/O-Untersystem 22 weist ebenfalls flash-ROM-Speicher für die EKG- und Telemetrie-Schaltungen auf, die Wiederherstel lungsroutinen enthalten können, um ein schnelleres Starten dieser Systeme zu ermöglichen. Die Telemetrie- und EKG-Schaltungen enthalten auch DSPs (digitale Signalprozessoren), die einen Flashspeicher für ihren Start aufweisen wie auch zum Filtern, Steuern und funktionelle Algorithmen. Die Verwendung von flash-ROM-Speichern als Zielzustandsbild-Speichermedium für sowohl das Hauptsystem 10 wie auch das I/O-Untersystem 22 schafft einen schnelleren Start als ein Festplattenlaufwerk, da der Flashspeicher sofort nach dem Herstellen der Versorgung initialisiert wird, wohingegen das Festplattenlaufwerk 3 bis 5 Sekunden zum Initialisieren aufgrund der Motoranlaufzeit benötigt. Zugriffszeiten sind bei flash-ROM-Speichern ebenfalls schneller.
  • In dieser beispielhaften Implementierung ist die verwendete Betriebssystem-(OS) Software das QNX-Betriebssystem zusammen mit der grafischen QNX-Windows-Benutzeroberfläche. QNX ist ein Echtzeit-Betriebssystem, das die Speicherverwaltung und die Ressourcenzuordnung für unter ihm laufende Anwendungsprogramme, die eine spezielle Funktionalität für das Programmiergerät (z.B. Telemetrie- und EKG-Verfahren) vorsehen, bietet. Das Zielzustandsbild kann nur QNX enthalten, wobei alle Anwendungsprozesse von der Festplatte geladen werden, oder kann zusätzlich einen oder mehrere Anwendungsprozesse enthalten, die direkt nach dem Erreichen des Zielzustandes gestartet werden. Weitere Anwendungsprozesse können anschließend von der Festplatte auf normalem Weg durch das Betriebssystem geladen werden, wenn sie benötigt werden.
  • Wie oben beschrieben, besteht das Schnellstart-System, das im Programmiergerät enthalten ist, aus drei Haupt-Software-Komponenten, wie in 2 dargestellt: eine Wiederherstellungsroutine 200, eine Zielzustandbild-Speicherroutine 100, und eine Betriebssystem-Rückkehr routine 300. Die Wiederherstellungsroutine enthält den gesamten Code und die Datenstruktur, die bei der Wiederherstellung des Systems in den Zielzustand verwendet werden und befindet sich im BIOS-Adressbereich (d.h. im das BIOS beinhaltenden ROM oder flash-ROM). Sie wird anstelle des BIOS-Startprogramms ausgeführt, nachdem das BIOS seine Hardware-Initialisierungsaufgaben abgeschlossen hat. Da die Hardwarekomponenten bei dieser Implementierung vorab bekannt sind, ist der Initialisierungs-Code im BIOS modifiziert, um voreingestellte Werte in Hardware-Registern zu speichern anstatt eine algorhitmische Hardware-Erkennung und eine Initialisierungs-Prozedur zu durchlaufen, um die Startzeit weiter zu verringern. Nach dem Abschließen der Zustands-Wiederherstellungs-Prozedur wird ein Sprung in die Betriebssystem-Rückkehrroutine 300 im QNX-Adressbereich gemacht, was, wie unten beschrieben, auch das Ende der Zielzustands-Speicherroutine ist. Die Zielzustandsbild-Speicherroutine 100 und die Betriebssystem-Rückkehrroutine 300 sind QNX-Prozesse, die sich im von QNX zugeordneten Adressbereich befinden. Ein weiterer QNX-Prozess, der Zielzustandsprozess 99, wird ausgeführt, wenn gewünscht wird, ein Zielzustandsbild zu speichern. Der Zielzustandsprozess bringt das System in einen durch eine Konfigurationsdatei und/oder Kommandozeilenparameter definierten Zielzustand, und ruft dann die Bildspeicherroutine 100 als Interrupt-Wartungsroutine auf. Nachdem das Zielzustandsbild im Bildspeichermedium gespeichert ist, springt die Bildspeicherroutine in die Betriebssystemrückkehrroutine 300, die anschließend zum Zielprozess 99 durch Ausführen eines Interrupt-Rückkehr-Befehls zurückkehrt. Der Zielzustandsprozess 99 endet und die Kontrolle wird an QNX zurückgegeben.
  • Die Funktion der Wiederherstellungsroutine 200 liegt darin, das System von einem nicht-betriebsbereiten (z.B. ausgeschalteten) Zustand in einen Zielzustand zu bringen, in dem das Betriebssystem geladen und Anwendungen zum Ausführen bereit sind. Die meiste Zeit während des Startens des Betriebssystems wird zum Laden der Betriebssystemdateien und Lesen der Konfigurationsdateien und zur Hardware-Erkennung aufgewendet, was mehrere Unterbrechungen (time-outs) und Anschlussabfragen einschließt. Da die Hardware in dieser Implementierung fest ist, kann eine Momentaufnahme des Systemspeichers, der CPU-Register und aller vom Betriebssystem zu dem Zeitpunkt, zu dem die Momentaufnahme gemacht wird, initialisierten Hardware, gemacht werden, um ein Bild des Zielzustands zu erzeugen. Wird das System später in diesen Zielzustand des Bildes gebracht, so meint das Betriebssystem, dass es gerade den kompletten Startprozess durchlaufen habe, da kein Unterschied zwischen dem gestarteten und dem wiederhergestellten Zustand in Bezug auf alles, worauf das Betriebssystem zugreifen und was das Betriebssystem verwendet, ist. Zusätzliche eingeschlossene Ausgaben lassen das Betriebssystem den Zeitunterschied zwischen gespeichertem Bild und gegenwärtiger Zeit und möglichen Änderungen am Dateisystem erkennen.
  • Das Speichern des Bildes schließt den Zugriff auf der niedrigsten Systemressourcenebene ein, dies muss durch Code-Ausführung auf der Kernel- oder Ring 0- Vorrechtsebene geschehen. Dies wird erreicht, indem der Code der Speicherroutine 100 in ein Unterbrechungsprogrammm (interrupt handler) eingesetzt wird und anschließend ein Interrupt erzeugt wird, um so die Steuerung dem Speicher-Code zu übergeben, dessen Ablauf im Ring 0 dadurch sichergestellt ist. Die Bildspeicherprozedur wird vom Betriebssystem ausgelöst, indem zunächst der Zielzustandsprozess 99 ausgelöst wird, der das System in den Zielzustand bringt, bevor die Bildspeicherroutine 100 ausgeführt wird. Die Priorität des Zielzustandsprozesses 99 wird erhöht, da es nichts anderes mit höherer Priorität gibt.
  • Mehrere Prozesse werden nach dem Wiederherstellen des Zielzustandes ausgeführt. Der Echt-Zeit-Takt wird mit dem Hardware-Takt synchronisiert, der Maustreiber wird reinitialisiert, und die grafische Windows-Benutzeroberfläche wird neu gestartet. Zusätzlich sollte wenigstens ebenfalls eine Anwendung gestartet werden, da das Ziel der Implementierung das Starten eines funktionsfähigen externen Programmiergerätes für ein Herz-Rhythmus-Steuergerät ist. Das Starten einer Anwendung erfordert das Lesen der Datei von der Festplatte, was ein langsamer Prozess ist. Unix-Betriebssysteme wie beispielsweise QNX ermöglichen, dass eine Anwendung in den Speicher geladen wird und anschließend in einem ausgesetzten Zustand gehalten wird, bis ein Signal zum tatsächlichen Ausführen empfangen wird. Dieser Ansatz wird in dieser Implementierung gewählt, wobei mehrere Prozesse von der Festplatte gelesen werden, bevor das Systembild gespeichert wird, und folglich die Zeit, die dazu verwendet wird, die Anwendungen zum Ablaufen zu bringen, nachdem das Bild wiederhergestellt ist, verringert wird. Abhängig von der Eingabe der Kommandozeilenparameter beim Ausführen des Zielzustands-Prozesses 99 werden eines oder mehrere Programme von der Platte gelesen und in den Speicher geladen, wo sie in einem ausgesetzten Zustand gehalten werden. Das vom Bildspeicherprozess aufgenommene Zielzustandsbild enthält dann diese ausgesetzten Prozesse in den Prozesstabellen des Betriebssystems. Der Prozess 99 liest auch die System-Zeit-Größe (system timer granularity) durch Aufrufen der QNX-Funktion qnx osinfo. Der Zeitgeber-Größen-Wert (timer granularity value) muss nach dem Wiederherstellen des Zielzustandes wiederhergestellt werden, da nicht garantiert ist, dass das Setzen des Zeitgebers durch das BIOS gleich ist wie das durch QNX.
  • Anschließend wird das Dateisystem durch den Zielzustandprozess 99 abgeschaltet, da die Anwendung Veränderungen auf der Festplatte bewirken kann, und der wiederhergestellte Zielzustand von diesen Veränderungen nichts weiß. Das Abschalten des Dateisystems garantiert, dass alle Dateien während der Bildspeicherprozedur geschlossen sind, und das nachfolgende Wiederanschalten des Dateisystems während der Zielzustands-Wiederherstellungsprozedur bewirkt, dass das Verzeichnis auf der Festplatte neu gelesen wird, so dass alle Änderungen, die seit dem Zeitpunkt, an dem das Bild gespeichert wurde, nachgeführt werden. Zusätzlich halten die Cache-Puffer Dateidaten der kürzlich geöffneten Dateien. Obwohl das Plattenverzeichnis neu gelesen wird, wenn das System versucht, die geänderte Datei zu öffnen und zu lesen, wird das Betriebssystem die Daten aus dem Cache vorsehen, anstatt sie von der Festplatte zu lesen. Deswegen werden die Cache-Puffer gelöscht.
  • Die Zielzustandsbild-Speicherfunktion 100 ist an den nicht-maskierbaren Interrupt (NMI) als Interrupthandler angehängt. Der Zielzustandprozess erzeugt daher einen NMI, um die Steuerung an die Bildspeicherroutine 100 zu übertragen. Der Code wird dann in Ring 0 ausgeführt, fertig zum Speichern des Systembilds. Die Zustandsspeicherfunktion 110, die alle Register zur allgemeinen Benutzung und Segment-Register im Stapel speichert, wird anschließend aufgerufen, wobei die Daten-Segment-Register das Datensegment des Zielzustands-Prozess nachführen. Anschließend setzt sie die FS-Register, um auf dieses Datensegment zu zeigen, da es sehr viel günstiger ist, dass das Datensegment-Register 0-basiert ist. Die Segment-Register DS und ES werden anschließend mit dem QNX-FLAT-SEG-Wert gesetzt, der ein 0-basiertes 4 GB-Segment definiert.
  • Das QNX-Betriebssystem benutzt den Paging-Mechanismus des Pentium-Prozessors, was bedeutet, dass physikalische Adressen des Speichers nicht einfach berechnet werden. Da ein Bild des physikalischen Speichers gespeichert werden soll, muss jedoch die in den Seitetabellen enthaltene Information extensiv genutzt werden. Da dies ein zeitaufwändiger Prozess ist, wird einige vorbereitende Arbeit von der SaveInit-Funktion 120 übernommen, um die Übersetzung zu unterstützen. Die im Zielzustandsbild gespeicherte Systeminformation wird in einer Zielzustands-Datenstruktur gehalten, die in dieser Implementierung als CSS-Struktur 400 bezeichnet wird. Das Pentium-Steuerregister CR3 hält die physikalischen Adressen des Seitenverzeichnisses und wird im CSS gespeichert. Jede Übersetzung von Adressen beinhaltet ein Durchgehen durch das Seitenverzeichnis, und beinhaltet physikalische Adressen von Seitentabellen. Da die Verwendung physikalischer Adressen eine weitere Übersetzung benötigt, wird das Seitenverzeichnis eingelesen und in das Page_Xdir-Array 140 kopiert, das mit übersetzten Linearadressen gefüllt ist. Auf diese Art kann jedes Mal, wenn eine physikalische Adresse benötigt wird, eine Seitentabelle anhand ihrer Linearadresse aus dem übersetzten Seitenverzeichnis gefunden werden. Die FixPageTable-Funktion 130 geht durch das Seitenverzeichnis, übersetzt alle benutzten Einträge und füllt sie in das Page_Xdir-Array 140. Die Linearadresse des Seitenverzeichnisses hingegen ist in der Variablen PageDirAddr 145 gespeichert.
  • Um während der Wiederherstellungsprozedur Zeit und Platz beim Speichern des Zielzustandsbilds zu sparen, speichert die Bildspeicherroutine nur Seiten des Speichers, die im physikalischen Speicher vorhanden sind, nicht mit Nullen aufgefüllt sind und tatsächlich benutzt werden (d.h. Speicheradressbereiche). Die Startadressen dieser Seiten werden wieder in den Seitentabellen gefunden, und sind physikalischer Art, es werden allerdings Linearadressen benötigt, um auf die Seiten gelangen zu können. Daher wird ein Array mit Linearadressen aufgebaut und mit Startadressen jeder benutzten Seite gefüllt. Einhergehend mit dieser Liste wird die Liste von Ausschließungen aufgebaut, die Teil der CSS-Struktur ist. Sie beinhaltet physikalische Adressen der letzten vor der Lücke (gap) zu speichernden Seite, und dann die erste wieder verwendete Seite. Die Zielzustands-Wiederherstellungsprozedur wird diese Liste durchgehen und Start- und Stopadressen entnehmen. Die Listen werden durch die FixPageList-Funktion 150 aufgebaut, das Array der Linearadressen wird mit PageList-Array 152 bezeichnet, und das Array der Start/Stopadressen wird mit BlockList-Array 154 bezeichnet.
  • Tritt während des Aufbaus der Liste mit übersetzten Adressen ein Problem auf, wenn beispielsweise der Speicher zu stark fragmentiert ist und die Liste nicht in die CSS-Struktur passt, wird die BreakFlag-Variable 156 auf 1 gesetzt. Sobald die SaveInit zurückkehrt, wird dieser Merker (flag) geprüft. Wenn er gesetzt ist, kehrt die Steuerung direkt zum Bildprozess 99 zurück, ohne das tatsächliche Speichern des Zielzustandsbilds zu durchlaufen. Wenn die SaveInit zurückkehrt, wird die Steuerung an die SetupFsBase-Funktion 160 übergeben. Diese Funktion berechnet die 0-basierten Linearadressen des Starts des Bildspeicherroutinen-Codes/Datensegments. Auf diese Art wird für jede Berechnung, die identisch abgebildete Adressen benötigt (gleich mit und ohne Paging, so dass die Linearadressen den physikalischen Adressen entsprechen), die Verschiebung innerhalb des Codes oder Datensegments zu dieser Basis hinzuaddiert. Die Funktion nimmt die Werte des Code-Segment-Registers und durchläuft die GDT (global descriptor table) und möglicherweise die LDT (lo cal descriptor table), um die Bezeichnung für das Code-Segment zu finden, die die Segment-Basis enthält.
  • Wird die Festplatte als Bildspeichermedium verwendet, wird eine Datei zum Speichern des Bildes von der File-Found-Funktion 170 auf der Platte angeordnet. Sie benutzt DIE-Plattenzugriff mit niedrigem Level zum Lesen/Schreiben, ohne Interrupts zu benutzen. Dieser Code weiß, wie die Partitionstabelle zu interpretieren ist, lokalisiert die FAT16-Partitionen und findet den ersten Cluster einer mit FLASHIMG.DAT bezeichneten Datei, in der das Zielzustandsbild gespeichert wird. Die ClusterToLBA-Funktion 172 berechnet die LBA (linear block adress) des ersten Clusters der Datei FLASHIMG.DAT, so dass die Speicherfunktionen wissen, an welcher Stelle der Platte Daten geschrieben werden können.
  • Wird ein flash-ROM als Bildspeichermedium verwendet, muss das Seitenverzeichnis direktkorrigiert (patched) werden, um vom Flash verwendete Adressen für die CPU zugreifbar zu machen. Zunächst wird die physikalische Adresse des Flash aus den PCI-Konfigurationsdaten ermittelt und in den Seitenverzeichnisfeldern verwendet. Die verfügbare Linearadresse wird gefunden, indem das Seitenverzeichnis auf zwei folgende Leereinträge durchsucht wird, um 8 MB Flash-Platz zu ermöglichen. Diese beiden Einträge werden mit den Adressen von zwei Seitentabellen korrigiert, die wir in unserem eigenen Datensegment erzeugen. Die Startadresse der Seitentabellen ist an den 4 K-Bereich angepasst, und die resultierende Linearadresse wird in die 0-basierte Linearadresse durch Hinzuaddieren der FS-Basis zu ihr konvertiert, und wird schließlich in die physikalische Adresse konvertiert, die in das Seitenverzeichnis gefüllt werden kann. Anschließend werden alle Einträge in den Seitentabellen mit physikalischen Adressen des flash-ROM gefüllt, und der flash-ROM wird gelöscht.
  • Nun wird die Steuerung an die Schreib-Funktion 180 übertragen, die all die Systeminformation in den flash-ROM oder auf die Festplatte schreibt. Die folgenden Pentium-Register werden in das CSS gespeichert: Merker (flags), CS:EIP, SS:ESP, CR0, CR2, CR3, CR4, TR, GDTR, LDTR, und IDTR. Die Interrupt-Masken werden aus dem PIC (programmable interrupt controller) gelesen und in das CSS gespeichert. Der Ident-Befehl wird an die Festplatte gesandt, und die Einstellung für die mehrfachen Sektor-Transfers und gegenwärtig gesetzte Geometrie wird aus den Ident-Daten ausgelesen und in die lokalen Variablen gespeichert. Diese Daten brauchen nicht in der CSS-Struktur gespeichert zu werden, da sie vom Wiederherstellungsprozess nicht verwendet werden. Wenn die Wiederherstellungsroutine in den QNX-Code zurückspringt, kann dieser Code leicht seine lokalen Variablen lokalisieren. Die Adresse der CSS-Struktur wird in 0-basierte Linear- und anschließend physikalische (Adressen) konvertiert und innerhalb des CSS gespeichert. Auf diese Art kann die Wiederherstellungsroutine 200 tatsächlich Daten in das CSS schreiben, so dass die letzten Wiederherstellungsschritte diese Daten verwenden können. Der Cache wird zurückgesetzt und gelöscht, um den Speicher-Zusammenhang (coherency) sicherzustellen, und das CSS wird in das Bildspeichermedium geschrieben. Nun geht die Speicherprozedur in eine Schleife, in der alle Adressen von 0 bis zur Spitze des RAM in Linearadressen konvertiert und in das Bildspeichermedium gespeichert werden. Einige Seiten werden jedoch nicht gespeichert. Die in der BlockList als nicht vorhanden markierten Adressen werden nicht gespeichert, und Adressen von A0000 bis 100000 werden nicht gespeichert, da sie nicht RAM enthalten, sondern BIOS- und ROM-Erweiterungen enthalten. Die Konversion von physikalischen Adressen in Linearadressen wird durch einfach Inde xieren in das PageList-Array gemacht. Alle Speicherungen werden in 4 K-Stücken, der Größe einer Seite, gemacht.
  • Ist der Speicherprozess abgeschlossen, wird ein Sprung in die Betriebssystem-Rückkehrroutine durchgeführt, bezeichnet als OS_RET-Routine 300. Dies ist der gleiche Code, in den der Wiederherstellungsprozess springt, nachdem er das Zielzustandsbild wiederhergestellt hat. Von diesem Punkt an weiß der Code nicht wirklich, ob das Zielzustandsbild nur gespeichert oder wiederhergestellt wurde. Der Versatz von OS_RET wird in der CSS vom Registerwert CS:EIP gespeichert, und der Wiederherstellungscode wird ihn aufnehmen und dorthin springen. OS_RET schließt die Zielzustands-Wiederherstellungsprozedur ab, und lädt im Falle einer Speicherung die Werte der Register neu, die schon geladen sind. Eine wichtige Angelegenheit ist das Annulieren und Löschen von Cache und Verschiebungspufferspeichern (TLBs), die als Cache im Paging-Mechanismus des Pentium verwendet werden, da der Wiederherstellungscode gerade das Paging wiederangeschaltet hat und die TLBs in der CPU ungültig sind. Zunächst werden die Segment-Register zusammen mit den Stapel-Zeigern wiederhergestellt. Anschließend werden IDTR, TR, CR2 und CR4 wiederhergestellt. Die Zielzustands-Wiederherstellungsprozedur benötigt das Direktkorrigieren der Seitentabellen, und zu diesem Zeitpunkt werden diese Korrekturen nicht mehr benötigt, so dass die Seitentabellen aus den im CSS gespeicherten Werten wiederhergestellt werden. Anschließend werden die Festplattengeometrie-Einstellungen entsprechend den in den lokalen Variablen gespeicherten Werten eingestellt. Der Speicher- und der Wiederherstellungsprozesshaben keine IDE-Interrupts verwendet und wurden auf dem Controller ausgeschaltet, so dass sie in diesem Moment wiedereingeschaltet werden. Anschließend wird PIC in der gleichen Art initialisiert, wie es das QNX während seines Startens macht. Schließlich werden die Masken der PIC- und CPU-Merker (flags) wiederhergestellt, um das Vorkommen von Interrupts zu ermöglichen.
  • OS_RET kehrt nun zum Aufrufer der Bildspeicherroutine, der alle allgemein benutzten Register vom Stapel abhebt (pop) und von der ursprünglich für die Bildspeicherprozedur ausgelösten NMI, zurück. Die Ausführung ist nun zurück beim Zielzustandsprozess-Code 99, der Zeitgeber wird mit den während des Speicherns erhaltenen Werten reinitialisiert, und das Dateisystem wird wieder angeschaltet. Schließlich werden die Programme, die in den Speicher in einem gehaltenen Zustand geladen wurden, zum Ablauf zugelassen, um den Maustreiber zu reinitialisieren, den Systemzeitgeber mit der Hardware-Uhr zu synchronisieren und die Windows-GUI wiederherzustellen. Wenn eine Benutzeranwendung in der Kommandozeile spezifiziert war, so wird diese erst nach dem vollständigen Laden der Windows-GUI zum Starten zugelassen. Wenn die Bildspeicherroutine dem Zielzustandsprozess anzeigt, dass mehr Daten gespeichert wurden als das Bildspeichermedium zulässt, werden die in den Speicher geladenen Prozesse nicht fortgeführt, sondern stattdessen gelöscht und die Fehlernachricht dargestellt.
  • Die Zielzustands-Wiederherstellungsprozedur startet, indem das BIOS die Steuerung an die Wiederherstellungsroutine übergibt, die sich im BIOS-Adressbereich befindet. Da der Wiederherstellungsroutinen-Code die Benutzung von RAM für Datenpuffer und lokale Variablen benötigt, verschiebt er sich in die Mitte des physikalischen RAM, da von QNX bekannt ist, diesen Speicher nicht zu benutzen. Der Code ist daher neu angeordnet, und das neue GDT wird eingerichtet. Es wird anschließend in den GDTR geladen, und ab diesem Moment beruht der Code auf nichts anderem mehr ab als auf seinen eigenen Einstellungen. Der Wiederherstellungscode reserviert Platz für die Puffer und den Stapel; DS, ES und SS sind normalerweise Code32-basiert, aber werden sehr häufig zu 0-basierten Schaltern. Wird die Festplatte als Bildspeichermedium verwendet, wird die Datendatei angeordnet, indem die gleiche Funktion wie während der Bildspeicherprozedur verwendet, um den ersten Cluster der Datei zu finden und diesen Wert in ein LBA zu konvertieren. Anschließend wird das CSS in einen lokalen Puffer gelesen, da es die ersten 4 K der Dateidaten besetzt und grundlegende Information darüber enthält, wie der Rest der Daten zuzuordnen ist. Anschließend werden die Seiten eine nach der anderen gelesen, und der Zeiger wird mit der im CSS gespeicherten Start/Stop-Liste verglichen. Wird auf die Stopadresse gestoßen, wird Speicher mit 0 bis zur nächsten Startadresse gefüllt, und der Prozess des Datenlesens aus der Datei wird wieder aufgenommen. Mit spezieller Vorsicht wird vorgegangen, wenn Adressen nahe bei der Ausführungsadresse des Wiederherstellungscodes sind, indem die Speicheradresse zum Überspringen des Wiederherstellungscode erhöht wird und das Überschreiben zu verhindern. Wird ein flash-ROM verwendet, wird seine Adresse aus der PCI-Konfiguration abgerufen. Seitentabellen werden zu diesem Zeitpunkt nicht verwendet, so dass die Linearadressen die gleichen sind wie die physikalischen Adressen. Der flash-ROM wird nicht in 4 K-Seiten gelesen, sondern in von den Start/Stopadressen abhängigen Blöcken. Wiederum werden die Adressen zwischen Stop und Start mit 0 gefüllt, und der Bereich um den Wiederherstellungscode erhalten.
  • Der Sprung in den Betriebssystem-Rückkehr-Code ist ein Befehl für einen weiten Sprung am Ende des Wiederherstellungsroutinen-Codes. Die Ziel-CS:EIP-Werte im Sprung-Befehls-OP-Code werden mit im CSS gefundenen Werten geladen. Da QNX Paging verwendet, und der Wiederherstellungscode dies nicht tut, muss der Befehl, der Paging in CR0 ermöglicht, und der folgende Sprungbefehl auf einer iden tisch abgebildeten Seite abgelegt sein. Zu diesem Zweck wird das Seitenverzeichnis direktkorrigiert (patched), um die Basis-Adresse des Wiederherstellungscodes so nachzuführen, dass seine Linearadresse die gleiche sein wird wie seine physikalische Adresse. Der ursprüngliche Wert des Seitenverzeichnisses wird im CSS gespeichert. Zu bemerken ist, dass dieses CSS die lokale Kopie des CSS des Wiederherstellungscodes ist und nicht die, die sich im Datenbereich des QNX-Codes befindet. Kritische Werte wie dieser werden später dorthin kopiert. Die Adresse der CSS-Struktur wird aus der lokalen Kopie abgerufen und in das Register EBX geladen. Zu diesem Zeitpunkt wird die gesamte Anzahl wiederhergestellter Bytes in das CSS geladen wie auch die Adresse des direktkorrigierten Seitenverzeichniseintrags und sein ursprünglicher Wert. Der Sprung in den QNX-Code wird in zwei Schritten ausgeführt. Zunächst wird das Paging angeschaltet, anschließend werden LDT und GDT in die CPU-Register geladen, und dann wird der weite Sprung in den QNX-Code gemacht. Von dort aus wird die Ausführung an der Adresse OS_RET weitergeführt, was der gleiche Ausführungspunkt ist wie das Ende der Bildspeicherprozedur.
  • Auch wenn die Erfindung in Verbindung mit der vorhergehenden speziellen Ausführungsform beschrieben wurde, sind viele Alternativen, Abwandlungen und Modifikationen für den Fachmann ersichtlich. Solche Alternativen, Abwandlungen und Modifikationen fallen in den Bereich der folgenden beigefügten Ansprüche.

Claims (50)

  1. Mikroprozessorgestütztes System (10), konfiguriert als externes Programmierungsgerät für ein Herzrhythmus-Steuerungsgerät, umfassend einen nichtflüchtigen Speicher (35) zur Bewahrung eines ausführbaren Startcodes; einen flüchtigen Systemspeicher (14) zur Bewahrung eines ausführbaren Betriebssystems und eines Applikationscodes; ein nichtflüchtiges Bildspeichermedium (35; 16); eine Wiederherstellungsroutine (200), die in dem nichtflüchtigen Speicher enthalten ist, um das System von einem nicht-betriebsbereiten Zustand in einen Zielzustand zu bringen, indem die Inhalte der flüchtigen Speicher und Prozessorregister auf einen Zielzustand wiederhergestellt werden in Übereinstimmung mit einem Bild des Zielzustandes, welches im Bildspeichermedium enthalten ist; eine Betriebssystem-Rückkehrroutine (300), um der Betriebssystem-Software die Kontrolle über das System zurück zu übertragen.
  2. System nach Anspruch 1, worin das Bild des Zielzustandes eine komprimierte Kopie der Inhalte des flüchtigen Speichers im Zielzustand umfasst.
  3. System nach Anspruch 1, worin das Bild-Speicher-Medium ein Flash-ROM-Speicher (35) ist.
  4. System nach Anspruch 1, weiterhin umfassend einen Code in der Wiederherstellungsroutine zum Abfragen eines Speicherbildes und einer Zielzustand-Datenstruktur aus dem Bildspeichermedium, wobei das Speicherbild Seiten im Linearadressbereich entspricht, die auf Speicheradressbereiche vom physikalischen Adressbereich durch einen Paging-Mechanismus in den Zielzustand abgebildet werden, und wobei des weiteren die Zielzustand-Datenstruktur Werte von Prozessor-Registern im Zielzustand enthält; und einen Code in der Wiederherstellungsroutine zum Laden von Prozessor-Registern mit den in der Zielzustand-Datenstruktur enthaltenen Werten und zum Speichern des Speicherbildes im flüchtigen Speicher in einer Art, die die Speicheradressbereiche des Zielzustandes wiederherstellt.
  5. System nach Anspruch 1, worin das im Bildspeichermedium enthaltene Bild des Zielzustandes Inhalte vom Grafikspeicher enthält.
  6. System nach Anspruch 1, das des weiteren Startup-Code im nicht-flüchtigen Speicher umfasst, der Hardware-Register mit voreingestellten Werten vor der Ausführung der Wiederherstellungsroutine initialisiert.
  7. System nach Anspruch 1, worin der Mikroprozessor ein 16-bit- oder größerer Mikroprozessor ist und wobei des weiteren das Verfahren in der Lage ist, in weniger als zwanzig Sekunden von einem nicht-betriebsfähigen Zustand in einen Zielzustand überzugehen.
  8. System (10) zum Wiederherstellen eines Mikroprozessor-gestützten mit Betriebssystem-Software gestarteten Verfahrens in einen Zielzustand, umfassend eine Wiederherstellungsroutine (200) zum Wiederherstellen des flüchtigen Speichers (114) und der Prozessor-Register, um dem Zielzustand zu entsprechen; einen Code in der Wiederherstellungsroutine zum Laden eines Speicherbildes und einer Zielzustand-Datenstruktur aus einem Bildspeichermedium (35, 16), wobei das Speicherbild Seiten im Linearadressbereich entspricht, die auf Speicheradressbereiche von physikalischem Adressbereich abgebildet werden durch einen Paging-Mechanismus in den Zielzustand, und wobei des weiteren die Zielzustand-Datenstruktur Werte von Prozessor-Registern im Zielzustand enthält; einen Code in der Wiederherstellungsroutine zum Laden von Prozessor-Registern mit den in der Zielzustand-Datenstruktur enthaltenen Werten und zum Speichern des Speicherbildes im flüchtigen Speicher in einer Art, die die Speicheradressbereiche des Zielzustandes wiederherstellt; und eine Betriebssystem-Rückkehrroutine (300), um der Betriebssystem-Software die Kontrolle über das System zurück zu übertragen.
  9. System nach Anspruch 8, worin die Wiederherstellungsroutine in einem nicht-flüchtigen Speicher (35) enthalten ist.
  10. System nach Anspruch 8, worin die Betriebssystem-Rückkehrroutine in den Speicheradressbereichen des Zielzustandes enthalten ist.
  11. System nach Anspruch 10, worin die Betriebssystem-Rückkehrroutine innerhalb einer Interrupt-Wartungsroutine der Betriebssystem-Software liegt.
  12. System nach Anspruch 8, das des weiteren einen Zielzustand-Prozess (99) zum Verschieben des Systems in den Zielzustand vor dem Ausführen der Zielzustandbild-Speicherroutine umfasst.
  13. System nach Anspruch 8, worin das Bildspeichermedium aus der Gruppe einer Flash-ROM (35), einer Festplatte (16), einer Floppy-Diskette und einem optischen Speichermedium ausgewählt ist.
  14. System nach Anspruch 8, das des weiteren eine Zielzustandbild-Speicherroutine (100) zur Schaffung eines Bildes des Zielzustandes und Speichern des Bildes als Zielzustand-Datenstruktur und als Speicherbild im Bildspeichermedium umfasst.
  15. System nach Anspruch 14, worin ein Platten-Dateisystem von der Zielzustandbild-Speicherroutine ausser Betrieb genommen wird und von der Betriebssystem-Rückkehrroutine in Betrieb genommen wird.
  16. System nach Anspruch 8, worin das Laden und Speichern des Speicherbildes durch die Wiederherstellungsroutine unter Verwendung von physikalischen Adressen mit ausgeschaltetem Paging ausgeführt wird, und wobei des weiteren die Wiederherstellungsroutine das Paging vor dem Transfer zur Betriebssystem-Rückkehrroutine anschaltet.
  17. System nach Anspruch 8, worin sich die Wiederherstellungsroutine während der Ausführung selbst in Speicherbereiche des flüchtigen Speichers verschiebt, die im Zielzustand unbenutzt sind.
  18. System nach Anspruch 14, worin die Zielzustandbild-Speicherroutine das gegenwärtig verwendete Paging-Verzeichnis und die Paging-Tabellen abfragt und eine Kopie des Seitenverzeichnisses erzeugt, das mit linearen Adressen von Paging-Tabellen gefüllt ist, um die Übersetzung der Linearadressen in physikalische Adressen zu ermöglichen.
  19. System nach Anspruch 18, worin die Zielzustandbild-Speicherroutine des weiteren aus den Inhalten der Speichertabellen eine Liste von physikalischen Adressen von Speicheradressbereichen erzeugt, die in flüchtigen Speicherbereichen abgelegt sind.
  20. System nach Anspruch 19, worin die Zielzustandbild-Speicherroutine des weiteren eine Liste von Linearadressen von Seiten erzeugt, die auf Speicheradressbereiche im Speicher im Zielzustand abgebildet sind, um die Übertragung von physikalischen Adressen auf Linearadressen durch Indexierung in die Liste mit einer physikalischen Adresse zu ermöglichen.
  21. System nach Anspruch 20, worin die Zielzustandbild-Speicherroutine die Liste von Linearadressen von abgebildeten Seiten und die Liste von physikalischen Adressen von Speicheradressbereichen zum Speichern des Speicherbildes im Bildspeichermedium benutzt.
  22. System nach Anspruch 8, worin die Zielzustand-Datenstruktur eine Liste physikalischer Adressen beinhaltet, die flüchtigen Speicherstellen entsprechen, in denen Speicheradressbereiche im Zielzustand gespeichert sind, wobei die Liste von der Wiederherstellungsroutine beim Speichern des aus dem Speichergerät in den flüchtigen Speicher an ausgewählte Stellen geladenen Speicherbildes verwendet wird.
  23. System nach Anspruch 8, worin die Wiederherstellungsroutine die Zielzustand-Datenstruktur von einer bekannten Stelle im Bildspeichermedium lädt.
  24. System nach Anspruch 8, worin die Zielzustand-Datenstruktur die physikalischen Adressen enthält, die den Speicherbereichen der Zielzustand-Datenstruktur im Zielzustand entsprechen, um der Wiederherstellungsroutine das Schreiben in die Zielzustand-Datenstruktur zu ermöglichen.
  25. System nach Anspruch 8, worin die Zielzustand-Datenstruktur die physikalischen Adressen des Seitenverzeichnisses im Zielzustand enthält, und das des weiteren einen Code in der Wiederherstellungsroutine umfasst zum (a) Direktkorrigieren (patching) des Seitenverzeichnisses, so dass physikalische Adressen von Wiederherstellungsroutinenbefehlen auf die gleichen physikalischen Adressen abgebildet werden, (b) Speichern von Information zum Rück-Korrigieren (unpatching) des Seitenverzeichnisses in der Zielzustand-Datenstruktur, und (c) Ermöglichen des Paging vor dem Springen in die Betriebssystem-Rückkehrroutine.
  26. System nach Anspruch 25, das des weiteren einen Code in der Betriebssystem-Rückkehrroutine zum Entwerten von Verschiebungspufferspeichern des Paging-Mechanismus und Rück-Korrigieren des Seitenverzeichnisses mit in der Zielzustand-Datenstruktur enthaltener Information umfasst.
  27. System nach Anspruch 8, das des weiteren einen Code in der Betriebssystem-Rückkehrroutine zum Reaktivieren von Interrupts und zur Rückkehr aus der Interrupt-Wartungsroutine umfasst.
  28. System nach Anspruch 14, worin das Bildspeichermedium ein Flash-ROM (35) ist und das des weiteren einen Code in der Zielzustandbild-Speicherroutine umfasst zum (a) Erhalten einer physikalischen Adresse des Bildspeichermediums von einer Hardware-Konfigurationsdatei, (b) Korrigieren eines leeren Eintrags im Seitenverzeichnis mit der physikalischen Adresse einer Seitentabelle, die erzeugt wurde, um die physikalischen Adressen des Bildspeichermediums zu enthalten, (c) Zugreifen auf das Bildspeichermedium mit einer Linearadresse, die dem korrigierten Eintrag im Seitenverzeichnis und der darin angezeigten Seitentabelle entspricht, und (d) Speichern des Speicherbildes und der Zielzustand-Datenstruktur im Bildspeichermedium.
  29. System nach Anspruch 14, worin das Bildspeichermedium ein Festplatte (16) ist und das des weiteren einen Code in der Zielzustandbild-Speicherroutine umfasst zum (a) Zugreifen auf die Festplatte ohne Interrupts, (b) Interpretieren einer Partitionstabelle auf der Festplatte zum Finden einer bestimmten Speicherdatei und Berechnen einer Linear-Blockadresse darauf, und (c) Speichern der Zielzu stand-Datenstruktur und des Speicherbildes in der bestimmten Speicherdatei.
  30. System nach Anspruch 14, worin die Zielzustandbild-Speicherroutine Datenkompression auf den Speicheradressbereichen vor dem Speichern der Bereiche als Speicherbild im Bildspeichermedium ausführt.
  31. Verfahren zum Starten eines Mikroprozessor-gestützten Systems, umfassend Ausführen einer Wiederherstellungsroutine (200), die in einem nicht-flüchtigen Speicher abgelegt ist, worin die durch die Wiederherstellungsroutine ausgeführten Schritte umfassen (a) Laden eines durch eine Zielzustandbild-Speicherroutine (100) erzeugten Speicherbildes aus einem Bildspeichermedium (35, 16), wobei das Speicherbild Seiten in einem Linearadressbereich entspricht, die auf Speicheradressbereiche in physikalischen Adressbereichen durch einen Paging-Mechanismus in einen Zielzustand des Systems nach Starten der Betriebssystemsoftware abgebildet werden, (b) Speichern des geladenen Speicherbildes in einem flüchtigen Speicher (14) in einer Art, die die Speicheradressbereiche in Übereinstimmung mit von Paging-Tabellen erhaltenen Informationen wiederherstellt, und (c) Laden einer Zielzustand-Datenstruktur aus dem Bildspeichermedium, wobei die Zielzustand-Datenstruktur Werte von Prozessor-Registern umfasst, die dem Zielzustand entsprechen, und Wiederherstellen der Prozessor-Register auf die geladenen Werte; und Transfer der Prozessor-Ausführung auf eine Betriebssystem-Rückkehrroutine (300) in einen flüchtigen Speicher.
  32. Verfahren nach Anspruch 31, worin die Betriebssystem-Rückkehrroutine innerhalb einer Interrupt-Wartungsroutine der Betriebssystemsoftware enthalten ist.
  33. Verfahren nach Anspruch 31, worin der Zielzustand einen oder mehrere Benutzer-Prozesse umfasst, die durch die Betriebssystemsoftware in einem ausgesetzten Zustand gehalten werden.
  34. Verfahren nach Anspruch 31, worin die Ausführung der Zielzustandbild-Speicherroutine Prozessorausführungen auf die Betriebssystem-Rückkehrroutine nach Speichern des Speicherbildes und der Zielzustand-Datenstruktur in das Bildspeichermedium überträgt.
  35. Verfahren nach Anspruch 31, das des weiteren die Verschiebung des Systems in den Zielzustand durch einen Zielzustand-Prozess vor der Ausführung der Zielzustandbild-Speicherroutine umfasst.
  36. Verfahren nach Anspruch 31, worin das Bildspeichermedium ausgewählt ist aus der Gruppe bestehend aus einem Flash-ROM (35), einer Festplatte (16), einer Floppy-Diskette und einem optischen Speichermedium.
  37. Verfahren nach Anspruch 31, worin das System ein Festplattenlaufwerk (16) umfasst, und wobei des weiteren das Festplattendateisystem im Zielzustand außer Betrieb ist, und das Verfahren des weiteren das Installieren des Dateisystems nach dem Transfer auf die Betriebssystem-Rückkehrroutine umfasst.
  38. Verfahren nach Anspruch 31, wobei das Laden und Speichern des Speicherbildes durch die Wiederherstellungsroutine ausgeführt wird, indem physikalische Adressen bei ausgeschaltetem Paging verwendet werden, und des weiteren das Paging durch die Wiederherstellungsroutine vor dem Transfer auf die Betriebssystem-Rückkehrstelle eingeschaltet wird.
  39. Verfahren nach Anspruch 31, worin die Wiederherstellungsroutine des weiteren während der Ausführung den Schritt des Sich-selbst-Verschiebens in Speicherstellen im flüchtigen Speicher, die im Zielzustand unbenutzt sind, durchführt.
  40. Verfahren nach Anspruch 31, worin die Zielzustandbild-Speicherroutine das gegenwärtig verwendete Paging-Verzeichnis und Paging-Tabellen abfragt und eine Kopie des mit Linearadressen der Paging-Tabellen gefüllten Seitenverzeichnisses erzeugt, um die Übersetzung von Linearadressen in physikalische Adressen zu ermöglichen.
  41. Verfahren nach Anspruch 40, worin die Zielzustandbild-Speicherroutine des weiteren eine Liste physikalischer Adressen von benutzten flüchtigen Speicherstellen erzeugt, wobei die Liste physikalische Adressen von Speicherstellen enthält, in denen Speicheradressbereiche im Zielzustand wie von den Inhalten der Seitentabellen zurückgegeben gespeichert sind.
  42. Verfahren nach Anspruch 41, worin die Zielzustandbild-Speicherroutine des weiteren eine Liste von Linearadressen von Seiten erzeugt, die auf im Speicher im Zielzustand gespeicherte Speicheradressbe reiche abgebildet werden, um die Übersetzung von physikalischen Adressen in Linearadressen durch Indexierung in der Liste mit einer physikalischen Adresse zu ermöglichen.
  43. Verfahren nach Anspruch 42, worin die Zielzustandbild-Speicherroutine die Liste von Linearadressen von abgebildeten Seiten und die Liste von physikalischen Adressen von verwendeten Speicherstellen verwendet, um auf Seiten zuzugreifen, die im Speicher im Zielzustand gespeichert sind und die Seiten im Bildspeichermedium zu speichern.
  44. Verfahren nach Anspruch 31, worin die Zielzustand-Datenstruktur eine Liste physikalischer Adressen umfasst, die flüchtigen Speicherstellen entsprechen, in denen Seitenbereiche im Zielzustand gespeichert sind, wobei die Liste in der Rücksetzroutine beim Speichern des Speicherbildes, das vom Bildspeichermedium in den flüchtigen Speicher an ausgewählte Stellen geladen wurde, verwendet wird.
  45. Verfahren nach Anspruch 44, das des weiteren das Laden der Zielzustand-Datenstruktur aus einer bekannten Stelle im Bildspeichermedium während der Ausführung der Wiederherstellungsroutine umfasst.
  46. Verfahren nach Anspruch 45, worin die Zielzustand-Datenstruktur die physikalischen Adressen beinhaltet, die den Speicherstellen der Zielzustand-Datenstruktur im Zielzustand entsprechen, um der Rücksetzroutine das Schreiben in die Zielzustand-Datenstruktur zu ermöglichen.
  47. Verfahren nach Anspruch 45, worin die Zielzustand-Datenstruktur die physikalischen Adressen des Sei tenverzeichnisses im Zielzustand enthält, und worin die Ausführung der Wiederherstellungsroutine des weiteren Direktkorrigieren des Seitenverzeichnisses, so dass physikalische Adressen von Rücksetzroutinen-Befehlen auf die gleichen physikalischen Adressen abgebildet werden; Speichern von Information zum Rück-Korrigieren des Seitenverzeichnisses in der Zielzustand-Datenstruktur; und Ermöglichen des Paging vor dem Springen in die Betriebssystem-Rückkehrroutine umfasst.
  48. Verfahren nach Anspruch 47, das nach dem Transfer in die Betriebssystem-Rückkehrroutine des weiteren Entwerten von Verschiebungspufferspeichern des Paging-Mechanismus; Rück-Korrigieren des Seitenverzeichnisses mit in der Zielzustand-Datenstruktur enthaltener Information umfasst.
  49. Verfahren nach Anspruch 32, das nach dem Transfer in die Betriebssystem-Rückkehrroutine des weiteren Wiederermöglichen von Interrupts und Rückkehr aus der Interrupt-Wartungsroutine; Initialisierung peripherer Hardwaregeräte; und Zulassen des Startens des Ablaufs von Prozessen, die vom Betriebssystem in einem ausgesetzten Zu stand gehalten sind, umfasst.
  50. Prozessor-lesbares Speichermedium (35), das einen Code zum Ausführen des in einem der Ansprüche 31 bis 49 beschriebenen Verfahrens umfasst.
DE60008929T 1999-12-30 2000-12-29 Schnellstart eines mikroprozessorbasierten systems Expired - Lifetime DE60008929T2 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US474842 1999-12-30
US09/474,842 US6636963B1 (en) 1999-12-30 1999-12-30 Quick starting for microprocessor-based system by retrieving a target state memory image and a target state data structure from an image storage medium
PCT/US2000/035531 WO2001050248A2 (en) 1999-12-30 2000-12-29 Quick starting microprocessor-based system

Publications (2)

Publication Number Publication Date
DE60008929D1 DE60008929D1 (de) 2004-04-15
DE60008929T2 true DE60008929T2 (de) 2005-01-27

Family

ID=23885163

Family Applications (1)

Application Number Title Priority Date Filing Date
DE60008929T Expired - Lifetime DE60008929T2 (de) 1999-12-30 2000-12-29 Schnellstart eines mikroprozessorbasierten systems

Country Status (6)

Country Link
US (3) US6636963B1 (de)
EP (1) EP1247169B1 (de)
AT (1) ATE261594T1 (de)
AU (1) AU2294801A (de)
DE (1) DE60008929T2 (de)
WO (1) WO2001050248A2 (de)

Families Citing this family (96)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6636963B1 (en) * 1999-12-30 2003-10-21 Cardiac Pacemakers, Inc. Quick starting for microprocessor-based system by retrieving a target state memory image and a target state data structure from an image storage medium
US6802022B1 (en) 2000-04-14 2004-10-05 Stratus Technologies Bermuda Ltd. Maintenance of consistent, redundant mass storage images
US6842823B1 (en) * 2000-04-14 2005-01-11 Stratus Technologies Bermuda Ltd Methods and apparatus for persistent volatile computer memory
US20030074364A1 (en) * 2001-10-12 2003-04-17 Sewall Patrick M. Compressed data structure and decompression system
US7017052B2 (en) * 2001-11-16 2006-03-21 Lenovo Pte. Ltd. Method and system for reducing boot time for a computer
US20030101312A1 (en) * 2001-11-26 2003-05-29 Doan Trung T. Machine state storage apparatus and method
KR100456736B1 (ko) * 2002-07-10 2004-11-10 삼성전자주식회사 플래시 메모리를 구비한 디지털 기기의 부팅 시간 단축 방법
NZ520786A (en) * 2002-08-14 2005-06-24 Daniel James Oaeconnell Method of booting a computer system using a memory image of the post boot content of the system RAM memory
US20080059785A1 (en) * 2002-08-14 2008-03-06 Ti Technologies Limited Method and apparatus for shutting down a computer system
US7313684B2 (en) * 2002-08-14 2007-12-25 T1 Technologies Limited Method and apparatus for booting a computer system
US7478248B2 (en) * 2002-11-27 2009-01-13 M-Systems Flash Disk Pioneers, Ltd. Apparatus and method for securing data on a portable storage device
US7100037B2 (en) * 2002-11-27 2006-08-29 Intel Corporation Method for reducing BIOS resume time from a sleeping state
US7174451B2 (en) * 2003-03-31 2007-02-06 Intel Corporation System and method for saving and/or restoring system state information over a network
US7136994B2 (en) * 2003-05-13 2006-11-14 Intel Corporation Recovery images in an operational firmware environment
KR100598379B1 (ko) * 2003-09-08 2006-07-06 삼성전자주식회사 컴퓨터 시스템 및 그 제어방법
EP1685482A4 (de) * 2003-09-24 2007-08-29 Ti Technologies Ltd A New Zeal Verfahren und vorrichtung zum booten eines computersystems
US7684861B2 (en) * 2003-11-13 2010-03-23 Cardiac Pacemakers, Inc. Implantable cardiac monitor upgradeable to pacemaker or cardiac resynchronization device
US7334146B2 (en) * 2003-12-09 2008-02-19 Canon Kabushiki Kaisha Method for controlling an image processing apparatus based on a power supply status
US7299086B2 (en) 2004-03-05 2007-11-20 Cardiac Pacemakers, Inc. Wireless ECG in implantable devices
FR2868564B1 (fr) * 2004-03-30 2007-07-06 Giga Byte Tech Co Ltd Appareil et procede pour initialiser rapidement un ordinateur
US20050223209A1 (en) * 2004-03-31 2005-10-06 Giga-Byte Technology Co., Ltd. Apparatus for fast booting computer and method for the same
CN100489768C (zh) * 2004-06-15 2009-05-20 T1科技有限公司 用于引导计算机系统的方法和装置
JPWO2006001050A1 (ja) * 2004-06-24 2008-04-17 富士通株式会社 コンピュータ起動方法、プログラム、記憶媒体及び情報処理装置
KR101038567B1 (ko) * 2004-07-13 2011-06-02 엘지전자 주식회사 시스템 응급 복구 장치 및 방법
DE102004055051B3 (de) * 2004-11-15 2005-10-13 Siemens Ag Schneller Systemstart für eingebettete Systeme
US7529921B2 (en) * 2004-12-17 2009-05-05 Cardiac Pacemakers, Inc. Fast initialization of medical device system having multiple operating systems
US7509530B2 (en) * 2005-01-19 2009-03-24 Sonic Solutions Method and system for use in restoring an active partition
KR100777446B1 (ko) * 2005-05-25 2007-11-21 삼성전자주식회사 전자장치 및 그 부팅방법
US20070234028A1 (en) * 2005-09-15 2007-10-04 Rothman Michael A Method and apparatus for quickly changing the power state of a data processing system
US20070162660A1 (en) * 2005-12-13 2007-07-12 Intel Corporation Method, apparatus and computer system for independently updating a storage device of a computer system
CN100456241C (zh) * 2005-12-30 2009-01-28 英业达股份有限公司 正确显示初始化画面的方法
US8024508B2 (en) * 2006-03-21 2011-09-20 Lg Electronics Inc. Computer storage control
US7818616B2 (en) * 2007-07-25 2010-10-19 Cisco Technology, Inc. Warm reboot enabled kernel dumper
US8695087B2 (en) * 2008-04-04 2014-04-08 Sandisk Il Ltd. Access control for a memory device
US7941700B2 (en) 2009-03-02 2011-05-10 Microsoft Corporation Operating system-based application recovery
TWI417789B (zh) * 2009-07-07 2013-12-01 Via Tech Inc 電腦系統及啟動方法
US8712968B1 (en) * 2009-07-15 2014-04-29 Symantec Corporation Systems and methods for restoring images
US8458403B2 (en) * 2009-11-24 2013-06-04 Honeywell International Inc. Architecture and method for cache-based checkpointing and rollback
US8108721B2 (en) * 2009-11-24 2012-01-31 Honeywell International Inc. Architecture and method for hardware-assisted processor checkpointing and rollback
CN101710253B (zh) * 2009-11-25 2012-06-13 安凯(广州)微电子技术有限公司 嵌入式系统的深度休眠方法
US9716672B2 (en) 2010-05-28 2017-07-25 Brocade Communications Systems, Inc. Distributed configuration management for virtual cluster switching
US9270486B2 (en) 2010-06-07 2016-02-23 Brocade Communications Systems, Inc. Name services for virtual cluster switching
US8867552B2 (en) 2010-05-03 2014-10-21 Brocade Communications Systems, Inc. Virtual cluster switching
US9769016B2 (en) 2010-06-07 2017-09-19 Brocade Communications Systems, Inc. Advanced link tracking for virtual cluster switching
US9608833B2 (en) 2010-06-08 2017-03-28 Brocade Communications Systems, Inc. Supporting multiple multicast trees in trill networks
US9628293B2 (en) 2010-06-08 2017-04-18 Brocade Communications Systems, Inc. Network layer multicasting in trill networks
US9806906B2 (en) 2010-06-08 2017-10-31 Brocade Communications Systems, Inc. Flooding packets on a per-virtual-network basis
US8539472B2 (en) 2010-06-09 2013-09-17 Lear Corporation Method and system of updating shared memory
US8495601B2 (en) 2010-06-09 2013-07-23 Lear Corporation Shared memory architecture
US9807031B2 (en) 2010-07-16 2017-10-31 Brocade Communications Systems, Inc. System and method for network configuration
JP2012058879A (ja) * 2010-09-07 2012-03-22 Toshiba Corp オペレーティングシステム起動管理装置
US8788798B2 (en) 2010-12-06 2014-07-22 Microsoft Corporation Fast computer startup
US8543849B2 (en) 2010-12-06 2013-09-24 Microsoft Corporation Fast computer startup
US9032194B2 (en) 2010-12-06 2015-05-12 Microsoft Technology Licensing, Llc Fast computer startup
TWI485623B (zh) * 2011-03-08 2015-05-21 Compal Electronics Inc 快速喚醒電腦系統方法與電腦系統
US9736085B2 (en) 2011-08-29 2017-08-15 Brocade Communications Systems, Inc. End-to end lossless Ethernet in Ethernet fabric
US9699117B2 (en) 2011-11-08 2017-07-04 Brocade Communications Systems, Inc. Integrated fibre channel support in an ethernet fabric switch
US9450870B2 (en) 2011-11-10 2016-09-20 Brocade Communications Systems, Inc. System and method for flow management in software-defined networks
JP5959841B2 (ja) * 2011-12-12 2016-08-02 キヤノン株式会社 画像処理装置及びその制御方法、並びにプログラム
US9742693B2 (en) 2012-02-27 2017-08-22 Brocade Communications Systems, Inc. Dynamic service insertion in a fabric switch
US9154416B2 (en) 2012-03-22 2015-10-06 Brocade Communications Systems, Inc. Overlay tunnel in a fabric switch
US8977879B2 (en) 2012-03-30 2015-03-10 Motorola Solutions, Inc. Method and apparatus for enhancing a multi-stage hibernate and resume process
US10277464B2 (en) 2012-05-22 2019-04-30 Arris Enterprises Llc Client auto-configuration in a multi-switch link aggregation
US9401872B2 (en) 2012-11-16 2016-07-26 Brocade Communications Systems, Inc. Virtual link aggregations across multiple fabric switches
US9413691B2 (en) 2013-01-11 2016-08-09 Brocade Communications Systems, Inc. MAC address synchronization in a fabric switch
US9548926B2 (en) 2013-01-11 2017-01-17 Brocade Communications Systems, Inc. Multicast traffic load balancing over virtual link aggregation
US9565099B2 (en) 2013-03-01 2017-02-07 Brocade Communications Systems, Inc. Spanning tree in fabric switches
US9401818B2 (en) 2013-03-15 2016-07-26 Brocade Communications Systems, Inc. Scalable gateways for a fabric switch
US9218253B2 (en) 2013-05-30 2015-12-22 Hewlett-Packard Development Company, L.P. Embedded restoration memory
US9912612B2 (en) 2013-10-28 2018-03-06 Brocade Communications Systems LLC Extended ethernet fabric switches
US9548873B2 (en) 2014-02-10 2017-01-17 Brocade Communications Systems, Inc. Virtual extensible LAN tunnel keepalives
US10581758B2 (en) 2014-03-19 2020-03-03 Avago Technologies International Sales Pte. Limited Distributed hot standby links for vLAG
US10476698B2 (en) 2014-03-20 2019-11-12 Avago Technologies International Sales Pte. Limited Redundent virtual link aggregation group
US10063473B2 (en) 2014-04-30 2018-08-28 Brocade Communications Systems LLC Method and system for facilitating switch virtualization in a network of interconnected switches
US9800471B2 (en) 2014-05-13 2017-10-24 Brocade Communications Systems, Inc. Network extension groups of global VLANs in a fabric switch
US10616108B2 (en) 2014-07-29 2020-04-07 Avago Technologies International Sales Pte. Limited Scalable MAC address virtualization
US9807007B2 (en) 2014-08-11 2017-10-31 Brocade Communications Systems, Inc. Progressive MAC address learning
US9524173B2 (en) * 2014-10-09 2016-12-20 Brocade Communications Systems, Inc. Fast reboot for a switch
US9699029B2 (en) 2014-10-10 2017-07-04 Brocade Communications Systems, Inc. Distributed configuration management in a switch group
US9628407B2 (en) 2014-12-31 2017-04-18 Brocade Communications Systems, Inc. Multiple software versions in a switch group
US9626255B2 (en) 2014-12-31 2017-04-18 Brocade Communications Systems, Inc. Online restoration of a switch snapshot
US9942097B2 (en) 2015-01-05 2018-04-10 Brocade Communications Systems LLC Power management in a network of interconnected switches
US10003552B2 (en) 2015-01-05 2018-06-19 Brocade Communications Systems, Llc. Distributed bidirectional forwarding detection protocol (D-BFD) for cluster of interconnected switches
US10038592B2 (en) 2015-03-17 2018-07-31 Brocade Communications Systems LLC Identifier assignment to a new switch in a switch group
US9807005B2 (en) 2015-03-17 2017-10-31 Brocade Communications Systems, Inc. Multi-fabric manager
US10579406B2 (en) 2015-04-08 2020-03-03 Avago Technologies International Sales Pte. Limited Dynamic orchestration of overlay tunnels
US10439929B2 (en) 2015-07-31 2019-10-08 Avago Technologies International Sales Pte. Limited Graceful recovery of a multicast-enabled switch
US10171303B2 (en) 2015-09-16 2019-01-01 Avago Technologies International Sales Pte. Limited IP-based interconnection of switches with a logical chassis
US10105189B2 (en) 2015-11-10 2018-10-23 Mako Surgical Corp. Techniques for correcting an error in a nonvolatile memory of an embedded component for an end effector in a robotic surgical system
US9912614B2 (en) 2015-12-07 2018-03-06 Brocade Communications Systems LLC Interconnection of switches based on hierarchical overlay tunneling
US10452561B2 (en) 2016-08-08 2019-10-22 Raytheon Company Central processing unit architecture and methods for high availability systems
CN109689215B (zh) * 2016-09-12 2021-12-28 Abs全球公司 用于微流控芯片的疏水性涂层的方法和系统
US10237090B2 (en) 2016-10-28 2019-03-19 Avago Technologies International Sales Pte. Limited Rule-based network identifier mapping
US10469318B1 (en) 2016-12-22 2019-11-05 Nutanix, Inc. State tracking in distributed computing systems
US10361917B1 (en) * 2016-12-22 2019-07-23 Nutanix, Inc. State control in distributed computing systems
CN114385537A (zh) * 2022-03-24 2022-04-22 浪潮(山东)计算机科技有限公司 一种页槽号动态分配方法、装置、设备及介质

Family Cites Families (46)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4430704A (en) * 1980-01-21 1984-02-07 The United States Of America As Represented By The Secretary Of The Navy Programmable bootstrap loading system
US4709349A (en) * 1982-01-05 1987-11-24 Sharp Kabushiki Kaisha Method for maintaining display/print mode in display printer
JPS6051957A (ja) * 1983-08-31 1985-03-23 Toshiba Corp マイクロプロセツサシステム
US4663707A (en) * 1984-05-25 1987-05-05 Scientific Micro Systems, Inc. Multilevel bootstrap apparatus
US4720812A (en) * 1984-05-30 1988-01-19 Racal-Milgo, Inc. High speed program store with bootstrap
US4959774A (en) * 1984-07-06 1990-09-25 Ampex Corporation Shadow memory system for storing variable backup blocks in consecutive time periods
US5155833A (en) * 1987-05-11 1992-10-13 At&T Bell Laboratories Multi-purpose cache memory selectively addressable either as a boot memory or as a cache memory
JP2772103B2 (ja) * 1990-03-28 1998-07-02 株式会社東芝 計算機システム立上げ方式
JPH04107623A (ja) * 1990-08-28 1992-04-09 Seiko Epson Corp 表示装置
US5410711A (en) * 1991-02-14 1995-04-25 Dell Usa, L.P. Portable computer with BIOS-independent power management
US5297282A (en) 1991-05-29 1994-03-22 Toshiba America Information Systems, Inc. Resume processing function for the OS/2 operating system
JPH077316B2 (ja) * 1991-06-10 1995-01-30 松下電器産業株式会社 システム再起動装置
US5355490A (en) * 1991-06-14 1994-10-11 Toshiba America Information Systems, Inc. System and method for saving the state for advanced microprocessor operating modes
JP2525122B2 (ja) 1992-11-09 1996-08-14 インターナショナル・ビジネス・マシーンズ・コーポレイション コンピュ―タ・システムのバックアップ記録方法、復元方法およびシステム
KR970008188B1 (ko) * 1993-04-08 1997-05-21 가부시끼가이샤 히다찌세이사꾸쇼 플래시메모리의 제어방법 및 그것을 사용한 정보처리장치
JPH0784686A (ja) * 1993-06-30 1995-03-31 Canon Inc 携帯型ペン入力コンピュータ装置
US5511202A (en) * 1993-07-26 1996-04-23 International Business Machines Corporation Desktop computer system having zero-volt system suspend and control unit for ascertaining interrupt controller base address
US5524249A (en) * 1994-01-27 1996-06-04 Compaq Computer Corporation Video subsystem power management apparatus and method
US5615376A (en) * 1994-08-03 1997-03-25 Neomagic Corp. Clock management for power reduction in a video display sub-system
US5578064A (en) * 1994-08-11 1996-11-26 Intermedics, Inc. Rate responsive cardiac pacemaker with impedance sensing
US5710930A (en) 1995-08-04 1998-01-20 Intel Corporation Apparatus and a method for allowing an operating system of a computer system to persist across a power off and on cycle
US5638541A (en) * 1995-08-25 1997-06-10 Intel Corporation System and method for managing power on desktop systems
JP2988866B2 (ja) * 1996-02-29 1999-12-13 株式会社東芝 コンピュータシステム
US5925128A (en) * 1996-03-22 1999-07-20 Leonard Bloom A Part Interest Access control module for a personal computer
US6026486A (en) * 1996-05-23 2000-02-15 Matsushita Electric Industrial Co., Ltd. General purpose processor having a variable bitwidth
KR100218186B1 (ko) 1996-08-21 1999-09-01 윤종용 그래픽 장치의 데이터 저장 및 복구 방법
US5968173A (en) * 1996-10-01 1999-10-19 Texas Instruments Incorporated Method and system for maximizing the apparent initial processing capability of a computer
US5948101A (en) * 1996-12-02 1999-09-07 The Foxboro Company Methods and systems for booting a computer in a distributed computing system
US6098158A (en) * 1997-12-18 2000-08-01 International Business Machines Corporation Software-enabled fast boot
US6101601A (en) 1998-04-20 2000-08-08 International Business Machines Corporation Method and apparatus for hibernation within a distributed data processing system
US6173417B1 (en) * 1998-04-30 2001-01-09 Intel Corporation Initializing and restarting operating systems
KR100283243B1 (ko) * 1998-05-11 2001-03-02 구자홍 운영체제의 부팅방법
US6029086A (en) * 1998-06-15 2000-02-22 Cardiac Pacemakers, Inc. Automatic threshold sensitivity adjustment for cardiac rhythm management devices
US6209088B1 (en) * 1998-09-21 2001-03-27 Microsoft Corporation Computer hibernation implemented by a computer operating system
US6243831B1 (en) * 1998-10-31 2001-06-05 Compaq Computer Corporation Computer system with power loss protection mechanism
US6385721B1 (en) * 1999-01-22 2002-05-07 Hewlett-Packard Company Computer with bootable hibernation partition
US6421777B1 (en) * 1999-04-26 2002-07-16 International Business Machines Corporation Method and apparatus for managing boot images in a distributed data processing system
US6408397B1 (en) * 1999-05-24 2002-06-18 Dell Usa, L.P. Using RTC wake-up to enable recovery from power failures
US6336174B1 (en) * 1999-08-09 2002-01-01 Maxtor Corporation Hardware assisted memory backup system and method
US6411850B1 (en) * 1999-09-30 2002-06-25 Uab Research Foundation Method of determining a ventilatory threshold breakpoint for an adaptive rate pacemaker
US6418343B1 (en) * 1999-10-01 2002-07-09 Cardiac Pacemakers, Inc. Method and apparatus for adjusting the sensing threshold of a cardiac rhythm management device
US6273856B1 (en) * 1999-10-19 2001-08-14 Cardiac Pacemakers, Inc. Apparatus and methods for METS measurement by accelerometer and minute ventilation sensors
US6275727B1 (en) * 1999-11-04 2001-08-14 Cardiac Pacemakers, Inc. Implantable cardiac rhythm management device for assessing status of CHF patients
US6280389B1 (en) * 1999-11-12 2001-08-28 Cardiac Pacemakers, Inc. Patient identification for the pacing therapy using LV-RV pressure loop
US6505071B1 (en) * 1999-12-15 2003-01-07 Cardiac Pacemakers, Inc. Cardiac management device with capability of noise detection in automatic capture verification
US6636963B1 (en) * 1999-12-30 2003-10-21 Cardiac Pacemakers, Inc. Quick starting for microprocessor-based system by retrieving a target state memory image and a target state data structure from an image storage medium

Also Published As

Publication number Publication date
US20040068646A1 (en) 2004-04-08
US6636963B1 (en) 2003-10-21
DE60008929D1 (de) 2004-04-15
EP1247169A2 (de) 2002-10-09
US7111159B2 (en) 2006-09-19
ATE261594T1 (de) 2004-03-15
AU2294801A (en) 2001-07-16
US20050240755A1 (en) 2005-10-27
WO2001050248A2 (en) 2001-07-12
EP1247169B1 (de) 2004-03-10
US6915417B2 (en) 2005-07-05
WO2001050248A3 (en) 2002-01-17

Similar Documents

Publication Publication Date Title
DE60008929T2 (de) Schnellstart eines mikroprozessorbasierten systems
DE112011104356B4 (de) Aktualisieren von Software-Images auf der Grundlage von Streaming-Technik
DE60005563T2 (de) Rechnersysteminitialisierung durch in einem speicher mit sequentiellem zugriff gespeicherten urlade-code
DE19983768B4 (de) Verfahren zum Ausführen von für verschiedene Befehlssatzarchitekturen geschriebener Firmware
DE112014006118B4 (de) Spekulatives Vorab-Holen von in einem Flash-Speicher gespeicherten Daten
DE102013215535B4 (de) Sicherung oder wiederherstellung von daten mit hilfe eines hauptspeichers und nichtflüchtiger speichermedien
DE19681256C2 (de) Ausführung von Anwendungen am Platz vom Speicher
DE112011103026B4 (de) Bedarfsgesteuertes Streaming von Abbildern virtueller Maschinen
DE112008000180T5 (de) Verfahren und System für die Umsetzung eines Fast-Wakeup eines Flashspeichersystems
US20060133362A1 (en) Fast initialization of medical device system having multiple operating systems
DE112012002241T5 (de) Migration eines transparenten Dateisystems zu einem neuen physischen Speicherort
DE112013002254T5 (de) Wiederherstellen aus einer Altbetriebssystemumgebung zu einer UEFI-Preboot-Umgebung
DE4220198A1 (de) Wiederherstellungsprotokollieren bei vorliegen von schnappschuss-dateien durch ordnen des pufferspeicherladens
DE102007003179A1 (de) Verfahren zum Systembooten mit Direktspeicherzugriff bei einer neuen Speicherarchitektur
DE10225664A1 (de) System und Verfahren zum Prüfen von Systemabrufereignissen mit Systemabrufumhüllungen
DE112012000303T5 (de) Dynamische binäre Optimierung
DE102019106126A1 (de) Massenspeicherungsvorrichtung mit vom Host eingeleiteter Pufferausräumung
DE112012000365T5 (de) Inkrementelles Entladen von Klassen in einem auf Bereichen beruhenden Speicherbereiniger
US7290175B1 (en) Forcing a memory dump for computer system diagnosis
DE202010017644U1 (de) Hybridspeichervorrichtung
DE10393968T5 (de) Dauerzwischenspeichervorrichtung und -verfahren
DE102012220201A1 (de) Verfahren und System zur Bildimplementierung in einer Cloud-Umgebung
DE112021002894T5 (de) On-the- fly- pit-auswahl bei disarter-recovery in der cloud
DE102012221261A1 (de) Verfahren zum Zwischenspeichern und System zum Ausführen des Verfahrens zum Zwischenspeichern zum Betreiben eines mindestens einen Host-Computer aufweisenden Computerserversystems
EP1639475A2 (de) Prozessorarchitektur für exakte zeigeridentifizierung

Legal Events

Date Code Title Description
8364 No opposition during term of opposition