Phasen des Ladens von Betriebssystemen. Boot-Algorithmus des Betriebssystems Schalten Sie den Computer ein, POST, BootMonitor

Vor langer Zeit, als ich klein war, habe ich in einem Institutslabor an einem großen CM-3 Computer (so etwas wie dem berühmten PDP-11) gearbeitet, Bootstrapping sah so aus. Ein kurzes Papierband mit darauf gestanztem Bootprogramm wurde in den Fotoleser gefüllt, der Lesevorgang gestartet und dann ... wie es der Zufall wollte.

Tatsache ist, dass sich das Papierband allmählich abnutzte, schlecht zu lesen begann und der Computer beim ersten Mal nicht starten konnte. In diesem Fall musste der Vorgang teilweise mehrmals bis zum bitteren Ende wiederholt werden. Wenn das Farbband völlig außer Betrieb war und die Maschine in keiner Weise "zum Leben erwachen" wollte, war es notwendig, das Boot-Programm vorübergehend manuell über die Schalter auf der Frontplatte einzugeben. Hier ging es vor allem darum, nicht zu hetzen und keine Fehler zu machen.

Der Boot-Prozess ist auf modernen Computern weitgehend automatisiert, aber das bedeutet nicht, dass er es nicht verdient, eingeführt zu werden.

Grundlegende Definitionen und Phasen des Ladens des Betriebssystems

Einschalten des Computers, POST, BootMonitor

Die Anfangsphase des Ladens des Betriebssystems nach dem Einschalten des Computers beginnt im BIOS (Basic Input / Output System). In den BIOS-Einstellungen geben wir das Boot-Gerät oder eine Reihe von Boot-Geräten in der Reihenfolge ihrer Priorität an. Verschiedene Boot-Optionen und deren Kombinationen sind möglich: von Festplatte, CD/DVD – Disk, USB – Flash und andere.

Unmittelbar nach dem Bestehen des POST (Power-On Self-Test - Selbsttest nach dem Einschalten) beginnt das Computer-BIOS, die angegebenen Bootgeräte nacheinander zu durchlaufen, bis es einen geeigneten speziellen Eintrag auf einem von ihnen findet, der enthält Informationen zu weiteren Aktionen.

Bootloader der Stufe 1. Master Boot Record

Master Boot Record – Der Master Boot Record befindet sich in den ersten physischen Sektoren der Boot-Speichergeräte. Es enthält eine Partitionstabelle und ausführbaren Code.

Die Hauptaufgabe des im MBR gespeicherten Programms besteht darin, die aktive Systempartition der Festplatte zu finden und die Kontrolle auf ihren Bootsektor zu übertragen. Daher kann diese Phase als vorbereitend bezeichnet werden, da das Betriebssystem selbst noch nicht direkt geladen wird.

Es ist üblich, eine Systempartition als Plattenpartition (Speichergerät) zu bezeichnen, auf der sich die Betriebssystemdateien befinden, die für den Bootvorgang des Betriebssystems verantwortlich sind (das Betriebssystem selbst kann sich in einer anderen Partition befinden). Prinzipiell kann es mehrere Systempartitionen geben, daher ist eine davon als aktiv markiert. Dies ist, was das vom MBR geladene Programm sucht.

Bootloader der Stufe 2. Bootsektor partitionieren

Der nächste Schritt beim Booten des Computers besteht darin, die Kontrolle an den ausführbaren Code zu übertragen, der in PBS (Partition Boot Sector - der Bootsektor der aktiven Partition) geschrieben ist. PBS befindet sich im ersten Sektor(en) der entsprechenden Festplattenpartition. Der PBS-Code enthält den Namen der Betriebssystem-Loader-Datei, an die in dieser Phase die Steuerung übergeben wird.

Die Anfangsphase des Ladens des Betriebssystems. Betriebssystem-Boot-Manager

Der ursprüngliche Linux-Loader war LILO (Linux Loader). Aufgrund seiner Mängel, von denen der wichtigste die Unfähigkeit war, die in Linux verwendeten Dateisysteme zu verstehen, wurde später der Bootloader GRUB (GRand Unified Bootloader) verwendet, in dem die Mängel von LILO korrigiert wurden.

Bei Windows-Versionen vor Vista, z. B. Windows XP, wird Ntldr geladen. Es liest wiederum Informationen aus der Textdatei Boot.ini, die Informationen zu den installierten Betriebssystemen enthält.

Laden des Betriebssystemkernels

Der letzte Schritt beim Laden des Betriebssystems besteht darin, den Betriebssystemkernel zu laden und ihm die Kontrolle zu übertragen.

Vor einigen Jahren gab es in meiner Praxis einen so komischen Vorfall.

Ich wurde gebeten, einem Mann zu helfen, einen Computer für sein Zuhause zu kaufen und aufzuräumen. Der damalige Kamerad war gerade im Ruhestand, davor arbeitete er als Chef und sah den Computer meist von weitem auf dem Schreibtisch seiner Sekretärin. Nach seiner Pensionierung hatte er Zeit und Lust, den Computer zu beherrschen. Nun, meiner Meinung nach wunderbar. Wir wählten für ihn einen preiswerten, aber soliden Computer mit einem für damalige Verhältnisse guten Monitor aus. Ich habe einige Programme installiert und konfiguriert und gezeigt, wie man sie benutzt. Der Herr bekam ein Buch aus der Serie „ Etwas für Dummies dabei„Und wir haben uns total glücklich voneinander getrennt.

Ungefähr eine Woche später rief mich meine Station am Telefon an und sagte fast weinend, dass alles weg sei und der Computer nicht mehr funktionierte. Glücklicherweise sperrte er sich nicht ein und erzählte ehrlich, wie es war. Und es war so. Genosse kletterte, um den Inhalt seines Computers zu untersuchen und fand in der Wurzel des Laufwerks C:\ mehrere verdächtige und seiner Meinung nach "unnötige" Dateien. Er beschloss, Speicherplatz freizugeben und löschte diese Dateien einfach. Ich denke, jeder hat schon vermutet, dass es sich um boot.ini, ntldr, ntdetect usw. handelt. Es war nicht schwer, die Situation zu korrigieren, außer dass ich noch einmal zu ihm gehen musste.

Um Probleme beim Booten von Windows XP zu bekommen, war es übrigens möglich, nichts zu löschen, sondern zum Beispiel die boot.ini leicht zu "zwicken".

Anscheinend hat Microsoft irgendwie von diesem Fall erfahren und in der nächsten Version seines Betriebssystems beschlossen, die Bootloader-Dateien besser zu verbergen.

Funktionen zum Laden von Betriebssystemen Windows Vista / 7/8

In Windows Vista oder Windows 7/8 heißt der Bootmanager Bootmgr. Es liest die Liste der installierten Betriebssysteme nicht aus einer einfachen Textdatei, der boot.ini, sondern aus dem Systemspeicher BCD (Boot Configuration Data), auf den über ein spezielles Dienstprogramm bcdedit.exe zugegriffen wird.

Aber das ist nicht alles. Öffnen wir "Computerverwaltung" -> "Datenträgerverwaltung">

Bei der Standardinstallation von Windows Vista / 7/8 wird am Anfang der Diskette ein zusätzlicher Abschnitt "System Reserved" erstellt. Es wird kein Laufwerksbuchstabe zugewiesen. Wenn Sie also keine zusätzlichen Schritte unternehmen, werden die Partition selbst und ihr Inhalt für den Benutzer ausgeblendet. Dieser Hauptbereich hat den Status "System" und "Aktiv" und kann daher auch nicht gelöscht werden.

In Windows 7 beträgt die Größe einer solchen Partition 100 MB, von denen etwa 30 MB verwendet werden, in Windows 8 bereits 350 MB, davon sind 105 MB belegt. Dieser Unterschied erklärt sich dadurch, dass in Windows 8 der Ordner "Recovery" in diesen Abschnitt verschoben wurde.

Schauen wir uns den Inhalt des Abschnitts "Vom System reserviert" an. Weisen Sie ihm dazu einen Laufwerksbuchstaben zu, z. B. „W“ in „Datenträgerverwaltung“. Öffnen Sie zusätzlich die "Systemsteuerung" -> "Ordneroptionen" und deaktivieren Sie auf der Registerkarte "Ansicht" das Kontrollkästchen "Geschützte Systemdateien ausblenden" und aktivieren Sie das Kontrollkästchen "Ausgeblendete Dateien, Ordner und Laufwerke anzeigen".

Wenn der Dateimanager FAR Manager im System installiert ist, können Sie ihn verwenden, um ihn anzuzeigen und die Sichtbarkeit versteckter Dateien nicht zu konfigurieren.

So sieht der Inhalt des Abschnitts "System reserviert" in Windows 8> . aus

Wie erwartet sehen wir den Bootmgr-Bootloader im Stammverzeichnis der Partition.

Und so sieht ein Teil des Inhalts des Ordners "Boot" aus>

In dem Ordner finden wir die Datenbank des BCD-Boot-Konfigurationsdatenspeichers und die dazugehörigen Ordner mit Sprach- und Schriftartdateien.

Der Vollständigkeit halber bleibt noch zu sagen, welche Partition als bootfähig bezeichnet wird. Die Antwort ist bereits im Bild mit den Volumes von Windows 7 gezeigt. Offensichtlich ist dies die Partition, auf der sich alle Hauptdateien des Betriebssystems befinden.

Nun, sich die Namen der Festplattenpartitionen zu merken ist nach dem Prinzip "rundum" sehr einfach - es gibt kein System (Betrieb) auf dem System, aber es gibt einen Bootloader der dritten Ebene, der Bootloader nicht haben einen Bootloader, aber das System selbst befindet sich. Dieses "Gedächtnis" funktioniert natürlich nur, wenn es mehrere Abschnitte gibt. Wenn nur eine Partition vorhanden ist, kann sie sofort system-, aktiv und bootfähig sein.

Die Hauptaufgabe des 3rd Level Bootloaders, der je nach Betriebssystem Bootmgr, Ntldr oder GRUB ist, besteht darin, von der Bootdiskette zu lesen und den Betriebssystemkernel zu laden. Darüber hinaus ermöglicht Ihnen der Bootloader der 3.

Der klassische Fehler von Microsoft ist die Installation von Windows XP nach Windows Vista / 7/8. Das Installationsprogramm von Windows XP markiert seine Partition als aktiv, woraufhin der MBR beim Booten die Kontrolle an den PBS dieser Partition übergibt, und dieser wiederum übergibt die Kontrolle an Ntldr. Der Bootloader von Windows XP weiß nichts über spätere Versionen von Windows-Betriebssystemen und es wird unmöglich, diese zu laden. Es ist einfach zu behandeln, aber diese Situation kann für einen unerfahrenen Benutzer verwirrend sein.

Dem ist praktisch nichts hinzuzufügen und Sie können direkt in die Bearbeitung des Bootmenüs übergehen. Lass uns beginnen mit.

10 Kommentare

    • Vielen Dank für dein Feedback. In naher Zukunft plane ich, die Beschreibung von Methoden zur Behebung von Bootfehlern mit konkreten Beispielen fortzusetzen. Aus Erfahrung weiß ich, dass beim Lesen alles klar zu sein scheint, aber wenn es in der Praxis darauf ankommt, beginnen Schwierigkeiten.

  1. Bitte sagen Sie mir genau, wie ich behandeln soll?:
    „Der Bootloader von Windows XP weiß nichts über neuere Versionen von Windows-Betriebssystemen und es wird unmöglich, sie zu laden. Es ist recht einfach zu behandeln, aber eine solche Situation kann für einen unerfahrenen Benutzer verwirrend sein."

    Ich habe XP nach Vista auf einem Laptop installiert - als Ergebnis startet das System, bis XP lädt und alles wieder neu gestartet wird, und wenn Sie (während das Betriebssystem geladen wird) das Netzteil trennen, dann bootet alles normal. Beim Booten im abgesicherten Modus muss der Adapter nicht getrennt werden. Was kann es schlagen und wie geht man damit um?

    BITTE REGISTRIEREN. DANKE IM VORAUS. ENTSCHULDIGUNG FÜR LOMANNY RUSSISCH.

    • Über den Einfluss des Netzteils auf das Laden von XP werde ich nichts sagen - es gibt keine konkreten Vorstellungen. In Bezug auf die Vista-Boot-Wiederherstellung, wenn dies relevant ist, befindet sich am Ende des Beitrags ein Link zum Microsoft-Support-Artikel (919529), der sich direkt diesem Thema widmet. Zur Wiederherstellung benötigen Sie eine Vista-Installations-CD. Auf der Befehlszeile mit Administratorrechten müssen Sie Folgendes ausführen:
      X: \ boot \ bootsect.exe / nt60 all
      wobei X: der Buchstabe des optischen Laufwerks ist.
      Die XP-Last muss jedoch manuell mit einem Editor hinzugefügt werden. Der Befehlssatz sieht wie folgt aus:
      Bcdedit / create (ntldr) / d "Microsoft Windows XP"
      Wenn dieser Befehl fehlschlägt, dann:
      Bcdedit / set (ntldr) Beschreibung "Microsoft Windows XP"
      Weiter:
      bcdedit / set (ntldr) Gerätepartition = X:
      X: - Laufwerksbuchstabe der Partition, auf der sich die XP-Bootloader-Dateien befinden, und der Pfad dazu:
      bcdedit / set (ntldr) Pfad \ ntldr
      bcdedit / displayorder (ntldr) / addlast

    Ich hatte einen Laptop, beim Laden und Neustarten war Windows sofort eingeschaltet, aber jetzt habe ich einen stationären Computer gekauft und der Download erfolgt in drei Stufen. Wie Sie diese Phasen loswerden. Sorry für die ungebildete Bezeichnung von Fachbegriffen.

    • Yuri! Ich befürchte, dass die von Ihnen gemachten Angaben eindeutig nicht für eine Empfehlung ausreichen. Von welchen Windows und welchen Stadien sprechen wir? Bitte klären Sie.

    Gute Gesundheit, Alexander.
    Wie man eine solche Situation versteht, verhindert und wenn es wieder passiert, wie man richtig aus einer solchen Situation herauskommt.
    Notizbuch. Installiert Windows-7. Nach dem Einschalten und der Eingabe des Passworts wurde "fehlendes Betriebssystem" ausgegeben - dh "es ist kein Betriebssystem vorhanden". Aus- und wieder einschalten ergab das gleiche Ergebnis. Der Start war nur durch Herausnehmen und nach einiger Zeit wieder Einsetzen des Akkus möglich.
    Am Vorabend kam es jedoch zu einem fehlerhaften Shutdown: Das Flash-Laufwerk und das Modem waren vorher nicht getrennt. Zuvor kam es auch zu einer solchen Vergesslichkeit, aber es gab keinen solchen Effekt.
    Für die Antwort zur alten "Teekanne" wäre ich dankbar (ich bin zehn Jahre älter als der Herr in einem amüsanten Fall, aber die KOMP habe ich ungefähr im gleichen Alter kennengelernt).

    • Wladimir, hallo. Schöne Feiertage und alles Gute.
      In dieser Situation haben Sie alles richtig gemacht - Sie haben den "steckengebliebenen" Fehler beseitigt.
      Wie in dem Lied gesungen wird: „Ein Stück Regen ist noch kein Regen. Eine Schneeflocke ist noch nicht Schnee“. Es ist möglich, dass so etwas nicht mehr passiert. Wenn nun beim Start regelmäßig Probleme auftreten, müssen Sie dies herausfinden. Im Allgemeinen sind Windows 7 und höher ziemlich resistent gegen abnormales Herunterfahren.
      Was zu tun ist? Sie haben Ihre Frage selbst beantwortet - versuchen Sie, die Geräte regelmäßig auszuschalten. Und wenn es möglich ist, ein externes Laufwerk über USB anzuschließen, dann würde ich auf jeden Fall (;eigentlich mache ich das recht regelmäßig) ein Backup des Systems machen, zB mittels.

    Guten Tag. Ich habe ein solches Problem, einen stationären Computer, zwei Festplatten, Windows 10. Nach dem BIOS-Splash-Screen erscheint ein verzerrtes Fenster, der Computer startet nicht, nach einem erzwungenen Neustart startet alles und alles funktioniert. Das heißt, es liegt ein Fehler zwischen dem BIOS und der Auswahl der Festplatten vor.

Das Betriebssystem wird im externen Speicher abgelegt, normalerweise auf einer Festplatte, seltener auf einer Diskette. Für den normalen Betrieb des Computers ist es erforderlich, dass sich die Hauptmodule des Betriebssystems im RAM befinden. Daher wird nach dem Einschalten des Computers ein automatisches Neuschreiben (Laden) des Betriebssystems von der Festplatte in den RAM organisiert. Die wichtigsten Aspekte dieses Downloads sind im Flussdiagramm in Abb. 9.13.

Reis. 9.13. Algorithmus zum Laden des Betriebssystems von der Festplatte in den Arbeitsspeicher

Nach dem Einschalten des Computers beobachten Sie die Änderung der Zahlen auf dem Bildschirm. Diese Zahlen repräsentieren den Prozess des Testens des RAM im BIOS-Programm. Wird eine Fehlfunktion in den Zellen des RAM erkannt, wird eine Meldung angezeigt.

Nach erfolgreichem Abschluss des Gerätetests wird auf das Diskettenlaufwerk A zugegriffen und die Anzeigelampe daneben leuchtet. Wenn Sie das Betriebssystem von einer Diskette booten, legen Sie vor oder während des Tests die Systemdiskette in Laufwerk A ein. Andernfalls, wenn sich kein Betriebssystem auf Diskette A befindet, wird auf die Festplatte zugegriffen, wie durch die nächste Anzeigelampe angezeigt dazu.

Das Einlesen des 0-ten Sektors der 0-ten Seite der Platte in den RAM, in dem sich der Bootloader befindet (BOOT RECORD), beginnt. Die Steuerung wird an den Loader übertragen, der das Vorhandensein des Erweiterungsmoduls IO.SYS und des Basismoduls MSDOS.SYS auf der Systemfestplatte überprüft. Wenn sie sich an ihrem vorgesehenen Platz befinden (cm. Reis. 9.10), dann lädt es sie in den RAM, andernfalls wird eine Meldung über ihre Abwesenheit angezeigt. In diesem Fall wird ein Neustart empfohlen. Das Neustartsignal überträgt die Steuerung an das persistente BIOS-Modul, das den Bootblock von der Festplatte in den RAM umschreibt und so weiter.

Erinnern! Zum Neustart des Betriebssystems im Speicher gleichzeitig die Tasten drücken .

Nach erfolgreichem Laden des IO.SYS-Expanders und des MSDOS.SYS-Basismoduls in den Arbeitsspeicher wird der Befehlsprozessor COMMAND.COM geladen und die Konfigurationsdatei CONFIG.SYS abgearbeitet, die die Befehle zum Anbinden der notwendigen Treiber enthält. Diese Datei ist möglicherweise nicht vorhanden, wenn Sie mit der Basisversion des Betriebssystems zufrieden sind.

Anschließend wird die Batch-Datei AUTOEXEC.BAT verarbeitet. Mit Hilfe dieser Datei können Sie die Parameter der Betriebsumgebung konfigurieren. Erstellen Sie beispielsweise eine virtuelle Festplatte, stellen Sie eine Änderung der Druckmodi bereit, laden Sie Hilfsprogramme usw.

Beachtung! Dateien mit der Dateiendung .BAT spielen beim Arbeiten in der Systemumgebung eine besondere Rolle. Sie enthalten eine Sammlung von Betriebssystembefehlen oder ausführbaren Dateinamen. Nach dem Starten der Datei mit der Endung .BAT werden alle darin aufgezeichneten Befehle automatisch nacheinander ausgeführt.

Die Datei mit dem Standardnamen AUTOEXEC.BAT unterscheidet sich von anderen Dateien vom Typ .BAT dadurch, dass die Ausführung der darin platzierten Befehle sofort nach dem Laden des Betriebssystems automatisch beginnt.

Wenn die Datei AUTOEXEC.BAT fehlt, werden Sie aufgefordert, Datum und Uhrzeit einzugeben:

wenn Sie die Eingabetaste drücken, werden die sogenannten Systemparameter, die vom Computer-Timer bestimmt werden, als aktuelles Datum und Uhrzeit übernommen;

Wenn Sie das Systemdatum und die Systemzeit zurücksetzen möchten, geben Sie als Antwort auf die Aufforderung die Werte in eines der bereitgestellten Formulare ein, zum Beispiel:

25.10.1997 (Monat Tag Jahr)

7:30: 10,00 RUB (Stunden:Minuten:Sekunden)

Nach Beendigung der Datei AUTOEXEC.BAT und auch wenn diese Datei nicht gefunden wird, erscheint beispielsweise die Eingabeaufforderung der Systemfestplatte auf dem Bildschirm C: \>. Dies zeigt an, dass der Bootvorgang normal abgeschlossen wurde und Sie mit der Eingabe des Namens des Anwendungsprogramms oder des Betriebssystembefehls beginnen können.

Notiz. Die Dateien CONFIG.SYS und AUTOEXEC.BAT fehlen möglicherweise. In diesem Fall werden die Einstellungen der Betriebsumgebung standardmäßig festgelegt.

Erinnern! Das Betriebssystem muss dauerhaft auf der Festplatte gespeichert sein.

Beim Einschalten des Computers müssen alle Diskettenlaufwerke geöffnet sein.

Legen Sie die Diskette mit den Anwendungsprogrammen in das Diskettenlaufwerk ein, nachdem der Download abgeschlossen ist.

Ein Bootloader ist ein Systemprogramm, das Bootstrapping durchführt. Viele Bootloader bieten auch Verschieben und Verknüpfen. Einige Systeme trennen die Verknüpfungsfunktion von den Bewegungs- und Ladefunktionen. Das Linken erfolgt durch ein spezielles Linking-Programm (oder Link-Editor), das Verschieben und Laden erfolgt durch einen Loader.

Verlinken ist das Verknüpfen von zwei oder mehr getrennten übersetzten Programmen.

Relocation ist eine Modifikation eines Objektprogramms, damit es von einer anderen Adresse geladen werden kann.

Bootloader-Funktionen:

  1. Verteilung von OP;
  2. Verschieben des Programms;
  3. Verknüpfungsmodule;

EP-Verteilung

Verschieben eines Programms

Wenn innerhalb der Module Adresskonstanten vorhanden sind, die vom Anfang des Moduls an berechnet werden, werden die Adressen relativ zur Basis korrigiert.

Verknüpfen von Modulen

Ladertypen

Compile-Run-Loader

Eine der möglichen Arten, die Ladefunktion auszuführen, kann eine solche Organisation der Arbeit des Assemblers sein, bei der der Assembler, der in einem Teil des Speichers arbeitet, Maschinenbefehle und Daten beim Assemblieren direkt in die ihnen zugewiesenen Speicherzellen ablegt. Nachdem die Kompilierung abgeschlossen ist, übergibt der Assembler die Kontrolle an den Einstiegspunkt des resultierenden Programms. Dies ist eine sehr einfache Lösung, die zusätzliche Verfahren überflüssig macht. Dies wird Kompilieren-Ausführen genannt, und der Lader besteht aus einem einzigen Befehl, der die Kontrolle an das zusammengestellte Programm übergibt.

Absolute Loader sind einfach zu implementieren, verfügen aber über eine Reihe von Funktionen:

  • die Aufgabe des Verteilens des OP wird vom Programmierer ausgeführt (unter Verwendung der Anweisung zum Setzen des Anfangswerts des OP);
  • die Aufgabe des Verschiebens des Programms wird vom Compiler ausgeführt;
  • Verknüpfen von Modulen - vom Programmierer entschieden (Aufruf 600);
  • Programme in das OP laden und zur Ausführung starten.

Vorteile:

  • kleinere Bootloader-Größe (in Bezug auf die Speichergröße);
  • Trennung der Kompilierungs- und Ladephase, wodurch die Zeit für die Verarbeitung von Modulen reduziert wird;
  • die Fähigkeit, mehrere Programmiersprachen zu verwenden, weil die Strukturen der generierten Objektmodule sind identisch.

Nachteile:

Ein großer Arbeitsaufwand fällt auf den Programmierer. Beim Modifizieren von Modulen ist es notwendig, Änderungen der Startadressen ständig zu überwachen, da ihre Länge ändert sich.

Absolute Loader-Objektdateistruktur

Der Informationssatz besteht aus:

  1. Unterschrift;
  2. die absolute Adresse des OP, an das Informationen übertragen werden können;
  3. die Anzahl der Informationsbytes in der Nachricht;
  4. Informationsbytes;
  5. Prüfsummen;
  6. Nummerierung.

Das Kontrollprotokoll besteht aus:

  1. Unterschrift;
  2. Adresse des Einstiegspunkts.

So funktioniert ein einfacher Absolutlader:

  1. Prüfen Sie, ob genügend Speicherplatz für dieses Programm vorhanden ist (Anzeige des ersten Datensatzes).
  2. Sequentielles Lesen des Programmrumpfs und Platzierung an der angegebenen Adresse.
  3. Übergabe der Steuerung an die Adresse zur Programmausführung.

Benutzerdefinierter Bootloader

Um bei einer Änderung eines Unterprogramms nicht alle Unterprogramme neu assemblieren zu müssen und den Programmierer von den Aufgaben der Speicherzuweisung und Kommunikation von Unterprogrammen zu befreien, wurden sogenannte Loader entwickelt. Dieser Loader ermöglicht das Vorhandensein mehrerer Programmsegmente und eines Datensegments (gemeinsames Segment) im Programm. Der Assembler übersetzt jedes Segment separat und versorgt den Lader mit Text und Informationen zu Bewegungen und Querverweisen zwischen den Segmenten.

Die Ausgabe des Assemblers mit einem solchen Schema ist ein Objektprogramm und Informationen über alle anderen Programme, die in diesem Programm aufgerufen werden. Darüber hinaus gibt es Informationen über die Orte, die beim Laden geändert werden sollen (Informationen zur Bewegung), d.h. über Zellen, deren Inhalt von der Position des Programms im Speicher abhängt.

Für jedes Quellprogramm erzeugt der Assembler Text (Übersetzungsergebnis) als Ausgabeinformation, dem ein Verzweigungsvektor vorangestellt ist, der die Adressen der Namen der Unterprogramme enthält, auf die im Quellprogramm zugegriffen wird. Wenn beispielsweise die SQRT-Routine die erste aufgerufene Routine ist, enthält die erste Zelle im Verzweigungsvektor den symbolischen Namen SQRT. Sätze, die einen Aufruf der SQRT-Subroutine enthalten, werden in einen Verzweigungsbefehl übersetzt, der die Adresse des der SQRT zugeordneten Verzweigungsvektorelements angibt. Der Assembler übergibt auch zusätzliche Informationen wie die Gesamtlänge des Programms und die Länge des Verzweigungsvektors. Nach dem Laden des Programmtexts und des Verzweigungsvektors in den Speicher lädt der Lader jede im Vektor angegebene Unterroutine. Dann setzt er in jedem Element des Vektors einen Befehl, um zum entsprechenden Unterprogramm zu gehen. Somit führt ein Aufruf des SQRT-Unterprogramms zur Ausführung des Sprungbefehls zur ersten Zelle des Sprungvektors, die den Sprungbefehl zum aufgerufenen Unterprogramm enthält.

Ein solches Ladeschema mit zweistufiger Steuerübertragung wird häufig bei Computern mit festem Befehlsformat und direkter Adressierung verwendet.

Dieser Lader hat mehrere Nachteile:

  • der Übergangsvektor ist nicht ganz bequem zum Laden und Speichern externer Daten (die sich in einem anderen Programmsegment befinden);
  • der Verzweigungsvektor erhöht die Länge des Objektprogramms;
  • der Loader arbeitet mit Programmsegmenten, ermöglicht jedoch keinen Zugriff auf Datensegmente, die von mehreren Routinen gemeinsam genutzt werden können.

Bootloader direkt verlinken

Der Direct Linking Loader bietet die umfassendste Möglichkeit zum Verschieben von Programmen und Daten im Speicher und ist derzeit am weitesten verbreitet. Ein solcher Lader hat den Vorteil, dass er die Verwendung einer großen Anzahl sowohl von Programmsegmenten als auch von Datensegmenten ermöglicht und dem Programmierer die volle Freiheit gibt, auf Daten zuzugreifen, die sich in anderen Segmenten befinden, während er eine separate Übersetzung ermöglicht.

Der Assembler (Übersetzer) muss mit jedem Programm- und Datensegment folgende Informationen an den Loader übergeben:

  1. Segmentlänge;
  2. eine Liste aller Segmentsymbole, auf die von anderen Segmenten zugegriffen werden kann, und ihrer relativen Adressen;
  3. eine Liste aller in diesem Segment nicht definierten Zeichen, auf die in diesem Segment zugegriffen wird;
  4. Informationen über die Position von Adresskonstanten im Segment und eine Beschreibung, wie ihre Werte geändert werden sollten;
  5. als Ergebnis der Übersetzung erhaltene Maschinencodes und zugewiesene relative Adressen.

Einer der Nachteile eines Direct Linking Loaders in seiner einfachsten Form ist die Notwendigkeit, die Funktionen der Speicherzuweisung, Bewegung, Linking und Laden aller notwendigen Subroutinen jedes Mal, wenn das Programm ausgeführt wird, erneut auszuführen. Diese Probleme können gelöst werden, indem das Laden mit zwei separaten Programmen durchgeführt wird: einem Kombinierer und einem Modullader. Die Ausgabe des Kombinierers ist ein Datensatz in einem Format, das das Laden des Programms in den Speicher ermöglicht, und wird als Lademodul bezeichnet. Es gibt verschiedene Arten von Kombinierern. Einer davon ist der sogenannte Linker, der die zum Verschieben eines Moduls benötigten Informationen im Speicher ablegt, damit das Modul als Ganzes dann konfiguriert und an eine beliebige Stelle im Speicher geladen werden kann. In diesem Fall muss der Modullader die Funktionen der Speicherzuweisung und -bewegung ausführen, bleibt jedoch frei von der Lösung des komplexen Problems der Verknüpfung von Objektmodulen und Unterprogrammen.

Dynamischer Lader

In jedem der betrachteten Schemata wurde davon ausgegangen, dass alle notwendigen Unterprogramme gleichzeitig in den Speicher geladen werden. Wenn der Gesamtspeicherbedarf für die Routinen geringer ist als der verfügbare Speicher auf dem Gerät, wird es schwierig. Diese Schwierigkeiten werden durch Anwenden eines dynamischen Ladeschemas mit einem sequentiellen Kombinierer und Lader überwunden. Dieses Schema basiert auf der Tatsache, dass in der Regel unterschiedliche Unterprogramme zu unterschiedlichen Zeiten benötigt werden und sich gegenseitig ausschließen können. Indem Sie explizit definieren, welches Unterprogramm Aufrufe anderer Unterprogramme enthält, können Sie eine sogenannte Überlappungsstruktur (Overlay-Struktur) definieren, die sich gegenseitig ausschließende Unterprogramme spezifiziert.

Ein Lademodul wird gebildet. Es ist verschiebbar, es muss eine Umzugstabelle enthalten. Außerdem muss die Struktur des Lademoduls Informationen über die Links enthalten. Der Lader muss einen solchen Teil wie den Overlay-Manager enthalten, er wählt aus den Lademodulen genau die aus, die am Anfang stehen, organisiert im Laufe der Arbeit das Laden der erforderlichen Module in das OP.

Dynamische Verknüpfung

Es gibt Fälle, in denen zur effizienten Nutzung des Maschinenspeichers die dynamische Verknüpfung von Unterprogrammen bereits während der Ausführung des Programms durchgeführt wird. Das heißt, Unterprogramme werden nur beim Aufruf in den Speicher geladen. Das kann von Vorteil sein, denn Unter bestimmten Bedingungen im Programm werden einige Unterprogramme möglicherweise überhaupt nicht benötigt. Betrachten wir ein Beispiel:

wenn (Bedingung 1)
Unterprogrammaufruf 1
wenn (Bedingung 2)
Unterprogrammaufruf 2
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
wenn (Bedingung m)
Unterprogrammaufruf m

Viele der Verzweigungen werden übersprungen und Sie müssen zB Unterprogramm 2 nicht in das OP laden, wenn Bedingung 2 nicht erfüllt ist.In diesem Fall muss der Lader gleichzeitig mit dem Programm arbeiten und die Funktionen des Bindens und Unterprogramme laden.

Senden Sie Ihre gute Arbeit in die Wissensdatenbank ist einfach. Verwenden Sie das untenstehende Formular

Studierende, Doktoranden, Nachwuchswissenschaftler, die die Wissensbasis in Studium und Beruf nutzen, werden Ihnen sehr dankbar sein.

Wolga-Universität benannt nach V. N. Tatishchev

Fakultät für Informatik und Telekommunikation

Fachbereich Informatik und Steuerungssysteme

KURSARBEIT

nach Disziplin: "Systemsoftware"

Thema: " Lader

Wird von einem Studenten gemacht. IS-303

Krasnoselzew V. NS.

Lehrer: Trubacheva S.I.

Toljatti

Einführung

1. Theoretischer Teil

2. Designteil

2.1 Problemstellung

2.2 Entwicklung eines Algorithmus zur Lösung des Problems

2.3 Beschreibung des Algorithmus zum Laden des Anwendungsprogramms

2.4 Beschreibung des Betriebssystem-Boot-Algorithmus

2.5 Beschreibung des Unix-Boot-Algorithmus mit dem LILO Bootloader

Abschluss

Verweise

Einführung

Die Relevanz meiner Studienarbeit liegt darin, dass die Entwicklung von Computern und deren Betriebssystemen parallel zur Entwicklung verschiedener Bootloader-Programme verlief. Bestimmte Betriebssysteme benötigen zum Booten unterschiedliche Bootloader. Zum Beispiel erfordert ein Mehrbenutzer-Unix-Betriebssystem einen LILO-Loader und verschiedene Dienstprogramme. Jedes Laden des Betriebssystems wirkt sich auf den Arbeitsspeicher aus, mit dem sowohl der Primary Loader als auch der Secondary Loader arbeiten. Beim Laden treten verschiedene Arten von Fehlern auf, die der Lader umgeht oder den Ladevorgang abschließt (zeigt eine Informationsmeldung an).

Ein Bootloader ist ein Programm, auf das mehr als ein Computer und mehr als ein Betriebssystem einfach nicht verzichten können.

1 . Theoretischer Teil

Bootvorgang des Microsoft-Betriebssystems

Welches Betriebssystem wir auch immer in Betracht ziehen, damit das Betriebssystem den Computer steuern kann, muss es in den RAM geladen werden. Daher werden wir betrachten, wie der Prozess des Ladens verschiedener Betriebssysteme abläuft. Da wir nur daran interessiert sind, von Festplatten zu booten, werden wir die Besonderheiten des Bootens von Diskette, CD-ROM und über das Netzwerk nicht berücksichtigen. Beginnen wir mit MS-DOS und MS Windows.

Wie Sie wissen, wird beim Einschalten des Computers zuerst das Programm POST (Power On Self Test) gestartet. Es ermittelt den verfügbaren Speicher, testet ihn, ermittelt das Vorhandensein anderer Komponenten (Tastatur, Festplatte usw.), initialisiert Adapterkarten. Der Bildschirm zeigt normalerweise Meldungen über die Speichergröße, über seinen Test, eine Liste der erkannten Geräte (Disketten und Festplatten, Prozessor, COM-Ports usw.) an.

Nach Abschluss des Tests ruft POST Int 19h auf, das versucht, das Startgerät zu finden. Die Suche erfolgt in der im Setup-BIOS festgelegten Reihenfolge und erfolgt durch Abfragen der Nullsektoren der entsprechenden Geräte. Wenn die Festplatte bootfähig ist, enthält ihr Nullsektor den Master Boot Record (MBR). Die letzten beiden Bytes des MBR sind eine "magische Zahl", die ein Zeichen dafür ist, dass dieser Sektor ein MBR ist und die Platte daher bootfähig ist. Neben der "magischen Zahl" enthält der MBR die bereits oben erwähnte Plattenpartitionstabelle und ein kleines Programm - den Primary Loader mit einem Volumen von nur 446 (0 * 1BE) Bytes.

Tabelle 2.1 zeigt die Struktur des während der Windows-Installation erstellten Master-Bootsektors.

Tabelle 2.1 Struktur des Master-Boot-Sektors

Interrupt 19h BIOS lädt den primären Bootloader in den Computerspeicher und übergibt die Kontrolle an dieses Programm. Aber ein so kleines Programm kann das Betriebssystem nicht laden; Alles, was es tun kann, ist ein leistungsfähigeres Programm in den Speicher zu laden – den sekundären Loader.

Dazu sucht es in der Partitionstabelle nach der aktiven Partition und liest den Secondary Loader in den Speicher ein, der sich ab dem ersten logischen Sektor der aktiven Partition befindet. Achten Sie auf das Wort „Anfang“. Der Punkt ist, dass der sekundäre Bootloader auf verschiedenen Systemen unterschiedliche Längen hat.

Der sekundäre Lader lädt die erste Programmebene, die zum Starten des Betriebssystems erforderlich ist. Bei MS - DOS lädt das Ladeprogramm um 700h IO.SYS, dann MSDOS.SYS und übergibt die Kontrolle an den SYSINIT-Abschnitt des IO.SYS-Moduls.

Wenn aus irgendeinem Grund keine aktive Partition auf der Festplatte gefunden wird, wird der Bootvorgang fortgesetzt, indem Interrupt 18h verarbeitet wird. Dieser Zweig wird selten vollständig verwendet, kann aber in einigen Situationen sehr nützlich sein. Beim Remote-Boot, wenn das Betriebssystem vom Server gebootet wird, wird dieser Interrupt vom POST-Programm an das ROM der Netzwerkkarte umgeleitet.

Probleme mit großen Laufwerken

In MS - DOS und den ersten Versionen von Windows wurde der Zugriff auf die Datenträger über das BIOS von Interrupt 13 (Int 13h) organisiert. In diesem Fall wurde die Adressierung von Sektoren auf der Platte anhand der Angabe der Nummern von Zylinder, Kopf und Sektor auf der Spur (C/H/S) verwendet. Etwas präziser:

1) AH - Auswahl des Betriebs;

2) СР - untere 8 Bit der Zylindernummer;

3) CL - Bits 7-6 entsprechen den höchstwertigen Bits der Zylindernummer, Bits 5-0 entsprechen der Sektornummer;

4) DH - Nummer des Lesekopfes;

5) DL - Plattennummer (80h oder 81h).

Es ist zu beachten, dass alle oben genannten Einschränkungen nur in der Phase des Betriebssystemstarts von Bedeutung sind, da Linux selbst und die neuesten Versionen von Windows beim Arbeiten mit Festplatten nicht mehr den BIOS-Interrupt 13 verwenden, sondern ihre eigenen Treiber für die Arbeit mit Festplatten verwenden. Bevor das System jedoch einen eigenen Treiber verwenden kann, muss es diesen zumindest laden. Daher ist jedes System beim Booten gezwungen, das BIOS zu verwenden. Dies führt zu Einschränkungen bei der Platzierung vieler Systeme über 8 GB, sie können von dort nicht booten, obwohl sie nach einem erfolgreichen Booten mit viel größeren Festplatten arbeiten können. Um zu verstehen, wie man diese Einschränkungen umgeht, benötigen wir einige Kenntnisse darüber, wie Linux bootet.

LILO-Bootloader von der Linux-Distribution

Bevor Sie mit der Installation des zweiten Betriebssystems fortfahren, müssen Sie eine Methode zum Organisieren der Auswahl des Betriebssystems in der Phase des Computerstarts auswählen. Downloader-Programme lösen dieses Problem. Es gibt mehrere Programme dieser Art. Da es sich um Linux handelt, ist als erstes das LILO-Programm zu erwähnen, das in jeder Linux-Distribution enthalten ist.

LILO besteht aus mehreren Programmen: dem Bootloader selbst, Programmen zur Installation und Konfiguration des Bootloaders und Servicedateien:

Das unter Linux laufende Programm /sbin/lilo wird verwendet, um alle beim Booten benötigten Informationen an die entsprechenden Stellen zu schreiben. Es muss jedes Mal neu gestartet werden, wenn eine Änderung am Kernel oder der LILO-Konfigurationsdatei vorgenommen wird;

Verschiedene Servicedateien, die LILO beim Booten benötigt. Diese Dateien befinden sich normalerweise im /boot-Verzeichnis. Die wichtigsten davon sind der Bootloader selbst und die Map-Datei (/boot/map), die den Speicherort des Kernels angibt. Eine weitere wichtige Datei ist die LILO-Konfigurationsdatei, die normalerweise /etc/lilo.conf ist;

Der Bootloader selbst ist der Teil von LILO, der zuerst über einen BIOS-Interrupt in den Speicher geladen wird und den Linux-Kernel oder den Bootsektor eines anderen Betriebssystems lädt. Auch der Lader besteht aus zwei Teilen. Der erste Teil schreibt in den Bootsektor und dient zum Laden des zweiten Teils, der viel größer ist. Beide Teile werden normalerweise auf der Festplatte in der Datei /boot/boot.b gespeichert.

Der LILO-Bootsektor kann während der Systeminstallation an den folgenden Orten platziert werden:

Bootsektor einer Diskette im Linux-Format (/dev/fd0, ...);

MBR der ersten Festplatte (/dev/had, /dev/sda, ...);

Bootsektor der primären Partition des Linux-Dateisystems auf der ersten Festplatte (/dev/hda1, /dev/hda2, ...);

Der Bootsektor der logischen Partition in der erweiterten Partition der ersten Festplatte (/dev/hda5, ...). Es stimmt, die meisten Programme wie fdisk gehen nicht davon aus, dass es möglich ist, von einer erweiterten Partition zu booten und weigern sich, diese als aktiv zu deklarieren. Daher enthält LILO ein spezielles Programm (Aktivieren), um diese Einschränkung zu umgehen. Aber das Programm fdisk aus der Linux-Distribution unterstützt die Möglichkeit, eine erweiterte Partition zu aktivieren. Dazu muss entweder die Option -b oder die Variable BOOT verwendet werden.

Der LILO-Bootsektor kann nicht an folgenden Orten platziert werden:

Bootsektor einer Diskette oder primären Partition, formatiert in anderen Dateisystemen;

In einer Linux-Swap-Partition;

Abgesehen davon, dass LILO beim Booten auch die folgenden Dateien benötigt:

- /boot/map (wird erstellt, wenn /sbin/lilo gestartet wird);

Alle bootfähigen Kernel-Versionen (wenn Sie beim Booten eine Kernel-Version auswählen);

Bootsektoren anderer Betriebssysteme, die über LILO geladen werden;

Beim Laden ausgegebene Nachrichten (falls vorhanden)

Wenn LILO hochfährt, zeigt es das Wort "LILO" auf dem Display an. In diesem Fall zeigt die Ausgabe jedes Buchstabens den Abschluss einer bestimmten Aktion oder Phase des LILO-Boots an. Wenn der Download fehlschlägt, können Sie anhand der Anzahl der angezeigten Buchstaben die Ursache des Problems beurteilen.

Es wird nichts ausgegeben - kein Teil von LILO wurde geladen. Entweder wurde LILO nicht installiert oder die Partition, auf der es sich befindet, ist nicht aktiv

L [Fehlercode] - Der primäre Lader wurde geladen und gestartet (die Steuerung wurde an ihn übertragen), aber der sekundäre Lader konnte nicht geladen werden. Der zweistellige Fehlercode gibt die konkrete Ursache des Problems an. Dies ist normalerweise auf Medienfehler oder eine falsch eingestellte Festplattengeometrie zurückzuführen. Sofern LILO an dieser Stelle nicht mit einer endlosen Reihe von Fehlercodes aufgehört hat, ist das Problem normalerweise einfach zu beheben.

LI - Der primäre Loader konnte den sekundären Loader laden, konnte ihn jedoch nicht zur Ausführung starten. Dies kann durch einen Fehler beim Festlegen der Festplattengeometrie verursacht werden oder durch die Tatsache, dass die Datei /boot/boot.b verschoben wurde, ohne /sbin/lilo neu zu starten.

LIL - Der sekundäre Loader wurde gestartet, konnte die Deskriptortabelle jedoch nicht aus der Map-Datei starten. Dies ist in der Regel auf einen Defekt an der Scheibe oder eine falsche Geometrie der Scheibe zurückzuführen.

KLEINE? - der sekundäre Bootloader wurde an der falschen Adresse geladen. Wird normalerweise durch einen Fehler beim Festlegen der Festplattengeometrie oder durch Verschieben von /boot/boot.b ohne Neustart von /sbin/lilo verursacht.

LIL- - Deskriptortabelle zerstört. Wird normalerweise durch einen Fehler beim Festlegen der Festplattengeometrie oder durch Verschieben von /boot/boot.b ohne Neustart von /sbin/lilo verursacht.

LILO - Alle LILO-Teile wurden erfolgreich geladen.

Init-Prozess und / etc / inittab-Datei

Wie Sie wissen, wird das BIOS nach dem Einschalten des Computers und dem Abschluss des Hardwaretests aus dem ersten Sektor der Bootdiskette gelesen, bei dem das Programm der Bootloader ist. Dieses Programm startet den Haupt-Bootloader (wie LILO), der wiederum den Systemkernel in den Speicher lädt, der normalerweise in der Datei vmlinuz-x.y.z-a im Verzeichnis /boot gespeichert ist.

Sobald er bootet, mountet der Kernel das Root-Dateisystem und startet den Init-Prozess. Der init-Prozess ist das Programm, das dafür verantwortlich ist, den Boot-Prozess fortzusetzen und das System von seinem Anfangszustand nach dem Booten des Kernels in einen Standardzustand zu bringen, um Anfragen von vielen Benutzern zu bearbeiten.

Die genaue Liste dieser Operationen hängt vom sogenannten Runlevel ab. Der Runlevel definiert die Liste der vom Init-Prozess ausgeführten Aktionen und den Zustand des Systems nach dem Booten, d.h. Konfiguration laufender Prozesse. Der Runlevel wird durch ein einzelnes Zeichen identifiziert. Es gibt 8 Haupt-Runlevel im Linux-Betriebssystem:

1) Stoppen Sie das System;

2) Einzelbenutzermodus (für spezielle Verwaltungsfälle);

3) Mehrbenutzermodus ohne NFS (wie 3, wenn der Computer nicht mit dem Netzwerk arbeitet);

4) Voller Multiplayer-Modus;

5) Die Verwendung ist nicht geregelt;

6) Wird normalerweise verwendet, um das System im grafischen Modus zu starten;

S) (oder s) - ungefähr dasselbe wie der Einzelbenutzermodus, aber S und s werden hauptsächlich in Skripten verwendet.

Zunächst liest der init-Prozess nach dem Start seine /etc/inittab-Konfigurationsdatei. Diese Datei besteht aus separaten Zeilen. Wenn die Zeile mit einem #-Zeichen beginnt oder leer ist, wird sie ignoriert. Alle anderen Zeilen bestehen aus 4 durch Doppelpunkte getrennten Feldern:

Ich würde : Runlevels : Handlung : Prozess

id - Zeilenkennung;

Runlevels - Runlevels;

Prozess - Prozess;

Aktion - Aktion;

Das Aktionsfeld enthält ein Schlüsselwort, das zusätzliche Bedingungen für den vom Prozessfeld angegebenen Befehl definiert. Gültige Werte für das Aktionsfeld:

respawn - Neustart des Prozesses, wenn er beendet wird;

einmal - Führen Sie den Prozess nur einmal aus, wenn Sie auf die angegebene Ebene wechseln;

wait - der Prozess wird einmal gestartet, wenn er die angegebene Ebene erreicht hat;

sysinit - Dieses Schlüsselwort bezeichnet Aktionen, die während des Systemstarts unabhängig vom Runlevel ausgeführt werden sollen (das id-Feld wird ignoriert).

boot - der Prozess wird beim Laden des Systems aus dem Runlevel gestartet;

bootwait - der Prozess wird in der Phase des Systemstarts vom Runlevel gestartet und init wartet, bis er abgeschlossen ist;

initdefault - Die Zeile, in der dieses Wort im Aktionsfeld erscheint, definiert den Runlevel, zu dem das System standardmäßig wechselt.

off - dieses Element ignorieren;

powerwait - Ermöglicht dem Init-Prozess, das System zu stoppen, wenn die Stromversorgung unterbrochen wird.

Ctrlaltdel - Ermöglicht init, das System neu zu starten, wenn der Benutzer eine Tastenkombination drückt auf der Tastatur.

Diese Liste ist nicht vollständig. Weitere Informationen zur inittab-Datei finden Sie auf den Manpages init (8), inittab (5) und getty (8).

2 . Projektteil

2.1 Problemstellung

Es ist notwendig, das theoretische Material zum ausgewählten Thema zu studieren, einen Algorithmus für den Bootloader bei der Implementierung der Methode zu entwickeln (dargestellt in Form eines Blockdiagramms) und den Algorithmus zu beschreiben.

2.2 Entwicklung eines Algorithmus zur Lösung des Problems

Eingabe: Uniprozessorsystem, Anwendungsprogramm, LILO-Loader, POST-Programm, gegenseitiger Ausschluss.

Abbildung 1 zeigt den Algorithmus zum „Laden eines Anwendungsprogramms“.

Abbildung 2 zeigt den Algorithmus zum "Laden des Betriebssystems"

2.3 Beschreibung des Algorithmus zum Laden des Anwendungsprogramms

1) Das Anwendungsprogramm wird zur Ausführung gestartet. Danach wird das Systemprogramm "Loader" aktiviert.

2) Nach der Aktivierung beginnt es, den RAM zu scannen, um freie Bereiche zu finden.

3) Werden solche Gebiete gefunden, so beginnt die Ermittlung des Beginns der Adresse der Freigebietsvergabe. Dann gehen wir zu dieser Adresse und bestimmen die Größe der freien Fläche.

4) Danach wird die Größe des Codes des Anwendungsprogramms bestimmt, das zur Ausführung gestartet wird.

5) Vergleichen Sie die Größe des Codes und die Größe des freien Bereichs im RAM.

6) Wenn genügend Platz im RAM vorhanden ist, um den Anwendungsprogrammcode zu kopieren, dann wird die Anzahl der virtuellen Seiten der physischen Seiten in der Seitentabelle installiert. Dann wird der Anwendungscode in den RAM kopiert. Und das Ende des Prozesses.

7) Ansonsten prüfen wir, ob im RAM genügend Platz für einen Teil des Anwendungsprogrammcodes vorhanden ist. Wenn ja, wiederholen wir die Schritte, wenn genügend Platz für den vollständigen Code des Anwendungsprogramms vorhanden ist. Aber nach dem Kopieren des Codes in den RAM wird ein Teil des Codes in den Auslagerungsbereich kopiert.

8) Wenn für einen Teil des Codes nicht genügend Platz vorhanden ist, erfolgt ein Übergang zum Stadium des Scannens des RAM, um freie Bereiche zu finden.

2.4 Beschreibung des Betriebssystem-Boot-Algorithmus (Betriebssystem)

1) Das POST-Programm startet. Mit Hilfe dieses Programms wird der verfügbare Speicher getestet, das Vorhandensein weiterer Komponenten festgestellt (verschiedene PC-Geräte, zB: Tastatur, Festplatte, etc.) und die Adapterkarten initialisiert.

2) Nachdem das POST-Programm ausgeführt wurde, zeigt es die Ergebnisse seiner Arbeit an.

3) Wir rufen das Programm 19H auf, das versucht, das Bootgerät zu finden.

4) Interrupt 19H BIOS lädt den primären Bootloader in den Computerspeicher und übergibt die Kontrolle an dieses Programm

5) Laden Sie das Betriebssystem aufgrund der fehlenden Leistung dieses Programms. Sie sucht daher nach einem leistungsfähigeren Programm, das dies kann - einem Secondary Loader. Dazu sucht es in der Partitionstabelle nach der aktiven Partition und liest den Secondary Loader in den Speicher ein.

6) Der sekundäre Lader lädt die erste Programmebene, die zum Starten des Betriebssystems erforderlich ist. Das Ladeprogramm lädt das IO.SYS-Modul um 700 Uhr, dann übergibt MSDOS.SYS die Steuerung an den SYSINIT-Abschnitt des IO.SYS-Moduls.

7) Wenn aus irgendeinem Grund keine aktive Partition auf der Platte in der Partitionstabelle gefunden wurde, wird der Bootvorgang mit der Verarbeitung von Interrupt 18h fortgesetzt.

2.5 Beschreibung des Download-AlgorithmusUnixmit dem BootloaderLILO

1) Führen Sie das Programm / sbin / lilo aus, um alle beim Booten benötigten Informationen an die entsprechenden Stellen zu schreiben. Suchen Sie nach Servicedateien, die LILO beim Booten benötigt.

2) Wenn die Dateien nicht gefunden werden, wird eine Meldung über das Ende des Downloads angezeigt.

4) Wenn der primäre Lader den sekundären nicht geladen hat, wird eine Informationsmeldung über einen Fehler beim Laden auf dem Bildschirm angezeigt.

6) Wenn der primäre Loader den sekundären Lader erfolgreich geladen hat, aber nicht gestartet werden konnte, wird eine Informationsmeldung über einen Fehler beim Laden angezeigt.

7) Andernfalls startet der sekundäre Bootloader.

8) Überprüfen Sie, ob der sekundäre Bootloader an der richtigen Adresse geladen ist.

9) Wenn nicht, erfolgt eine Informationsmeldung über einen Fehler beim Laden.

10) Prüfen, ob die Deskriptortabelle beschädigt ist. Wenn ja, wird eine Informationsmeldung über einen Fehler beim Laden angezeigt. Wenn nicht, wird die Deskriptortabelle aus der Map-Datei geladen.

11) Prüfen, ob der Start der Deskriptortabelle erfolgreich war. Wenn nicht, dann geben Sie beim Start eine informative Fehlermeldung aus.

12) Andernfalls eine Informationsmeldung über das erfolgreiche Laden von LILO ausgeben.

Abschluss

In dieser Kursarbeit werden einige Aspekte des Ladens von Programmen betrachtet. Arten von Ladern: bewegend, primär, sekundär usw. Die Notwendigkeit, den Bootloader in verschiedenen Betriebsumgebungen einzusetzen, ist nachgewiesen. Es werden verschiedene Bootmethoden besprochen, wie das Laden einer Anwendung, das Booten mit dem LILO-Loader und das Booten des Betriebssystems. Das theoretische Material zum Thema wurde studiert, Algorithmen für den Bootloader-Betrieb wurden bei der Implementierung des Verfahrens entwickelt (dargestellt in Form eines Blockschaltbildes).

Verweise

1. Tanenbaum Andreas. Moderne Betriebssysteme / Tanenbaum Andrew. - 2. Aufl. - SPB .: Peter, 2002 .-- 1037s.: Ill. - (Klassische Informatik). - ISBN 5-318-00299-4

2. Partyka, T. L. Betriebssysteme, Umgebungen und Shells: Ein Tutorial für Umgebungen Prof Arr. Flüsse. MO / Partyka, T.L, Popov, I.I. - M.: FORUM: INFRA - M, 2006. - 399 S.: Ill. - (Berufsbildung). - ISBN 5-8199-0072-5-16-001355-5

3. Olifer, V. G. Netzwerkbetriebssysteme: Lehrbuch. Handbuch für Universitäten von Flüssen. MO / Olifer, V. G., Olifer, N. A. - SPb.: Peter, 2003 .-- 538s.: Ill. - ISBN 5-272-00120-6

4. Trubacheva, S.I. Programmierung in Betriebssystemen: Methodischer Leitfaden / Trubacheva, S.I. - Togliatti: VUiT, 2006 .-- 44p.

5. Terence Chan. Systemprogrammierung in C++ für Unix / Ed. Kolomyzew. - Kiew, 2004.

6. Tucket D., Barnett S. Sonderausgabe. Verwendung von LINUX / Per. aus dem Englischen - 4. Aufl. SPb.: Williams, 2003.

7. Ivanova G.S. C++ Programmierung / Lehrbuch. Hrsg. M.: MGTU, 2002.

Ähnliche Dokumente

    Allgemeine Eigenschaften des Android-Systems, ein Überblick über seine Analoga. Voraussetzungen für den Einstieg in Android. Einrichten von Ubuntu-Konfigurationen. Schreiben von Skripten zur Vereinfachung der Linux-Generierung. Debuggen und Testen des Programms auf dem Freescale i.MX53 Board.

    Hausarbeit, hinzugefügt am 12.10.2012

    Berücksichtigung der Eigenschaften von Download-Managern. Beschreibung von Download Accelerator Plus, Download Master, FlashGet, GetRight, ReGet, Go! Zilla. Vergleichende Eigenschaften von Windows-Bootmanagern. Programme für Unix-, Linux- und Mac-Betriebssysteme.

    Zusammenfassung hinzugefügt am 06.09.2014

    Das Konzept und die Struktur von Linux-Distributionen, die Entstehungsgeschichte und die wichtigsten Entwickler. Klassifizierung der Distributionen nach Art der Montage und Installation, Überarbeitung ihrer fertigen Versionen. Beschreibung der Möglichkeiten zum Erstellen einer eigenen Distribution.

    Hausarbeit, hinzugefügt 02.04.2014

    Allgemeines Diagramm des Ladevorgangs, seiner Hauptphasen und Besonderheiten. Primär- und Sekundärlader, ihre Funktionsweise und Wirkungsrichtungen. Mögliche Speicherorte für den Bootsektor. Anforderungen an den Speicherplatz.

    Präsentation hinzugefügt 20.12.2013

    Analyse der technischen Fähigkeiten des Betriebssystems Mandriva Linux - ein von der französischen Firma Mandriva entwickeltes GNU / Linux-Verteilungskit, das kostenlose, kommerzielle und Unternehmensversionen seines Distributionskits veröffentlicht. Installationsschritte der Linux-Shell.

    Präsentation hinzugefügt am 23.05.2010

    Höhepunkte der Geschichte von Betriebssystemen, die Hardware und Anwendungsprogramme verknüpfen. Eigenschaften des Betriebssystems Microsoft Windows Seven, Analyse des Betriebssystems Linux. Die Vor- und Nachteile der einzelnen Betriebssysteme.

    Hausarbeit hinzugefügt am 07.05.2011

    Die Auswahl der Tools zur Entwicklung des Installationsprogramms für die Distribution. Implementierung eines Moduls für eine Gentoo-Distribution, das gemäß der Bedienungsanleitung für dieses System funktioniert. Testen des Installers auf verschiedenen Architekturen.

    Diplomarbeit, hinzugefügt am 18.07.2013

    Phasen des Ladens eines Linux-Systems, Registrierung. Verwaltung von Benutzerkonten. Das Prinzip der Benennung von Geräten, der Zweck und die Verwendung spezieller Dateien. Dateiverwaltung, Zugriff auf das Dateisystem, Jobs. Grundlegende Linux-Dateistruktur.

    Handbuch, hinzugefügt am 15.11.2014

    Berücksichtigung verschiedener Distributionen des Betriebssystems. Studium der Datenaustauschprotokolle und Formate der physischen Datenspeicherung. Entwicklung eines Linux-basierten Distributions-Kits für die Funktion als Teil des StarNAS-Netzwerkspeichers.

    Hausarbeit hinzugefügt am 05.11.2015

    Funktionen zum Laden des Linux-Betriebssystems im Terminalmodus, Anmelden und Registrieren von Benutzern. Ausführen einer Dateineuzuweisung, um mit Betriebssystembefehlen zu arbeiten. Anwendung von Programmkanälen (Pipelines).

Boot-Algorithmus des Betriebssystems

Das Betriebssystem wird im externen Speicher abgelegt, normalerweise auf einer Festplatte, seltener auf einer Diskette.

Es ist erwähnenswert, dass es für den normalen Betrieb eines Computers äußerst wichtig ist, dass sich die Hauptmodule des Betriebssystems im RAM befinden. Aus diesem Grund wird das Betriebssystem nach dem Einschalten des Computers automatisch von der Festplatte in den Arbeitsspeicher überschrieben (geladen).

- Überschreiben des Betriebssystems von der Festplatte (Festplatte oder Diskette) in den Arbeitsspeicher.

Nach dem Einschalten des Computers wird auf dem Bildschirm eine Änderung der Zahlen beobachtet. Diese Zahlen spiegeln den Prozess des Testens des RAM durch das BIOS-Programm wider. Wird eine Fehlfunktion in den Zellen des RAM erkannt, wird eine Meldung angezeigt.

Nach erfolgreichem Abschluss des Gerätetests wird auf das Diskettenlaufwerk A zugegriffen und die Anzeigelampe daneben leuchtet. Wenn das Betriebssystem von einer Diskette gebootet wird, legen Sie vor oder während des Tests die Systemdiskette in Laufwerk A ein. Andernfalls, wenn sich kein Betriebssystem auf Diskette A befindet, wird auf die Festplatte zugegriffen, was durch die Anzeigelampe next angezeigt wird dazu.

Das Einlesen des 0-ten Sektors der 0-ten Seite der Platte, in dem sich der Loader befindet (BOOT RECORD), in das RAM beginnt. Die Steuerung wird an den Loader übertragen, der das Vorhandensein des Erweiterungsmoduls IO.SYS und des Basismoduls MSDOS.SYS auf der Systemfestplatte überprüft. Wenn sie sich an dem für sie reservierten Platz befinden, werden sie in den RAM geladen, andernfalls wird eine Meldung über ihre Abwesenheit angezeigt. In diesem Fall wird ein Neustart empfohlen. Das Neustartsignal überträgt die Steuerung an das persistente BIOS-Modul, das den Bootblock von der Festplatte in den RAM umschreibt und so weiter.

HINWEIS! Zum Neustart des Betriebssystems im Speicher gleichzeitig die Tasten drücken<Сtгl> <АLT> .

Nach erfolgreichem Laden des IO.SYS-Expanders und des MSDOS.SYS-Basismoduls in den Arbeitsspeicher wird der Befehlsprozessor COMMAND.COM geladen und die Konfigurationsdatei CONFIG.SYS abgearbeitet, die die Befehle zum Anbinden der notwendigen Treiber enthält. Diese Datei ist möglicherweise nicht vorhanden, wenn der Benutzer mit der Basisversion des Betriebssystems zufrieden ist.

Anschließend wird die Batch-Datei AUTOEXEC.BAT verarbeitet. Diese Datei wird verwendet, um die Parameter der Betriebsumgebung zu konfigurieren. Erstellen Sie beispielsweise eine virtuelle Festplatte, ändern Sie den Druckmodus, laden Sie Hilfsprogramme usw.

Notiz! Dateien mit der Dateiendung .BAT spielen beim Arbeiten in der Systemumgebung eine besondere Rolle. Οʜᴎ eine Sammlung von Betriebssystembefehlen oder Namen ausführbarer Dateien enthalten. Nach dem Starten der Datei mit der Endung .BAT werden alle darin geschriebenen Befehle automatisch nacheinander ausgeführt.

Die Datei mit dem Standardnamen AUTOEXEC.BAT unterscheidet sich von anderen Dateien vom Typ .BAT dadurch, dass die Ausführung der darin platzierten Befehle sofort nach dem Laden des Betriebssystems automatisch beginnt.

Wenn keine Datei AUTOEXEC.BAT vorhanden ist, werden Sie aufgefordert, Datum und Uhrzeit einzugeben:

wenn Sie die Eingabetaste drücken, werden die sogenannten Systemparameter, die vom Computer-Timer bestimmt werden, als aktuelles Datum und Uhrzeit übernommen;

Wenn Sie das Systemdatum und die Systemzeit zurücksetzen möchten, geben Sie als Antwort auf die Aufforderung die Werte in eines der bereitgestellten Formulare ein, zum Beispiel:

25.10.1997 (Monat Tag Jahr)

7:30: 10,00 RUB (Stunden:Minuten:Sekunden)

Nach Beendigung der Datei AUTOEXEC.BAT und auch wenn diese Datei nicht gefunden wird, wird beispielsweise die Eingabeaufforderung der Systemfestplatte auf dem Bildschirm angezeigt C: \>. Dies zeigt an, dass der Bootvorgang normal abgeschlossen wurde und Sie durch Eingabe des Anwendungsnamens oder des Betriebssystembefehls beginnen können.

Notiz. Die Dateien CONFIG.SYS und AUTOEXEC.BAT fehlen möglicherweise. In diesem Fall werden die Einstellungen der Betriebsumgebung standardmäßig festgelegt.

Erinnern! Es ist äußerst wichtig, das Betriebssystem dauerhaft auf der Festplatte zu halten. Beim Einschalten des Computers müssen alle Diskettenlaufwerke geöffnet sein.

Sie müssen die Diskette mit den Anwendungsprogrammen in das Diskettenlaufwerk einlegen, nachdem der Bootvorgang abgeschlossen ist.

Vom Programm getestet

Herunterladen Keine Belastung

auf flexibel hart nein

Diskettenlaufwerk

Vorlesen von Diskette mit einer Geste. Scheibe

IO.SYS, MSDOS.SYS im Bootsektor "

Herunterladen Keine Nachricht

Korrekt? "Keine Systemdateien"

Befehl. Com "Keine Systemdateien"

und die Datei CONFIG.SYS

Fortsetzung des Themas:
Android

Um in das Webinterface des Routers zu gelangen, müssen Sie Ihren Internetbrowser öffnen und in die Adressleiste 192.168.10.1 eingeben, Benutzername - admin, Passwort - admin ...