Theorie assembleur: mod réel, mode protégé, mode virtuel
tezca_system
Messages postés25Date d'inscriptionlundi 6 mars 2006StatutMembreDernière intervention 5 mars 2007
-
7 mars 2006 à 01:01
cs_patatalo
Messages postés1466Date d'inscriptionvendredi 2 janvier 2004StatutModérateurDernière intervention14 février 2014
-
7 mars 2006 à 08:10
Une chose que je n'arrive pas a comprendre, et peut etre que vous pourrez m'eclairer c'est comment fonctionne le mode virtuel.
A partir de windows NT4?/2000 windows fait main basse sur le processeur donc interdiction formelle d'envoyer de de faire des interruptions materielles, donc fini le fabuleux mode réel et bien venu dans le mode protégé (implication direct de ce fameux dos-like). Mais winows n'est pas un crevard, il nous offre les api. Quand tu lances ton applications en 16 bit et non pas 32, windows t'offre un pseudo mode reel dans son mode protegé qui correspond a ce que l'on appelle le mode virtuel.
ai je bien appris ma lecon?
Donc concretement ce mode virtuel est il aussi eficasse que le mode reel?
Le systeme des interruptions est il encore d'actualité dans le mode virutel?
Parceque les developpeurs de jeux videos doivent parler directement a la carte graphique quand leur jeu se lance sous windows XP nan? ce qui necessite j'ai l'intuition une interuption materielle...mais qui est interdit en theorie car on est quoi qu'il arrive en mode protegé...fear je tourne un peu en rond là quelqu'un pourrait t'il m'eclairer. Ce sont des questions theoriques pures et comprendre cela maintenant pourrait m'orienter plus precisement dans mon apprentissage de l'assembleur.
cs_patatalo
Messages postés1466Date d'inscriptionvendredi 2 janvier 2004StatutModérateurDernière intervention14 février 20142 7 mars 2006 à 08:10
salut,
le mode v86 est bien expliqué dans la doc d'intel. n'hesite pas a la consulter.
le mode v86 s'execute au niveau 3 ( ring 3 utilisateur ).
l'instruction "int XX" est une instruction privilégiée donc elle genere une exception GPF quand le mode v86 l'utilise. Cela permet a Windows de detecter et de traiter l'interruption ( redirection de cs:ip vers le vecteur v86 souhaité ).
le mode v86 est completement sous le controle de Windows et ne peut rien faire sans son autorisation. Par exemple, pour acceder directement au materiel, il faut que la memoire de ce materiel soit mappée dans le page directory.
le mode v86 ne peut pas etre aussi rapide que le mode réel simple puisqu'il necessite une emulation. Part contre, il permet de mettre en parallele plusieurs tache v86 independantes les unes des autres.
Il ne faut plus programmer en 16 bits...
le mode v86 permet d'executer nos anciens programmes mais ne doit pas etre une solution envisageable pour programmer a l'heure actuelle.
La seule exception que je ferais serait pour un system d'exploitation qui voudrait utiliser le BIOS à la place de "drivers" ou en soutien de detection. ( materiel mal documenté, ... )
L'interruption materielle est avant tout pour le system d'exploitation mais pourrait etre transmise a une tache v86 de la meme maniere que pour l'instruction "int XX".