Taille du fichier exe vs mémoire disponible

Je suis passé par Comment un fichier PE est-il mappé dans la mémoire? , ce n’est pas ce que je demande.

Je veux savoir quelles sections (données, texte, code, …) d’un fichier PE sont toujours complètement chargées en mémoire par le chargeur, quelle que soit la condition?

Selon ma compréhension, aucune des sections (code, données, ressources, texte, …) n’est toujours chargée complètement, elles sont chargées au fur et à mesure des besoins, page par page. Si quelques pages de code (au milieu ou à la fin) ne sont pas nécessaires pour traiter la demande de l’utilisateur, ces pages ne seront pas toujours chargées.

J’ai essayé de faire des fichiers exe avec beaucoup de code avec / sans ressources qui ne sont pas utilisées du tout, mais chaque fois que l’exe charge dans la mémoire, cela prend plus de mémoire que la taille du fichier. (J’ai peut-être regardé la mauvaise colonne de mémoire dans le Gestionnaire des tâches)

Matt Pietrek écrit ici

Il est important de noter que les fichiers PE ne sont pas simplement mappés dans la mémoire en tant que fichier unique mappé en mémoire. Au lieu de cela, le chargeur Windows examine le fichier PE et décide des parties du fichier à mapper.

et

Un module en mémoire représente tout le code, les données et les ressources d’un fichier exécutable requirejs par un processus. D’autres parties d’un fichier PE peuvent être lues, mais non mappées (par exemple, des réinstallations). Certaines parties peuvent ne pas être mappées du tout, par exemple, lorsque les informations de débogage sont placées à la fin du fichier.

En un mot,

1- Il existe un exe de taille 1 Mo et la mémoire disponible (physique + virtuelle) est inférieure à 1 Mo, est-il cohérent que le chargeur refuse toujours de charger car la mémoire disponible est inférieure à la taille du fichier?

2- Si un exe de taille 1 Mo prend 2 Mo de mémoire lorsqu’il est chargé (commence à exécuter la première ligne du code utilisateur) alors que la mémoire disponible (physique + virtuelle) est de 1,5 Mo, est-ce cohérent que le chargeur refuse toujours de charger assez de mémoire?

3- Il existe un exe de taille 50 Mo (beaucoup de code, de données et de ressources) mais il faut 500 Ko pour exécuter la première ligne du code utilisateur, est-il logique que cet exe exécute toujours la première ligne de code si la mémoire disponible ( physique + virtuel) est au moins 500 KB?