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 :

Processus ininterruptible malgré IF=1


Sujet :

Assembleur

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

    Informations forums :
    Inscription : Octobre 2004
    Messages : 4
    Points : 0
    Points
    0
    Par défaut Processus ininterruptible malgré IF=1
    Salut
    je suis en train de coder une noyau "multitâches" (16bits) avec Nasm et je me trouve face au problème suivant:
    j'ai une file d'attente de processus utilisateurs (interruptibles) et un processus horloge réveillé par l'IT 1Ch ayant pour but de donner la main à tour de rôle aux processus de la file d'attente mais lorsque je mets plus d'un processus utilisateur, le deuxième à prendre la main n'est plus interruptible alors que IF=1 (j'ai vérifié). Je ne comprends pas ce qui peut rendre ce processus ininterruptible (étant donné qu'entre temps je ne restaure pas l'it 1Ch).
    De plus, quand ce second processus se termine et que le premier reprend la main, celui-ci est bien interruptible, comme il l'était avant de donner la main au processus n°2.

    Si quelqu'un sait ce qui peut rendre un processus non interruptible, mis à part IF=0, ça me rendrait bien service car je crois que c'est le dernier bug qu'il me reste.

    Bon j'espère que mes explications sont assez claires car je ne peux pas mettre de code, ça ferait un peu lourd un noyau entier dans un post.

    A+

  2. #2
    Membre averti
    Avatar de VBurel
    Profil pro
    Développeur Indépendant
    Inscrit en
    Août 2004
    Messages
    116
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Indépendant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Août 2004
    Messages : 116
    Points : 333
    Points
    333
    Billets dans le blog
    1
    Par défaut Re: ininterruptible malgré IF=1
    Citation Envoyé par imbibinebe
    Salut
    je suis en train de coder une noyau "multitâches" (16bits) avec Nasm
    savez vous qu'en 32bit, le processeur peut faire tout cela pour vous ! ? :-)
    Sans plaisanter, je me souviens d'un livre de Michael Tischer - encore lui - sur le multitache en pascal, où il expliquait la mise en oeuvre d'un noyau comme ce que vous etes en train de faire ! ca peut vous servir...

    j'ai une file d'attente de processus utilisateurs (interruptibles) et un processus horloge réveillé par l'IT 1Ch ayant pour but de donner la main à tour de rôle aux processus de la file d'attente mais lorsque je mets plus d'un processus utilisateur, le deuxième à prendre la main n'est plus interruptible
    Difficile de vous donner des conseils ... je suppose que vous savez qu'une fois qu'une interruption est déclenchée (l'IT 1Ch par exemple) aucune autre interruption ne sera déclenchée tant que le controleur PIT n'aura pas reçu de notification EOI... donc si vous passez la main à votre second processus dans la file d'éxécution de votre interruption , c'est logique qu'il n'y ai plus d'interruption... sinon ca voudrait dire qu'une interruption pourrait subir une interruption, imaginez le bordel recursif :-)

    Il me semble me rappeller que le plus gros problème à résoudre dans la mise en place d'un scheduler préemptif sous DOS (c'est ce que vous faites plus ou moins) c'était de gérer comme il faut l'appel des processus... m'est avis qu'il faut gruger la pile pour que le IRET de votre interrupt passe la main au processus next dans votre liste de thread....

    à creuser...
    VB

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

    Informations forums :
    Inscription : Octobre 2004
    Messages : 4
    Points : 0
    Points
    0
    Par défaut
    Merci VBurel pour toutes ces infos.
    En fait j'ai l'intention de faire un noyau 32bit mais j'aimerais réussir à faire tourner celui dabord.
    Pour ce qui est du IRET, je crois en effet que mon problème vient de là (en tout cas ça expliquerais tous les "symptômes" que j'ai exposés précédemment) mais je n'ai pas eu le temps d'y travailler.
    Je posterais la solution quand je l'aurais trouvée, au cas où d'autre butteraient sur le même problème.

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

    Informations forums :
    Inscription : Octobre 2004
    Messages : 4
    Points : 0
    Points
    0
    Par défaut
    je ne sais pas si c'est une bonne méthode mais c'est la seule que j'ai trouvée:
    envoyer la notification EOI au pic 8259 au début de chaque processus utilisateur

    putil1:
    mov ah,20h
    out 20h,ah

    ces instructions ne s'executent qu'une fois pour chaque processus utilisateur.

Discussions similaires

  1. processus arrêté malgré SIGCONT
    Par copro dans le forum Administration système
    Réponses: 5
    Dernier message: 28/10/2010, 22h46
  2. Réponses: 2
    Dernier message: 21/09/2007, 10h10
  3. probleme avec les processus
    Par saidi dans le forum Autres éditeurs
    Réponses: 1
    Dernier message: 05/02/2003, 00h18
  4. [VB6] [Système] Tuer un processus courant
    Par mdoyer dans le forum VB 6 et antérieur
    Réponses: 7
    Dernier message: 22/10/2002, 14h47
  5. Réponses: 2
    Dernier message: 04/10/2002, 09h13

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