Vous êtes sur la page 1sur 3

Système d’exploitation

Université Hassiba Benbouali de Chlef


Niveau: Licence 2
Faculté des Sciences
Département d'informatique

TD2: Etude de processus

Exercice 1:
Quelle est la commande permettant de lister tous les processus du système ? ps -aux
Soit le résultat d’affichage de la commande demandée ci-dessus :
root 1680 0.2 0.0 3200 5684 ? S 11:15 0:00 init ?
root 1683 0.2 0.0 119720 3624 ? S 11:15 0:00 /usr/lib/udisks/udisks?
root 1715 0.0 0.0 4204 88 ? S 11:16 0:00 /usr/lib/kde4/graphicalui
root 1716 0.0 0.5 348520 23056 ? S 11:16 0:00 /usr/lib/kde4/soundunit
jse 1717 0.0 0.2 352504 11012 ? S 11:18 0:00 /usr/bin/konsole
jse 1720 0.5 0.9 1189684 36624 tty1 S 11:19 0:00 /usr/bin/play film.mp4 &
jse 1721 4.5 1.4 3184672 16421 ? S 11:19 0:04 soundserver –t mp3
jse 1722 9.8 2.6 174531 25332 ? S 11:19 0:00 ffdcodec –t avi
root 1723 0.1 0.0 596 265 tty2 S 11:23 0:00 ps –aux

Question 1: A quelle heure le système a-t-il été démarré ? 11h 15 (lancement du processus init)
Question 2: Que peut être l’utilité du programme udisks ?Le gestionnaire de disque dur
Question 3: A partir de quelle heure l’utilisateur jse a-t-il commencé à utiliser l’ordinateur ?11h 18
(konsole)
Question 4: Que fait l’utilisateur jse au moment du listing des processus ? Il regarde un film (play
film.mp4)
Question 5: Proposer une arborescence des processus correspondant à l’état du système

Question 6: Que se passe-t’il si l’utilisateur jse tape la commande kill -9 1680 ? Une erreur (pas le
droit de tuer un processus root)
Question 7: Que se passe-t’il si l’utilisateur root tape la commande kill -15 1720 ? La demande de
fermeture de l’application play est effectuée.
Question 8: Quelle est la quantité de RAM en ko utilisée sur la machine par l’utilisateur jse ?
(11012 + 36624 + 16421 + 25332) / 1024 = 87,29 ko
Exercice 2:

Question 1: Dans le système UNIX, les véritables appels système sont effectués à partir - d’un
programme utilisateur - d’une commande shell - d’une procédure de la bibliothèque standard Sont-
ils exécutés en mode superviseur ou en mode utilisateur ?

A partir de la bibliothèque standard des appels système (instruction TRAP). Ils sont exécutés en
mode superviseur (Leurs codes constituent le système d’exploitation).

Question 2: quelle est la différence entre les fonctions et les appels systèmes de Libc.
Un appel système est un moyen de communiquer directement avec le noyau de la machine. Le
noyau regroupe toutes les opérations vitales de la machine. Ainsi il est impossible d'écrire
directement sur le disque dur. L'utilisateur doit passer par des appels systèmes qui contrôlent les
actions qu'il fait.
Les fonctions sont contenues quant à elles dans des bibliothèques. Il s'agit donc de code
s'exécutant dans l'espace utilisateur. Les fonctions peuvent utiliser des appels système.

Question 3 : Qu'est ce qu'une "commutation de contexte" ? Quand a-t-elle lieu ? Quelles ont les
opérations qui y sont faites ?
La commutation de contexte est une procédure réalisée par le système d'exploitation lorsque le
processus en cours est interrompu, pour une raison quelconque (fin de quantum, demande d'E/S,
préemption due à l'arrivée d'un processus plus prioritaire, …).
Les opérations réalisées durant cette procédure sont : − Sauvegarde du contexte du processus
interrompu (compteur ordinal, contenu des registres et des variables, liste des fichiers ouverts, …
etc). − Restauration du contexte du processus chargé

Question 4 : Citez trois événements qui provoquent l’interruption de l’exécution d’un processus en
cours, dans le système UNIX.
1) fin d’un quantum, 2) demande d’une E/S, 3) arrivée d’un signal

Question 5: Décrivez la procédure complète à appliquer lorsqu'une interruption arrive.


− Interruption du processus en cours
− Sauvegarde du contexte du processus interrompu.
− Exécution de la routine d'interruption correspondante.
− Restauration du contexte du processus interrompu
− Poursuite de l'exécution du processus interrompu

Exercice 3:

Question 1: Dans le système UNIX, est-ce que tout processus a un père ?

Oui à l’exception du processus INIT.


Question 2: Pour lancer en parallèle plusieurs traitements d’une même application, vous avez le
choix entre les appels système fork( ) et pthread_create( ). Laquelle des deux possibilités choisir ?
Pourquoi ?
pthread_create( ) car le fork( ) consomme beaucoup d’espace (duplication de processus). Mais il
faut faire attention au conflit d’accès aux objets partagés.

Exercice 4 : La fonction fork()


Question 1: Donner la trace écran de l'exécution du programme, Expliquez.
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <sys/types.h>
int main(int argc, char * argv[]) {
int valeur;
printf("Printf 0 - Avant fork() : ici processus %d\n", getpid());
valeur = fork();
printf("Printf 1 - Valeur retournee par la fonction fork() = %d\n",
valeur);
printf("Printf 2 - Je suis le processus %d\n", getpid());
return EXIT_SUCCESS;
}

Question 2: Ajoutez la ligne suivante derrière l’appel à la fonction fork(). Que se passe-t-il ?
Pourquoi ?
if(valeur == 0) {
sleep(4);
}

Question 3 : Ecrire un programme C qui crée deux fils, l'un affichant les entiers de 1 à 50, l'autre de
51 à 100.
Question 4 : Modifier le programme précédent pour que l'affichage soit 1 2 3 ...100.

Vous aimerez peut-être aussi