Maison >Opération et maintenance >exploitation et maintenance Linux >qu'est-ce que le fichier de périphérique Linux
Sous Linux, un fichier de périphérique est une interface vers un pilote de périphérique, permettant à une application d'interagir avec un périphérique à l'aide de son pilote de périphérique via des appels système d'entrée et de sortie standard. Il existe deux fichiers de périphérique couramment utilisés dans les systèmes Linux : les fichiers spéciaux de caractères et les fichiers spéciaux de bloc. La différence entre eux réside dans la quantité de données lues et écrites par le système d'exploitation et le matériel.
L'environnement d'exploitation de ce tutoriel : système linux5.9.8, ordinateur Dell G3.
Aperçu des fichiers de périphérique
Dans les systèmes d'exploitation de type Unix, les fichiers de périphérique ou les fichiers spéciaux sont les interfaces des pilotes de périphérique, apparaissant dans le système de fichiers sous la forme si c'est comme un fichier normal. Il existe également des fichiers spéciaux dans MS-DOS, OS/2 et Microsoft Windows. Ces fichiers spéciaux permettent à une application d'interagir avec un périphérique à l'aide de son pilote de périphérique via des appels système d'entrée/sortie standard. L'utilisation d'appels système standard simplifie de nombreuses tâches de programmation et permet des mécanismes d'E/S cohérents dans l'espace utilisateur, quelles que soient les caractéristiques et capacités de l'appareil.
Les fichiers de périphérique fournissent généralement une interface simple aux périphériques standard (tels que les imprimantes et les ports série), mais peuvent également être utilisés pour accéder à des ressources uniques spécifiques sur ces périphériques (telles que les partitions de disque). De plus, les fichiers de périphérique sont utiles pour accéder aux ressources système qui ne sont associées à aucun périphérique réel, telles que les récepteurs de données et les générateurs de nombres aléatoires.
Figure 1 La relation entre les applications, les fichiers de blocage, les pilotes et le matériel
Il existe deux fichiers de périphérique couramment utilisés dans les systèmes d'exploitation de type Unix, appelés fichiers spéciaux de caractères et fichiers spéciaux de blocage. La différence entre eux réside dans la quantité de données lues et écrites par le système d'exploitation et le matériel. Contrairement aux canaux nommés, qui peuvent être appelés fichiers spéciaux de périphérique, les canaux nommés ne sont pas connectés à un périphérique mais ne sont pas non plus des fichiers ordinaires.
Dans certains systèmes de type Unix, la plupart des fichiers de périphérique sont gérés dans le cadre d'un système de fichiers virtuel traditionnellement monté sur /dev, éventuellement associé à un démon de contrôle qui surveille les ajouts et suppressions de matériel au moment de l'exécution. Apportez les modifications correspondantes au périphérique. système de fichiers. Si l'opération de modification du système de fichiers du périphérique n'est pas effectuée automatiquement par le noyau, le démon de contrôle peut appeler des scripts dans le système ou dans l'espace utilisateur pour gérer les exigences particulières du périphérique.
Les implémentations de FreeBSD et DragonFly BSD ont nommé les devfs du système de fichiers du périphérique virtuel et le développeur de démon associé. Linux utilise principalement une implémentation en espace utilisateur appelée udev, mais il existe de nombreuses variantes. Les systèmes d'exploitation tels que Darwin et macOS basés sur celui-ci disposent de systèmes de fichiers de périphérique purement basés sur le noyau.
Sur les systèmes Unix qui prennent en charge l'isolation des processus chroot, tels que les conteneurs Solaris, chaque environnement chroot nécessitera généralement son propre /dev ; ces points de montage seront visibles par le système d'exploitation hôte sur différents nœuds dans l'arborescence du système de fichiers global. L'isolation matérielle peut être appliquée par l'environnement chroot en limitant la population des nœuds de périphérique à une instance chroot de /dev (un programme ne peut pas se connecter au matériel et il ne peut ni voir ni accéder au nom - il s'agit d'un contrôle d'accès plus fort que celui d'un fichier Unix. formulaire d’autorisations système).
Les nœuds de périphérique correspondent aux ressources qui ont été allouées par le noyau du système d'exploitation. Unix identifie ces ressources par un numéro majeur et un numéro mineur, tous deux stockés dans le cadre de la structure des nœuds. L'attribution de ces numéros s'effectue de manière unique sur différents systèmes d'exploitation et sur différentes plates-formes informatiques. Généralement, un numéro majeur identifie un pilote de périphérique et un numéro mineur identifie le périphérique spécifique que le pilote contrôle (peut-être sur de nombreux périphériques) : dans ce cas, le système peut transmettre le numéro mineur au pilote. Cependant, dans le cas de numéros attribués dynamiquement, cela peut ne pas être le cas (par exemple sur FreeBSD 5 et supérieur).
Comme d'autres types de fichiers spéciaux, les systèmes informatiques utilisent des appels système standard pour accéder aux nœuds des appareils et les traitent comme des fichiers informatiques normaux. Il existe deux types standards de fichiers de périphérique ; malheureusement, pour des raisons historiques, leurs noms sont plutôt contre-intuitifs, il est donc souvent incorrect d'expliquer la différence entre les deux.
Block File Classification
Périphériques de caractères (Périphériques de caractères)
Les fichiers spéciaux de caractères ou les périphériques de caractères fournissent un accès direct et sans tampon aux périphériques matériels. Ils ne permettent pas nécessairement à un programme de lire ou d'écrire un seul caractère à la fois ; cela dépend de l'appareil en question. Par exemple, le périphérique de caractères d'un disque dur nécessitera généralement que toutes les opérations de lecture et d'écriture soient alignées sur les limites des blocs et n'autorise jamais la lecture d'octets individuels.
Les périphériques de caractères sont parfois appelés périphériques bruts pour éviter toute confusion quant au fait que les périphériques de caractères sur du matériel basé sur des blocs nécessitent généralement un programme pour lire et écrire des blocs alignés.
Bloquer les appareils (Bloquer les appareils)
Bloquer les fichiers spéciaux ou bloquer les appareils fournissent un accès tampon aux périphériques matériels et fournissent des détails abstraits. Contrairement aux périphériques de caractères, les périphériques de blocs permettront toujours au programmeur de lire ou d'écrire des blocs de n'importe quelle taille (y compris des caractères/octets uniques) et de n'importe quel alignement. L'inconvénient est que puisque les périphériques blocs sont mis en mémoire tampon, le programmeur n'a aucune idée du temps qu'il faudra avant que les données d'écriture soient transmises du tampon du noyau au périphérique réel, ni même dans quel ordre les deux écritures distinctes arriveront sur le périphérique physique. ? De plus, si le même matériel expose des périphériques caractère et bloc, il existe un risque de corruption des données car le client utilisant le périphérique caractère n'est pas au courant des modifications apportées aux tampons du périphérique bloc.
Pseudo-périphériques (Pseudo-périphériques)
Les nœuds de périphériques sur les systèmes de type Unix ne correspondent pas nécessairement à des périphériques physiques. Les nœuds dépourvus de cette correspondance forment un ensemble de pseudo-périphériques. Ils fournissent diverses fonctions gérées par le système d’exploitation. Certains des pseudo-périphériques (basés sur des caractères) les plus couramment utilisés incluent :
/ dev / null - 接受并放弃所有输入; 不产生输出(总是在读取时返回文件结束指示) / dev / zero - 接受并放弃所有输入; 产生连续的NUL(零值)字节流 / dev / full - 读取时会产生连续的NUL(零值)字节流,并在写入时返回“磁盘已满”消息 / dev / random和/ dev / urandom - 它们产生一个可变长度的伪随机数字流。
Création de nœuds
Les nœuds sont créés par l'appel système mknod. Le programme de ligne de commande utilisé pour créer des nœuds est également appelé mknod. Les appels et commandes habituels du système de fichiers (renommer, dissocier) (mv, rm) peuvent déplacer ou supprimer des nœuds. Lors du passage de l'option -R ou -a lors de la copie d'un nœud de périphérique, la commande cp -l crée un nouveau nœud de périphérique avec les mêmes propriétés que l'original.
Certaines versions d'Unix incluent un script appelé makedev ou MAKEDEV qui crée tous les périphériques nécessaires dans le répertoire /dev. Cela n'a de sens que sur les systèmes dont les périphériques se voient attribuer statiquement un numéro majeur (par exemple en le codant en dur dans leur module noyau).
Règles de dénomination des fichiers de blocage
Les préfixes suivants sont utilisés dans les noms de certains périphériques dans la hiérarchie /dev pour identifier le type de périphérique :
lp:行式打印机(比较lp) pt:伪终端(虚拟终端) tty:终端 一些额外的前缀已经在一些操作系统中普遍使用: fb:帧缓冲区 fd :(平台)软盘,尽管这个缩写也常用来指文件描述符 高清:(“经典”)IDE驱动程序(以前用于ATA硬盘驱动器,ATAPI光盘驱动器等) hda:第一个ATA通道上的主设备(通常由主编号3和次编号0标识) hdb:第一个ATA通道上的从属设备 hdc:第二个ATA通道上的主设备 hdc1:此磁盘上的第一个主分区(示例) hdc5:扩展分区中的第一个逻辑驱动器(示例) hdd:第二个ATA通道上的从属设备 parport,pp:并行端口 SCSI驱动程序,也被libATA(现代PATA / SATA驱动程序),USB,IEEE 1394等使用。 sd:大容量存储驱动程序 sda:首次注册的设备 sda4:此磁盘上的最后一个分区(示例) sda6:扩展分区中的第二个逻辑驱动器(示例) sdb,sdc等:第二,第三等注册设备 ses:机箱驱动程序 sg:通用SCSI层 sr:“ROM”驱动程序(面向数据的光盘驱动器; scd只是一个辅助别名) st:磁带驱动器 tty:终端 ttyS :(平台)串口驱动程序 ttyUSB:USB串口转换器,调制解调器等
Une liste canonique des préfixes utilisés sous Linux peut être trouvée dans Liste des périphériques Linux trouvée, la liste des périphériques Linux est le registre officiel du système d'exploitation Linux qui attribue des numéros de périphérique et des nœuds de répertoire /dev.
Pour la plupart des appareils, ce préfixe est suivi d'un numéro qui identifie de manière unique l'appareil spécifique. Pour les disques durs, des lettres sont utilisées pour identifier le périphérique et des chiffres sont utilisés pour identifier les partitions. Par conséquent, le système de fichiers peut trouver la zone sur le disque via /dev/sda3 ; associer /dev/pts/14 à la session de terminal en réseau.
Commandes associées pour l'exploitation des fichiers de l'appareil
mknod
Si vous êtes intéressé par l'embarqué, vous pouvez vérifier l'utilisation de cette commande par vous-même.
Recommandations associées : "Tutoriel vidéo 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!