Frage

Erstellen Sie ein OS scheint wie ein massive Projekt.Wie würde jemand, selbst loszulegen?

Zum Beispiel, wenn ich pop-Ubuntu in mein Laufwerk, wie kann ich meinen computer nur laufen es? (Dies, denke ich, ist das, was ich würde wirklich gerne wissen.)

Oder, wenn man es aus einem anderen Blickwinkel, was ist die geringste Menge an bytes, könnte auf eine Diskette, und noch in der "run" als OS?

(Tut mir Leid, wenn dies ist vage.Ich habe nur keine Ahnung über dieses Thema, so kann ich nicht sehr spezifisch sein.Ich behaupten, zu wissen eine ganze Menge darüber, wie Computer funktionieren, aber ich bin völlig ratlos über dieses Thema.)

War es hilfreich?

Lösung

Nun, lebt die Antwort in Büchern: Moderne Betriebssysteme - Andrew S. Tanenbaum ist ein sehr guter. Die Abdeckung Abbildung unten.

Die einfachste, aber komplette Betriebssystem-Kernel, geeignet für das Lernen oder einfach nur Neugier, ist Minix .
Hier Sie die Quellcode


(Quelle: cs.vu.nl )

Andere Tipps

Betriebssysteme ist ein großes Thema, das Beste, was ich Sie empfehlen kann, wenn man wirklich in der Tiefe gehen will, wie ein Betriebssystem ausgelegt ist und errichtetem ist es ein gutes Buch:

Operating System Concepts

Operating System Concepts

Wenn Sie sind wirklich neugierig ich Sie leiten würde href="http://www.linuxfromscratch.org/" rel="noreferrer"> Linux from Scratch als ein guter Ort, um dieser Wikipedia-Artikel auf Betriebssystemen könnte eine gute sein Ort zu starten.

Ein PC kennt zu einem bestimmten Sektor der Festplatte für die Hinweise zur Inbetriebnahme zu suchen. Diese sollen dann den Prozessor sagen, dass auf bestimmten Prozessor-Interrupts, spezifischen Code aufgerufen werden soll. Zum Beispiel auf einer periodischen Zecke, rufen Sie den Scheduler-Code. Wenn ich etwas von einem Gerät zu erhalten, um den Gerätetreiber-Code aufrufen.

Nun, wie funktioniert ein O alles mit dem System einrichten? Nun Hardware haben API auch. Sie sind mit dem Systemprogrammierer im Hinterkopf geschrieben.

Ich habe eine Menge von nackten Knochen OS gesehen und das ist wirklich der absolute Kern. Es gibt viele Embedded-home-grown OS, dass das ist alles, was sie tun, und nichts anderes.

Weitere Merkmale, wie zum Beispiel Anwendungen, die das Betriebssystem für Speicher zu fragen, oder erfordern besondere Privilegien für bestimmte Aktionen oder sogar Prozesse und Threads selbst sind wirklich optional, obwohl auf den meisten PC-Architekturen implementiert.

Das Betriebssystem ist einfach, was ermöglicht die Software, die Hardware zu verwalten. Offensichtlich einige OSes sind anspruchsvoller als andere.

An seinem Kern, ein Computer beginnt bei einer festen Adresse ausgeführt wird, was bedeutet, dass, wenn der Computer gestartet wird, setzt den Programmzähler auf eine vordefinierte Adresse und startet nur Maschinencode ausgeführt wird.

In den meisten Computern ist dieses „Bootstrapping“ Prozess initialisiert sofort bekannte Peripheriegeräte (wie, sagen wir, ein Plattenlaufwerk). Nach der Initialisierung wird der Bootstrap-Prozess einige vordefinierte Sequenz verwenden, um diese Peripheriegeräte zu nutzen. Nochmals die Plattentreiber, könnte der Prozess Code aus dem ersten Sektor der Festplatte lesen, legen Sie sich in einem Know Raum innerhalb RAM und dann zu dieser Adresse springen.

Diese vordefinierten Sequenz (der Beginn der CPU, das Laden der Platte) ermöglicht es, die Programmierer Stern mehr und mehr Code in den frühen Teilen der CPU Startliste hinzufügen, die im Laufe der Zeit kann schließlich bis sehr anspruchsvolle Programme starten .

In der modernen Welt, mit anspruchsvollen Peripheriegeräte, fortschrittliche CPU-Architekturen und riesigen, riesigen Ressourcen (GBS oder RAM, TB Festplatte, und sehr schnelle CPUs), kann das Betriebssystem unterstützen ziemlich mächtige Abstraktionen für den Entwickler (mehrere Prozesse , virtueller Speicher, ladbare Treiber usw.).

Aber ein einfaches System, mit Mitteln gezwungen, Sie brauchen nicht wirklich eine ganze Menge für ein „O“.

Als einfaches Beispiel haben viele kleine Controller-Computer sehr klein „OS“ es, und einige einfach betrachtet werden kann „Monitor“ und bietet wenig mehr als einen einfachen Zugang zu einem seriellen Port (oder einem Terminal oder LCD-Anzeige) . Sicher, es ist nicht viel Bedarf für ein großes O in diesen Bedingungen.

Aber auch so etwas wie ein klassisches Forth System betrachten. Hier haben Sie ein System mit einem „O“, die Ihnen Platte gibt I / O, Konsole I / O, Speicherverwaltung sowie die eigentliche Programmiersprache sowie einen Assembler, und das paßt in weniger als 8 KB Speicher auf einem 8-Bit-Maschine.

oder die alten Zeiten von CP / M mit BIOS und BDOS.

CP / M ist ein gutes Beispiel dafür, wo ein einfaches Betriebssystem funktioniert gut als Abstraktionsschicht portable Programme zu ermöglichen, auf einer Vielzahl von Hardware zu laufen, aber auch dann dem System dauerte weniger als 8 KB RAM zu starten und läuft .

Ein weit entfernt von dem MBs des Speichers von modernen Betriebssystemen verwendet. Aber um fair zu sein, wir haben MBs des Gedächtnisses, und unser Leben ist viel viel einfacher (meist), und weit mehr funktionsfähig, weil es.

Das Schreiben ein OS macht Spaß, weil es interessant ist der Hardware-print „Hallo Welt“ schiebend Daten 1 Byte zu einem Zeitpunkt aus unerfindlichem I / O-Port zu machen, oder es in einer gewissen magischen Speicheradresse zu stopfen.

Holen Sie sich einen x86-Emulator und abfeiern einen Bootsektor immer Ihren Namen zu sagen. Es ist ein giggly behandeln.

Im Grunde ... Ihr Computer kann nur die Scheibe läuft, weil:

Das BIOS enthält, dass die Plattenvorrichtung in der Startreihenfolge.

Beim Booten, scannt das BIOS alle bootfähigen Geräte, um, wie das Diskettenlaufwerk, die Festplatte und das CD-ROM. Jedes Gerät greift auf seine Medien und überprüft eine hartcodierte Lage (typischerweise einen Sektor, auf einer Festplatte oder CD-Gerät) für einen Fingerabdruck, dass die Medien identifiziert, und listet die Stelle zu springen, auf der Festplatte (oder Medien), wo Befehle beginnen. Das BIOS teilt das Gerät seinen Kopf zu bewegen (oder was auch immer) an die angegebenen Stelle auf dem Medium, und einen großen Teil der Anweisungen zu lesen. Das BIOS übergibt diese Anweisungen aus der CPU.

Die CPU führt diese Anweisungen. In Ihrem Fall, werden diese Anweisungen, um die Ubuntu OS zu starten. Sie könnten genauso gut sein, Anweisungen zu stoppen oder geben 10 + 20 usw.

Normalerweise wird ein O aus starten, indem Sie einen großen Teil des Speichers nimmt (wieder direkt von der CPU, da Bibliotheksbefehlen wie ‚GlobalAlloc‘ usw. ist nicht verfügbar, da sie durch die zur Verfügung gestellt sind noch zu be- geladen-O) und startet Strukturen zur O selbst.

Ein O bietet eine Reihe von ‚Features‘ für Anwendungen: Speicherverwaltung, Dateisystem, Eingabe / Ausgabe, Aufgabenplanung, Vernetzung, Grafikverwaltung, Zugriff auf Drucker, und so weiter. Das ist, was es tut, bevor du Kontrolle zu bekommen '. Erstellen / Start alle Dienste so spätere Anwendungen zusammen laufen, stampfen nicht gegenseitig auf die Speicher und haben eine schöne API auf die OS-Dienste

Jedes ‚Feature‘ bietet durch das O ein großes Thema ist. Ein O bietet sie alle so Anwendungen genau die richtigen OS über Aufruf Bibliothek kümmern, und das Betriebssystem verwaltet Situationen wie wenn zwei Programme versuchen, gleichzeitig zu drucken.

Zum Beispiel, ohne das Betriebssystem würde jede Anwendung mit einer Situation zu tun hat, wo ein anderes Programm zu drucken versucht, und ‚etwas tun‘, wie Druck sowieso, oder anderen Auftrag abbrechen usw. Stattdessen wird nur das Betriebssystem hat damit umgehen, sagen Anwendungen nur auf die OS ‚drucken Sachen‘ und das Betriebssystem gewährleisten eine App druckt, und alle anderen Anwendungen müssen nur warten, bis der erste beendet oder der Benutzer löscht es.

Die geringste Menge an Bytes ein O sein nicht wirklich sinnvoll, da ein „O“ viele oder sehr wenige bedeuten könnte, Funktionen. Wenn alles, was Sie ein Programm von einer CD war ausführen wollte, das wäre sehr sehr wenige Bytes sein. Allerdings, das ist nicht ein O. AN Aufgabe des OS ist Dienstleistungen (Ich habe sie gehört Aufruf) viele andere Programme laufen zu lassen, und für die Programme den Zugriff auf diese Dienste zu verwalten. Das ist schwer, und die mehr gemeinsam genutzten Ressourcen Sie hinzufügen (Netzwerke und WiFi, und CD-Brenner, und Joysticks und iSight Videos und zwei Monitore, usw., usw.), desto schwieriger wird es.

Eines der jüngsten Betriebssystem Projekte, die ich gesehen habe, dass eine ernsthafte Unterstützung hat gewesen genannt MS Forschungsprojekt Singularity , die vollständig in C # .NET von Grund auf neu geschrieben wird.

Um eine Vorstellung zu bekommen, wie viel Arbeit es braucht, gibt es zwei Kern Devs, aber sie haben zu einem bestimmten Zeitpunkt zu einem Dutzend Praktikanten, und es dauerte noch zwei Jahre, bevor sie sogar das Betriebssystem an einen Punkt gelangen konnte, wo es würde bootup und BMP-Bilder (es ist, wie sie ihre Präsentationen tun verwenden, um) anzuzeigen. Es dauerte viel mehr Arbeit, noch bevor sie an einen Punkt gelangen konnten, wo es eine Befehlszeile war (wie etwa 4yrs).

Grundsätzlich gibt es viele Argumente über das, was ein Betriebssystem eigentlich . Wenn Sie jeder bekommt vereinbart, was speziell ein O ist (ist es nur der Kernel? Alles, was im Kernel-Modus läuft? Ist das Schalenteil von OS? X Teil von OS? Ist Web-Browser ein Teil von OS?), Ihre Frage beantwortet! Ansonsten gibt es keine spezifische Antwort auf Ihre Frage.

Sie möchten vielleicht das Buch bekommen Das Design und die Implementierung des FreeBSD-Betriebssystem für eine sehr ausführliche Antwort. Sie können es von Amazon erhalten oder diesen Link zu FreeBSD.org Website sieht aus wie das Buch, wie ich es vergessen: link text

Ich kann nicht glauben, dass dies nicht erwähnt ... aber ein klassisches Buch für einen Überblick über Betriebssystem-Design ist Betriebssysteme - Design und Implementierung von Andrew S. Tanenbaum geschrieben , der Schöpfer von Minix. Viele der Beispiele in diesem Buch sind auch direkt auf MINIX ausgerichtet.

Wenn Sie ein bisschen mehr erfahren möchten, OS Dev ist ein großartiger Ort zu starten. Vor allem das Wiki. Diese Seite ist voll von Informationen sowie Entwicklern, die persönlichen Betriebssysteme für ein kleines Projekt / Hobby schreiben. Es ist eine große Lernressource zu, da es viele Leute im gleichen Boot wie Sie auf OSDev sind, die lernen wollen, was in ein O geht. Vielleicht haben Sie es am Ende versuchen, sich schließlich auch!

das Betriebssystem (OS) ist die Schicht von Software, die die Hardware steuert. Je einfacher die Hardware, desto einfacher das Betriebssystem und umgekehrt; -)

, wenn die frühen Tage von Mikrocomputern, können Sie das Betriebssystem in einen 16-KByte-ROM und Festdraht das Motherboard passen könnte starten Maschinencode Anweisungen zu Beginn des ROM-Adressraum ausgeführt wird. Dieser ‚Bootstrap‘ Prozess würde den Code für die Fahrer dann lädt für die anderen Geräte wie Tastatur, Monitor, Diskettenlaufwerk, usw., und innerhalb von wenigen Sekunden Ihrer Maschine gestartet werden würde und einsatzbereit.

Heute ... gleiches Prinzip, aber viel mehr und komplexere Hardware; -)

Oh, das ist ein Spaß. Ich habe die ganze Sache an einem Punkt oder ein anderes getan, und es durch einen großen Teil der Entwicklung gewesen.

In der Regel dem Schreiben beginnen Sie ein neues Betriebssystem von kleinen Start. Die einfachste Sache ist ein Bootstrap-Loader, der ein kleines Stück Code, das ein Stück Code zieht und es läuft. Es ist einmal, mit dem Nova oder PDP-Computer, können Sie die Boot-Loader durch die Frontplatte eingeben: Sie trat in den Anweisungen Hexadezimalnummer von Hex-Zahl. Der Bootloader als liest ein Medium in den Speicher, und stellen Sie den Programmzähler auf die Startadresse des Codes.

Das Stück Code lädt usualy etwas anderes, aber es muss nicht zu: Sie ein Programm schreiben können, die auf das blanke Metall laufen gemeint ist. Diese Art von Programm tut etwas Nützliches für sich allein.

Ein echtes Betriebssystem ist größer, und mehr Stücke hat. Sie Programme laden müssen, sie in Erinnerung gebracht und laufen sie; Sie müssen Code bereitzustellen, um das IO-Devices zu laufen; wie es wird immer größer, müssen Sie Speicher verwalten.

Wenn Sie wirklich wissen wollen, wie es funktioniert, finden Doug Comers Xinu Bücher und Andy Tannenbaum 's neuestes Betriebssystem Buch auf Minix .

Versuchen Sie Wie Computer Boot Up Der Kernel-Boot-Prozess und andere verwandte Artikel aus dem gleichen Blog für einen kurzen Überblick von dem, was ein Computer beim Booten.

Was ist ein Computer, wenn sein Start stark abhängig ist (vielleicht offensichtlich?) Auf das CPU-Design und andere "Low-Level-Sachen"; deshalb ist es irgendwie schwer zu antizipieren, was Ihr Computer beim Booten.

Nun, Sie haben etwas Verknüpfung die Inbetriebnahme des Chips auf einen „bios“, dann zu einem O, das ist in der Regel eine sehr komplizierte Aufgabe durch viele Dienste von Code.

Wenn Sie WIRKLICH wollen mehr darüber wissen ich empfehlen würde, ein Buch zu lesen ... über microcontrllers, vor allem eine, wo man ein kleines O in c schafft für ein 8051 oder dergleichen .. oder ein x86-Assembler lernen und erstellen sehr klein "Bootloader O".

Sie fragen , wie wenige Bytes können Sie auf der Festplatte legen und immer noch als OS laufen ? Die Antwort hängt davon ab, was Sie von Ihrem Betriebssystem erwarten, aber die kleinste nützlich OS, die ich kenne passt in 1,7 Megabytes. Es ist Tom Root-Boot Scheibe und es ist ein sehr schönes, wenn kleine OS mit „Rettung“ Anwendungen, die passt auf eine Diskette . Zurück in den Tagen, als jede Maschine ein Diskettenlaufwerk hatte und nicht jede Maschine ein CD-ROM-Laufwerk hatte, habe ich es häufig verwenden.

Meine Meinung dazu ist, dass es wie Ihr eigenes Leben.AUF den ersten, Sie wissen sehr wenig, gerade genug, um zusammen zu bekommen.Dies ist ähnlich zu dem, was das BIOS stellt es weiß genug, um sich für ein Festplattenlaufwerk und Lesen von Informationen aus der it.Dann lernen Sie ein bisschen mehr, wenn Sie gehen an die Grundschule.Dies ist, wie der boot-Sektor wird in den Speicher gelesen und Kontrolle.Dann Sie gehen auf die high school, das ist wie der OS-kernel laden.Dann gehen Sie zu college (Treiber und anderen Anwendungen.) Natürlich, das ist der Punkt, an dem Sie haften CRASH. ER ER.

Quintessenz ist, dass die Schichten von mehr und mehr Funktionen werden langsam geladen.Es gibt nichts Magisches über ein Betriebssystem.

hier durch Lesen gibt Ihnen eine Vorstellung davon, was es dauerte Linux zu erstellen https://netfiles.uiuc.edu/rhasan/linux/

Ein weiteres wirklich kleines Betriebssystem, das auf einer Platte paßt, ist QNX (als ich sah zuletzt es vor langer Zeit, das gesamte Betriebssystem, mit GUI-Schnittstelle, Web-Browser, Plattenzugriff und einem integrierten Web-Server, fit auf einem Diskettenlaufwerk).

Ich habe nicht zu viel über sie seitdem gehört, aber es ist ein Echtzeit-Betriebssystem, so dass es ausgelegt ist, sehr schnell sein.

Eigentlich besuchen einige Leute ein 4-Jahres-College eine grobe Vorstellung darüber zu bekommen ..

Im Kern O ist extrem einfach. Hier ist der Leitfaden für Anfänger, was erfolgreiche OS gemacht zu tun: 1. verwalten CPU-Scheduler verwenden, die die Prozess (Programm der laufenden Instanz) entscheidet geplant werden. 2. Verwalten Speicher zu entscheiden, welche alle Prozesse verwenden Sie es zum Speichern von Befehl (Code) und Daten (Variablen). 3. Verwalten I / O-Schnittstellen wie Laufwerke, Alarme, Tastatur, Maus. Nun, über drei Anforderungen führen zu müssen für Prozesse zu kommunizieren (und nicht kämpfen!), Mit Außenwelt zu kommunizieren, ihnen helfen Anwendungen zu tun, was sie tun wollen. Um tiefer in, wie es das tut, Dinosaurier-Buch lesen:)

So können Sie OS so klein machen, wie Sie wollen, solange Sie alle Hardware-Ressourcen zu handhaben verwalten. Wenn Sie bootup, sagt BIOS CPU Lesen Bootloader zu starten (die erste Funktion von OS lädt die im Speicher in festen Adresse befindet - so etwas wie main () der kleinen C-Programm). Dann das schafft Funktionen und Prozesse und Threads und startet den großen Knall!

Zum einen das Lesen Lesen und Lesen über, was OS; dann, was der uses / types / Natur / Ziel ist / muss / die verschiedenen Betriebssysteme. Einige der Links sind wie folgt; Neuling wird diese Links genießen:

Moderne OS - das gibt Idee über allgemeine OS.

Beginn der OS - das gibt Grundlagen das, was es wirklich braucht, O zu machen, wie wir es machen können und wie man ein Geschenk Open-Source-Code von OS selbst

ändern.

Wiki OS - Gibt Vorstellung über die verschiedenen von Os in unterschiedlichen Bereichen eingesetzt und verwendet es (Objekte / Funktionen von OS.)

Lassen Sie sich im Allgemeinen sehen, was O enthält (Nicht der sophisticatedLinux oder Windows)

OS brauchen eine CPU und einen Code darin abzuladen Sie eine bootloader benötigen. OS müssen die Ziele müssen zu erfüllen und diese Ziele mustbe in eine Hülle definiert, die Kernel genannt wird Im Inneren kann man scheduling time und ISR's haben könnte (Abhängig von der Zielsetzung und OS Sie machen müssen)

OS Entwicklung ist kompliziert. Es gibt einige Websites wie osdev oder lowlevel.eu (Deutsch) mit dem Thema gewidmet ist. Es gibt auch einige Bücher, dass andere bereits erwähnt haben.

kann ich nicht helfen, sondern auch die Video-Serie auf youtube „Ihr eigenes Betriebssystem schreiben“ verweisen, wie ich derjenige bin, der es geschaffen: -)

Siehe https://www.youtube.com/playlist?list=PLHh55M_Kq4OApWScZyPl5HhgsTJS9MZ6M

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top