Ein als Betriebssystem abgekürzter Betriebssystem ist eine Software, die die Hardwarekomponenten eines Systems steuert, sei es ein Telefon, ein Laptop oder ein Desktop. Es ist für die Kommunikation zwischen der Software und der Hardware verantwortlich. Windows XP, Windows 8, Linux und Mac OS X sind Beispiele für Betriebssysteme. Das Betriebssystem besteht aus:
Kernelraum und Userspace
Kernelraum: Der Kernel befindet sich in einem erhöhten Systemzustand, der einen geschützten Speicherplatz und den vollen Zugriff auf die Hardware des Geräts enthält. Dieser Systemzustand und der Speicherplatz werden insgesamt als Kernel-Raum bezeichnet. Innerhalb des Kernel -Raums werden der Kernzugriff auf die Hardware- und Systemdienste verwaltet und als Dienst für den Rest des Systems zur.
Benutzerraum: Die Anwendungen des Benutzers werden im Benutzerraum durchgeführt, in dem sie eine Teilmenge der verfügbaren Ressourcen der Maschine über Kernel-Systemaufrufe erreichen können. Durch die Verwendung der Kerndienste, die den Kernel zur Verfügung stellte, kann beispielsweise eine Anwendung auf Benutzerebene erstellt werden.
Linux
Linux hat im Laufe der Jahre immer beliebter geworden. Wie angegeben ist ein Betriebssystem, das einem UNIX-Betriebssystem ähnelt-ein stabiles Multi-Benutzer-Multitasking-Betriebssystem, das als freie und offene Software für Entwicklung und Vertrieb zusammengestellt wurde. Dies bedeutet, dass eine Person oder ein Unternehmen die Erlaubnis hat, das Linux -Betriebssystem in irgendeiner Weise zu verwenden, nachzuahmen, zu studieren und zu verändern.
Der Linux -Kernel
Von seiner ersten Veröffentlichung am 17. September 1991 hat sich der Linux -Kernel allen Chancen als Linux -definierende Komponente widersetzt. Es wurde von Linus Torvalds freigesetzt und nutzt das GNU/Linux, um das Betriebssystem zu beschreiben. LINUX KERNEL-basierter Android OS auf Smartphones hat Linux dazu gebracht, seinen Wettbewerb als die größte installierte OS-Basis aller allgemeinen Betriebssysteme zu sein. Die Geschichte des Linux -Kernels finden Sie hier.
Ein Kernel kann entweder monolithisch, microkernel oder hybrid sein (wie das OS X und Windows 7). Der Linux -Kernel ist ein monolithisches Computer -Betriebssystem -Kernel, der dem UNIX -System ähnelt. Die Linux -Linie von Betriebssystemen, die üblicherweise als Linux -Verteilungen bezeichnet werden, basieren auf diesem Kernel. Der monolithische Kernel umfasst im Gegensatz zum Microkernel nicht nur die zentrale Verarbeitungseinheit, den Speicher und die IPC, sondern verfügt auch über Geräte -Treiber, Systemserver -Anrufe und Dateisystemverwaltung. Sie können am besten mit Hardware kommunizieren und gleichzeitig mehrere Aufgaben ausführen. Aus diesem Grund reagieren Prozesse hier schnell.
Die wenigen Rückschläge sind jedoch die große Installations- und Speicherausdruck, die benötigt wird und die Sicherheit unzureichend ist, da alles in einem Supervisor -Modus arbeitet. Im Gegensatz dazu kann ein Mikrokernel langsam auf Anwendungsaufrufe als Benutzerdienste reagieren und der Kernel werden getrennt. Sie sind somit kleiner im Vergleich zum monolithischen Kernel. Mikrokernel sind leicht erweiterbar, aber es ist mehr Code erforderlich, um einen Mikrokernel zu schreiben. Der Linux -Kernel ist im C- und Assembly -Programmiersprachen geschrieben.
Die Linux -Kernel -Beziehung mit der Hardware
Der Kernel kann die Hardware des Systems über das verwalten, was als Interrupts bezeichnet wird. Wenn die Hardware mit dem System einstellen will, wird ein Interrupt ausgestellt, der den Prozessor unterbricht. Um Synchronisation bereitzustellen, kann der Kernel Interrupts deaktivieren, sei es ein einzelner oder alle von ihnen. In Linux werden die Interrupt -Handler jedoch nicht in einem Prozesskontext ausgeführt, sondern stattdessen in einem Interrupt -Kontext ausgeführt, der keinem Prozess zugeordnet ist.Dieser spezielle Interrupt -Kontext existiert ausschließlich, um einen Interrupt -Handler schnell auf einen individuellen Interrupt zu reagieren und schließlich schließlich zu beenden.
Was unterscheidet den Linux -Kernel von anderen klassischen Unix -Kerneln?
Es gibt signifikante Unterschiede zwischen dem Linux -Kernel und den klassischen Unix -Kerneln; Wie unten aufgeführt:
Komponenten des Linux -Kernels
Ein Kernel ist einfach ein Ressourcenmanager. Die verwaltete Ressource kann ein Prozess, ein Speicher oder ein Hardware -Gerät sein. Es verwaltet und vermittelt den Zugriff auf die Ressource zwischen mehreren konkurrierenden Benutzern. Der Linux -Kernel existiert im Kernel -Bereich unterhalb des UserSpace, in dem die Anwendungen des Benutzers ausgeführt werden. Damit der Benutzerraum mit dem Kernel -Speicherplatz kommuniziert, wird eine GNU C -Bibliothek integriert, die ein Forum für die System -Call -Schnittstelle bietet, um eine Verbindung zum Kernel -Speicherplatz herzustellen und den Übergang zurück zum UserSpace zu ermöglichen.
Der Linux -Kernel kann in drei Primärebenen eingeteilt werden:
Die architektonische Perspektive des Linux -Kernel besteht.
Systemanrufe und -Interbricht
Anwendungen übergeben Informationen über Systemaufrufe an den Kernel. Eine Bibliothek enthält Funktionen, mit denen die Anwendungen arbeiten. Die Bibliotheken weisen dann über die System -Call -Schnittstelle den Kernel an, eine Aufgabe auszuführen, die die Anwendung will. Was ist ein Linux -Systemaufruf??
Interrupts bieten einen Weg, wie der Linux -Kernel die Hardware der Systeme verwaltet. Wenn Hardware mit einem System kommunizieren muss, macht ein Interrupt des Prozessors den Trick, und dies wird an den Linux -Kernel weitergegeben.
Linux -Kernel -Schnittstellen
Der Linux -Kernel bietet verschiedene Schnittstellen für die Benutzerraumanwendungen, die eine Vielzahl von Aufgaben ausführen und unterschiedliche Eigenschaften aufweisen. Es gibt zwei verschiedene Anwendungsprogrammierschnittstellen (API); Die Kernel-Benutzerraum und das Kernel intern. Die Linux -API ist die Kernel-Benutzerspace API; Es gibt Zugriff auf Programme im Benutzerbereich in die Systemressourcen und -dienste des Kernels. Es besteht aus der System -Call -Schnittstelle und den Unterroutinen aus der GNU C -Bibliothek.
Linux Abi
Dies bezieht sich auf den Kernel-User Space ABI (Anwendung Binary Interface). Dies wird als Schnittstelle zwischen den Programmmodulen erklärt. Beim Vergleich von API und ABI besteht der Unterschied darin, dass ABIs verwendet werden, um auf externe Codes zuzugreifen, die bereits kompiliert sind, während API Strukturen für die Verwaltung von Software sind. Das Definieren eines wichtigen ABI ist hauptsächlich die Arbeit von Linux -Verteilungen als für den Linux -Kernel. Für jeden Befehlssatz sollte ein spezifischer ABI definiert werden, z. B. x86-64. Endbenutzer von Linux-Produkten interessieren sich eher für die ABIs als an der API.
Systemanrufschnittstelle
Wie bereits erwähnt, spielt dies eine wichtigere Rolle im Kernel. Es ist eine Konfession des gesamten Teils aller vorhandenen Systemaufrufe.
Die C -Standardbibliothek
Alle Systemaufrufe des Kernels befinden.
Tragbare Betriebssystemschnittstelle (POSIX)
POSIX ist ein kollektiver Begriff der Standards für die Aufrechterhaltung der Kompatibilität zwischen den Betriebssystemen. Es deklariert die API zusammen mit Nutzschnittstellen und Befehlszeilenschalen. Die Linux -API verfügt nicht nur über die verwendbaren Funktionen, die vom POSIX definiert sind, sondern auch zusätzliche Funktionen in ihrem Kernel:
Weitere Informationen zu POSIX Standard finden Sie hier.
Frühere Versionen des Linux -Kernels waren so, dass alle ihre Teile in einem monolithischen Teile reflektiert wurden. Moderne Linux -Kernel haben jedoch die meisten ihrer Funktionalität in Modulen, die dynamisch in den Kernel eingebracht werden. Dies im Gegensatz zu monolithischen Typen wird als modulare Kernel bezeichnet. Ein solches Setup ermöglicht es einem Benutzer, Module in einem laufenden Kernel zu laden oder zu ersetzen, ohne das Neustart zu benötigen.
Das ladbare Linux -Kernelmodul (LKM)
Die grundlegende Methode zum Hinzufügen von Code im Linux -Kernel ist die Einführung von Quelldateien in den Kernel -Quellbaum. Möglicherweise möchten Sie jedoch einen Code hinzufügen, während der Kernel ausgeführt wird. Der auf diese Weise hinzugefügte Code wird als ladbares Kernelmodul bezeichnet. Diese speziellen Module führen verschiedene Aufgaben aus, sind jedoch in drei angegeben: Geräte -Treiber, Dateisystemtreiber und Systemaufrufe.
Das ladbare Kernelmodul kann mit den Kernelerweiterungen in anderen Betriebssystemen verglichen werden. Sie können ein Modul in den Kernel einfügen, indem Sie es entweder als LKM laden oder in den Basiskern binden.
Die Vorteile von LKMs um die Bindung in den Basiskernel:
Verwendung von LKMs
Im Gegensatz zu dem, was die meisten Leute sagen, ist das Zusammenstellen des Linux -Kernels eine einfache Aufgabe. Das Folgende ist eine Schritt-für-Schritt-Abbildung des Prozesses unter Verwendung einer der Linux-Verteilungen: Fedora 13 KDE. (Es ist ratsam, Ihre Daten und Ihr Grub zu sichern.Conf nur für den Fall, dass etwas schief geht)
TAR XVJF Linux-2.6.37.Teer.BZ2 |
Es ist möglich, einen Linux -Kernel von einer älteren Version auf eine neuere zu aktualisieren, während alle Konfigurationsoptionen aus der früheren Version beibehalten werden. Um dies zu erreichen, muss man zuerst die Back -up - .Konfiguration Datei im Kernel -Quellverzeichnis; Dies ist für den Fall, dass etwas schief geht, wenn Sie versuchen, Ihren Kernel zu verbessern. Die Schritte sind:
Herunterladen der neuen Quelle; Die Linux -Kernel -Entwickler verstehen, dass einige Benutzer möglicherweise nicht den vollständigen Quellcode für die Kernel -Updates herunterladen möchten, da dies Zeit und Bandbreite verschwenden würde. Daher wird ein Patch zur Verfügung gestellt, das eine ältere Kernel -Version aktualisieren kann. Benutzer müssen nur wissen, welcher Patch für eine bestimmte Version gilt, da eine Kernel -Patch -Datei den Quellcode nur von einer bestimmten Version aktualisiert. Die verschiedenen Patch -Dateien können auf folgende Arten angewendet werden
Hier sind detailliertere Schritte für den Prozess, um Ihren Kernel von der Quelle auf Debian sowie aus vorgefertigten Binärdateien auf CentOS und Ubuntu zu aktualisieren.
Der Linux -Kernel fungiert hauptsächlich als Ressourcenmanager, der als abstrakte Ebene für die Anwendungen fungiert. Die Anwendungen haben eine Verbindung zum Kernel, die wiederum mit der Hardware und den Diensten der Anwendungen interagiert. Linux ist ein Multitasking -System, mit dem mehrere Prozesse gleichzeitig ausgeführt werden können. Der Linux -Kernel ist aufgrund seiner Open -Source -Natur, die es Benutzern ermöglicht, den Kernel auf das zu ändern, was für sie und ihre Hardware geeignet ist. Daher kann es im Gegensatz zu anderen Betriebssystemen in einer Vielzahl von Geräten verwendet werden.
Das modulare Merkmal des Linux -Kernels verleiht seinen Benutzern mehr Nervenkitzel. Dies liegt an der Vielzahl von Modifikationen, die hier vorgenommen werden können, ohne das System neu zu starten. Die Flexibilität gibt seinen Benutzern einen großen Raum, um ihre Vorstellungen zu verwirklichen.
Darüber hinaus ist die monolithische Natur des Kernels ein großer Vorteil, da er eine hohe Verarbeitungsfähigkeit hat als der Mikrokernel. Der Hauptrückschlag beim Linux -Kernel -Typ ist, dass das gesamte System damit sinkt, wenn eines seiner Dienste ausfällt. Die neuesten Versionen wurden so gestaltet, dass wenn ein neuer Dienst hinzugefügt wird, es nicht erforderlich ist, das gesamte Betriebssystem zu ändern. Dies ist eine Verbesserung im Vergleich zu früheren Versionen.