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

Assembleur Discussion :

"Fork" en assembleur


Sujet :

Assembleur

  1. #1
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 3
    Points : 1
    Points
    1
    Par défaut "Fork" en assembleur
    Bonjour, étant etudiant en informatique, mais étant tout aussi attiré par l'assembleur, je cherche a comparer la rapidité entre un programme en assembleur, et le meme en C++.
    (certains profs me pretextant qu'on arrive a faire planter plus vite notre serveur (sous linux) en utilisant le fork du C++ qu'en utilisant du code assembleur), j'aimerai apprendre a ecrire ce code directement en assembleur, afin de faire des test.

    Le code serait dans un programme C++ (__asm { ..... }), donc compilé par gcc.

    Merci d'avance pour votre aide ;-)

  2. #2
    Membre expérimenté

    Inscrit en
    Mai 2002
    Messages
    720
    Détails du profil
    Informations forums :
    Inscription : Mai 2002
    Messages : 720
    Points : 1 594
    Points
    1 594
    Par défaut
    Techniquement parlant, un code en C ou un code en assembleur donne la meme chose une fois compilé (enfin, dans le cas idéal ou tu utilise des compilo idéaux) bref... Je pense plutot que ton prof fait référence au temps de développement dudit programme...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    int main(void) {
      while (1) {
        fork();
      }
      return 0;
    }
    Enfin, pour que ca plante... je vois pas trop comment tu peux planter un PC en forkant un soft... Au pire tu fait ramer le système (et encore si l'administrateur a envisagé ce genre de blagues, ca va pas ramer trop longtemps).

    Smortex

    Les FAQ Assembleur - Linux
    In The Beginning Was The Command Line Neal Stephenson

  3. #3
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 3
    Points : 1
    Points
    1
    Par défaut
    Le code en C++ que je pensait faire été :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    int main (int argc, char ** argv)
    {
        for (fork ();fork (););
        return 0;
    }
    mais j'aurais aimé trouver le code similaire en assembleur, non seulement pour apprendre l'assembleur, mais aussi pour comparer les rapidités de "plantage".

    Les admins ne nous ont pas limité en nombre de processus

  4. #4
    Inactif  
    Avatar de Mac LAK
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    3 893
    Détails du profil
    Informations personnelles :
    Âge : 49
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Octobre 2004
    Messages : 3 893
    Points : 4 846
    Points
    4 846
    Par défaut
    Le problème d'un fork, c'est que c'est un appel au système d'exploitation (pour créer un thread), aux primitives POSIX pour être précis, et en ASM, tu peux te brosser copieux si tu crois y arriver simplement...

    De plus, il vaudrait mieux pour toi connaître le matos de ton serveur : pour te donner un exemple, tu aurais l'air malin à essayer un programme en assembleur x86 sur une machine HP-UX ou Silicon.... Ce qui est souvent le cas dans les facs... Et oui, Unix c'est peut-être bien, mais le niveau minimum reste le C, PAS l'assembleur...

    Si ta question est "Comment crasher le serveur de mon école ?", et je crois que c'est le cas, je n'en vois pas l'intérêt mis à part croire deux secondes que l'on est Kevin Mitnick...

    Pour vraiment comparer de l'assembleur et du C, le débat est relativement stérile : ça dépend de ce que tu veux faire avant tout, et il faudrait préciser en ce cas le matériel cible et l'OS pour envisager la comparaison... Sinon, je compare de l'assembleur Z80 (8 bits, 3.7 MHz)avec du Visual Basic sur mon bi-Xeon HT 2x2.8 GHz, et je parie ma chemise que le VB va gagner....
    Mac LAK.
    ___________________________________________________
    Ne prenez pas la vie trop au sérieux, de toutes façons, vous n'en sortirez pas vivant.

    Sources et composants Delphi sur mon site, L'antre du Lak.
    Pas de question technique par MP : posez-la dans un nouveau sujet, sur le forum adéquat.

    Rejoignez-nous sur : Serveur de fichiers [NAS] Le Tableau de bord projets Le groupe de travail ICMO

  5. #5
    Membre expérimenté

    Inscrit en
    Mai 2002
    Messages
    720
    Détails du profil
    Informations forums :
    Inscription : Mai 2002
    Messages : 720
    Points : 1 594
    Points
    1 594
    Par défaut
    Citation Envoyé par Mac LAK
    Le problème d'un fork, c'est que c'est un appel au système d'exploitation (pour créer un thread), aux primitives POSIX pour être précis, et en ASM, tu peux te brosser copieux si tu crois y arriver simplement...
    Mais non, c'est hyper simple : faut copier la pile, heuuu .... les varibales... faire pointer les bons trucs au bon endroit ... Heu ... Wé, y'a d'autres bricoles a faire aussi ... Enfin, pour faire "le meme" il faut récupérer les sources de L'OS et y jeter un oeuil

    Kevin Mitnick...
    Faut que je sorte, première fois que je croise ce type... Vive google (Tient, je me coucherai moin bete ce soir)...
    Quant a planter un système Linux avec des fork, j'ai franchement des doutes (Je peux pas tester, j'ai qu'un freebsd sous la main limité à 100000 processus et j'ai pas envie de modifier ma conf pour embouzer mes 512 Mo de RAM et 1Go de SWAP)... Bref, tout admin qui se respecte a prévu de compter le temps processeur de chaque utilisateur, et une application qui se fork perpetuellement, ca prends vite plus de ressources que ca n'est admissible...

    Sinon, je compare de l'assembleur Z80 (8 bits, 3.7 MHz)avec du Visual Basic sur mon bi-Xeon HT 2x2.8 GHz, et je parie ma chemise que le VB va gagner....
    Bah je tiens le pari Tu fout un tableau a trier sur les deux machines (le même) mais que le Z80 fait mettons du tri par fusion et le BiXeon du tri a bulles.... Ca peut réserver des surprises Avant toute chose, ce qui fait la rapidité d'un programme, c'est l'algo (Enfin, l'algo en Asm... Hein )

    Smortex

    Les FAQ Assembleur - Linux
    In The Beginning Was The Command Line Neal Stephenson

  6. #6
    Inactif  
    Avatar de Mac LAK
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    3 893
    Détails du profil
    Informations personnelles :
    Âge : 49
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Octobre 2004
    Messages : 3 893
    Points : 4 846
    Points
    4 846
    Par défaut
    Citation Envoyé par Smortex
    Enfin, pour faire "le meme" il faut récupérer les sources de L'OS et y jeter un oeuil
    Effectivement, tu as raison sur le fait que c'est plus rapide de fouiller le source de l'OS que d'essayer "à la main" !! ;-)

    Faut que je sorte, première fois que je croise ce type... Vive google (Tient, je me coucherai moin bete ce soir)...
    Pour ceux qui ont une paralysie du Google : ce cher Kevin est un des pirates les plus connus au monde (en pratique, c'est surtout le premier à s'être fait choper copieux par les Schtroumpfs de l'Oncle Sam), c'est l'idole d'une génération de hackers qui ont appris le phreaking dans Pirates-Mag... :-P

    Quant a planter un système Linux avec des fork, j'ai franchement des doutes
    Boaf... J'sais pas, j'dois être trop Windows faut croire, en général je crashe tous les systèmes Unix qui me passent dans les pattes en moins d'une journée...
    Record absolu (et véridique !) : un Linux rendu inutilisable après avoir fait un "cat archive.tgz" sur chaque console ouvrable... Reboot du système nécessaire... NYARK NYARK NYARK !!!!! (ceci était un rire démoniaque, vous êtes priés d'avoir peur, merci).

    Avant toute chose, ce qui fait la rapidité d'un programme, c'est l'algo (Enfin, l'algo en Asm... Hein )
    Ca, je suis INTEGRALEMENT d'accord avec toi : un bon algo vaut mieux qu'un bon compilo, mais l'algo en ASM est encore plus fun qu'en C.... Cf. l'autre post de ta part sur le topic " "fork" en assembleur " ! ;-))
    Mac LAK.
    ___________________________________________________
    Ne prenez pas la vie trop au sérieux, de toutes façons, vous n'en sortirez pas vivant.

    Sources et composants Delphi sur mon site, L'antre du Lak.
    Pas de question technique par MP : posez-la dans un nouveau sujet, sur le forum adéquat.

    Rejoignez-nous sur : Serveur de fichiers [NAS] Le Tableau de bord projets Le groupe de travail ICMO

  7. #7
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 3
    Points : 1
    Points
    1
    Par défaut
    @ Mac LAK:
    Les admins ne nous ont pas limité en processus, et le serveur est un bi P3 500 avec 4Go de ram.

    D'autre part, mon but n'est pas d'aprendre a crasher, mais d'apprendre tout cours et entre autre l'ASM ;-)
    de plus, vu le niveau de securité du serveur de l'iut, si je voulais vraiement le crasher, je me connecte en root et "rm -f *" a la racine

    En effet, l'année derniere le pass root était tres simple a trouver, mais j'ai meme pas eu envie de le retester cette année car pour moi crasher un systeme n'as pas d'interet.

    Enfin, quand je parlait de comparer l'ASM au C++ il me semblait inutile de preciser que je voulait tester les deux dans des conditions identiques (cad sur le meme serveur, a une heure ou il est deconnecté du net et qu'il n'y a pas d'etudiants, et avec un reboot avant chaque test.)

    Sur ce, merci quand meme de l'interet que vous avez porté a ce topic, et je vais me lancer dans la lecture du code source de unix

    (en fait je suis tres curieux, tres ambitieu et j'aime voir ce que cela va faire ;-)d'ou l'idée du fork)

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