Télécharger la présentation
Publié parBarthomieu Guyard Modifié depuis plus de 9 années
1
Systèmes d’exploitation et programmation de systèmes -GPA Cours #12: Survol des S.É. modernes & Processus mémoire et ordonnancement Enseignant: Jean-Philippe Roberge Jean-Philippe Roberge - Juillet 2014
2
Planification du cours #12
Petite révision du cours #11 & Exercices Survol des systèmes d’exploitation modernes (Chap. 2) Survol des systèmes d’exploitation de Microsoft Survol de UNIX/Linux et de ses variantes Processus, mémoire et ordonnancement (Chap. 3) Modèle pratique des processus Espace d’adresse des processus Visite du laboratoire de Commande et de Robotique (CoRo) Jean-Philippe Roberge - Juillet 2014
3
Pour le prochain cours:
-Envoi de tous les exercices exécutés dans la deuxième moitié du cours, accompagnés de leurs solutions -Mises-à-jour des notes de cours sur le site web -Entrée des notes des deux premiers laboratoires + intra sur signets -Réponses aux questions -Fin de la matière et révision en vue de l’examen final -Disponibilités
4
Exercices et révision du cours #11
5
Exemples de programmation (1)
Ordinogramme L’en-tête et le corps d’un courriel sont séparés par une ligne blanche. Chaque en-tête est enregistré dans un fichier temporaire Nous utiliserons grep(1) et expr(1) pour extraire le champ Content-Length: Nous ferons un bouclage pour passer « par dessus » le corps du courriel
6
Exemples de programmation (2)
Chaque en-tête est enregistré dans un fichier temporaire. Pour la longueur du corps du courriel: LONGUEUR=`egrep 'Content-Length:' entetes${COMPTEUR}.tmp` LONGUEUR=`expr "$LONGUEUR" : 'Content-Length: \(.*\)'` Extraire la valeur située après le mot clé Content-Length: Trouver la ligne désirée dans le corps Variable qui contiendra la longueur du corps
7
Exemples de programmation (3)
Pour passer au prochain en-tête. Il faut lire le nombre de caractères donnés par la valeur de Content-Length: read DUMMY : : : CAR_LU=`/usr/ucb/expr length "$DUMMY"` TOTAL=`expr "$TOTAL" + "$CAR_LU"` TOTAL=`expr "$TOTAL" + 1` N’oublier pas de compter le caractère Enter Lire une ligne du fichier d’entrée et faire la somme des caractères lus.
8
Exemples de programmation (4)
Solution pour ce problème ? Régler la variable globale Bourne shell IFS (Internal Field Separator). Normalement la variable IFS est réglée à Espace, Tab et Enter. Il nous faut régler IFS à Enter seulement. Voici comment: IFS=" " Oui. Il faut taper la touche Enter avant de fermer les guillemets
9
L’usage du programme est affiché par une fonction Bourne shell
#!/bin/sh # ex_entete # Programme pour extraire l'en-tete des courriels. # # Fonction Bourne shell pour montrer l'usage de ce programme usage () { echo "\nex_entete [-hkn] courriers\n" echo "-h = cet affichage" echo "-k = garder les en-tetes dans des fichiers distincts" echo " portant les noms entetes1.tmp, entetes2.tmp ..." echo "-n = pas d'affichage a la sortie standard" echo "courriers = fichier contenant les courriels a traiter\n" echo "Par defaut, les en-tetes sont affiches a la sortie" echo "standard separes par more(1)\n" exit 1 } L’usage du programme est affiché par une fonction Bourne shell
10
Détection des options données sur la ligne de commande.
# # S'il y a pas d'options donnees a la ligne de commande... [ $# -gt 0 ] || usage # Aller chercher les options de la ligne de commande ... while getopts hkn OPTION do case "$OPTION" in h | \?) usage ;; k) GARDE=OUI ;; n) PAS_SORTIE=OUI ;; esac done # Aller chercher le fichier contenant les courriels ... shift `expr "$OPTIND" - 1` [ -z "$1" ] && usage # pas de fichier donne a la ligne de commande Détection des options données sur la ligne de commande.
11
N’oubliez pas de régler correctement la variable Bourne shell IFS
# # Quelques variables globales ... CONTINUE=VRAI COMPTEUR=1 # C'est tres important! Il faut regler IFS (separateur de champs pour # la commande read(1)) avec le caractere Enter. Sinon, read(1) va # ignorer les caracters Espace et Tab. Dans le corps d'un courriel, # Espace et Tab sont comptes !!! IFS=" " while [ "$CONTINUE" = VRAI ] do read LIGNE || exit 0 # detecter la ligne blanche qui delimite l'en-tete if [ -z "$LIGNE" ] then # Obtenir la longueur du courriel LONGUEUR=`egrep 'Content-Length:' entetes${COMPTEUR}.tmp` LONGUEUR=`expr "$LONGUEUR" : 'Content-Length: \(.*\)'` [ -z "$PAS_SORTIE" ] && more -w < entetes${COMPTEUR}.tmp [ -z "$GARDE" ] && /bin/rm -f entetes${COMPTEUR}.tmp COMPTEUR=`expr "$COMPTEUR" + 1` N’oubliez pas de régler correctement la variable Bourne shell IFS OK. L ’en-tête est terminé. Aller chercher la longueur du corps ...
12
Le fichier d’entrée est lu ligne par ligne.
TOTAL=0 while [ "$TOTAL" -lt "$LONGUEUR" ] do read DUMMY if [ $? -ne 0 ] then echo "La boite aux lettres est brisee !" echo "Programme termine prematurement." exit 1 else CAR_LU=`/usr/ucb/expr length "$DUMMY"` TOTAL=`expr "$TOTAL" + "$CAR_LU"` TOTAL=`expr "$TOTAL" + 1` fi done # Sauter par dessus la derniere ligne blanche # # Ecrire l'en-tete dans le fichier temporaire echo "$LIGNE" >> entetes${COMPTEUR}.tmp done < "$1" Lire le nombre de caractères indiqués par la valeur de « Content-Length: ». Le fichier d’entrée est lu ligne par ligne. N’oubliez pas d’ajouter le caractère Enter dans le comptage. C’est une ligne de l’en-tête
13
Exemples de programmation (5)
Pour terminer une tâche errante, nous devons utiliser la commande ps(1) et kill(1). La commande ps(1) permet d’obtenir le PID du processus à fautif. La commande kill(1) permet l’élimination du processus à l’aide de son PID.
14
Exemples de programmation (6)
C’est le champ $1 pour nawk(1) lorsque la commande utilisée est ps -e
15
Exemples de programmation (7)
Pour terminer une tâche dont le PID est 4003: kill Le PID du processus à « tuer » Le signal à envoyer au processus (par exemple) Le problème: il faut connaître le PID du processus errant !!! Nous allons écrire un programme Bourne shell capable de « tuer » un ou plusieurs processus par leur nom au lieu de leur PID. Mieux encore, nous pouvons aussi utiliser une expression générique pour spécifier les noms de processus.
16
La variable IFS réglée à Retour de chariot...
#!/bin/sh # Par mesure de securite ... PATH=/bin:/usr/bin:/usr/5bin:. # Les PID retournes par nawk sont separes # par des <return> ... IFS=' ' # <return> # # Traiter les options de la ligne de commandes case $1 in "") echo 'Utilisation: zap [-n] expr' 1>&2 exit 1 ;; # si le numero du signal est donne ... -*) SIG=$1 shift esac La variable IFS réglée à Retour de chariot... Traitement des options du programmes
17
La recherche du PID des processus à éliminer
# # Trouver les PID des processus identifies par leur nom numjob=`ps -e | egrep "$1" | nawk '{print $1}'` # Continuer le traitement seulement si les processus # sont trouves if [ "$numjob" ] then set $numjob # les PID seront separes par des # nouvelles lignes while [ $# -ne 0 ] do if [ $1 -lt $$ ] # tuer seulement les processus lances then # avant l'execution de ce script kill $SIG $1 fi shift done else echo "Ne trouve le ou les processus" 1>&2 La recherche du PID des processus à éliminer Mettre les PID trouvés comme des paramètres de position
18
Exercices
19
Survol des systèmes d’exploitation modernes
Cours #12 Survol des systèmes d’exploitation modernes
20
Bref historique d’UNIX
GPA435 - Systèmes d'exploitation et programmation de système Origine une idée de Ken Thompson (des laboratoires Bell) à la fin des années 60 du 20e siècle. (ça vaut la peine d’y jeter un coup d’œil!) Il voulait créer un jeu interactif pour passer le temps. Or, le S.E. MULTICS n’avait pas un temps de réponse suffisant. Ken Thompson décida de construire son propre S.E. ETS - GPA, (c) Tony Wong, Ph.D., ing.
21
Bref historique d’UNIX
GPA435 - Systèmes d'exploitation et programmation de système UNIX par opposition à MULTICS: première version entièrement écrite en langage assemblé; services très primitifs; mono-utilisateur mais multitâche; gère la mémoire pour les processus; code compact et grande vitesse d’opération. ETS - GPA, (c) Tony Wong, Ph.D., ing.
22
Bref historique d’UNIX
GPA435 - Systèmes d'exploitation et programmation de système À la même époque Dennis Ritchie développa le langage C. Au début des années 70 du 20e siècle réécriture du S.E. UNIX utilisant le langage C. Première machine dotée du S.E. UNIX PDP-11: UNIX détrône rapidement MULTICS. ETS - GPA, (c) Tony Wong, Ph.D., ing.
23
Bref historique d’UNIX
GPA435 - Systèmes d'exploitation et programmation de système Bref historique d’UNIX Le département des brevets (laboratoires Bell) premiers utilisateurs sérieux de ce S.E. Une grande contribution des institutions académiques et de recherche: Université de la Californie à Berkeley; Université Stanford; M. I. T. AT&T BSD (Berkeley Software Distribution) Réseautique (i.e. SUN) Système graphique X-Windows ETS - GPA, (c) Tony Wong, Ph.D., ing.
24
Bref historique d’UNIX
GPA435 - Systèmes d'exploitation et programmation de système ETS - GPA, (c) Tony Wong, Ph.D., ing.
25
Architecture interne d’UNIX
GPA435 - Systèmes d'exploitation et programmation de système Architecture interne d’UNIX Organisation traditionnelle: Le compilateur C faisait partie des composants du S.E. parce qu’il faillait recompiler souvent le noyau. ETS - GPA, (c) Tony Wong, Ph.D., ing.
26
Architecture interne d’UNIX
GPA435 - Systèmes d'exploitation et programmation de système Architecture traditionnelle (aujourd’hui désuet) ETS - GPA, (c) Tony Wong, Ph.D., ing.
27
Architecture interne d’UNIX
GPA435 - Systèmes d'exploitation et programmation de système Architecture moderne (micro-noyau): ETS - GPA, (c) Tony Wong, Ph.D., ing.
28
Architecture interne d’UNIX
GPA435 - Systèmes d'exploitation et programmation de système Micro-noyau: regroupe un petit nombre de services essentiels; les autres services réalisés sous forme de serveurs. Façonner le système UNIX pour répondre à des besoins particulier: QNX : UNIX temps réel; UNIX pour système embarqués. etc. Des droits accès sont nécessaires; Primitifs de verrouillage et d’ouverture exclusive sont nécessaires. ETS - GPA, (c) Tony Wong, Ph.D., ing.
29
GPA435 - Systèmes d'exploitation et programmation de système
Variantes d’UNIX Système V version 4 (SVR4): développé conjointement par AT&T et SUN Microsystems; réécriture complète de SRV3 et incorpore les caractéristiques de 4.3BSD; classe d’ordonnancement temps réel; plus importante des variantes développées jusqu’à présent. Le terme technique exact est: accès au processeur en un temps borné. Convient à des applications temps réel de type doux (soft real-time). ETS - GPA, (c) Tony Wong, Ph.D., ing.
30
GPA435 - Systèmes d'exploitation et programmation de système
Variantes d’UNIX GPA435 - Systèmes d'exploitation et programmation de système Système Solaris de SUN Microsystems: basé sur le SVR4; extensibilité; exécution multifilière du S.E.; directement utilisable sur plateforme multiprocesseur. au laboratoire du département le S.E. est le Solaris 2.6 ETS - GPA, (c) Tony Wong, Ph.D., ing.
31
GPA435 - Systèmes d'exploitation et programmation de système
Variantes d’UNIX GPA435 - Systèmes d'exploitation et programmation de système Système BSD (Berkeley Software Distribution): système disponible «domaine public»; contribution dans la communication inter-ordinateur (réseautique); version 4.4 est la version finale de BSD; équipe officielle de développement a été dissolue; développement «maison» FreeBSD et Linux. ETS - GPA, (c) Tony Wong, Ph.D., ing.
32
GPA435 - Systèmes d'exploitation et programmation de système
Linux GPA435 - Systèmes d'exploitation et programmation de système À l’origine: Linus Torvalds voulait avoir des améliorations et modifications pour le S.E. appelé Minix - un système développé par Andrew Tanenbaum pour aider à l’apprentissage de l’UNIX; Les requêtes n’ont pas été jugées pertinentes par M. Tanenbaum; M. Tarvalds a donc développé son propre noyau; ETS - GPA, (c) Tony Wong, Ph.D., ing.
33
GPA435 - Systèmes d'exploitation et programmation de système
Linux GPA435 - Systèmes d'exploitation et programmation de système Un noyau sans programmes (utilitaires) n’est pas un système d’exploitation; Belle rencontre: Le projet GNU avait une série de programmes (utiliaires) pour Unix mais pas de noyau; 1991: Noyau de Torvalds + programmes de GNU + Internet = Linux; Le développement du S.E. s’effectue à un rythme accéléré grâce aux concepts de « Open Source ». ETS - GPA, (c) Tony Wong, Ph.D., ing.
34
GPA435 - Systèmes d'exploitation et programmation de système
Distribution Linux GPA435 - Systèmes d'exploitation et programmation de système Linux n’est pas un produit commercial et différentes organisations peuvent créer leur version du S.E.; Ces versions du S.E. (noyau, utilitaires, pilotes, etc.) et programmes utilisateurs représentent des distributions qui portent des noms distincts; Au département nous utilisons la distribution Gentoo et Ubuntu est installé au laboratoire. ETS - GPA, (c) Tony Wong, Ph.D., ing.
35
Processus, mémoire et ordonnancement (1ère partie)
Cours #12 Processus, mémoire et ordonnancement (1ère partie)
36
Modèle pratique des processus
GPA435 Systèmes d'exploitation et programmation de système Déplacement d’un processus vers/de la mémoire secondaire (swapping). Libère les ressources utilisées afin d’admettre de nouveaux processus dans le système. ETS - GPA, (c) Tony Wong, Ph.D., ing.
37
Modèle UNIX Modèle des processus de SVR4:
tenir compte des modes d’exécution (mode utilisateur et mode noyau); tenir compte de la possibilité de la préemption.
38
Modèle UNIX Modèle des processus de SVR4:
avant SVR4 un processus dans le mode noyau n’est jamais préemptible; avant SVR4 le S.E. UNIX ne convient pas aux traitements en temps réel; modèle à neuf (9) états. Préemption: la prise de contrôle du processeur par un autre processus de plus haute priorité. Un processus est « préemptible » lorsqu’il passe du mode d ’exécution noyau en mode d ’exécution utilisateur.
39
Modèle UNIX
40
Modèle UNIX Mode d’exécution utilisateur:
Mode d’exécution utilisateur: processus est en exécution dans le mode utilisateur. Il est préemptible. Mode d’exécution noyau: processus est en exécution dans le mode noyau. Préempté: processus est en préemption. La préemption n’est possible que lorsque le processus est dans l’état « Mode d’exécution utilisateur ».
41
Modèle UNIX Zombie: processus sorti mais laisse dans le système des informations destinées au processus père qui n’existe plus. Prêt (en mémoire): processus prêt pour être exécuté et dont le code est en mémoire. Bloqué (en mémoire): processus bloqué en attendant un événement déclencheur (code en mémoire).
42
Modèle UNIX Créé: nouveau processus qui n’est pas encore prêt pour l’exécution. Prêt (suspendu): processus prêt pour être exécuté et dont le code est en mémoire secondaire (disque). Bloqué (suspendu): processus bloqué en attendant un événement déclencheur (code en mémoire secondaire).
43
Modèle UNIX Pour le SVR4, deux processus fondamentaux toujours en exécution: processus qui réalise le déplacement des autres processus de/vers la mémoire centrale (swapper); swapper porte le numéro d’identification de processus PID = 0; ce dernier est responsable de la création du processus « init » (PID = 1); tous les autres processus sont descendants de ce processus init.
44
Espace d’adresses des processus
Dans le SVR4: Il s’agit d’un espace virtuel à 32bits La pile utilisateur « grossit » vers les adresses basses. Le heap « grossit » vers les adresses hautes. Les adresses supérieures à 0xE sont associées au code du noyau.
45
Espace d’adresses des processus
Espace virtuel est divisé en segments. Segment « Texte »: code exécutable du programme; entreposé dans le fichier exécutable; à lecture seulement; ce segment est partageable. Plusieurs processus utilisant le même code exécutable. Les processus partagent alors le même segment « Texte ».
46
Espace d’adresses des processus
Segment « Données »: entreposage des symboles constants ou globaux. deux types de données données initialisées et données non initialisées. Variables globales qui ont une valeur assignées dans le code source du programme. Elles ne sont pas partageables. Même que les données initialisées mais leur contenu est toujours mise à zéro.
47
Espace d’adresses des processus
Segment « Heap »: zone de mémoire pour l’entreposage des données du processus; allocation dynamique de la mémoire; taille du segment varie en fonction des besoins du processus; segment grossit vers les adresses croissantes.
48
Espace d’adresses des processus
Segment « Fichier associé à la mémoire » (Mapped File): facilite l’accès des fichiers par le processus; au lieu de faire appel aux services systèmes; on associe un fichier à la mémoire; accès du fichier est plus rapide; (concept existe également sous Windows NT).
49
Espace d’adresses des processus
Segment « Bibliothèque partagée » (shared Library): Bibliothèque partagée code objets utilisables par plus d’un processus à la fois; codes objets chargés dans l’espace virtuel du processus par un appel de système; espace virtuel réservé pour ces codes objets est le segment « Bibliothèque partagée »; par convention, les bibliothèques partagées portent l’extension .so
50
Espace d’adresses des processus
Segment « Pile utilisateur »: entreposage des variables locales; adresse de retour des routines; paramètres d’entrée des fonctions; contenu des registres du processeur; valeur de retour des fonctions appels systèmes; segment grossit vers les adresses décroissantes.
51
Espace d’adresses des processus
Adresses supérieures à 0xE : image du code noyau; image du code noyau partagée par tous les processus du système; un pont reliant tous les processus du système; permet la réalisation de la communication inter-processus.
52
Références [1] Présentations PowerPoint du cours GPA435, Tony Wong.
[2] Notes de cours, GPA435 [3] Levasseur, Yan, Wiki GPA435: , consulté en avril [4] Tanenbaum, A.S., Systèmes d’exploitation. Pearson Education France, 2008. [5] Stallings, W., Operating Systems : Internals and Design Principals. Upper Saddle River, NJ : Prentice Hall, 1998. [6] Références citées dans le premier chapitre des notes de cours. Jean-Philippe Roberge - Avril 2014
Présentations similaires
© 2024 SlidePlayer.fr Inc.
All rights reserved.