Crunchez vos adresses URL
|
Rejoignez notre discord
|
Hébergez vos photos
Affichage des résultats 1 à 12 sur 12
  1. #1
    Bonjour à tous,

    voilà, suite à un topic sur le forum de hardware.fr
    http://forum.hardware.fr/forum2.php3...trash=&subcat=

    j'ai une petite question :
    il existe sous Linux un patch qui permet d'utiliser une barette défectueuse (disons pas fiable à 100 %) : badram (http://rick.vanrein.org/linux/badram/)

    J'aimerai connaitre à la faisabilité et la complexité du développement d'un equivalent Windows.

    sur HFR BJOne suggérait un driver en mode kernel qui verouille les pages mémoires qui contiennent les adresses en erreur.

    Franck, un avis ?

  2. #2
    salut,
    voilà une bonne initiative ! ça peut être assez utile en effet.
    Déjà il faut savoir que tout ce qui est fait sous Linux peut être fait sous Windows, mais de façon beaucoup beaucoup moins simple.

    J'ai lu rapidement, et à priori deux problèmes se posent pour un éventuel "patch" :

    - quand lancer le patch ? Il faut distinguer deux cas : sous Windows 9x/Me, un programme dos peut faire l'affaire, on le colle dans l'autoexec.bat et ça roule. Sous NT/2K/XP, comme le suggère Bjone, un driver ferait l'affaire, mais quand un driver est démarré Windows s'est déjà pas mal étalé en mémoire, et donc si la zone défectueuse a déjà été atteinte ça peut déconner. Pour ça j'ai une parade, en utilisant - rigolez pas - une disquette de démarrage. Ca marche à coup sûr, seulement bon faut se trimbaler la disquette dans le lecteur tout le temps (façon Mathlon pour ceux qui connaissent ce soft).

    - que faire pour isoler les zones défectueuses ? D'après ce que j'ai compris du patch, il teste chaque page, et si elle est défectueuse il utilise reserve_bootmem qui fait ... je sais pas trop quoi. Je pense que Linux maintient un tableau interne de pages, et la fonction doit marquer l'entrée défectueuse comme invalide, mais franchement je suis pas certain.
    Par contre je me demande si avec les MTRR (Memory Type Range Register) qui permettent de définir la politique de gestion de zones mémoires, on ne pourrait pas marquer qques zones spécifiques en lecture seule ; ceci fait dès le début du boot empêcherait Windows de les utiliser.

    Ca fait beaucoup d'inconnues, à voir de plus près donc, mais c'est une très bonne idée en tout cas.

    à+

  3. #3
    Citation Envoyé par Franck@x86
    salut,
    voilà une bonne initiative ! ça peut être assez utile en effet.
    Déjà il faut savoir que tout ce qui est fait sous Linux peut être fait sous Windows, mais de façon beaucoup beaucoup moins simple.

    J'ai lu rapidement, et à priori deux problèmes se posent pour un éventuel "patch" :

    - quand lancer le patch ? Il faut distinguer deux cas : sous Windows 9x/Me, un programme dos peut faire l'affaire, on le colle dans l'autoexec.bat et ça roule. Sous NT/2K/XP, comme le suggère Bjone, un driver ferait l'affaire, mais quand un driver est démarré Windows s'est déjà pas mal étalé en mémoire, et donc si la zone défectueuse a déjà été atteinte ça peut déconner. Pour ça j'ai une parade, en utilisant - rigolez pas - une disquette de démarrage. Ca marche à coup sûr, seulement bon faut se trimbaler la disquette dans le lecteur tout le temps (façon Mathlon pour ceux qui connaissent ce soft).

    - que faire pour isoler les zones défectueuses ? D'après ce que j'ai compris du patch, il teste chaque page, et si elle est défectueuse il utilise reserve_bootmem qui fait ... je sais pas trop quoi. Je pense que Linux maintient un tableau interne de pages, et la fonction doit marquer l'entrée défectueuse comme invalide, mais franchement je suis pas certain.
    Par contre je me demande si avec les MTRR (Memory Type Range Register) qui permettent de définir la politique de gestion de zones mémoires, on ne pourrait pas marquer qques zones spécifiques en lecture seule ; ceci fait dès le début du boot empêcherait Windows de les utiliser.

    Ca fait beaucoup d'inconnues, à voir de plus près donc, mais c'est une très bonne idée en tout cas.

    à+
    Merci pour cette réponse encourageante.

    Pour préciser un peu ce qui se fait sous linux :
    * le Howto de badram précise qu'il serait bien de mettre une "bonne" barette sur le premier slot de mémoire et la "mauvaise" sur le dernier slot afin de pouvoir commencer le boot sans erreur (ça peut éviter le coup de la disquette je pense).

    * D'après ce que j'ai compris, badram ne teste pas la ram (beaucoup trop long de le faire bien), il s'appuie sur le résultat de memtest.

    Sinon, pour la solution dos/win9x comment être sûr que si on charge qqch à une adresse donnée (pour réserver l'adresse défectueuse), windows ne le déplacera pas après ? (en fait, je ne suis pas spécialiste de la programmation windows !)

  4. #4
    d'ailleurs franck, y'avait auquel j'avais pensé qui serait bien utile sous windows:

    un ramdisk dynamique

    passke tous les ramdisk qui existent sont statiques, ils verrouillent la mémoire en fonction de qui est défini par un interface.

    alors qu'un ramdisk dynamique qui a une taille "max" de défini, retourne toujours en place libre max-utilisé, et fait de l'allocation dynamique au fur & à mesure des écritures...

  5. #5
    Non bien sûr on ne peut pas empêcher Windows d'utiliser une zone mémoire, il fait un peu ce qu'il veut.
    Mais les MTRR gèrent la façon dont le software (incluant Windows donc) voient la mémoire physique, et on peut ainsi outrepasser la gestion mémoire de Windows (dans une certaine mesure quand même).

    Par exemple, si tu définis une zone mémoire en mode "Write protected", aucun logiciel n'y aura accès, et donc on est certain que Windows n'écrira pas dedans. Par conséquent, il ne faut pas qu'il l'ai déjà fait, car je pense que le système planterait (d'où l'intérêt de le faire avant même le démarrage de Windows).

    Inconvénient des MTRR : on peut, en gros, découper la mémoire physique en seulement huit zones. Ca ne permet donc pas une sélection très précise des zones à isoler, surtout s'il y en a beaucoup.
    Pour plus d'infos sur les MTRR, regarede le doc Intel Architecture volume 3, chapitre 10.11.

  6. #6
    Citation Envoyé par bjone
    d'ailleurs franck, y'avait auquel j'avais pensé qui serait bien utile sous windows:

    un ramdisk dynamique

    passke tous les ramdisk qui existent sont statiques, ils verrouillent la mémoire en fonction de qui est défini par un interface.

    alors qu'un ramdisk dynamique qui a une taille "max" de défini, retourne toujours en place libre max-utilisé, et fait de l'allocation dynamique au fur & à mesure des écritures...
    Le ramdisk c'est plutôt un truc pour les serveurs ça non ?
    Là ça dépasse mes compétences en tout cas.

  7. #7
    non, c'est juste un truc qui simule un disque physique, mais en ram.... (très utile sur amiga & mac).

    y'a un exemple dans le DDK de win2k, mais l'espace mémoire est statique.

  8. #8
    Citation Envoyé par bjone
    non, c'est juste un truc qui simule un disque physique, mais en ram.... (très utile sur amiga & mac).

    y'a un exemple dans le DDK de win2k, mais l'espace mémoire est statique.
    BJOne, qu'entends-tu par statique ?
    - Si c'est qu'une fois qu'il a alloué sa mémoire il ne "déménage" pas
    et en plus si on peut spécifier à quelle adresse il doit aller
    alors on le tient le badram for windows ? (ça fait beaucoup de si tout ça...)
    (il faut juste créer autant de ramdisk que d'adresses défectueuses et ne pas utiliser le ramdisk)
    - si statique c'est juste par rapport à sa taille fixe, je ne voit pas trop l'intérêt d'un dynamique (le systême verra toujours un disque plein si on libère la place non utilisée, non ?)

  9. #9
    Citation Envoyé par Marc E
    Citation Envoyé par bjone
    non, c'est juste un truc qui simule un disque physique, mais en ram.... (très utile sur amiga & mac).

    y'a un exemple dans le DDK de win2k, mais l'espace mémoire est statique.
    BJOne, qu'entends-tu par statique ?
    - Si c'est qu'une fois qu'il a alloué sa mémoire il ne "déménage" pas
    et en plus si on peut spécifier à quelle adresse il doit aller
    alors on le tient le badram for windows ? (ça fait beaucoup de si tout ça...)
    (il faut juste créer autant de ramdisk que d'adresses défectueuses et ne pas utiliser le ramdisk)
    - si statique c'est juste par rapport à sa taille fixe, je ne voit pas trop l'intérêt d'un dynamique (le systême verra toujours un disque plein si on libère la place non utilisée, non ?)
    non je parlais d'autre chose.
    un truc présent sur les amiga & les mac, et qui pourrait être utile de temps en temps (suffisament rarement pour que grosoft en fasse un de propre)....

  10. #10
    Citation Envoyé par Franck@x86
    Non bien sûr on ne peut pas empêcher Windows d'utiliser une zone mémoire, il fait un peu ce qu'il veut.
    Mais les MTRR gèrent la façon dont le software (incluant Windows donc) voient la mémoire physique, et on peut ainsi outrepasser la gestion mémoire de Windows (dans une certaine mesure quand même).

    Par exemple, si tu définis une zone mémoire en mode "Write protected", aucun logiciel n'y aura accès, et donc on est certain que Windows n'écrira pas dedans. Par conséquent, il ne faut pas qu'il l'ai déjà fait, car je pense que le système planterait (d'où l'intérêt de le faire avant même le démarrage de Windows).

    Inconvénient des MTRR : on peut, en gros, découper la mémoire physique en seulement huit zones. Ca ne permet donc pas une sélection très précise des zones à isoler, surtout s'il y en a beaucoup.
    Pour plus d'infos sur les MTRR, regarede le doc Intel Architecture volume 3, chapitre 10.11.
    Merci pour ces références. Je viens de jeter un oeil sur Intel Architecture Software Developer’s Manual Volume 3: System Programming Guide de 1997, chapitre 9.11.7 pour être précis. Il est dit :
    "The operating system maintains the MTRRs after booting and sets up or changes the memory types for memory-mapped devices. The operating system should provide a driver and application programming interface (API) to access and set the MTRRs."

    Il me semle donc que ce n'est pas gagné si l'os change les settings effectués à sa guise. Mais il est raisonnable de penser qu'il ne changera pas un MTRR de type variable range s'il y est déjà affecté, non ? Sinon, il faudra un autre mécanisme.

    Sinon, question bète : quelle compilateur est capable de faire un driver pour xp en mode kernel ?

  11. #11
    Tout juste ! Je pense en effet que Windows ne reconfigure pas les MTRR, mais c'est à vérifier. Et en tout cas il ne propose pas d'API pour le faire.

    Pour développer un driver il te faut le DDK (Driver Development Kit) qui est là :
    http://www.microsoft.com/DDK/
    Il est gratuit, et comporte de nombreux exemples.

  12. #12
    Citation Envoyé par Franck@x86
    Tout juste ! Je pense en effet que Windows ne reconfigure pas les MTRR, mais c'est à vérifier. Et en tout cas il ne propose pas d'API pour le faire.

    Pour développer un driver il te faut le DDK (Driver Development Kit) qui est là :
    http://www.microsoft.com/DDK/
    Il est gratuit, et comporte de nombreux exemples.
    Oui, mais pas de téléchargement possible depuis le site de MS...
    je cite : "We will not be offering this DDK as a download on this Web site."
    Il faut s'enregistrer et ils t'envoient le CD (frais de port).

    N'y aurait-il pas un site qui proposerait cette (nouvelle) version du ddk en libre téléchargement ?

Règles de messages

  • Vous ne pouvez pas créer de nouvelles discussions
  • Vous ne pouvez pas envoyer des réponses
  • Vous ne pouvez pas envoyer des pièces jointes
  • Vous ne pouvez pas modifier vos messages
  •