Fichier spécial mem ou kmem

Objectif

Fournit un accès privilégié en lecture et en écriture à la mémoire virtuelle.

Descriptif

Remarque: Lorsqu'un accès incorrect à la mémoire virtuelle est effectué via ces fichiers, un arrêt du processus, une panne du système ou une perte de l'intégrité des données du système peut se produire.

Les fichiers spéciaux /dev/mem et /dev/kmem caractère permettent d'accéder à un pseudo pilote de périphérique qui permet d'accéder en lecture et en écriture à la mémoire système ou à l'espace adresse d'entrée-sortie. Généralement, ces fichiers spéciaux sont utilisés par les utilitaires et les commandes du système d'exploitation (tels que sar, iostat, et vmstat) pour obtenir des informations de statut et de statistiques sur le système.

Remarque: les programmes qui accèdent à ces fichiers spéciaux doivent disposer des privilèges appropriés. Les programmes d'application commerciale doivent éviter d'utiliser les fichiers /dev/mem et /dev/kmem , car l'image de mémoire virtuelle est tout à fait spécifique au niveau du système d'exploitation et à la plateforme de la machine. L'utilisation de ces fichiers spéciaux affecte donc gravement la portabilité du programme d'application à d'autres systèmes.

Usage Considerations

Accès spécial aux fichiers kmem

Le fichier spécial kmem permet d'accéder à l'espace d'adresse de la mémoire virtuelle pour le processus en cours, tel qu'il est vu par le noyau. Le décalage de recherche, défini par la sous-routine lseek , est utilisé pour spécifier l'adresse virtuelle ciblée pour la lecture ou l'écriture. Le pilote de pseudo-périphérique kmem prend uniquement en charge open, close, read, readx, writex, et écrivent des sous-routines .

La sous-routine système knlist est généralement utilisée pour obtenir les adresses des symboles de noyau à lire ou à écrire via l'accès fourni par le fichier spécial kmem .

Avant d'émettre une opération de lecture ou d'écriture, la sous-routine lseek doit être utilisée pour désigner l'adresse de début appropriée dans la mémoire virtuelle. Si cette adresse se trouve dans les deux premiers gigaoctets de l'espace adresse, les appels de sous-routine read ou write peuvent être utilisés. Toutefois, si vous souhaitez accéder aux deux gigaoctets supérieurs de l'espace adresse, vous devez utiliser la forme readx et writex des appels de sous-programmes. Dans ce cas, le paramètre ext (extension) doit être défini sur la valeur True. Ainsi, le décalage lseek est interprété par rapport aux 2 gigaoctets supérieurs de l'espace adresse.

Remarque: L'espace adresse de processus est défini comme indiqué dans la section Implementation of mem Special File Access . Cet agencement d'espace adresse peut varier sur d'autres plateformes et versions du système d'exploitation.

mem-Accès spécial aux fichiers

Remarque: l'utilisation de ce fichier spécial par les programmes d'application doit être strictement évitée, car il est fourni uniquement pour les procédures de diagnostic et d'identification des problèmes.

L'accès aux fichiers spéciaux mem est spécifique au système sur lequel s'exécute le système d'exploitation.

Reportez-vous à la section Implementation of mem Special File Access pour plus de détails sur la fonction fournie par ce fichier spécial.

Traiter les régions d'espace adresse pour le fichier spécial /dev/kmem

La "mappe d'espace adresse de processus" illustre la présentation des régions d'espace adresse de processus accessibles via le fichier spécial /dev/kmem sur ce système.
Article Descriptif
2 gigaoctets d'espace adresse inférieur: utilisez des sous-lignes de lecture ou d'écriture
4 bits supérieurs du décalage lseek
Traiter les régions de l'espace adresse
 
0
Région du noyau principal
 
1
Zone de texte de l'utilisateur
 
2
Région privée de processus
 
3
Région des fichiers mappés de données joints
 
4
Région des fichiers mappés de données joints
 
5
Région des fichiers mappés de données joints
 
6
Région des fichiers mappés de données joints
 
7
Région des fichiers mappés de données joints
2 gigaoctets supérieurs d'espace adresse: utilisez les sous-routines readx ou writex avec le paramètre ext = TRUE.
0
Région des fichiers mappés de données joints
 
1
Région des fichiers mappés de données joints
 
2
Région des fichiers mappés de données joints
 
3
Région des fichiers mappés de données joints
 
4
Région des fichiers mappés de données joints
 
5
Région de texte de la bibliothèque partagée
 
6
Région du noyau secondaire
 
7
Région de données partagées

Implémentation de mem Special File Access

Le fichier spécial mem a traditionnellement fourni un accès direct à la mémoire physique. Cette capacité et ses exigences en matière d'interface sont spécifiques à la machine. Toutefois, pour ce système d'exploitation, cette fonction est indirectement fournie par l'utilisation du paramètre Extension (extension) sur les appels de sous-routine readx et writex . Lorsqu'un appel de sous-routine readx ou writex associé au fichier spécial /dev/mem est émis, le paramètre ext doit contenir une valeur de registre de segment valide telle que définie dans la documentation POWERstation and POWERserver Hardware Technical Reference-General Information pour les types de plateforme sur lesquels le programme sera exécuté. Cela permet au programme d'accéder à toute la mémoire physique mappée par la table de pages ainsi qu'aux segments d'E-S spécifiques à la plateforme (T=1).

Le décalage de recherche défini par l'appel de sous-routine lseek est utilisé pour spécifier le décalage d'adresse dans le segment décrit par le paramètre ext . Les quatre bits supérieurs du décalage ne sont pas utilisés. Le pilote de pseudo-périphérique prend uniquement en charge les commandes open, close, read, readx, write, et des appels de sous-routine writex . L'appel de sous-routine lseek doit également être utilisé avant l'émission des appels de sous-routine readx ou writex , afin de spécifier le décalage d'adresse.

Si un appel de sous-routine read ou write est utilisé avec ce fichier spécial, l'accès à la mémoire est identique à celui fourni par le fichier spécial /dev/kmem .

Le fichier spécial mem fait partie de l'environnement d'exécution du système d'exploitation de base (BOS).

Fichiers

Article Descriptif
/dev/mem Fournit un accès privilégié en lecture et en écriture à la mémoire virtuelle.
/dev/kmem Fournit un accès privilégié en lecture et en écriture à la mémoire virtuelle.