Heim  >  Artikel  >  System-Tutorial  >  Der Unterschied zwischen Block- und String-Geräten unter Linux und deren Verwendung

Der Unterschied zwischen Block- und String-Geräten unter Linux und deren Verwendung

WBOY
WBOYnach vorne
2024-02-11 12:48:30847Durchsuche

Sind Sie als Linux-Benutzer jemals auf eine Situation gestoßen, in der Sie Blockgeräte oder Zeichengeräte verwenden müssen? Obwohl Blockgeräte und Zeichengeräte in Aussehen und Funktionalität ähnlich sind, unterscheiden sie sich stark in der Art und Weise, wie sie implementiert und verwendet werden. Heute vermitteln wir Ihnen ein tiefgreifendes Verständnis der Block- und String-Geräte unter Linux, erkunden ihre Unterschiede und zeigen Ihnen, wie Sie sie richtig verwenden.

Der Unterschied zwischen Block- und String-Geräten unter Linux und deren Verwendung

Geräte im System, die zufällig (nicht in der Reihenfolge) auf Datenstücke fester Größe (Blöcke) zugreifen können, werden Blockgeräte genannt, und diese Datenstücke werden Blöcke genannt. Das gebräuchlichste Blockgerät ist die Festplatte, es gibt aber auch viele andere Blockgeräte wie Diskettenlaufwerke, CD-ROM-Laufwerke und Flash-Speicher. Beachten Sie, dass sie alle zum Mounten des Dateisystems verwendet werden – auf diese Weise wird im Allgemeinen auf Blockgeräte zugegriffen.

Ein weiterer grundlegender Gerätetyp ist das Zeichengerät. Der Zugriff auf Zeichengeräte erfolgt in geordneter Weise entsprechend dem Zeichenstrom. Serielle Anschlüsse und Tastaturen sind alle Zeichengeräte. Wenn auf ein Hardwaregerät als Zeichenstrom zugegriffen wird, sollte es als Zeichengerät klassifiziert werden. Wenn umgekehrt auf ein Gerät zufällig (außerhalb der Reihenfolge) zugegriffen wird, handelt es sich um ein Blockgerät.

Der grundlegende Unterschied zwischen diesen beiden Gerätetypen besteht darin, ob auf sie zufällig zugegriffen werden kann – mit anderen Worten, ob der Zugriff auf das Gerät nach Belieben von einem Ort zum anderen springen kann. Beispielsweise stellt ein Gerät wie eine Tastatur einen Datenstrom bereit. Wenn Sie die Zeichenfolge „fox“ eingeben, gibt der Tastaturtreiber den Datenstrom zurück, der aus drei Zeichen in genau derselben Reihenfolge wie die Eingabe besteht. Es macht keinen Sinn, den Tastaturtreiber zu bitten, die Zeichenfolge in der falschen Reihenfolge oder andere Zeichen zu lesen. Die Tastatur ist also ein typisches Zeichengerät, das den vom Benutzer über die Tastatur eingegebenen Zeichenstrom bereitstellt. Das Lesen über die Tastatur führt zu einer Folge von Zeichen, zuerst „f“, dann „o“, dann „x“ und schließlich dem Dateiende (EOF). Wenn niemand auf der Tastatur tippt, ist der Zeichenstrom leer. Anders verhält es sich bei Festplattengeräten. Der Treiber des Festplattengeräts fordert möglicherweise an, den Inhalt eines beliebigen Blocks auf der Festplatte zu lesen, und liest dann den Inhalt anderer Blöcke auf der Festplatte. Die Positionen der gelesenen Blöcke auf der Festplatte müssen also nicht aufeinander folgen Auf die Festplatte kann wahllos zugegriffen werden, es handelt sich offensichtlich nicht um einen Stream, sondern um ein Blockgerät.

Der Kernel verwaltet Blockgeräte viel detaillierter als die Verwaltung von Zeichengeräten. Die zu berücksichtigenden Probleme und die zu erledigende Arbeit sind viel komplexer als bei Zeichengeräten. Dies liegt daran, dass ein Zeichengerät nur einen Standort steuern muss – den aktuellen Standort –, während ein Blockgerät auf Standorte zugreifen muss, die zwischen verschiedenen Abschnitten des Mediums hin- und herbewegt werden können. Tatsächlich muss der Kernel kein dediziertes Subsystem zur Verwaltung von Zeichengeräten bereitstellen, aber die Verwaltung von Blockgeräten muss über ein dediziertes Subsystem verfügen, das Dienste bereitstellt. Die Komplexität von Blockgeräten ist nicht nur viel höher als die von Zeichengeräten, der wichtigere Grund ist auch, dass Blockgeräte sehr hohe Anforderungen an die Ausführungsleistung stellen. Jede zusätzliche Nutzung der Festplatte verbessert die Leistung des gesamten Systems Effekt Viel größer als eine Verdoppelung der Tastaturdurchsatzgeschwindigkeit. Darüber hinaus lässt die Komplexität von Blockgeräten, wie wir sehen werden, viel Raum für solche Optimierungen.

Nacktes Gerät

Um es einfach auszudrücken: Auf Blockgeräte kann zufällig zugegriffen werden, auf Zeichengeräte kann jedoch nicht zufällig zugegriffen werden. Wie lässt sich das nackte Gerät erklären?

Können Raw-Geräte, wie z. B. Raw-Disk-Geräte, nicht auch zufällig gelesen werden? Verwenden Sie dann Rohgeräte, um eine 2G-Datendatei in der Datenbank zu erstellen. Um auf den letzten Datenblock zuzugreifen, muss dies offensichtlich nicht mit den Fakten übereinstimmen Das Lesen bedeutet nicht, dass die Datenbank nicht auch zufällig lesen kann.

Blockgeräte werden aus dem Systemcache gelesen, nicht direkt von der physischen Festplatte. Zeichengeräte können direkt von der physischen Festplatte gelesen werden, ohne den Systemcache zu durchlaufen. (Z. B. Tastatur, direkt entsprechend unterbrechen)

Durch die Einleitung dieses Artikels verstehen wir, dass es große Unterschiede bei der Implementierung und Verwendung von Blockgeräten und String-Geräten gibt. Kurz gesagt, das Blockgerät ist auf die Ein- und Ausgabe von Blockdaten ausgerichtet, während das Zeichenfolgengerät auf die Ein- und Ausgabe von Zeichenstromtypen ausgerichtet ist. Gleichzeitig können wir in tatsächlichen Anwendungen den geeigneten Gerätetyp entsprechend unseren eigenen Anforderungen auswählen und die entsprechenden Befehle zum Erstellen, Mounten, Formatieren und für andere Vorgänge verwenden. Im Allgemeinen ist die Beherrschung der Verwendung von Block- und String-Geräten von großer Bedeutung für die Verbesserung der Leistungsoptimierung und des Verwaltungsniveaus von Linux-Systemen.

Das obige ist der detaillierte Inhalt vonDer Unterschied zwischen Block- und String-Geräten unter Linux und deren Verwendung. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:lxlinux.net. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen