La présentation est en train de télécharger. S'il vous plaît, attendez

La présentation est en train de télécharger. S'il vous plaît, attendez

La programmation système

Présentations similaires


Présentation au sujet: "La programmation système"— Transcription de la présentation:

1 La programmation système
Le principe

2 Système d’exploitation
Interface du matériel et gestionnaire des ressources

3 Système d’exploitation
Historiquement, l’OS (Operating System) a beaucoup évolué… Pas le temps de rentrer dans le détail, mais je vous encourage à consulter ce cours pour plus de détail : Permet de mieux comprendre les choix pour la conception de l’OS

4 Système d’exploitation
Petit à petit, le matériel informatique c’est diversifié : Ati/Nvidia/Matrox/Intel : Cartes graphiques Intel/AMD : Processeurs SDRAM/DDRAM : type mémoire Carte mère… Sans OS, un programmateur devrait réécrire son programme pour qu’il marche sur chaque type de machine ! Par exemple, lire un fichier ne se fait pas de la même manière si il est sur un disque SATA, IDE ou USB !

5 Système d’exploitation
Il faut permettre à un utilisateur de lancer plusieurs applications en même temps Le multi tâche Planifier le temps alloué à chaque application Ordonnancement avec gestion des priorités Empêcher un programme de monopoliser le processeur Permet de gérer et protéger l’accès aux ressources

6 Système d’exploitation
Permet d’offrir à l’utilisateur des points d’accès au matériel : Sous forme d’API (Application Programming Interface) Utilisable à partir des programmes s'exécutant sur le système Composée d'un ensemble d'appels systèmes Sous forme d’interface utilisateur Utilisable sous forme de texte ou de fenêtre (exemple : rm * sous linux…)

7 Système d’exploitation
Nous nous intéresserons ici aux API, mais Il est important de connaitre les commandes LINUX Donc vous êtes encouragés à installer linux chez vous et jouer un peu avec le système testez par exemple le résultat de la commande rm –F * chez vous (et pas à l’ORT !)

8 Système d’exploitation
Essaye de protéger le système, mais : while true ; do mkdir toto ; cd toto ; done while(1){ fork() ; } I while(1) { char *a=malloc(512) ; *a='1' ; } Réponse classique : Plantage…

9 Système d’exploitation
C’est lui qui essaye de répartir l’accès aux ressources Accès au disque dur Accès à la mémoire vive Accès au processeur Mais, il est souvent nécessaire de gérer soit même l’accès aux ressources En effet, l’OS gère les conflits, mais pas la manière dont résoudre un conflit…

10 Processus On s’intéresse maintenant aux processus
Représente une entité dynamique s’exécutant sur un processeur Du point de vu de l’OS : Espace d’adressage (BSS, Tas, Pile…) Etat interne (compteur d’exécution, fichiers ouverts…)

11 Processus et programme
int i; int main() { printf("Salut\n"); } Processus Pile Tas BSS int i; Code main Vous pouvez utiliser le même programme que moi, mais vous n’aurez pas le même processus que moi !

12 Ordonnancement des Processus
Les communications bloquent les processus Deux manières

13 Environnement d’un processus
L’ensemble des variables vu par un processus Variables globales Constantes Objets C’est l’OS qui se charge de réserver la place en mémoire pour ces variables (+ Tas et Pile…)

14 Le parallélisme L’intérêt des processus, c’est qu’ils peuvent être lancés simultanément L’inconvénient, c’est que ça pose des problèmes ! Tout d’abord, comment multiplier les processus…

15 Système UNIX La seule manière de dupliquer un processus est d’utiliser fork fork clone le processus appelant : void main(){ pid_t n=fork() n==0 n>0 On est dans le processus père On est dans le processus fils

16 Fork 1/2 La manière la plus courante d’utiliser un fork, c’est :
void main(){ pid_t n=fork(); if(n!=0){ if(n<0){ //gestion des erreurs }else{ //programme du papa } //programme du fils

17 Fork 2/2 Clonage, c’est une recopie complète et indépendante :
int i=3 ; if (fork() != 0) { printf("je suis le pere, mon PID est %d\n", getpid()) ; i += 4 ; } else { printf("je suis le fils, mon PID est %d ; mon pere est %d\n", getpid(), getppid()) ; i += 9 ; } printf("pour le pid %d, i = %d\n", getpid(), i) ; je suis le fils, mon PID est ; mon pere est 10270 pour le pid 10271, i = 12 je suis le pere, mon PID est 10270 Pour le pid 10270, i = 7


Télécharger ppt "La programmation système"

Présentations similaires


Annonces Google