Table des matières
Méthode 2 : utilisez cat pour afficher le fichier de mappage de fichiers" >Méthode 2 : utilisez cat pour afficher le fichier de mappage de fichiers
3. Comment utiliser le mappage de fichiers sous Linux" >3. Comment utiliser le mappage de fichiers sous Linux
Maison tutoriels informatiques connaissances en informatique Quelles sont les méthodes pour afficher les mappages de fichiers Linux ?

Quelles sont les méthodes pour afficher les mappages de fichiers Linux ?

Feb 19, 2024 pm 05:24 PM
文件 内存 映射

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
Copier après la connexion
  • 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
Copier après la connexion
  • 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.

Quelles sont les méthodes pour afficher les mappages de fichiers Linux ?

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;
}
Copier après la connexion

Compilez et exécutez :

$ ls
example.c
$ gcc example.c -o example
$ ./example
Press Enter to exit...
Copier après la connexion

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]
Copier après la connexion

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!
Copier après la connexion

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!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

AI Hentai Generator

AI Hentai Generator

Générez AI Hentai gratuitement.

Article chaud

R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
2 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Repo: Comment relancer ses coéquipiers
4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Adventure: Comment obtenir des graines géantes
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Combien de temps faut-il pour battre Split Fiction?
3 Il y a quelques semaines By DDD

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

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

Optimisation importante de la mémoire, que dois-je faire si l'ordinateur passe à une vitesse de mémoire de 16 Go/32 Go et qu'il n'y a aucun changement ? Optimisation importante de la mémoire, que dois-je faire si l'ordinateur passe à une vitesse de mémoire de 16 Go/32 Go et qu'il n'y a aucun changement ? Jun 18, 2024 pm 06:51 PM

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

Comment vérifier l'utilisation de la mémoire sur Xiaomi Mi 14Pro ? Comment vérifier l'utilisation de la mémoire sur Xiaomi Mi 14Pro ? Mar 18, 2024 pm 02:19 PM

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

Que faire si le code d'erreur 0x80004005 apparaît. L'éditeur vous apprendra comment résoudre le code d'erreur 0x80004005. Que faire si le code d'erreur 0x80004005 apparaît. L'éditeur vous apprendra comment résoudre le code d'erreur 0x80004005. Mar 21, 2024 pm 09:17 PM

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

Samsung a annoncé l'achèvement de la vérification de la technologie du processus d'empilement de liaisons hybrides à 16 couches, qui devrait être largement utilisée dans la mémoire HBM4. Samsung a annoncé l'achèvement de la vérification de la technologie du processus d'empilement de liaisons hybrides à 16 couches, qui devrait être largement utilisée dans la mémoire HBM4. Apr 07, 2024 pm 09:19 PM

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.

Mar 22, 2024 pm 08:16 PM

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.

Lexar lance le kit de mémoire Ares Wings of War DDR5 7600 16 Go x2 : particules Hynix A-die, 1 299 yuans Lexar lance le kit de mémoire Ares Wings of War DDR5 7600 16 Go x2 : particules Hynix A-die, 1 299 yuans May 07, 2024 am 08:13 AM

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.

Des sources affirment que Samsung Electronics et SK Hynix commercialiseront de la mémoire mobile empilée après 2026 Des sources affirment que Samsung Electronics et SK Hynix commercialiseront de la mémoire mobile empilée après 2026 Sep 03, 2024 pm 02:15 PM

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.

Kingbang lance une nouvelle mémoire DDR5 8600, disponible en CAMM2, LPCAMM2 et modèles standards Kingbang lance une nouvelle mémoire DDR5 8600, disponible en CAMM2, LPCAMM2 et modèles standards Jun 08, 2024 pm 01:35 PM

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

See all articles