2010-01-18 12 views
2

Je ne suis pas sûr de savoir si c'est un bon endroit à poser ou si je ne suis pas sûr de savoir comment mettre ma requête.Quelles sont les différentes zones de Memory & Disk?

Permettez-moi de cette façon:

  • début de la mémoire principale à 0x00000 à 0xFFFFF.
  • Espace disque commençant à 0x00000000 à 0xFFFFFFFF.

Mais qu'est-ce que nous serons en mesure d'accéder ne sera pas de 0 octet jusqu'au dernier octet droit? Sur le disque dur, je suppose qu'au 0e octet, nous avons MBR. & à un endroit où nous avons un système de fichiers (nous ne pouvons accéder qu'à cela). Quoi d'autre?

De même avec la mémoire principale. Nous avons de la mémoire utilisateur de Kernel Memory & (dans laquelle chaque processus se déroule). Quoi d'autre?

Ma question est ce que sont tous les régions du octet 0 au dernier octet? Je ne sais pas quoi chercher ou où trouver ces informations? Si quelqu'un peut poster des liens, ce serait génial.

EDIT:

J'utilise x86 32 bits sous Windows. En fait, je lisais un livre sur la sécurité informatique où l'auteur mentionne qu'un malware peut soit vivre sur le disque ou dans la mémoire (ce qui est très vrai). Mais quand nous disons que l'ordinateur est infecté, cela ne signifie pas que seuls les fichiers (qui font partie du système de fichiers) sont infectés. Il y a d'autres zones qui ne sont pas destinées à l'utilisateur, comme MBR. ou la mémoire du noyau.

Donc, la question a surgi dans mon esprit. Quels sont tous ces domaines dont je ne suis peut-être pas au courant?

+1

Ceci est ** extraordinairement ** dépendant de quelle plateforme vous parlez. Personne ne peut vous donner une réponse significative jusqu'à ce que nous sachions de quel matériel nous parlons. (Même dans ce cas, pas de programmation, sauf si vous pouvez attacher une tâche que vous essayez d'accomplir avec la programmation.) – GManNickG

+0

Pour quoi avez-vous besoin de cette information? Vous avez l'étiquette "pilote" là. Si vous voulez écrire un pilote, utilisez les fonctions fournies par le système d'exploitation pour accéder à la mémoire et vous n'avez pas à vous soucier des détails. – ahans

+0

Ces hypothèses ne sont pas vraies de toute façon. Avec la mémoire virtuelle, tout est possible. –

Répondre

1

Mis à part le fait que la réponse à cette question dépend fortement du système d'exploitation, l'espace disque ne fait pas partie de la mémoire principale. Sur les architectures Intel, l'accès au disque prend un espace d'adressage d'E/S (différent de l'adresse mémoire) par canal. Et le nombre exact de mots dépend du canal: IDE/ATA/SATA/SCSI. Sur d'autres architectures qui sont mappées en mémoire comme l'accès au disque PowerPC, prenez un peu d'espace d'adressage mémoire, mais toujours pas beaucoup. Pour illustrer (et être averti que c'est un exemple très simplifié, pas le monde réel), supposons une CPU mappée en mémoire * comme le PowerPC essayant d'accéder à un disque avec l'adressage LBA. Le disque n'a besoin que de 2 à 3 mots de mémoire pour contenir plusieurs gigaoctets de données. Autrement dit, nous avons seulement besoin de 12 octets pour stocker et récupérer Gigaoctets de données:

  • 2 mots (8 octets) pour dire le disque où chercher à, qui est, à quelle adresse que nous voulons lire forme ou écrire à.
  • 1 mot (4 octets) pour réellement lire et écrire. Chaque fois que vous lisez à partir de cette adresse, le mot pointer incrémente automatiquement de 1 caractère (ou 4 si vous lisez en 32 bits).

Mais ce qui précède est une vue abstraite de ce qui se passe réellement. La plupart des contrôleurs de disque ont plusieurs autres registres pour contrôler la gestion de l'alimentation, la vitesse d'essorage du disque, entrer et sortir des modes de veille, etc.

Et quelles sont les adresses de ces emplacements de mémoire? Eh bien, cela dépend du canal d'E/S dont vous parlez.Le bus ISA de la vieille école dépend des cavaliers de réglage de l'utilisateur sur les cartes pour définir les adresses. Donc, pour ceux que vous devez demander à l'utilisateur. Le bus PCI négocie automatiquement les adresses avec les contrôleurs de disque au démarrage et, selon l'architecture, indique à votre BIOS quels périphériques existent ou les passe en tant que paramètres au bootloader ou les stocke dans des registres temporaires sur le bus système. USB fonctionne comme PCI mais négocie avec le système d'exploitation au lieu du BIOS ... etc

Comme vous pouvez le voir, il n'y a pas de réponse simple à cela même si vous le limitez à des cas spécifiques comme Windows7 fonctionnant sur 64 bits AMD Processeur fonctionnant sur les cartes mères Dell.

* remarque: vous êtes préoccupé par les emplacements mémoire.

0

Votre question est complexe, et difficile à répondre sans connaître l'étendue de la vision de la mémoire. Prétendre que nous sommes en anneau-0 avec la mémoire mappée directe, un PC-compatible a plusieurs régions de mémoire. Réduisez la mémoire, le code mappé BIOS, les ports IO, la mémoire vidéo, etc. Ils vivent tous dans le même espace mémoire. Vous communiquez avec les périphériques en lisant et en écrivant à partir d'adresses mémoire spécifiques (qui sont mappées à ces composants). Ces adresses sont configurées par le matériel en question et les pilotes utilisés.

Une fois en mode utilisateur, vous devez gérer la mémoire virtuelle. Les adresses sont symboliques et peuvent ou non correspondre à une partie particulière de la mémoire physique. Je suggère de lire sur Virtual memory