Heim  >  Artikel  >  Betrieb und Instandhaltung  >  Gibt es eine Hauptfunktion im Linux-Kernel?

Gibt es eine Hauptfunktion im Linux-Kernel?

百草
百草Original
2023-07-10 10:09:041788Durchsuche

Es gibt eine Hauptfunktion im Linux-Kernel, da sich die Hauptfunktion oben im Linux-Kernel-Code befindet. Die Hauptfunktion ist hauptsächlich dafür verantwortlich, die Umgebungsvariablen des Systems vom Kernel Control Block (KCB) abzurufen und die vom System benötigten Module zu initialisieren. Die Hauptfunktion ist der Einstiegspunkt des Programms. Main ist ein zwischen der Anwendung und dem Betriebssystem vereinbarter Schnittstellenname, daher muss die erste Funktion jeder Anwendung unter Linux main sein.

Gibt es eine Hauptfunktion im Linux-Kernel?

Die Betriebsumgebung dieses Artikels: Linux 5.18.14-System, DELL G3-Computer.

Der Linux-Kernel hat die Hauptfunktion; Die Hauptfunktion ist der Einstiegspunkt des Programms. Main ist ein zwischen der Anwendung und dem Betriebssystem vereinbarter Schnittstellenname, daher muss die erste Funktion jeder Anwendung in Linux sein.

Der Linux-Kernel ist der Kern des Betriebssystems. Er ist für die Ausführung von Treibern, Startaufgaben, die Fehlerbehandlung, die Speicherverwaltung und andere zugrunde liegende Funktionen des Betriebssystems verantwortlich. In diesem Artikel werden die wichtigen Hauptfunktionen im Linux-Kernel vorgestellt.

Die Hauptfunktion befindet sich oben im Linux-Kernel-Code. Die Hauptfunktion ist hauptsächlich dafür verantwortlich, die Umgebungsvariablen des Systems vom Kernel Control Block (KCB) abzurufen und die vom System benötigten Module (Speicherverwaltung, Gerätetreiber usw.) zu initialisieren.

Die C-Sprache legt fest, dass die Hauptfunktion nur zwei Parameter haben kann, einer ist argc, einer ist argv. Und argc kann nur eine Ganzzahl sein und der zweite muss ein Array von Zeigern auf Zeichenfolgen sein.

Da die Hauptfunktion dies nicht kann von anderen Funktionsaufrufen verwendet werden, sodass es unmöglich ist, den tatsächlichen Wert innerhalb des Programms abzurufen. Wo weisen Sie also die tatsächlichen Parameterwerte den formalen Parametern der Hauptfunktion zu? Tatsächlich werden die Parameterwerte der Hauptfunktion über die Befehlszeile des Betriebssystems abgerufen. Wenn wir eine ausführbare Datei ausführen möchten,

geben Sie den Dateinamen an der DOS-Eingabeaufforderung ein und geben Sie dann die tatsächlichen Parameter ein, um diese tatsächlichen Parameter in die formalen Parameter von main zu übertragen. Die allgemeine Form der Befehlszeile in der DOS-Eingabeaufforderung lautet:

C:>Name der ausführbaren Datei Parameter...; Es sollte jedoch besonders darauf geachtet werden, dass die beiden formalen Parameter von main nicht identisch sind Position als Parameter in der Befehlszeile. Der entsprechende Parameter

argc: stellt die Anzahl der Parameter in der Befehlszeile dar (beachten Sie, dass der Textname selbst auch ein Parameter ist. Der Wert von

rgc wird automatisch vom System zugewiesen). entsprechend der tatsächlichen Anzahl von Parametern bei der Eingabe der Befehlszeile

argv: Der Parameter ist ein Array von Zeichenfolgenzeigern, und der Wert jedes Elements ist die erste Adresse jeder Zeichenfolge in der Befehlszeile (die Parameter werden als Zeichenfolgen behandelt). . Die Länge des Zeiger-Arrays

ist die Anzahl der Parameter. Der Anfangswert des Array-Elements wird vom System automatisch zugewiesen

Linux-Kernel-Quellcode-Analyse der Hauptfunktion

1 Die Hauptfunktion ist der Einstieg in die C-Sprache nur eine Konvention, keine ewige Regel. Das unveränderliche eiserne Gesetz! Dem wesentlicheren Assembler-Code des Programms nach zu urteilen, wird nur vereinbart, dass die Assembly nach der Initialisierung zu einer Bezeichnung mit dem Namen „main“ springt. Dies bedeutet, dass diese Bezeichnung beispielsweise auch in den C-Spracheintrag umbenannt werden kann für Linux ist start_kernel (); Von dieser Label-Adresse wird die Welt der C-Sprache kommen. Der Name „Main“ wird nur aufgrund der Zustimmung aller verwendet. Es ist in Ordnung, herumzuspielen, wenn man sich nicht an die Vereinbarung hält, genau wie das Ladekabel von Apple und andere Dinge sich von anderen unterscheiden.

2. Beim Kompilieren gibt es keine mehreren Hauptfunktionen! Obwohl jede Anwendung eine Hauptfunktion hat (aus Sicht der Anwendung ist der Einstiegspunkt der Anwendung die Hauptfunktion); die Anwendungen werden jedoch unabhängig voneinander kompiliert und nicht zusammen kompiliert, und der Betriebssystemkern ist noch weniger wahrscheinlich um mit der Anwendung zu interagieren! Es gibt also überhaupt keinen Konflikt zwischen mehreren Netzen! ! Es kann die einheitliche Schnittstelle zwischen dem Betriebssystem und dem Anwendungsprogramm sein, oder es kann der Nebeneffekt der Aussage sein, dass „main“ der Programmeinstiegspunkt ist. „Main“ ist ein zwischen dem Anwendungsprogramm und dem Betriebssystem vereinbarter Schnittstellenname! Daher muss die erste Funktion jeder Anwendung unter Linux „main“ sein. Es sei denn, Sie ändern die Kernel-Planungsschnittstelle.

Das obige ist der detaillierte Inhalt vonGibt es eine Hauptfunktion im Linux-Kernel?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn