Interruption et Signaux Linux

Fermé
maranello Messages postés 1 Date d'inscription samedi 3 mai 2008 Statut Membre Dernière intervention 3 mai 2008 - 3 mai 2008 à 13:37
kilian Messages postés 8731 Date d'inscription vendredi 19 septembre 2003 Statut Modérateur Dernière intervention 20 août 2016 - 7 mai 2008 à 17:24
Bonjour,
Je suis etudiant en Informatique et j'aurai besoin d'aide sur quelques points en particuliers:

1) Déroulement d'une interruption dans un système d'interruptions hiérarchisé

2) Analogie et différences entre interruption et déroutement
3) Prélèvement de mesures en contrôle de processus

4) Personnalisation du traitement des déroutements
5) Déroulement d'une interruption
6) Signal SIGALRM et primitives al arm et ualarm
7) Traitement par défaut et traitement spécifique
8) Personnalisation du traitement des déroutements

Et pour finir je vous demande quelle est la différence ou le rapport entre les signaux unix (genre SIGALRM, ...) et es interruptions unix et là je parle du système multiniveaux: 256 niveau its. par exemple on peut programmer l'horloge temps réel en utilisant les deux concepts. Dans ce cas, est ce que c'est les interruptions qui génèrent les signaux ou est ce une simple evolution historique de uninx depuis les signaux vers les interruprtions: je ne comprend pas. merci de m'eclairer.
Merci.
A voir également:

3 réponses

kilian Messages postés 8731 Date d'inscription vendredi 19 septembre 2003 Statut Modérateur Dernière intervention 20 août 2016 1 527
3 mai 2008 à 15:53
Salut,

Il faudrait une dissertation complète pour te répondre.
Je peux peut être répondre à quelques trucs, vaguement.

2) Analogie et différences entre interruption et déroutement

...euh pour moi ce sont des synonymes. Aprèsd peut être que tu veux la différence entre softirq et hardirq.
Le premier c'est l'interruption logicielle, délenchée depuis un programme, l'autre c'est l'interruption matérielle, déclenchée...depuis le materiel :-)
Les softirq sont déclenchés par des appels système (autrement appelés syscalls) par exemple.
Et pour le coup il y a une grande différence de contexte entre syscalls et hardirq. Les syscalls s'éxécutent dans un contexte particulier, souvent un contexte utilisateur (la table des pages chargée est celle d'un programme spécifique) tandis qu'une hardirq n'est généralement pas chargée dans un contexte particulier, ou plutôt on n'en sait rien, donc on ne peut que faire confiance à la mémoire du noyau non paginée (non sauvegardée sur disque).

Le gros problème avec les hardirq c'est qu'ils ne sont pas considérés comme des processus. Ce qui implique qu'une hardirq ne peut pas faire certaines choses en particulier une chose: appeler la fonction schedule() qui planifie une tâche. On ne peut planifier une tâche que depuis une autre tâche (car il faut sauvegarder le contexte de l'ancienne tâche), or les interruptions ne sont pas des tâches.
Ne pas pouvoir appeler la fonction schedule() implique énormément de choses: on ne peux pas appeler d'autres fonctions qui appellent elles-mêmes schedule(). Et de ces fonctions il y en a beaucoup: les fonctions de sémaphores, certaines fonctions d'allocation de mémoire etc... D'ailleurs comme on ne peut utiliser les sémaphores, les conditions de concurrence au niveau interruption sont gérées par des spinlocks.
En bref une interruption doit s'executer de manière atomique au niveau de la préemption (par contre une interruption peut être déroutée par une autre interruption souvent).

Sous windows ces soucis de contextes et de tâches sont traduits avec la notion d'IRQL.

Bigre...c'est compliqué à expliquer... :-/

5) Déroulement d'une interruption

Le gestionnaire d'interruption reçoit une requête irq (activation d'une ligne irq) puis il décide ou pas de dérouter le processeur selon certains cas (interruptions masquées, priorités d'interruptions etc...). En cas de déroutement j'imagine que c'est selon le processeur. Mais je pense qu'on retrouve certaines actions constantes entre les différents processeurs:
* sauvegarde du compteur ordinal (le pointeur d'instruction du programme interrompu)
* sauvegarde du mot d'état du programme interrompu
* chargement du compteur ordinal avec l'adresse de la routine de traitement d'interruption

Selon les processeurs ça peut être complété par d'autres trucs.

Et pour finir je vous demande quelle est la différence ou le rapport entre les signaux unix (genre SIGALRM, ...) et es interruptions unix

L'interruption est un déroutement au niveau noyau, alors que les signaux (artifices gérés par le noyau Unix) sont des déroutements au niveau utilisateur. Mais c'est vrai que le comportement des deux est assez similaires.
5
kilian Messages postés 8731 Date d'inscription vendredi 19 septembre 2003 Statut Modérateur Dernière intervention 20 août 2016 1 527
6 mai 2008 à 19:53
bon courage et merci à celui qui nous répondra.

Youhouuuu! Ya déjà une réponse depuis trois jours!
http://www.commentcamarche.net/forum/affich 6233378 interruption et signaux linux#1

Et puis zut débrouillez vous, entre celui qui poste une question et ne revient jamais (alors que certains se démènent pendant plus d'un quart d'heure pour leur fournir une réponse) et celui qui ne voit pas la réponse un message au dessus de lui....

Sachez que si vous posez une question à une personne qui vous parait virtuelle (vu que c'est un forum), les efforts fournis par cette personne ne sont pas virtuels eux!!

Bon courage à vous, pour ma part je lache cette discussion.
2
désolé kilian si je vous ai vexé par ma réponse , merci en tout cas pour vos explication
0
kilian Messages postés 8731 Date d'inscription vendredi 19 septembre 2003 Statut Modérateur Dernière intervention 20 août 2016 1 527 > auris
7 mai 2008 à 17:24
Bon allez ya pas de soucis.
Merci ;-)
0
slt maranello , tu ne serai pas étudiant à l'usthb en 3eme année par hasard, paske c'est le tp que c'est l'énoncé du tp
que tu mets en ligne ,
quand à une aide de ma part , désolé je suis dans le meme pétrin.
bon courage et merci à celui qui nous répondra.
0