


Quelles sont les méthodes pour afficher les mappages de fichiers Linux ?
1. Définition du mappage de fichiers
Le mappage de fichiers est un mécanisme qui mappe les fichiers sur le disque dans l'espace mémoire virtuelle d'un processus.
De cette façon, le processus peut lire et écrire des fichiers directement via l'adresse mémoire sans avoir à passer par des appels système réguliers tels que la lecture et l'écriture.
Dans le mappage de fichiers, nous utilisons le mécanisme Linux pour connecter le fichier et la mémoire virtuelle du processus, afin que le processus puisse directement lire et écrire les données du fichier dans la mémoire sans accéder directement au disque. Ce mécanisme fournit une méthode d'accès aux fichiers plus efficace et simplifie également le processus d'exploitation des fichiers.
Le mappage de fichiers est souvent appelé mappage de mémoire, les deux sont généralement identiques, le mappage de mémoire couvre les opérations de mappage de fichiers en mémoire et de mappage de mémoire anonyme dans l'espace d'adressage du processus.
Le mappage de fichiers est un cas particulier de mappage de mémoire.
2. Comment afficher le mappage de fichiers [deux méthodes]
Méthode 1 : Utiliser l'outil pmap
Afficher les informations de mappage de fichiers du processus correspondant
$ pmap -X 12345#查看指定PID的文件映射信息 12345: ./example 0000555555554000100K r-x-- example 00005555556730004K r---- example 00005555556740004K rw--- example 00007ffff7de0000 1360K r-x-- libc-2.31.so ... mapped: 1448Kwriteable/private: 8Kshared: 0K
- Chaque ligne représente une zone mappée en mémoire.
- Plage d'adresses, autorisations, type de mappage, chemin de fichier et autres informations.
- « mappé » représente la taille totale de la carte, « inscriptible/privé » représente la taille inscriptible et privée, et « partagé » représente la taille partagée.
Méthode 2 : utilisez cat pour afficher le fichier de mappage de fichiers
Utilisez la commande cat /proc/PID/maps
pour afficher le mappage mémoire du processus.
Chaque ligne représente une zone mémoire mappée, le format est le suivant :
address perms offsetdev inodepathname 00400000-0040b000 r-xp 00000000 08:01 1167685/usr/bin/cat 0060a000-0060b000 r--p 0000a000 08:01 1167685/usr/bin/cat 0060b000-0060c000 rw-p 0000b000 08:01 1167685/usr/bin/cat
- adresse : la plage d'adresses de la mémoire virtuelle mappée.
- perms : autorisations, notamment lecture (r), écriture (w), exécution (x), etc.
- offset : Le décalage de la zone mappée dans le fichier.
- dev : numéro de l'appareil.
- inode : Le numéro de nœud du fichier dans le système de fichiers.
- pathname : chemin de fichier mappé ou mappage anonyme.
3. Comment utiliser le mappage de fichiers sous Linux
Nous montrons maintenant à travers un exemple comment utiliser le mappage de fichiers pour mapper un fichier en mémoire, puis en modifiant le contenu en mémoire, et enfin en démapping la mémoire.
exemple de fichier.c
#include <stdio.h> #include <stdlib.h> #include <sys/mman.h> #include <sys/types.h> #include <sys/stat.h> #include <fcntl.h> #include <unistd.h> #include <string.h> int main() { const char *file_path = "example.txt"; const size_t file_size = 4096; int fd = open(file_path, O_RDWR | O_CREAT, S_IRUSR | S_IWUSR); if (fd == -1) { perror("open"); exit(EXIT_FAILURE); } if (ftruncate(fd, file_size) == -1) { perror("ftruncate"); close(fd); exit(EXIT_FAILURE); } // Create a memory-mapped region void *addr = mmap(NULL, file_size, PROT_READ | PROT_WRITE, MAP_SHARED, fd, 0); if (addr == MAP_FAILED) { perror("mmap"); close(fd); exit(EXIT_FAILURE); } // Now 'addr' points to the beginning of the file in memory // 现在addr表示文件在进程的内存空间代表区域的起始位置 // Write a message to the memory-mapped file // 向映射文件写入一句消息。 const char *message = "Hello, Memory Mapping!n"; strncpy(addr, message, strlen(message)); printf("Press Enter to exit...n"); getchar();// Wait for user to press Enter // Unmap the memory region解除文件和内存区域的映射关系 if (munmap(addr, file_size) == -1) { perror("munmap"); close(fd); exit(EXIT_FAILURE); } // Close the file descriptor close(fd); return 0; }
Compilez et exécutez :
$ ls example.c $ gcc example.c -o example $ ./example Press Enter to exit...
Afficher les informations de mappage de fichiers d'un processus :
$ ps aux|grep example codersong 15245420.00.0 27761152 pts/0S+ 19:23 0:00 ./example codersong 15245470.00.0121882432 pts/2S+ 19:23 0:00 grep --color=auto example $ pmap -X 1524542 1524542: ./example 地址 Perm 偏移量 设备 Inode SizeRss Pss Pss_Dirty Referenced Anonymous LazyFree ShmemPmdMapped FilePmdMapped Shared_Hugetlb Private_Hugetlb Swap SwapPss Locked THPeligible Mapping 557b482c3000 r--p0000000008:03 712405144 4 04 000 00 00 00 0 example 557b482c4000 r-xp0000100008:03 712405144 4 04 000 00 00 00 0 example 557b482c5000 r--p0000200008:03 712405144 4 04 000 00 00 00 0 example 557b482c6000 r--p0000200008:03 712405144 4 44 400 00 00 00 0 example 557b482c7000 rw-p0000300008:03 712405144 4 44 400 00 00 00 0 example 557b48e9e000 rw-p0000000000:00 01324 4 44 400 00 00 00 0 [heap] 7f8fe5600000 r--p0000000008:03264612160160 7 0160 000 00 00 00 0 libc.so.6 7f8fe5628000 r-xp0002800008:03264612 162078824 0788 000 00 00 00 0 libc.so.6 7f8fe57bd000 r--p001bd00008:03264612352 64 1 0 64 000 00 00 00 0 libc.so.6 7f8fe5815000 r--p0021400008:03264612 16 161616 161600 00 00 00 0 libc.so.6 7f8fe5819000 rw-p0021800008:0326461288 8 88 800 00 00 00 0 libc.so.6 7f8fe581b000 rw-p0000000000:00 0 52 202020 202000 00 00 00 0 7f8fe58f6000 rw-p0000000000:00 0 128 8 88 800 00 00 00 0 7f8fe5908000 rw-p0000000000:00 084 4 44 400 00 00 00 0 7f8fe590a000 r--p0000000008:0326460088 0 08 000 00 00 00 0 ld-linux-x86-64.so.2 7f8fe590c000 r-xp0000200008:03264600168168 7 0168 000 00 00 00 0 ld-linux-x86-64.so.2 7f8fe5936000 r--p0002c00008:03264600 44 40 1 0 40 000 00 00 00 0 ld-linux-x86-64.so.2 7f8fe5941000 rw-s0000000008:03 712405244 4 04 000 00 00 00 0 example.txt 7f8fe5942000 r--p0003700008:0326460088 8 88 800 00 00 00 0 ld-linux-x86-64.so.2 7f8fe5944000 rw-p0003900008:0326460088 8 88 800 00 00 00 0 ld-linux-x86-64.so.2 7ffef93f2000 rw-p0000000000:00 0132 121212 121200 00 00 00 0 [stack] 7ffef9485000 r--p0000000000:00 0 160 0 00 000 00 00 00 0 [vvar] 7ffef9489000 r-xp0000000000:00 084 0 04 000 00 00 00 0 [vdso] ffffffffff600000 --xp0000000000:00 040 0 00 000 00 00 00 0 [vsyscall] ==== ==== === ========= ========== ========= ======== ============== ============= ============== =============== ==== ======= ====== =========== 2780 1344 15296 13449600 00 00 00 0 KB $ $ $ cat /proc/1524542/maps 557b482c3000-557b482c4000 r--p 00000000 08:03 7124051/home/codersong/zhengshihong/example 557b482c4000-557b482c5000 r-xp 00001000 08:03 7124051/home/codersong/zhengshihong/example 557b482c5000-557b482c6000 r--p 00002000 08:03 7124051/home/codersong/zhengshihong/example 557b482c6000-557b482c7000 r--p 00002000 08:03 7124051/home/codersong/zhengshihong/example 557b482c7000-557b482c8000 rw-p 00003000 08:03 7124051/home/codersong/zhengshihong/example 557b48e9e000-557b48ebf000 rw-p 00000000 00:00 0[heap] 7f8fe5600000-7f8fe5628000 r--p 00000000 08:03 264612 /usr/lib/x86_64-linux-gnu/libc.so.6 7f8fe5628000-7f8fe57bd000 r-xp 00028000 08:03 264612 /usr/lib/x86_64-linux-gnu/libc.so.6 7f8fe57bd000-7f8fe5815000 r--p 001bd000 08:03 264612 /usr/lib/x86_64-linux-gnu/libc.so.6 7f8fe5815000-7f8fe5819000 r--p 00214000 08:03 264612 /usr/lib/x86_64-linux-gnu/libc.so.6 7f8fe5819000-7f8fe581b000 rw-p 00218000 08:03 264612 /usr/lib/x86_64-linux-gnu/libc.so.6 7f8fe581b000-7f8fe5828000 rw-p 00000000 00:00 0 7f8fe58f6000-7f8fe58f9000 rw-p 00000000 00:00 0 7f8fe5908000-7f8fe590a000 rw-p 00000000 00:00 0 7f8fe590a000-7f8fe590c000 r--p 00000000 08:03 264600 /usr/lib/x86_64-linux-gnu/ld-linux-x86-64.so.2 7f8fe590c000-7f8fe5936000 r-xp 00002000 08:03 264600 /usr/lib/x86_64-linux-gnu/ld-linux-x86-64.so.2 7f8fe5936000-7f8fe5941000 r--p 0002c000 08:03 264600 /usr/lib/x86_64-linux-gnu/ld-linux-x86-64.so.2 7f8fe5941000-7f8fe5942000 rw-s 00000000 08:03 7124052/home/byzoro/zhengshihong/example.txt 7f8fe5942000-7f8fe5944000 r--p 00037000 08:03 264600 /usr/lib/x86_64-linux-gnu/ld-linux-x86-64.so.2 7f8fe5944000-7f8fe5946000 rw-p 00039000 08:03 264600 /usr/lib/x86_64-linux-gnu/ld-linux-x86-64.so.2 7ffef93f2000-7ffef9413000 rw-p 00000000 00:00 0[stack] 7ffef9485000-7ffef9489000 r--p 00000000 00:00 0[vvar] 7ffef9489000-7ffef948b000 r-xp 00000000 00:00 0[vdso] ffffffffff600000-ffffffffff601000 --xp 00000000 00:00 0[vsyscall]
Maintenant, appuyez sur ctrl+C
pour quitter le programme d'exemple et afficher le contenu du fichier exemple.txt :
$ cat example.txt Hello, Memory Mapping!
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!

Outils d'IA chauds

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

AI Hentai Generator
Générez AI Hentai gratuitement.

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Sujets chauds

Pour les disques durs mécaniques ou les disques SSD SATA, vous ressentirez l'augmentation de la vitesse d'exécution du logiciel. S'il s'agit d'un disque dur NVME, vous ne la ressentirez peut-être pas. 1. Importez le registre sur le bureau et créez un nouveau document texte, copiez et collez le contenu suivant, enregistrez-le sous 1.reg, puis cliquez avec le bouton droit pour fusionner et redémarrer l'ordinateur. WindowsRegistryEditorVersion5.00[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SessionManager\MemoryManagement]"DisablePagingExecutive"=d

Récemment, Xiaomi a lancé un puissant smartphone haut de gamme, le Xiaomi 14Pro, qui présente non seulement un design élégant, mais également une technologie noire interne et externe. Le téléphone offre des performances optimales et d'excellentes capacités multitâches, permettant aux utilisateurs de profiter d'une expérience de téléphonie mobile rapide et fluide. Cependant, les performances seront également affectées par la mémoire. De nombreux utilisateurs souhaitent savoir comment vérifier l’utilisation de la mémoire du Xiaomi 14Pro, alors jetons-y un coup d’œil. Comment vérifier l’utilisation de la mémoire sur Xiaomi Mi 14Pro ? Introduction à la façon de vérifier l'utilisation de la mémoire du Xiaomi 14Pro. Ouvrez le bouton [Gestion des applications] dans [Paramètres] du téléphone Xiaomi 14Pro. Pour afficher la liste de toutes les applications installées, parcourez la liste et recherchez l'application que vous souhaitez afficher, cliquez dessus pour accéder à la page de détails de l'application. Dans la page de détails de la candidature

Lors de la suppression ou de la décompression d'un dossier sur votre ordinateur, une boîte de dialogue d'invite « Erreur 0x80004005 : erreur non spécifiée » apparaît parfois. Comment devez-vous résoudre cette situation ? Il existe en fait de nombreuses raisons pour lesquelles le code d'erreur 0x80004005 est demandé, mais la plupart d'entre elles sont causées par des virus. Nous pouvons réenregistrer la DLL pour résoudre le problème. Ci-dessous, l'éditeur vous expliquera l'expérience de gestion du code d'erreur 0x80004005. . Certains utilisateurs reçoivent le code d'erreur 0X80004005 lors de l'utilisation de leur ordinateur. L'erreur 0x80004005 est principalement due au fait que l'ordinateur n'enregistre pas correctement certains fichiers de bibliothèque de liens dynamiques ou à un pare-feu qui n'autorise pas les connexions HTTPS entre l'ordinateur et Internet. Alors que diriez-vous

Selon le rapport, Dae Woo Kim, directeur de Samsung Electronics, a déclaré que lors de la réunion annuelle 2024 de la Korean Microelectronics and Packaging Society, Samsung Electronics terminerait la vérification de la technologie de mémoire HBM à liaison hybride à 16 couches. Il est rapporté que cette technologie a passé avec succès la vérification technique. Le rapport indique également que cette vérification technique jettera les bases du développement du marché de la mémoire dans les prochaines années. DaeWooKim a déclaré que Samsung Electronics avait réussi à fabriquer une mémoire HBM3 empilée à 16 couches basée sur la technologie de liaison hybride. À l'avenir, la technologie de liaison hybride empilée à 16 couches sera utilisée pour la production en série de mémoire HBM4. ▲ Source de l'image TheElec, comme ci-dessous. Par rapport au processus de liaison existant, la liaison hybride n'a pas besoin d'ajouter de bosses entre les couches de mémoire DRAM, mais connecte directement les couches supérieure et inférieure de cuivre au cuivre.

Ce site rapportait le 21 mars que Micron avait tenu une conférence téléphonique après la publication de son rapport financier trimestriel. Lors de la conférence, le PDG de Micron, Sanjay Mehrotra, a déclaré que par rapport à la mémoire traditionnelle, la HBM consomme beaucoup plus de plaquettes. Micron a déclaré qu'en produisant la même capacité sur le même nœud, la mémoire HBM3E la plus avancée actuelle consomme trois fois plus de tranches que la DDR5 standard, et on s'attend à ce qu'à mesure que les performances s'améliorent et que la complexité de l'emballage s'intensifie, à l'avenir HBM4, ce ratio augmentera encore. . Si l’on se réfère aux rapports précédents sur ce site, ce ratio élevé est en partie dû au faible taux de rendement de HBM. La mémoire HBM est empilée avec des connexions TSV de mémoire DRAM multicouche. Un problème avec une couche signifie que l'ensemble.

Selon les informations de ce site Web le 6 mai, Lexar a lancé la mémoire d'overclocking DDR57600CL36 de la série Ares Wings of War. L'ensemble de 16 Go x 2 sera disponible en prévente à 00h00 le 7 mai avec un dépôt de 50 yuans, et le prix est de 50 yuans. 1 299 yuans. La mémoire Lexar Wings of War utilise des puces mémoire Hynix A-die, prend en charge Intel XMP3.0 et fournit les deux préréglages d'overclocking suivants : 7600MT/s : CL36-46-46-961.4V8000MT/s : CL38-48-49 -1001.45V En termes de dissipation thermique, cet ensemble de mémoire est équipé d'un gilet de dissipation thermique tout en aluminium de 1,8 mm d'épaisseur et est équipé du tampon de graisse en silicone thermoconducteur exclusif de PMIC. La mémoire utilise 8 perles LED haute luminosité et prend en charge 13 modes d'éclairage RVB.

Selon des informations publiées sur ce site Web le 3 septembre, le média coréen etnews a rapporté hier (heure locale) que les produits de mémoire mobile à structure empilée « de type HBM » de Samsung Electronics et SK Hynix seraient commercialisés après 2026. Des sources ont indiqué que les deux géants coréens de la mémoire considèrent la mémoire mobile empilée comme une source importante de revenus futurs et prévoient d'étendre la « mémoire de type HBM » aux smartphones, tablettes et ordinateurs portables afin de fournir de la puissance à l'IA finale. Selon des rapports précédents sur ce site, le produit de Samsung Electronics s'appelle LPWide I/O memory, et SK Hynix appelle cette technologie VFO. Les deux sociétés ont utilisé à peu près la même voie technique, à savoir combiner emballage en sortance et canaux verticaux. La mémoire LPWide I/O de Samsung Electronics a une largeur de 512 bits.

Selon les informations de ce site le 7 juin, GEIL a lancé sa dernière solution DDR5 au Salon international de l'informatique de Taipei 2024 et a proposé les versions SO-DIMM, CUDIMM, CSODIMM, CAMM2 et LPCAMM2. ▲ Source de l'image : Wccftech Comme le montre l'image, la mémoire CAMM2/LPCAMM2 présentée par Jinbang adopte un design très compact, peut fournir une capacité maximale de 128 Go et une vitesse allant jusqu'à 8533 MT/s. Certains de ces produits peuvent même l'être. stable sur la plateforme AMDAM5 Overclocké à 9000MT/s sans aucun refroidissement auxiliaire. Selon les rapports, la mémoire de la série Polaris RGBDDR5 2024 de Jinbang peut fournir jusqu'à 8 400
