WEBVTT

00:08.190 --> 00:13.140
Dans ce cours, nous allons donc discuter de la manière dont le mappage de la mémoire est effectué dans le système d'exploitation

00:13.140 --> 00:14.520
de type Linux.

00:14.880 --> 00:18.690
Le mappage de la mémoire se fait donc à l'aide d'un système appelé map.

00:18.690 --> 00:26.520
MAP est donc un appel système bien connu qui est fourni par le système d'exploitation Linux et, en utilisant un appel système MAP, nous effectuons

00:26.520 --> 00:28.620
tous les mappages de mémoire.

00:30.630 --> 00:36.840
Tout d'abord, la cartographie mammaire est un concept analogue à l'insertion d'une clé USB dans votre ordinateur

00:36.840 --> 00:37.680
portable.

00:37.950 --> 00:45.660
Lorsque vous insérez une clé USB de 32 Go dans votre ordinateur portable, la mémoire physique

00:45.660 --> 00:53.160
de votre ordinateur portable, le stockage secondaire, qui était de 512 gigaoctets, devient

00:53.160 --> 00:56.190
512 plus 32 gigaoctets.

00:56.700 --> 00:57.330
C'est vrai.

00:57.330 --> 01:05.550
D'une certaine manière, en insérant un lecteur de stylo de 32 Go dans votre ordinateur portable, vous avez en fait augmenté

01:05.550 --> 01:13.860
la capacité de stockage secondaire de votre ordinateur portable de 512 à 512 plus 32, soit 544 gigaoctets.

01:14.310 --> 01:18.240
La cartographie de la mémoire est donc un concept quelque peu similaire.

01:20.510 --> 01:28.190
Dans cet exemple, nous avons un fichier texte dont la taille est déjà de 8192 octets, et ce fichier texte se trouve sur

01:28.190 --> 01:29.270
votre bureau.

01:30.190 --> 01:30.740
D'accord.

01:30.760 --> 01:38.920
En utilisant le mappage de la mémoire, nous allions faire en sorte que ce fichier texte de 8192 octets

01:38.920 --> 01:45.490
soit visible en tant que mémoire virtuelle de 8192 octets pour votre processus.

01:47.110 --> 01:47.650
D'accord.

01:48.100 --> 01:54.550
Ainsi, en utilisant un appel au système de cartes, nous allons écrire un programme, et je vais vous montrer une démo sur la façon dont un système de

01:54.550 --> 02:00.820
cartes est utilisé en utilisant un système de cartes appelé n'importe quel stockage secondaire ou n'importe quelle mémoire secondaire.

02:00.820 --> 02:04.720
Dans ce cas, ce fichier texte peut être importé.

02:04.750 --> 02:06.430
Notez le mot "importé".

02:07.970 --> 02:13.100
En tant que mémoire virtuelle dans le processus, l'espace d'adressage virtuel.

02:14.450 --> 02:18.080
Ainsi, dès que vous appliquez le système de cartes, faites appel au processus.

02:18.080 --> 02:19.640
Disons que c'est le processus.

02:19.640 --> 02:20.990
P une mémoire virtuelle.

02:21.290 --> 02:28.130
Le processus P one créera de nouvelles pages de mémoire virtuelle dans son espace d'adressage virtuel.

02:28.430 --> 02:32.090
Ces pages de mémoire virtuelle doivent être consécutives.

02:34.040 --> 02:34.720
D'accord.

02:34.730 --> 02:39.410
Et puisque nous partons de ce principe, disons que la taille d'une page de mémoire virtuelle est de .

02:40.210 --> 02:42.250
4096 octets.

02:42.280 --> 02:50.290
Ainsi, pour accueillir un fichier de stockage secondaire d'une taille de 8192 octets, un appel système "map" créera deux

02:50.290 --> 02:58.750
pages de mémoire virtuelle afin que la taille totale soit de 8192 octets, ce qui est suffisant pour accueillir l'ensemble du

02:58.750 --> 03:00.940
fichier texte secondaire.

03:01.850 --> 03:02.480
D'accord.

03:02.690 --> 03:08.840
Il s'agit donc des pages de mémoire virtuelle qui sont créées à l'aide d'un appel système map dans un espace atlas virtuel du

03:08.840 --> 03:09.470
processus.

03:09.500 --> 03:18.170
P one lorsque le processus p one utilise l'appel système map pour importer le texte de stockage secondaire dans sa mémoire

03:18.170 --> 03:19.190
virtuelle.

03:19.700 --> 03:20.270
D'accord.

03:22.520 --> 03:24.770
C'était donc la première étape.

03:25.370 --> 03:31.520
Vous pouvez maintenant voir que dans l'espace d'adressage de la mémoire virtuelle du processus, il y a des pages de mémoire

03:31.520 --> 03:35.630
virtuelle de couleur jaune et des pages de mémoire virtuelle de couleur verte.

03:35.900 --> 03:40.310
La seule différence entre ces deux pages de mémoire virtuelle à ce stade,

03:40.310 --> 03:46.370
du point de vue du processus, est que les pages de mémoire virtuelle de couleur verte sont créées à

03:46.370 --> 03:54.950
l'aide d'un système de mappage appelé via memory mapping, tandis que les autres pages de mémoire virtuelle sont créées par des appels catalog

03:54.950 --> 03:56.300
ou malloc.

03:57.980 --> 03:58.520
D'accord.

03:58.970 --> 04:02.360
Pour le reste, du point de vue du processus, il n'y a pas de différence.

04:02.600 --> 04:08.930
Quelles que soient les opérations que votre processus peut effectuer sur les adresses appartenant aux pages de mémoire virtuelle

04:08.930 --> 04:14.690
de couleur jaune, les mêmes opérations peuvent être effectuées sur les adresses de mémoire virtuelle appartenant

04:14.690 --> 04:17.690
aux pages de mémoire virtuelle de couleur verte.

04:18.500 --> 04:22.190
Votre processus ne fait aucune distinction en ce qui concerne l'opération.

04:22.190 --> 04:28.310
Il peut agir sur les adresses qui appartiennent aux pages de mémoire virtuelle de couleur jaune ou verte.

04:29.750 --> 04:34.100
Ainsi, toutes les fonctions de manipulation de la mémoire telles que Mxgp VI.

04:36.300 --> 04:44.130
Ou Madame, triste, etc. , etc. sont également applicables aux adresses qui appartiennent à ces pages

04:44.130 --> 04:45.220
virtuelles mammaires.

04:45.630 --> 04:46.260
D'accord.

04:47.750 --> 04:53.570
Tout comme votre processus, créez des structures de données dynamiques telles que des arbres de listes de liens, des files d'attente fiscales

04:53.570 --> 04:55.060
dans sa mémoire virtuelle normale.

04:55.070 --> 05:01.350
Votre processus peut créer ces mêmes structures de données en utilisant la mémoire virtuelle qu'il a importée.

05:01.370 --> 05:03.170
Utilisation d'un appel système de carte.

05:05.780 --> 05:11.450
Maintenant que votre processus a créé de nouvelles pages de mémoire virtuelle à l'aide de l'appel système map.

05:11.780 --> 05:19.070
Dès que votre système d'exploitation crée une nouvelle mémoire virtuelle pour un processus, il configure

05:19.070 --> 05:27.080
également la table des pages du processus et de nouvelles pages physiques sont créées dans la mémoire vive.

05:28.220 --> 05:28.850
D'accord.

05:29.030 --> 05:34.540
Ces nouvelles pages physiques correspondent aux nouvelles pages de mémoire virtuelle créées dans l'espace d'adressage

05:34.550 --> 05:35.870
virtuel du processus.

05:36.080 --> 05:43.370
Supposons qu'à l'aide de l'appel système map, votre processus ait créé les pages de mémoire virtuelle numéro

05:43.370 --> 05:45.080
cinq et numéro six.

05:45.470 --> 05:51.320
Votre système d'exploitation créera donc également de nouvelles pages physiques, disons la page physique numéro

05:51.320 --> 05:56.780
huit et la page physique numéro neuf, qui se verront attribuer une trame dans votre mémoire vive.

05:57.430 --> 05:58.060
C'est vrai.

05:58.060 --> 06:04.120
Il existe une table de collage du processus P qui serait mise en place et cette table d'espace

06:04.120 --> 06:12.790
serait mise à jour de manière à refléter le fait que la page virtuelle numéro cinq du processus est associée à la page physique

06:12.790 --> 06:16.540
numéro huit, qui est présente dans ce domaine.

06:17.440 --> 06:24.460
De même, la page virtuelle numéro six est mappée sur la page physique numéro neuf, présente dans la mémoire

06:24.460 --> 06:25.300
vive.

06:25.330 --> 06:31.030
Il s'agit donc de la table des pages du processus qui est mise à jour par notre système d'exploitation.

06:31.720 --> 06:38.260
Notez donc que lorsque l'appel système map est invoqué par le processus, étape numéro un, de nouvelles pages de mémoire

06:38.260 --> 06:40.120
virtuelle sont créées.

06:42.760 --> 06:46.450
Il s'agit du rythme numéro cinq et du rythme numéro six dans cet exemple.

06:47.200 --> 06:53.680
Deuxième étape, la table des pages du processus est créée ou mise à jour.

06:54.490 --> 06:55.660
Il est donc mis à jour.

06:55.660 --> 06:58.060
Le tableau de base du processus est mis à jour.

06:59.440 --> 07:01.480
Troisième étape, nouvelle.

07:03.320 --> 07:05.030
Pages physiques.

07:06.560 --> 07:09.350
Le processus est créé et.

07:10.920 --> 07:12.390
Chargé dans la mémoire vive.

07:12.960 --> 07:17.610
Qu'elles soient chargées dans la mémoire vive, c'est différent, car les pages sont chargées dans la mémoire

07:17.610 --> 07:19.260
vive, une seule page bien sûr.

07:19.260 --> 07:21.870
Mais il s'agit plutôt d'un concept de pagination.

07:21.870 --> 07:27.750
Pour l'instant, il suffit de comprendre que de nouvelles pages physiques sont également créées et qu'un cadre leur est attribué dans une mémoire

07:27.750 --> 07:28.350
vive.

07:31.580 --> 07:32.170
D'accord.

07:32.170 --> 07:37.420
Ainsi, lorsque l'appel système AMP est invoqué, ces trois étapes sont exécutées.

07:39.360 --> 07:42.870
Ainsi, lorsque votre processus exécute son fonctionnement normal.

07:42.900 --> 07:44.790
Supposons que l'adresse a.

07:46.790 --> 07:48.830
Est émis par l'unité centrale.

07:49.220 --> 07:52.970
Cette adresse a peut contenir des données ou des instructions.

07:52.970 --> 07:54.130
Cela n'a pas d'importance.

07:54.170 --> 08:00.140
L'adresse A est une adresse logique, qui se trouve quelque part dans la mémoire virtuelle de votre processus.

08:00.560 --> 08:01.010
D'accord.

08:01.010 --> 08:05.510
Y compris ces pages de mémoire virtuelle, qui sont créées par un appel système "map".

08:06.540 --> 08:11.220
Cette adresse logique sera donc traduite par l'AMU en adresse physique.

08:11.220 --> 08:18.660
Disons que l'adresse physique est P et que cette adresse physique P se trouve quelque part dans les pages physiques

08:18.660 --> 08:21.180
chargées dans la mémoire vive.

08:21.180 --> 08:24.180
Et ces pages physiques appartiennent à ce processus.

08:24.180 --> 08:28.410
Disons que l'adresse P se trouve ici dans la mémoire vive.

08:28.860 --> 08:36.300
Ainsi, si votre programme écrit à l'adresse E, la valeur de cette adresse signifie que la valeur de sera écrite dans

08:36.300 --> 08:36.960
la RAM.

08:37.710 --> 08:38.280
D'accord.

08:38.280 --> 08:41.820
La mémoire virtuelle, comme son nom l'indique, est une signification virtuelle.

08:42.570 --> 08:45.860
Les données réelles n'existent pas dans la mémoire virtuelle.

08:45.870 --> 08:48.270
Les données existent dans la mémoire physique.

08:48.690 --> 08:49.260
D'accord.

08:49.260 --> 08:53.190
La mémoire virtuelle n'est qu'une collection d'adresses et rien d'autre.

08:53.580 --> 08:59.970
La mémoire virtuelle n'est qu'une collection d'adresses logiques qui sont converties en adresses physiques.

08:59.970 --> 09:07.200
L'adresse physique est l'emplacement réel où les données sont lues ou écrites dans cette mémoire physique.

09:07.770 --> 09:08.310
D'accord.

09:08.310 --> 09:10.440
Il s'agit donc plutôt d'un concept de pagination.

09:10.440 --> 09:14.310
Je ne vais pas me plonger dans le concept de la pagination.

09:16.460 --> 09:23.480
L'objectif ici est de savoir comment un système de cartes appelé étend la mémoire virtuelle d'un processus et y

09:23.480 --> 09:26.610
inclut de nouvelles pages de mémoire virtuelle.

09:26.630 --> 09:32.030
Une fois que ces nouvelles pages de mémoire virtuelle font partie de l'espace d'adressage virtuel du processus.

09:32.060 --> 09:40.700
P Le concept et les opérations normales de pagination s'appliquent donc également à ces nouvelles pages de mémoire virtuelle

09:40.700 --> 09:42.560
qui sont créées.

09:43.060 --> 09:43.790
D'accord.

09:45.940 --> 09:47.920
Comme je l'ai dit au début, lorsque vous.

09:48.810 --> 09:51.060
Insérez le stylo dans votre ordinateur portable.

09:51.060 --> 09:57.810
Sa mémoire secondaire globale est étendue et la mémoire qui appartient au lecteur de bande fonctionne exactement de la même

09:57.810 --> 10:01.200
manière que la mémoire qui appartient à votre disque dur.

10:02.080 --> 10:02.740
D'accord.

10:02.860 --> 10:08.080
Dans ce cas, les nouvelles pages de mémoire virtuelle créées par l'appel système map sont également prises en compte.

10:08.170 --> 10:14.020
Une fois qu'elles font partie de l'espace d'adressage virtuel du processus, tous les concepts

10:14.020 --> 10:22.960
que nous appliquons à une adresse de mémoire virtuelle typique, tels que la pagination ou les opérations de manipulation de la mémoire comme Mxgp,

10:22.960 --> 10:26.950
VI, map set, etc. , etc. sont également applicables.

10:27.750 --> 10:35.280
Pour en venir à la dernière partie, vous pouvez voir que la page de mémoire virtuelle numéro cinq et six correspond à

10:35.280 --> 10:37.740
la page physique numéro huit et neuf.

10:38.220 --> 10:42.840
Comme je l'ai dit, les pages cinq et six de la mémoire virtuelle sont créées par la carte.

10:43.380 --> 10:43.980
D'accord.

10:43.980 --> 10:47.850
Cela signifie donc que la mémoire virtuelle, les pages cinq et six.

10:48.930 --> 10:56.570
Ah, c'est en fait le reflet de la mémoire qui est représenté par ce fichier texte de 8192 octets.

10:56.580 --> 11:02.460
Le système d'exploitation Linux propose donc un système supplémentaire appelé AM et map.

11:04.710 --> 11:07.080
Dès que l'appel système est exécuté.

11:07.080 --> 11:14.280
Tout d'abord, cet appel système est exécuté sur les pages de mémoire virtuelle qui ont été créées par notre appel

11:14.280 --> 11:15.330
système map.

11:15.600 --> 11:23.910
Ainsi, dès que cet appel système à la carte est exécuté sur la page virtuelle numéro cinq et la page virtuelle numéro six, quel qu'en soit

11:24.090 --> 11:30.300
le contenu, les données réelles, qui étaient présentes dans les pages physiques numéro huit et neuf,

11:30.300 --> 11:33.360
seront téléchargées dans ce fichier texte.

11:33.840 --> 11:36.780
Donc si je dis que je ne suis pas cartographié.

11:37.740 --> 11:40.080
La page virtuelle numéro cinq.

11:41.400 --> 11:41.760
D'accord.

11:41.760 --> 11:47.670
Nous allons donc écrire un programme de démonstration et je vous montrerai comment l'appel système non mappé est appelé.

11:47.670 --> 11:55.230
Maintenant, il faut comprendre que lorsque je suis sur la carte, l'appel système est appelé et si je passe le pointeur à la mémoire

11:55.230 --> 11:57.570
virtuelle, c'est le numéro cinq.

11:57.870 --> 11:59.550
Ainsi, le correspondant.

12:01.100 --> 12:03.350
Page physique numéro huit.

12:03.380 --> 12:12.200
Quel que soit le contenu ou les données écrites dans cette partie de la mémoire physique ou RAM, il sera téléchargé dans

12:12.200 --> 12:14.180
le fichier texte actuel.

12:15.570 --> 12:16.220
D'accord.

12:16.230 --> 12:24.420
De même, si j'invoque et mappe six, le contenu de la page physique numéro neuf, parce qu'elle est mappée à la page

12:24.420 --> 12:30.000
de mémoire virtuelle numéro six, sera téléchargé dans le fichier texte.

12:30.990 --> 12:31.590
D'accord.

12:32.280 --> 12:37.260
Cela signifie que dès que je suis sur la carte, l'appel système est invoqué.

12:37.590 --> 12:39.240
Quel que soit le contenu.

12:40.260 --> 12:44.100
Processus créé dans la mémoire virtuelle.

12:45.220 --> 12:48.950
Ce qui est représenté par la page numéro cinq et la page numéro six.

12:48.970 --> 12:52.300
Ce contenu sera réécrit dans le fichier texte.

12:52.900 --> 12:58.870
Rappelez-vous que c'est ce fichier texte qui a été simulé comme mémoire virtuelle pour votre processus.

12:58.900 --> 13:00.960
P Utilisation de l'appel système de la carte.

13:00.970 --> 13:04.590
Passons maintenant en revue ces points à l'aide de la cartographie de la mémoire.

13:04.600 --> 13:10.840
Un fichier texte sur le disque peut être rendu visible à l'application comme s'il s'agissait d'une mémoire virtuelle normale.

13:10.840 --> 13:17.380
La table de collage du processus est configurée de manière à faire correspondre des pages de mémoire virtuelle de couleur verte à des pages de mémoire

13:17.380 --> 13:23.710
physique de couleur verte dans la mémoire vive que nous avons déjà expliquée, toute modification apportée par le programme dans ses pages de

13:23.710 --> 13:27.850
mémoire virtuelle de couleur verte sera reflétée dans le fichier texte sur le disque.

13:27.880 --> 13:30.190
C'est ce que fait la carte d'Amazon.

13:30.730 --> 13:37.540
Les fonctions habituelles que nous utilisons pour manipuler la mémoire, telles que ma'am CPP, via des cartes, s'appliquent également aux pages de

13:37.540 --> 13:41.140
mémoire virtuelle qui sont créées à l'aide de cartes et de systèmes de cartes.

13:41.140 --> 13:48.040
Appelez 8192 octets pour que le fichier texte soit visible par votre programme sous la forme d'un tableau de 8192 octets.

13:48.460 --> 13:49.060
D'accord.

13:49.390 --> 13:53.260
Cela signifie donc qu'il s'agit d'un tableau de 8192 octets.

13:53.260 --> 14:00.040
Vous pouvez donc également écrire trois structures de données de type liste de liens qui sont en fait liées dans une structure

14:00.070 --> 14:01.960
au fichier texte mappé.

14:02.530 --> 14:06.010
Nous allions donc discuter de ce point un peu plus tard.

14:08.330 --> 14:08.960
Pour l'instant.

14:08.960 --> 14:18.440
Il suffit de comprendre que si 8192 octets sont importés comme 8192 octets de mémoire virtuelle pour votre processus, nous savons déjà que la mémoire

14:18.440 --> 14:21.980
virtuelle du processus est adressable par octets.

14:24.290 --> 14:27.020
Cela signifie que chaque bouchée a une adresse.

14:27.620 --> 14:32.750
Et lorsque vous disposez d'une mémoire adressable par octet, vous pouvez créer des structures de données

14:33.590 --> 14:41.180
telles que des listes de liens, des arbres, etc. , etc. Ces structures de données ont besoin d'adresses pour fonctionner,

14:41.210 --> 14:44.450
car il s'agit de structures de données basées sur des liens.

14:45.290 --> 14:49.850
Ainsi, un fichier texte de 8192 octets n'a pas d'adresse.

14:49.850 --> 14:52.910
Les octets individuels de ce fichier texte n'ont pas d'adresse.

14:52.910 --> 14:55.550
Il s'agit d'une simple mémoire de 8192 octets.

14:55.880 --> 15:01.640
Mais une fois que ce fichier texte est importé en tant que mémoire virtuelle dans le processus, l'espace d'adressage virtuel

15:01.640 --> 15:03.950
de 8192 octets devient adressable par octets.

15:03.950 --> 15:05.750
C'est-à-dire que chaque octet a une adresse.

15:05.840 --> 15:12.440
Cela signifie donc que votre programme peut créer des structures de données de type liste de liens dans cette carte de mémoire

15:12.620 --> 15:20.810
virtuelle, la mémoire virtuelle peut invoquer arm et cartographier l'appel système en utilisant et cartographier l'appel système quoi qu'il en soit.

15:25.160 --> 15:26.300
La page physique.

15:27.620 --> 15:29.600
Notez-le maintenant.

15:29.600 --> 15:30.860
Non pas que depuis le .

15:34.260 --> 15:39.990
Une fois que le processus a créé des listes liées dans ces pages de mémoire virtuelle, comme je l'ai dit, cette mémoire virtuelle

15:39.990 --> 15:42.570
n'est rien, mais c'est une collection d'adresses.

15:42.570 --> 15:45.870
La liste des liens est donc créée dans la page physique.

15:46.860 --> 15:47.540
D'accord.

15:47.550 --> 15:56.100
Et lorsque le processus invoque le système non mappé appelé n'importe quel instantané des données que nous avons dans les pages physiques

15:56.100 --> 16:02.520
correspondantes, celles-ci seront téléchargées dans la mémoire matérielle actuelle.

16:02.520 --> 16:05.070
Dans le cas présent, cette mémoire matérielle est un fichier texte.

16:05.520 --> 16:08.430
Cela signifie donc que vous avez écrit.

16:10.630 --> 16:13.840
Une liste chaînée et un fichier texte.

16:14.290 --> 16:17.980
Avez-vous déjà pensé à la manière d'écrire une liste de liens dans un fichier texte ?

16:18.970 --> 16:19.540
D'accord.

16:19.690 --> 16:21.990
Nous en reparlerons plus tard.

16:22.000 --> 16:28.690
J'essayais simplement d'expliquer quel est l'avantage des fichiers de mappage de la mémoire ?

16:30.120 --> 16:35.670
Vous pouvez enregistrer vos structures de données liées telles que les listes de liens, les arbres, les files d'attente ou toute autre structure de

16:35.670 --> 16:37.380
données compliquée dans une mémoire plate.

16:37.620 --> 16:43.380
Parce que cette mémoire plate a été rendue adressable, en important cette mémoire dans l'espace d'adressage

16:43.410 --> 16:44.730
virtuel du processus.

16:45.420 --> 16:45.990
D'accord.

16:45.990 --> 16:49.290
Nous reviendrons donc sur ce point ultérieurement.

16:49.320 --> 16:52.110
Arrêtons la discussion ici.

16:54.240 --> 17:00.330
Dans ce cours vidéo, nous avons donc abordé l'ensemble du concept de mappage de la mémoire.
