bjone Insert booze to continue | yannick_frere a écrit :
La swap n'est absolument pas un espace temporaire ! Au contraire, ce serait plus la ram qui l'est !
J'ai refeuilleté mon cours de Principes fondamentaux des OS et je vais t'expliquer ce qu'il y a dedans pour que tu saches sur quoi reposent mes affirmations (mon prof !
L'espace adressable d'un programme est découpé en plusieurs segments (données, code, pile, etc). Chaque segment contient plusieurs pages. Toute la mémoire est composée de pages. Et toute la mémoire, c'est quoi ? C'est l'ensemble ram + disque dur (espace réservé : la swap).
Donc le but de la mémoire virtuelle est de faire croire qu'il y a pratiquement autant de mémoire ram qu'on le souhaite ! Ce qui fait que tous les programmes qu'on lance peuvent se lancer en ram, sans tenir compte de l'occupation de celle-ci. C'est d'ailleur le but général d'un OS : faire en sorte que le programmeur n'ait pas à se soucier des caractéristiques techniques précises de la machine sur laquelle le programme doit tourner !
Cependant, le cpu ne peut exécuter que des instructions et traiter des données qui proviennent de la ram (pas du disque dur !). Dès lors, si une page de mémoire ne se trouve pas en ram au moment où il en a besoin, c'est l'OS (le noyau) qui se charge d'aller la rechercher sur le disque et de la placer en ram (en en éjectant une autre si le besoin s'en fait sentir !).
Déjà, rien qu'ici, tu comprends bien que le noyau NE PEUT PAS quitter la ram ! C'est lui qui gère l'entièreté du mécanisme de la mémoire virtuelle, utilisée de manière transparente par tous les processus qui tournent.
Une autre fonction du noyau, c'est le scheduling (en gros, faire passer les programmes dans un ordre optimisé pour qu'ils s'exécutent simultanément). Evidemment, lui aussi doit rester en mémoire ram, sinon qui appeler lorsque le processeur a terminé une tâche ? (Je rappelle que le cpu ne peut interagir QU'AVEC la ram, pas avec le disque dur !). Il faut que le processeur puisse contacter le noyau en ram --> le noyau doit s'y trouver !
Je passe sur tous les mécanismes des I/O, les interactions entre processus (sémaphores, message queues etc)(bon, ok, c'est Unix, ça, je ne sais pas si ça existe sous Windows, mais c'est pas grave).
Mon but est simplement celui-ci : non, le noyau ne peut pas quitter la ram ! En tout cas, ses composantes essentielles doivent rester en ram. Maintenant, qui sait ce que MS a pu ajouter en plus autour et qui pourrait éventuellement rester en ram grâce à l'activation d'une clé ... Mais on ne parle plus vraiment du noyau et des services fondamentaux qu'il a à remplir, là !
|
c'est bien, tu as bien appris tes cours sinon sous Windows, c'est exactement les mêmes principes que sous Unix (Linux), les mêmes primitives (sémaphore, mémoire partagée etc etc....)
ce que tu peux optimiser en sélectionnant ce qui démarre ou pas automatiquement, sous Windows c'est les services (== démons sous Unix).
après effectivement au niveau driver ou autre composant au niveau de privilège du noyau, il y'a moyen d'avoir des portions de données non pageable et d'autres pageable, donc avec cette clé, ce que les pilotes déclarent en pageable, ne sera pas mis en swap par le noyau.
après pour en revenir à farcry:
1) 1Go de ram suffit largement, après si tu as 10 milles daubes lancés en arrière plan (icq, msn, machin, bidule.....)
2) sur une carte haut de gamme (radeon 9800...) il tourne bien à très bien 99% du temps, mais il y a des situations où la carte va avoir mal (bocoup de textures projectives, volumes d'ombres, textures de profondeur pour les ombres...)
FarCry est le début des jeux pixel shaderisés comme ça devrait, et oui une radeon 9800 est une sorte de minimum. |