Heim >System-Tutorial >LINUX >Bietet der uClinux-Port des Linux-Kernels Nicht-MMU-Unterstützung?
Es ist lang und enthält viele technische Inhalte. Klicken Sie also, um ihm zu folgen, und Sie werden sich nicht verlaufen.
Vorwort: Den Linux-Kernel verstehen
Ein Computersystem ist eine Symbiose aus Hardware und Software. Sie sind voneinander abhängig und untrennbar. Die Computerhardware „Linux-Kernel-Transplantationsschritte“ ist reich an Peripheriegeräten, Prozessoren, Speicher, Festplatten und anderen elektronischen Geräten, die den Zylinder des Computers bilden. Und ohne Software zur Bedienung und Steuerung kann es nicht selbstständig funktionieren. Die Software, die diese Steuerungsarbeit erledigt, wird als Betriebssystem bezeichnet. In der Linux-Terminologie wird es „Kernel“ oder „Kern“ genannt. Die Hauptmodule (oder Komponenten) des Linux-Kernels sind in die folgenden Teile unterteilt: Speicherverwaltung, CPU- und Prozessverwaltung, Dateisystem, Geräteverwaltung und Treiber, Netzwerkkommunikation, Linux-Forum und Systeminitialisierung (Boot), Systemaufrufe usw . Der Linux-Kernel implementiert viele wichtige Architektureigenschaften. Auf einer höheren oder niedrigeren Ebene wird der Kernel in Subsysteme unterteilt. Linux kann auch als Ganzes betrachtet werden, da es alle diese Basisdienste in den Kernel integriert. Dies unterscheidet sich von der Mikrokernel-Architektur. Erstere stellt einige grundlegende Dienste bereit, z. B. Kommunikation, E/A, Speicher und Prozessverwaltung, und spezifischere Dienste werden in die Mikrokernel-Schicht eingefügt.
Im Laufe der Zeit ist der Linux-Kernel hinsichtlich Videospeicher und CPU-Auslastung effizienter geworden und sehr stabil. Und das Interessanteste an Linux ist, dass es trotz dieser Größe und Komplexität immer noch gut portierbar ist. Linux ist so kompiliert, dass es auf einer großen Anzahl von Prozessoren und Plattformen mit unterschiedlichen architektonischen Einschränkungen und Anforderungen läuft. Ein Gegenbeispiel ist, dass Linux auf einem Prozessor laufen kann, der über eine Grafikspeicherverwaltungseinheit (MMU) verfügt, oder auf Prozessoren, die über keine MMU verfügen. Der uClinux-Port des Linux-Kernels bietet Unterstützung für Nicht-MMUs.
In der IT-Branche Zum Beispiel: Embedded-Entwicklung, Treiberentwicklung, Android-Entwicklung, C++-Entwicklung, Java-Entwicklung, wenn Sie mit den zugrunde liegenden Aspekten in Berührung kommen
Also
Den Kernel verstehen: Dies wird dazu beitragen, dass Ihre Entwicklungsarbeit entsprechende Vorteile generiert.
Den Kernel verstehen: Dadurch können Sie die zugrunde liegenden Prinzipien und den Entwicklungsquellcode besser verstehen.
Der Kern ist ein Bonus für die schriftliche Prüfung.
Der Kernel ist der einzige Weg, ein Experte zu werden.
Ob Sie sich mit der Kernel-Entwicklung beschäftigen oder nicht, die Kernel-Technologie ist die beste Wahl, um Fähigkeiten zu reservieren, Ihren Horizont zu erweitern und Ihre technischen Fähigkeiten zu erweitern.
Weitere Informationen:
Analyse des Linux-Kernels „Schwachstellensicherheit und virtueller Videospeicher“
Analyse des Linux-Kernel-Socket-Prinzips und der Architektur
Analyse des „Physical Video Memory Model“ des Linux-Kernels
Empfohlene Kernel-Lernroute. Wenn Sie den Kernel studieren möchten und mehr über den Kernel erfahren möchten, können Sie darauf zurückgreifen. 1: Betriebssystemprinzipien/Zusammenstellung Thema 1: Betriebssystemprinzipien
Prozessmanagement: Prozessstatus und -wechsel, gegenseitiger Prozessausschluss und -synchronisation, Prozessorplanung, Prozess-Deadlock
Videospeicherverwaltung: Speicherstruktur, Partitionsspeicherverwaltung, Segmentverwaltung, Seitenverwaltung, virtueller Speicher
Geräteverwaltung: C-Laufwerk-Cache, RAID (C-Laufwerk-Array), E/A-Puffer
Dateiverwaltung: Dateiorganisationsstruktur, Heap-Dateiprinzip, Speicherplatzverwaltung, Dateiverzeichnisverwaltung
2: Fundierte Kenntnisse der Assemblersprache
x86/x86_64-Architektur: x86/x86_64-Architektur, Grundlagen der Assemblersprache, Datenübertragung, arithmetische Operationen, Adressierung, Prozedur- und Bedingungsverarbeitung, Gleitkommaverarbeitung und Befehlscodierung
ARM-Architektur: ARM-Kernmikroprozessor, gemeinsames ARM-Anweisungssystem, ARM-Assembly-Programm und Debugging, Ausnahme-Interrupt/Reset-Handler/SWI-Ausnahme-Interrupt, RealViewMDK-Installation und -Konfiguration, ARM-Assembly und C-Hybrid-Implementierung, Datenlade- und Speicheranweisungen Realisieren
Zweitens: Prozessmanagement Thema 1: Prozessgrundlagen
Organisationsstruktur des Linux-Kernel-Quellcodes
Prozessprinzip und Prozessstatus
Lebenszyklus und Systemaufrufe: Copy-on-Write-Prinzip, Prozessspeicherlayout, Prozessstapelverwaltung, Systemaufrufimplementierung
Task_struct-Datenstrukturanalyse
2: Prozessplanung
Planungsstrategien: SCHED_DEADLINE, SCHED_FIFO, SCHED_RR, SCHED_NORMAL
Prozesspriorität: Planungspriorität, statische Priorität, normale Priorität, Echtzeitpriorität
Scheduling-Klassenanalyse: stop_sched_class, dl_sched_class, rt_sched_class, cfs_sched_class, empty_shced_class
SMP-Planung: Threads migrieren/Prozessoren isolieren, Prozessorlastausgleich für Terminplanung, Prozessorlastausgleich für Echtzeitplanung und Prozessorlastausgleich für faire Planung
Drei: Videospeicherverwaltung Thema 1: Videospeicherprinzip
SMP/NUMA-Modellorganisation
Struktur und Modell der Organisation des chemischen Gedächtnisses
Seitentabelle/Seitentabellen-Cache: Verzeichnisstruktur des Seitentabellen-Frameworks, TLB-Eintragsformat und -verwaltung, Adressraumkennung (ASID), Kennung der virtuellen Maschine (VMID)
Prozessor-Cache: Cache-Struktur und -Strategie, SMP-Cache-Konsistenz, Cache- und TLB-Steuerung
Videospeicherzuordnung: Datenstrukturanalyse, Erstellung von Videospeicherzuordnungen, Löschung von Videospeicherzuordnungen, Implementierung von Systemaufrufen
2: Virtueller Videospeicher
Blockzuordnung: Prinzip der Videospeicherzuteilung, Seitenzuteilung und Seitenfreigabe, SLAB-Blockzuteilung, SLOB-Blockzuteilung, SLUB-Blockzuteilung, Systemplanungs-Socket
Umfassende Seitenmodule: Standard-Riesenseiten, transparente Riesenseiten, LRU-Algorithmus und Reverse-Mapping, direkte und asynchrone Seitenrecyclingprinzipien, Ausführungsplan für das Recycling inaktiver Seiten, Seitenaustauschprinzipien, Recycling-Slab-Cache-Prinzipien, Behandlung von Seitenfehlerausnahmen, Speicherfragmentierung , Initiieren des Videospeicher-Recyclings, Struktur/Erstellung/Aktivierung von Swap-Bereichsdaten, technische Prinzipien der Speichererschöpfung, Kalibrierungsmethode für Ausnahmen bei fehlenden Seiten, KASAN-Inspektionstool, Behandlung von Ausnahmen bei fehlenden Swap-Seiten
Videospeicherbarriere und Kernel-Technologie zum gegenseitigen Ausschluss
Weitere Informationen:
Kernel muss lernen|„Physischer Videospeicher und virtueller Videospeicher“|VMA-Verwaltung/malloc/mmap
Technische Punkte des Linux-Kernels |. Seitenzuordnungspfad |
3: Aufruf des Videospeichersystemskmalloc/vmalloc
Prinzip und Implementierungsvorgänge des Videospeicherpools
Parameter und Implementierung der Videospeicheroptimierung
Implementierung von Seiten-Caching
Implementierung des Blockcaches
4: Perf-Leistungsanalyse-Tool
Perf-Prinzipmechanismus und Installationskonfiguration
Perf-Datenerfassungsbefehl 29 Tool-Anwendungen
perf sammelt Daten zur Flammendiagrammanalyse
Viertens: Netzwerkvertragsstapel Thema 1: Netzwerkinfrastruktur
ICMP-Vertrag
Benutzer-Datagramm-Vertrag (UDP)
Übertragungskontrollvertrag (TCP)
Stream Control Transmission Contract (SCTP)
Datagram Crosstalk Control Contract (DCCP)
IPv4-Richtlinienrouting
Drahtloses Subsystemmodul: 802.11MAC-Rahmenstrukturanalyse, Scannen/Authentifizierung/Zuordnung, Mac80211-Empfangs- und Übertragungsimplementierung, hoher Durchsatz (802.11n), Mesh-Netzwerk (802.11s)
IPv4-Umleitungsnachricht/FIB-Tabelle
2: Netzwerkvertragsstapel
ARP (Adressauflösungsvertrag)
Benutzer-Datagramm-Vertrag (UDP)
Übertragungskontrollvertrag (TCP)
Zwischenrouting: Multicast-Routing, Richtlinien-Routing, Multipath-Routing
IPv4-Pakete empfangen/senden
IPv6-Pakete empfangen/senden
InfiniBand-Stack-Architektur: RDMA-Struktur (Remote Direct Memory Access), InfiniBand-Komponenten und -Adressierung, InfiniBand-Funktionen und Datenpakete, Protokollstapelregistrierung/Paketempfang/Paketsendeprozessschema
Jetzt lernen: Beherrschen Sie die Linux-Kernel-Contract-Stack-Architektur in 90 Minuten
3: System-API-Aufruf
POSIX-Netzwerk-API-Aufruf
Epoll-Kernel-Prinzip und Implementierung
Konfiguration der Netzwerksystemparameter
V: Gerätetreiber-Thema 1: Gerätetreiber-Subsystem
Prinzip des I/O-Mechanismus
Ressourcenzuweisung und -verwaltung
Zeichengeräte-Subsystem
Geräte-Subsystem blockieren
Netzwerkschnittstellenkartentreiber
2: Linux-Gerätemodell
Eingehende Analyse von LDM: LDM-Datenstruktur, Gerätetreiber, Kobject-Struktur, kobj_type, Kernel-Objektsammlung
Gerätemodell und sysfs: sysfs-Dateien und -Eigenschaften, die die Adressierung von sysfs-Eigenschaftsdateien ermöglichen,
3: Bedienung des Zeichengeräts
Hauptgerät und Sekundärgerät
Gerätedatei öffnen
Zeichengeräte zuweisen und registrieren
Implementierung des Dateischreibvorgangs: Öffnungs-/Freigabemodus, Lese-/Schreibmodus, llseek/poll-Methode, Füllen der file_operations-Struktur
Module einfügen und löschen
4: Gerätebetrieb blockieren
Blockgerätedarstellung und Datenstruktur
BIO-Datenstruktur
ioctl-Systemaufruf
Busmodul: ISA-Bus, PCI/PCI-E-Bus, USB-Bus, VESA-Bus, I2C-Bus
5: Netzwerkkarten-Gerätetreiber
Datenstruktur: Socket-Pufferstruktur, Netzwerk-Socket-Struktur
Pufferverwaltung und Parallelitätskontrolle
ISA-Netzwerktreiber
Asynchroner Übertragungsmodus für Geldautomaten
Netzwerkdurchsatz
Weitere Informationen: Analyse des Quellcodes des Linux-Kernel-Socket-Kommunikationsprozesses
Sechs: Kernel-Komponententhema 1: Zeitmanagement
Weltzeit-Subsystem
High-Frame-Rate-Timer
Dynamische Uhrdatenstruktur
Timer-Systemaufruf
2: Seiten- und Block-Caching
Betrieb und Implementierung der Seiten-Cache-Struktur
Block-Cache-Struktur und Implementierung
Adressraum-Datenstruktur und Seitenbaum
3: Datensynchronisation
Zahlensystem-Synchronisationsmechanismus
Inode-Synchronisation und Crosstalk
Rückschreiben und vollständige Synchronisierung erzwingen
4: Kernel-Aktivität
Interrupt-Typ/Hardware-IRQ
irq_desc-Datenstruktur
Verwaltet IRQ und Soft-Interrupt
Tasklet erstellen/registrieren/ausführen
Warteschleife und Fertigstellungsbetrag
Sieben: Thema Dateisystem
1: Virtuelles Dateisystem VFS
Forschung zu Dateisystemtypen und Dateimodellen
Datenstruktur: Superblock (super_block), Mount-Deskriptor (Mount-Struktur), Indexknoten (Inode-Struktur), Verzeichniseintrag (Dentry-Struktur)
Dateisystemaufrufe: Dateien öffnen/schließen, Dateien erstellen/löschen, Dateien lesen/schreiben, technische Prinzipien zum Zurückschreiben von Dateien/Socket-Implementierung
Dateisystem mounten: Systemaufruf-Mount-Verarbeitungsprozess, Mount/Mount-Namespace binden, RootFS-Dateisystem mounten/registrieren
Kein persistentes Dateisystem: Proc-Dateisystem (Proc-Datenstruktur, Laden von Proc/Verwalten von Proc-Datenelementen, Implementierung des Lesens und Schreibens von Daten), einfaches Dateisystem (sequentielle Datei, Planungsdateisystem, Pseudodateisystem)
2: Dateisystem des Laufwerks C
Ext2-Dateisystem: chemische Struktur und Datenstruktur, Dateisystem erstellen, Dateisystem betreiben
Ext3-Dateisystem
Ext4-Dateisystem
JBD2 protokollieren
3: User-Space-Dateisystem
Architekturdesign und -prinzip verschmelzen
Fünf Kernwarteschlangen
Verschmelzung des User-Space-Prozesses und des Implementierungsplans
Acht: Praktisches Thema des Kernel-Projekts
1-Linux-Kernel-Kompilierungs- und Systemersatzimplementierungsmethode
2-Implementierungsplan für prozessübergreifende Kommunikation/Management (Erlaubnis/Priorität)
Implementierung des 3-NIC-Netzwerkkartentreibers
4-mmap-Systemaufruf/Mapping-Benutzervideospeicher-Implementierung
5-Implementierung des Linux-Videospeicherparametersystems
6-Debugging und Leistungsoptimierung (debugfs/printk/ftrace)
7-Slab Block Allocator-Videospeicherzuweisungs-Implementierungsmechanismus
8-Tasklet/Frontline-Thread- und Timer-Implementierung
9-Implementierung des Linux-Kernel-Proc-Dateisystems
10-Implementierung der Linux-Kernel-Firewall iptables
Das obige ist der detaillierte Inhalt vonBietet der uClinux-Port des Linux-Kernels Nicht-MMU-Unterstützung?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!