En tant qu'utilisateur Linux, avez-vous déjà rencontré une situation dans laquelle vous devez utiliser des périphériques bloc ou des périphériques caractère ? Bien que les périphériques bloc et les périphériques caractère soient similaires en termes d’apparence et de fonctionnalité, ils sont très différents dans la manière dont ils sont implémentés et utilisés. Aujourd'hui, nous allons vous amener à avoir une compréhension approfondie des périphériques bloc et chaîne sous Linux, à explorer leurs différences et comment les utiliser correctement.
Les appareils du système qui peuvent accéder à des éléments de données de taille fixe (morceaux) de manière aléatoire (et non dans l'ordre) sont appelés appareils en bloc, et ces éléments de données sont appelés blocs. Le périphérique bloc le plus courant est le disque dur, mais il existe de nombreux autres périphériques bloc tels que les lecteurs de disquettes, les lecteurs de CD-ROM et la mémoire flash. Notez qu'ils sont tous utilisés de manière à monter le système de fichiers - c'est ainsi que l'on accède généralement aux périphériques bloc.
Un autre type d'appareil de base est l'appareil à caractères. Les périphériques de caractères sont accessibles de manière ordonnée en fonction du flux de caractères. Les ports série et les claviers sont tous des périphériques de caractères. Si un périphérique matériel est accédé en tant que flux de caractères, il doit être classé comme périphérique de caractères ; à l'inverse, si un périphérique est accédé de manière aléatoire (dans le désordre), il s'agit alors d'un périphérique de bloc.
La différence fondamentale entre ces deux types d'appareils est de savoir si l'on peut y accéder de manière aléatoire - en d'autres termes, si l'accès à l'appareil peut passer d'un endroit à un autre à volonté. Par exemple, un périphérique tel qu'un clavier fournit un flux de données lorsque vous tapez la chaîne « fox », le pilote du clavier renvoie le flux de données composé de trois caractères exactement dans le même ordre que l'entrée. Cela n'a aucun sens de demander au pilote du clavier de lire la chaîne dans le désordre ou de lire d'autres caractères. Le clavier est donc un périphérique de caractères typique, et ce qu'il fournit est le flux de caractères saisi par l'utilisateur à partir du clavier. La lecture au clavier donne lieu à un flux de caractères, d'abord "f", puis "o", puis "x", et enfin la fin du fichier (EOF). Lorsque personne ne tape sur le clavier, le flux de caractères est vide. La situation avec les périphériques de disque dur est différente. Le pilote du périphérique de disque dur peut demander de lire le contenu de n'importe quel bloc sur le disque, puis se tourner pour lire le contenu d'autres blocs. Les positions des blocs lus sur le disque ne doivent pas nécessairement être consécutives, donc le disque dur. le disque est accessible de manière aléatoire. Au lieu d'être accessible sous forme de flux, il s'agit évidemment d'un périphérique bloc.
Le noyau gère les périphériques bloc de manière beaucoup plus détaillée que la gestion des périphériques caractère. Les problèmes à prendre en compte et le travail à effectuer sont beaucoup plus complexes que les périphériques caractère. En effet, un périphérique de type personnage n'a besoin de contrôler qu'un seul emplacement (l'emplacement actuel), tandis qu'un périphérique de type bloc doit pouvoir accéder à des emplacements qui peuvent être déplacés d'une section à l'autre du support. Ainsi, en fait, le noyau n'a pas besoin de fournir un sous-système dédié pour gérer les périphériques caractères, mais la gestion des périphériques bloc doit avoir un sous-système dédié qui fournit des services. Non seulement la complexité des périphériques bloc est beaucoup plus élevée que celle des périphériques caractère, mais la raison la plus importante est que les périphériques bloc ont des exigences très élevées en matière de performances d'exécution ; chaque utilisation supplémentaire du disque dur améliorera les performances de l'ensemble du système et ses performances ; effet Bien supérieur au doublement de la vitesse de débit du clavier. De plus, comme nous le verrons, la complexité des dispositifs blocs laisse beaucoup de place à de telles optimisations.
Appareil nu
Pour faire simple, les appareils bloqués sont accessibles de manière aléatoire, mais les appareils de caractère ne peuvent pas être accédés de manière aléatoire. Comment expliquer l'appareil nu ?
Les périphériques bruts, tels que les périphériques de disque brut, ne peuvent-ils pas être lus de manière aléatoire ? Utilisez ensuite un équipement brut pour créer un fichier de données 2G dans la base de données. Afin d'accéder au dernier bloc de données, Oracle doit lire tous les blocs de données précédents. Ce n'est évidemment pas cohérent avec les faits. Le système d'exploitation ne peut pas être lu de manière aléatoire. La lecture ne signifie pas que la base de données ne peut pas également être lue de manière aléatoire.
Les périphériques bloc sont lus à partir du cache système, et non directement à partir du disque physique. Les périphériques de caractères peuvent être lus directement à partir du disque physique sans passer par le cache système. (Comme le clavier, interrompez directement en conséquence)
Grâce à l'introduction de cet article, nous comprenons qu'il existe de grandes différences dans la mise en œuvre et l'utilisation des périphériques bloc et des périphériques chaîne. En bref, le périphérique bloc est orienté vers l'entrée et la sortie de données de bloc, tandis que le périphérique chaîne est orienté vers l'entrée et la sortie de type flux de caractères. Dans le même temps, dans les applications réelles, nous pouvons choisir le type de périphérique approprié en fonction de nos propres besoins et utiliser les commandes correspondantes pour créer, monter, formater et autres opérations. En général, maîtriser l'utilisation des périphériques bloc et chaîne est d'une grande importance pour améliorer l'optimisation des performances et le niveau de gestion des systèmes Linux.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!