/******************** * Virtuelles Dateisystem VFS ********************/ (1) Einführung in VFS Als Subsystem des Kernels stellt das virtuelle Dateisystem VFS dateisystembezogene Schnittstellen für Userspace-Programme bereit. VFS ermöglicht Benutzern die direkte Verwendung von Systemaufrufen wie open(), ohne das spezifische Dateisystem und die tatsächlichen physischen Medien berücksichtigen zu müssen. VFS bietet ein allgemeines Dateisystemmodell, das alle gängigen Funktionen und Verhaltensweisen von Dateisystemen umfasst, die wir uns vorstellen können. Durch diese Abstraktionsschicht ist es möglich, eine gemeinsame Schnittstelle für den Betrieb aller Arten neuer Dateisysteme zu verwenden. a. Aufrufmodell write(): Benutzerbereich --> sys_write(): VFS --> So schreiben Sie in das Dateisystem: Dateisystem --> Physische Medien (2) Wesentliche Ziele des VFS VFS verfolgt einen objektorientierten Ansatz und verwendet eine Reihe von Datenstrukturen zur Darstellung allgemeiner Dateiobjekte. Diese Strukturen enthalten nicht nur Daten, sondern auch Zeiger für die Verarbeitung dieser Daten. VFS umfasst vier Hauptobjekttypen. a.Superblock-Objekt super_block Alle Dateisysteme müssen einen Superblock implementieren. Dabei handelt es sich um ein Objekt, in dem Informationen zu einem bestimmten Dateisystem gespeichert werden. Normalerweise wird dieser in einem bestimmten Sektor der Festplatte gespeichert. Pro Dateisystem gibt es nur einen Superblock. Bei nicht festplattenbasierten Dateisystemen, wie etwa dem speicherbasierten Dateisystem sysfs, erstellt Linux vor Ort einen Superblock und speichert ihn im Speicher. Die Struktur des Superblocks ist super_block, der in <linux/fs.h> definiert ist. Die Methodenstruktur der Superblockoperation ist super_operations, die auch in fs.h definiert ist. Der Code zum Erstellen, Verwalten und Zerstören von Superblockobjekten befindet sich in /fs/super.c. Wenn das Dateisystem installiert ist, ruft der Kernel die Funktion alloc_super() auf, um den Superblock des Dateisystems von der Festplatte zu lesen und seine Informationen in das Superblockobjekt im Speicher zu füllen. b. Indexknotenobjekt-Inode Das Indexknotenobjekt enthält alle Informationen, die der Kernel zum Bedienen einer Datei oder eines Verzeichnisses benötigt, z. B. Zugriffskontrollberechtigungen, Größe, Eigentümer, Erstellungszeitpunkt der Datei usw. Das System speichert diese Informationen in einer separaten Datenstruktur, die als Inode bezeichnet wird. Eine Datei hat nur ein Indexknotenobjekt im Speicher und spezielle Dateien (wie Pipes und Gerätedateien) haben auch ihre entsprechenden Indexknoten. Die Inode-Struktur ist in <linux/fs.h> definiert und die entsprechende Operationsfunktionsstruktur ist inode_operations c. Verzeichniseintrag Objekt dentry Jedes Verzeichniseintragsobjekt stellt einen bestimmten Teil eines Pfads dar, beispielsweise den Pfad /bin/vi, wobei /, bin und vi alle zu Verzeichniseintragsobjekten gehören. Verzeichniseintragsobjekte haben keine entsprechende Datenträgerstruktur und VFS erstellt sie vor Ort basierend auf dem Pfadnamen in Zeichenfolgenform. Jede Datei entspricht nur einem Dentry-Objekt. Die Dentry-Struktur ist in <linux/dcache.h> definiert, und die entsprechende Verzeichniseintragsoperationsfunktionsstruktur dentry_operations ist ebenfalls in <linux/dcache.h> definiert. d. Dateiobjektdatei Ein Dateiobjekt stellt eine Datei dar, die ein Prozess geöffnet hat. Dieses Objekt wird beim Öffnen erstellt und beim Schließen zerstört. Da mehrere Prozesse gleichzeitig eine Datei öffnen und verarbeiten können, kann eine Datei mehrere Dateiobjekte im Speicher haben. Dateiobjekte werden durch die Dateistruktur dargestellt, die in <linux/fs.h> definiert ist. Die Operationsfunktionsstruktur des Dateiobjekts ist file_operations, die in <linux/fs.h> definiert ist. Dieser Funktionssatz ist sehr wichtig und umfasst die eigentlichen Operationsfunktionen der Datei. Der Benutzerbereich ruft write auf, was schließlich write in file_operations aufruft. Wir müssen ein Zeichengerät vom Typ char implementieren, d. h. die in file_operations unterstützten Funktionen implementieren. Zusammenfassen Das Obige ist der vollständige Inhalt dieses Artikels. Ich hoffe, dass der Inhalt dieses Artikels einen gewissen Lernwert für Ihr Studium oder Ihre Arbeit hat. Vielen Dank für Ihre Unterstützung von 123WORDPRESS.COM. Wenn Sie mehr darüber erfahren möchten, schauen Sie sich bitte die folgenden Links an Das könnte Sie auch interessieren:
|
>>: Detailliertes Tutorial zur Installation von mysql5.7.18 auf centos7.3
Enctype: Gibt den Kodierungstyp an, der vom Browse...
In diesem Artikel wird hauptsächlich die wunderba...
Einführung Binlog-Protokolle, also binäre Protoko...
Linux ist ein offenes System. Im Internet sind vi...
Nachdem ich MySQL installiert hatte, erhielt ich ...
Um Kernelmodule in CentOS automatisch zu laden, k...
Inhaltsverzeichnis 1. Holen Sie sich den Wert des...
KDE Abkürzung für Kool Desktop Environment. Eine ...
Wenn wir verstehen, wie Tomcat gleichzeitige Anfr...
Inhaltsverzeichnis 1. Einleitung 2. Beschreibung ...
Inhaltsverzeichnis 1. So führen Sie stapelweise U...
Inhaltsverzeichnis Überblick Klecks Blob in Aktio...
Die folgenden Funktionsdemonstrationen basieren a...
Inhaltsverzeichnis 1. Übergeordnetes Element über...
Mit den MySQL-Funktionen CAST() und CONVERT() kön...