IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Linux Discussion :

Programmer RAM Cleaner


Sujet :

Linux

  1. #1
    Membre habitué
    Avatar de Code Rom
    Homme Profil pro
    Cherche et essaie de corriger les bugs, ici ou là.
    Inscrit en
    Juin 2009
    Messages
    125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Cherche et essaie de corriger les bugs, ici ou là.

    Informations forums :
    Inscription : Juin 2009
    Messages : 125
    Points : 159
    Points
    159
    Par défaut Programmer RAM Cleaner
    Bonsoir, j'ai dans l'idée de faire un programme qui viderait ma RAM sans que j'ai a éteindre mon PC.Mais j'avoue ne pas trop savoir comment m'y prendre.Bon le langage ça je le sais se seras avec du C.


    Ensuite j'ai imaginé de faire comme ceci :

    1) allouer la mémoire via la fonction calloc() puis une fois la mémoire entièrement allouer faire un gros free() de la mort qui tue.

    J'ai quelques doutes sur ce procédé :
    Déjà comment je differencis une case mémoire vide d'une case mémoire occupée par des données d'un programme qui tourne , ensuite est ce que remplir ansi la ram n'est pas un peu dnagereux pour le system.Puis comment se définit les numéro de case mémoire ? La première c'est 0x00000000 (pour du 8bits) 0x0000000000000000 (pour du 16) ect... ? C'est correct ça ?

    Bref vous voyez j'ai plein de questions dans la tête et peu de réponse a apporter, voila pourquoi je solicite votre aide.

    Bien a vous, merci.Ah oui bonne annné blablablabla xD

  2. #2
    Responsable 2D/3D/Jeux


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    26 975
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 26 975
    Points : 221 711
    Points
    221 711
    Billets dans le blog
    131
    Par défaut
    Bonjour et bonne année, tout ça, tout ça.

    Le calloc n'alllouera qu'un bloc de mémoire non occupé (de même que pour le malloc). Donc, dans l'immédiat, vous allez nettoyer que de la mémoire libre.
    La première c'est 0x00000000 (pour du 8bits) 0x0000000000000000 (pour du 16) ect... ? C'est correct ça ?
    Ça, c'est dans la théorie. Sauf que le noyau ne vous laisse pas accéder réellement à la mémoire (physique). Il y a un mécanisme de page virtuelle et lors d'un malloc/calloc le noyau renvoi une adresse virtuelle dont lui seul connaît la correspondance avec la réalité physique. Aussi, dans les mécanismes un peu poussée, les programmes et données de chaque programme sont placés aléatoirement dans la mémoire (ALSR).
    Et finalement (mais je ne sais pas si c'est vrai pour le calloc), il est possible de faire un malloc supérieur à la taille de la mémoire vive. En effet, le malloc peut renvoyer un pointeur sur un segment mémoire virtuel qui n'a pas encore de correspondance physique. Ce n'est qu'au moment de l'écriture que le noyau se débrouillera pour trouver où placer l'information (c'est pour cette raison, que je ne suis pas sûr que cela concerne le calloc).

    Bref, je ne sais pas comment vous allez réussir à nettoyer la mémoire (à moins de vous placer au niveau du noyau).

  3. #3
    Expert éminent sénior
    Avatar de Kannagi
    Homme Profil pro
    cyber-paléontologue
    Inscrit en
    Mai 2010
    Messages
    3 226
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cyber-paléontologue

    Informations forums :
    Inscription : Mai 2010
    Messages : 3 226
    Points : 10 188
    Points
    10 188
    Par défaut
    Je ne comprend absolument pas le but de ce que tu veux faire "clear la RAM" ça veut dire quoi concrètement sachant que seul L'OS a un contrôle dessus ?

    Citation Envoyé par Code Rom Voir le message
    La première c'est 0x00000000 (pour du 8bits) 0x0000000000000000 (pour du 16) ect... ? C'est correct ça ?
    Dans tout les cas l'adresse 0 , est le premier élément que ça soit sur 8 ou 16 bits.
    Sinon ce que tu écrit est incorrect `0x00000000` indique 0 en 4 octets(soit 32 bits) et `0x0000000000000000 ` en 8 octets (soit 64 bits).
    Les valeurs en 8 bits sont comprise entre 0x00 à 0xFF et en 16 bits de 0x0000 à 0xFFFF.
    En C on écrit un valeur en binaire de cette façon : 0b00000000 , le X représente de l'Hexa.

    Sinon mème si tu avais accès à tout la RAM sur X86 l'adresse de 0x00000000 à 0x000003FF est la Table des Interruption donc c'est clairement pas le truc qu'il faut initialisé à zero...
    (sans parler du code lui même des interruptions et des autres programmes qu'il faudrait pas toucher , mais comme déjà dit seul L'OS a ce genre d'info , et il t’interdira d'écrire dessus).

  4. #4
    Membre habitué
    Avatar de Code Rom
    Homme Profil pro
    Cherche et essaie de corriger les bugs, ici ou là.
    Inscrit en
    Juin 2009
    Messages
    125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Cherche et essaie de corriger les bugs, ici ou là.

    Informations forums :
    Inscription : Juin 2009
    Messages : 125
    Points : 159
    Points
    159
    Par défaut
    Oué je vois ça a l'air bien plus complexe que se que j'imaginais, voir peut être même impossible a moins comme là dis LittleWhite de travailler au niveau du noyau.Et là ça me dépasse.

    Bon je crois que je vais abandonner cette idée xD

    Merci pour vos réponses !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 3
    Dernier message: 01/05/2007, 14h37
  2. Taille de du programme en RAM
    Par dr23fr dans le forum Général Java
    Réponses: 4
    Dernier message: 29/05/2006, 22h29
  3. Comment savoir quel programme utilise toute la RAM ?
    Par Gloup dans le forum Administration système
    Réponses: 4
    Dernier message: 26/05/2006, 19h22
  4. Réponses: 3
    Dernier message: 28/06/2005, 10h07
  5. éxécution d' un programme >> que contient la ram ???
    Par bob_sapp dans le forum Langages de programmation
    Réponses: 9
    Dernier message: 18/01/2004, 22h16

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo