[SYS2] questions interruptions

Voir le sujet précédent Voir le sujet suivant Aller en bas

[SYS2] questions interruptions

Message  Dark le Mar 12 Aoû 2008, 16:49

Bonjour à tous ,

J'avais quelques questions à poser car certaines choses ne me paraissent pas vraiment clair .
Exemples :

mov eax , numOpen
mov ebx , fichier
mov ecx , typeOuverture
mov edx , droits
int 80h

en fait quand on arrive au int 80h :
-le processeur change de mode
-le systeme sauve le contexte du process dans la table des process où on a mis l'ip ainsi que son état à bloqué
-l'incrémenteur du process passe à 4*80h où se trouve toute une série de sous-routines
-A la fin de l'interruption , le process qui était à l'état bloqué repasse à l'état prêt .
-Le processeur rechange de modes
-L'ordonnanceur choisit un process parmi les prêts et le systeme copie l'ensemble des valeurs des registres sur le cpu provenant du process élu .

Dès qu'on fait un jump 4*80h , pour choisir la bonne sous-routines , est-ce que l'appel systeme vérifie les arguments ? Que trouve-t-on comme code dans ces sous-routines ? Est-ce que le DMA intervient ?

Dark

Nombre de messages : 131
Age : 30
Prénom : Laurent
Statut : Etudiant
Date d'inscription : 15/05/2006

http://membres.multimania.fr/dark0502/

Revenir en haut Aller en bas

Re: [SYS2] questions interruptions

Message  Lelka le Jeu 14 Aoû 2008, 15:26

Bonjour Dark,

"le systeme sauve le contexte du process dans la table des process où on a mis l'ip ainsi que son état à bloqué "
En fait le système sauve le contexte en copiant les registres à partir du processeur et le registre IP à partir de la pile (quand on fait une interruption, le CPU sauvegarde automatiquent IP sur la pile).

"l'incrémenteur du process passe à 4*80h où se trouve toute une série de sous-routines".
Je ne peux pas l'affirmer. Si c'est comme en DOS, à 4*80h se trouvent des pointeurs qui pointent vers les routines. Les routines ne se trouvent pas à cet endroit-là. Pourquoi ? Parce qu'on ne connaît pas l'espace que peut occuper une routine (tout dépend de ce qu'elle fait), mais on connaît la taille d'une adresse : 4 bytes. Donc, ce sont les adresses qui sont à cet endroit. Donc si numOpen est 5 (pour ouvrir un fichier), l'adresse de la routine qui permet d'ouvrir un fichier est stockée à l'adresse 4*80h + 4*5.

"Dès qu'on fait un jump 4*80h , pour choisir la bonne sous-routines , est-ce que l'appel systeme vérifie les arguments ?".
Jcomprends pas trop ta question. Soit tu veux savoir si le système vérifie que les arguments sont corrects ; alors c'est oui (en fait c'est l'appel système, qui fait partie du système, qui vérifie). Soit tu veux savoir si le système regarde les arguments pour connaître la routine ; alors c'est non.

"Que trouve-t-on comme code dans ces sous-routines ?"
De nouveau, je ne comprends pas ta question. Si tu veux savoir quel type langage, c'est le language machine. Si tu veux savoir à quoi ressemble le code, je n'en sais rien, c'est un morceau du système d'exploitation et, bien que cela m'intéresse, je n'ai jamais été voir.

"Est-ce que le DMA intervient ?"
Dans le code ASM que tu a donné, oui. C'est le DMA qui se charge d'attendre que périphérique ait retrouvé le fichier et l'ait ouvert. Pendant ce temps-là le processeur exécute un autre process. Mais le DMA n'intervient pas pour toutes les INT, seulement celles où il y a une entrée/sortie.

Bon courage

Lelka

Nombre de messages : 33
Age : 30
Prénom : Kalele
Date d'inscription : 30/05/2007

Revenir en haut Aller en bas

Re: [SYS2] questions interruptions

Message  Invité le Jeu 14 Aoû 2008, 18:08

Lelka a écrit:Bonjour Dark,

"l'incrémenteur du process passe à 4*80h où se trouve toute une série de sous-routines".
Je ne peux pas l'affirmer. Si c'est comme en DOS, à 4*80h se trouvent des pointeurs qui pointent vers les routines. Les routines ne se trouvent pas à cet endroit-là. Pourquoi ? Parce qu'on ne connaît pas l'espace que peut occuper une routine (tout dépend de ce qu'elle fait), mais on connaît la taille d'une adresse : 4 bytes. Donc, ce sont les adresses qui sont à cet endroit. Donc si numOpen est 5 (pour ouvrir un fichier), l'adresse de la routine qui permet d'ouvrir un fichier est stockée à l'adresse 4*80h + 4*5.

je me permet de corriger...

JCJ m'a expliqué à l'examen (vu que je me suis embrouillé les pinceaux) que l'adresse des interruptions se trouve en 4*80h et que dans le code de l'interruption, il y a un switch de EAX pour savoir quelle sous-routine appeler...

Bien à toi.

Herbiti

Invité
Invité


Revenir en haut Aller en bas

Re: [SYS2] questions interruptions

Message  Contenu sponsorisé Aujourd'hui à 10:49


Contenu sponsorisé


Revenir en haut Aller en bas

Voir le sujet précédent Voir le sujet suivant Revenir en haut


 
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum