2009-04-30 8 views
0

Disons que j'ai utilisé un programme qui lisait un fichier et que le programme était terminé. Maintenant, plus probablement que certaines parties du fichier résident toujours dans le ram physique (supposons que j'ai une énorme quantité de RAM).Y at-il un moyen de savoir quelle partie du fichier est encore dans la RAM physique après qu'elle ait été lue par un processus

Y at-il un moyen de savoir quelles parties du fichier résident dans le RAM physique? Y at-il un outil qui peut le faire ou peut-être un appel de fonction Winapi?

+0

Quelle RAM? Cache du processeur? L2 Cache? Mémoire principale? Cache de bus d'E/S? Cache du contrôleur de disque? Le (s) quel (s) voulez-vous savoir? –

+0

Qu'essayez-vous d'accomplir? L'information contenue dans le fichier est-elle sensible et vous voulez en effacer toutes les traces? – Coincoin

Répondre

2

Quelques points à retenir:

  1. Vous ne disposez d'un accès direct à la RAM physique. Le système d'exploitation vous donne une abstraction de la RAM. Il peut s'agir de RAM physique ou de mémoire virtuelle sur un disque dur. Tu ne peux jamais savoir.
  2. Même si certains bits restent cachés dans une partie de la RAM (physique ou autre), l'OS considère ce bloc de mémoire comme libre (à moins qu'il n'ait déjà été repris). Je doute que vous puissiez y accéder sans pirater le système d'exploitation en quelque sorte.

Permettez-moi de préciser mon point en ce qui concerne votre commentaire:

Supposons que vous ouvriez un fichier, lire la RAM, a fait des choses avec elle, et fermé le dossier, et votre programme a pris fin. Tout d'abord, je pense que nous sommes tous d'accord sur le fait que la partie de RAM que vous avez utilisée n'est plus prise en charge et est considérée comme gratuite par l'OS. Signification d'un autre programme qui vient et demande de la RAM pourrait recevoir ce bloc de mémoire. Donc, tout d'abord, rien ne réside plus dans ce bloc de mémoire. C'est vide. Gratuit pour l'OS à utiliser à sa discrétion.

Maintenant, même si des données aléatoires sont laissées traîner (rappelez-vous, vous n'avez aucun moyen de savoir si c'est physique ou autrement), vous n'avez aucun accès direct à eux.

J'espère que cela clarifie.

+0

Jon Skeet pourrait être en désaccord sur ce point. Il peut probablement pirater votre RAM à distance à l'aide d'une calculatrice à charbon, P –

+0

merci pour la réponse. Mais lisez attentivement ma question. Je ne veux pas un accès direct à la RAM, je veux juste savoir quels fichiers (ou une partie d'entre eux) résident dans le RAM. – user88637

+0

@ yossi1981: Quelle RAM? Il y a beaucoup, beaucoup de morceaux de RAM dans un processeur moderne, lesquels demandez-vous? –

0

Si vous parlez de Windows, le contenu sera dans le cache de fichiers Windows.

Il n'y a pas d'outil/API pour lire le cache de fichiers Windows maintenant. Cependant, vous pouvez lire tous les contenus de votre mémoire physique par un nom spécial comme CreateFile ('\\. \ PhysicalMemory') ou le nom \ Device \ PhysicalMemory. (note: fonctionne uniquement sous XP/2000)

0

> il n'y a pas d'outil/API pour lire le cache de fichiers Windows maintenant.

Bien sûr, il existe des API (Win32 st)!