RECHERCHER :
COMMUNAUTE MP
Identifiez vous ...
Devenir Membre
J'ai oublié mon MDP
DOMAINE MP
Bavardages
Langages Généraux
Langages Web
Langages DotNet
Autres langages
Dev. Jeux Video
Sécurité
Sys. Exploitation
Graphismes
Logiciels
Réseaux
Bases de données
Méthodologies
Emplois High-tech
Aide juridique
Articles juridiques
FORUM
Index des forums
Ajouter un sujet
Rechercher sujet
Contact Responsable
Devenir modérateur
CHAT MP IRC
Votre pseudo ...
Srv: irc.moteurprog.com
Chan: #MoteurProg
PARTICIPER
Plus de 3500 emplois.
Rechercher un job
Déposez votre CV
Emplois High-tech

Visiteur MP

 non interruptible malgré IF=1

Forum : ASSEMBLEUR - FASM
Sous Catégorie : FASM
Type du sujet : Sujet Normale
FAQ : FAQ ASSEMBLEUR - FASM

SUIVI DES SUJETS PAR MAIL

SUIVI PAR MAIL INACTIF

RESOLUTION DU SUJET SUJET NON RESOLU
BLOQUAGE DU SUJET SUJET ACTIF
APPARTENANCE A LA FAQ N'APPARTIENT PAS A LA FAQ


POSTER UN NOUVEAU SUJET REPONDRE A CE SUJET

FORUM ASSEMBLEUR - FASM

PREMIERE PAGE

PAGE PRECEDENTE

Page précedente

Page suivante

PAGE SUIVANTE

DERNIERE PAGE
imbibinebe
Membre du club
Avatar de imbibinebe
Inscrit : 09/04/2004
Messages : 306
Message
#38688
Posté le 20/10/04 à 09:12
Salut
je suis en train de coder une noyau "multitâches" 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+

HAUT DE PAGE

PROFIL MEMBRE LUI ECRIRE 

Publicité
Inscrit : X
Messages : X
Message
#Aucun

HAUT DE PAGE

  

imbibinebe
Membre du club
Avatar de imbibinebe
Inscrit : 09/04/2004
Messages : 306
Message
#45162
Posté le 05/12/04 à 21:52
Bon j'ai fini par trouver ce qui n'allait pas Smiley
en fait pour faire du multitâche, chaque processus utilise une pile qui lui est propre. Lorsque l'horloge génère une interruption, l'adresse de retour de la procedure en cours est sauvée dans sa pile, la procédure d'interruption sauvegarde tous les registres dans cette même pile et rend la main à un processus utilisateur différent. Le problème est que pendant tout ce temps le contrôleur d'interruptions n'as toujours pas reçu de signal de fin d'interruption (EOI) donc elles ne sont plus prises en compte. Le deuxième processus utilisateur est donc ininterruptible même si le flag IF les autorise.
La solution que j'ai apportée n'est sans doute pas des plus élégantes mais je la donne quand même:

envoyer au début de chaque processus utilisateur le signal de fin d'interruption au pic 8259

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

voilà !

HAUT DE PAGE

PROFIL MEMBRE LUI ECRIRE 


    PAGE : [1]



.: Site Web développé par Julien Pichot et l'équipe MPWG avec www.evolvia-web.com :.