Le 18 octobre 2019 à 14:26:47 DeathrowRecord a écrit :
Salut,
Je suis entrain de suivre un cours sur les systèmes d'exploitations et il y a quelques notions que j'ai pas très bien compris. Par exemple quelle est la différence entre une interruption logiciel (exception) et un appel système ?
Qu'est ce que tu entends par interruption logiciel? Tu veux parler d'un appel a INT ?
Les appels systemes sont basiquement implementes par interrupt. (voir https://en.wikibooks.org/wiki/X86_Assembly/Interfacing_with_Linux pour les details gores. x86_64 a introduit une instructions speciales pour bypasser la table d'interrupt)
Une demande d'E/S c'est un appel système ou bien une exception ?
Oh, c'est complique comme question. Quand tu fais printf(3) en C, le message va dans un buffer. C'est quand le buffer est vide qu'un appel systeme est fait. Donc tu peux faire plein d'appel a printf mais qu'il n'y ait qu'un seul appel a write(2). Et donc un seul appel systeme. Apres comment le systeme va resoudre l'appel a write est sont probleme, et probablement il va devoir faire quelques interrupt materiel pour resoudre ca.
Et pourquoi quand une interruption est levé, le processeur (?) passe en mode superviseur ? C'est pour accéder aux routines de gestion des interruptions (qui sont stocké dans un espace protegé) ?
Le but d'un interrupt est d'acceder au hardware ou de rendre la main a l'OS. Donc clairement il faut passer a un mode d'execution privilegie. Note qu'il y avait different niveau de protection a un moment. Mais de nos jours, on en utilise plutot que deux: mode kernel et mode user.