18
GEF 435 Principes des systèmes d’exploitation Appels de système (Tanenbaum 1.6)

GEF 435 Principes des systèmes dexploitation Appels de système (Tanenbaum 1.6)

Embed Size (px)

Citation preview

Page 1: GEF 435 Principes des systèmes dexploitation Appels de système (Tanenbaum 1.6)

GEF 435Principes des systèmes d’exploitation

Appels de système(Tanenbaum 1.6)

Page 2: GEF 435 Principes des systèmes dexploitation Appels de système (Tanenbaum 1.6)

Revue

• Donnez un exemple de comment un interblocage peut se produire.

• Dans quelle structure est-ce que le SE sauvegarde l’information d’un processus?

Page 3: GEF 435 Principes des systèmes dexploitation Appels de système (Tanenbaum 1.6)

Synopsis

• Appels de système• Quelques appels de système spécifiques

fork( ) execve( ) link( )

• *NIX à Windows des comparaisons

Page 4: GEF 435 Principes des systèmes dexploitation Appels de système (Tanenbaum 1.6)

Appels de système

• Les appels de système sont l’interface entre le SE et les programmes des utilisateurs

• Les librairies de procédures sont disponibles pour permettre aux langages à haut niveau de faire des appels de systèmeExemple: stdio.h rend disponible les fonctions

nécessaires pour ouvrir, fermer et manipuler les fichiers.

DOS et UNIX ont la librairie pour stdio mais l’interaction est différente

Page 5: GEF 435 Principes des systèmes dexploitation Appels de système (Tanenbaum 1.6)

Appels de système

• Que ce passe t-il durant un appel de fonction?

Page 6: GEF 435 Principes des systèmes dexploitation Appels de système (Tanenbaum 1.6)

Appels de système

• Comment est-ce qu’un appel de système est différent?

Page 7: GEF 435 Principes des systèmes dexploitation Appels de système (Tanenbaum 1.6)

Appels de système

• Un espace pour vos notes…

Page 8: GEF 435 Principes des systèmes dexploitation Appels de système (Tanenbaum 1.6)

Appels de système spécifiques

• Une brève description de certains appels de système dans un environnement *NIX aide à comprendre les services offerts par le SE

• Actuellement une description de certaines fonctions des librairies, mais en général, ces fonctions font des appels de système pour accomplir leurs tâches

Page 9: GEF 435 Principes des systèmes dexploitation Appels de système (Tanenbaum 1.6)

L’appel fork( )

• pid = fork(); /*Exemple d’appel de sys*/

• En Unix la seule façon de générer un nouveau processus est avec fork() fork() crée un duplicata exact du processus parent au point de

l’appel incluant les descripteurs de fichiers, l’état des registres, la pile, etc. …

Le texte du programme est partagé La valeur de retour est différente pour les deux processus:

• Parent reçoit le PID de l’enfant

• Enfant reçoit 0

Page 10: GEF 435 Principes des systèmes dexploitation Appels de système (Tanenbaum 1.6)

Appel fork( )• Si tout entre le parent et l’enfant est pareil comment est-ce que le

parent et l’enfant font un travail différent?

while (TRUE) /* repète à jamais */

{

type_prompt(); /* montre le prompt */

read_command(command, parameters) /* Entrée du terminal */

if (fork() != 0) /* fork un processus enfant */

waitpid( -1, &status, 0); /* Attend pour l’enfant de finir */

else

execve (command, parameters, 0); /* exécute commande */

}

Code du parentCode de l’enfant

Page 11: GEF 435 Principes des systèmes dexploitation Appels de système (Tanenbaum 1.6)

Appel execve( )

• Maintenant que le processus enfant est démarré nous voulons lui faire exécuter quelque chose de différent du parent

• s=execve(nom, argv, environp)Remplace l’image du processus courrant avec un

programme spécifié par l’argument: ‘nom‘argv devrait être familier (lab1) environp est un tableau d’information de

l’environnement tel qu’un répertoire de travail ou ‘home’, etc.

Page 12: GEF 435 Principes des systèmes dexploitation Appels de système (Tanenbaum 1.6)

Appel link( )

• link( ) est intéressant parce qu’il montre comment les fichiers sont entreposés dans les systèmes Unix

• Est-ce que les fichiers sont localisés physiquement sur le disque en terme de fichiers et répertoires?

• Non

• Les fichiers sont seulement des groupements de données qui sont reliées L’information sur chaque fichier est gardée dans une grande table

• Chaque fichier a un numéro appelé un i-node

• Cette table mappe ce i-node à une location physique sur le disque

Page 13: GEF 435 Principes des systèmes dexploitation Appels de système (Tanenbaum 1.6)

Appel link( )

• Qu’est-ce qu’un répertoire?*NIX: Les répertoires sont des fichiers avec une liste de

(i-node, string)Déplacer des fichiers demande simplement

d’ajouter/enlever les i-nodes de ces fichiersComment fonctionne link()?

Page 14: GEF 435 Principes des systèmes dexploitation Appels de système (Tanenbaum 1.6)

Appel link( )

• s = link(nom1, nom2)nom1 est le fichier auquel on veut se liernom2 est le nouveau fichier que l’on veut créerExemple: link(“/usr/jim/memo”, “/usr/ast/note”);

Avant Après

Page 15: GEF 435 Principes des systèmes dexploitation Appels de système (Tanenbaum 1.6)

Sommaire des appels de système

Page 16: GEF 435 Principes des systèmes dexploitation Appels de système (Tanenbaum 1.6)

Sommaire des appels de système

Page 17: GEF 435 Principes des systèmes dexploitation Appels de système (Tanenbaum 1.6)

*NIX vs Windows

• Windows donne une interface plus loin du SE connue comme: Win32 API Il y a des milliers d’appels API Plusieurs appels API font des appels de système mais d’autres

opèrent entièrement dans l’espace utilisateur…impossible de les séparer. Certains de ces appels peuvent varier entre les versions de Windows

• Windows a des appels de système différents: certains sont supportés différemment; d’autres ne sont pas supportés CreateProcess() est fork() + execve() Pas de link en Windows

Page 18: GEF 435 Principes des systèmes dexploitation Appels de système (Tanenbaum 1.6)

Quiz Time!

Questions?