Comment programmer une interruption matérielle??? - ASM - Programmation
Marsh Posté le 06-04-2006 à 13:36:57
Bonjour
S'il s'agit d'écrire un OS aussi mini soit-il, il faut s'affranchir du DOS sauf pour le chargement, la commutation d'os et la restauration.
Vu la difficultée de la chose en mode protégé, le mode réel semble une bonne solution mais à faire dans un DOS pur sans windows avec.
La première chose est d'écrire les gestionnaires d'interruptions que l'on veut remplacer. Ecrire une fonction générique d'écriture à l'écran qui pourra être appelée soit par interruption ou par un call par les programmes concurants (cela entraine à faire du code réentrant)
écire le code des deux programmes concurants, les mettres dans la file de l'ordonnanceur qui devra lorsqu'il n'a plus rien à faire, restaurer les interruptions d'origines puis retourner au dos. Une fois cela fait, sauvegarder la table d'interruption du dos puis remplacer les vecteurs utiles par les siens entre-autre le vecteur de l'interruption horloge pour pointer sur le nouvel ordonnanceur qui trouvera une file de chose à faire (les 2 programmes) et les exécutera.
Le code doit évidemment être abondamment commenté afin d'être relu sans peine par d'éventuels relecteurs qui n'ont pas forcément la même logique.
J'espère ne pas avoir trop dit de bétise. Normalement les pros devraient corriger.
Marsh Posté le 06-04-2006 à 11:28:37
Salut à tous.
Je dois, pour l'école, programmer un petit "os" (rire) sur 8086.
Pour
cela, j'ai mon main (modification des vecteurs d'interruptions), deux
processus (un qui affiche les lettres de a à z, l'autre qui affiche les
chiffres de 0 à 9) et un dispatcher qui donne le temps processeur à un
processus puis à l'autre.
Jusqu'à présent, j'ai du le faire à
l'aide d'interruption logicielle. La prochaine étape est la
modification de ces interruption en interruptions matérielles (08h)
Cependant, je n'ai aucune idée comment intégrer cela dans mon code.
Le voici, si cela peut vous aider.
Merci à tous.