Vous êtes sur la page 1sur 3

Université d’Oran

Université Hassiba1 Ahmed Ben -Bella


Benbouali Chlef Année universitaire
Année : 2017-2018
universitaire 2019-2020
Faculté des sciences exactes et appliquées
FSEI
Département
Dép. d’informatique
Informatique
Licence
L3-SIQ L3-S5 Informatique

TP2
TP1- Les
- Processus avec Linux
Les processus Linuxet C

Exercice 1
1. Utiliser les commandes Linux ps et wc pour afficher le nombre
de tous les processus qui tournent sur votre machine.
2. Afficher les PIDs des processus bash lancés par les
utilisateurs.
3. Afficher tous processus lancés par l'utilisateur root. Pour
chacun des processus, vous devez afficher les colonnes PID,
PPID et STIME.
4. Utiliser les commandes ps et head pour afficher la liste des 5
processus les plus gourmands en CPU.
5. Utiliser les commandes ps et head pour afficher la liste des 5
processus qui occupent le plus de mémoire.
6. Afficher juste les processus en cours d’exécution
7. Affichez la liste des processus dont vous êtes propriétaire.
8. Utiliser le ? pour voir l’aide concernant top, Quelle est
l’utilité de f, o, F, u, k, r et q ?
9. Ajouter le champ PPID à l’affichage de top puis retirer-le
10. Modifier la disposition des champs affichez par top ?
11. Triez le résultat de top par PID ?
12. Afficher l’activité des processus d’un seul utilisateur ?
13. Combien de cœurs dispose le processeur de votre machine.
14. Quelle est la version de Linux installé sur votre
machine ?
15. Quelle est la taille de mémoire physique de votre
ordinateur ?
16. Afficher les processus attachés à votre terminal tout en
affichant le nom de l’utilisateur.

Exercice 2
Soit le programme suivant :
#include <stdio.h> 
#include <stdlib.h> 
#include <sys/types.h> 
#include <unistd.h> 

int main (){
  pid_t pid ; 
  printf("Je suis le processus %d\n", getpid()); 
  sleep(10); 
  printf("Appel de fork.\n"); 
  pid = fork(); 
  printf("fork() retourne %d\n", pid); 
  sleep(10); 
  return 0; 
}
1. Enregistrez le programme sous le nom fork1.c, compilez et
exécutez. Que retourne fork ?
2. Exécutez le programme, ouvrez un second terminal et exécuter la
commande ps -a, une fois avant l'appel de fork et une autre
fois après appel de fork. Remarquez que fork duplique le
processus.
1
Université d’Oran 1 Ahmed Ben Bella Année universitaire : 2017-2018
Faculté des sciences exactes et appliquées
Département d’informatique
Licence L3-S5 Informatique

Exercice 3
Écrire un programme C dans lequel le processus crée un fils,
affiche son PID et le PID du processus fils créé, s'endort
pendant 30 secondes (sleep(30)) et se termine (exit(0)). Le
processus fils affiche son PID, appelle la fonction
executerQuelqueChose(), affiche son PID et se termine.

Le code de la fonction executerQuelqueChose() est donné ci-


dessous :

void executerQuelqueChose (void){


#define NB_ITERS 5
int i;
for (i = 0; i<NB_ITERS; i++){
printf("i = %d\n", i);
sleep(rand()%4);
}
}

1. Exécutez le programme, ouvrez un second terminal et exécuter


la commande ps -a. Que remarquez-vous ?
2. Mettez en commentaire l'instruction sleep(30) et exécuter la
commande ps -a. Que remarquez-vous ?

Exercice 4
Pour chacun des programmes C suivants, dites combien de "Hello!"
sont affichés à l'écran et combien de processus sont créés. Dessiner
dans la partie droite du tableau l'arborescence des processus créés.

Prog1:
int main() {
printf ("Hello!\n");
return 0;
}

Nombre de lignes Hello!: ...........


Nombre de processus créés: .........

Prog2:
int main() {
printf ("Hello!\n");
fork();
return 0;
}

Nombre de lignes Hello!: ...........


Nombre de processus créés: .........

Prog3:
int main() {
fork();
printf ("Hello!\n");
return 0;
}

2
Université d’Oran 1 Ahmed Ben Bella Année universitaire : 2017-2018
Faculté des sciences exactes et appliquées
Département d’informatique
Licence L3-S5 Informatique

Nombre de lignes Hello!: ...........


Nombre de processus créés: .........

Prog4:
int main() {
fork();
fork();
printf ("Hello!\n");
return 0;
}

Nombre de lignes Hello!: ...........


Nombre de processus créés: .........
Prog5:
for (i = 1; i <= 2; i++) {
pid = fork();
if (pid != 0)
printf ("Hello!\n");
}

Nombre de lignes Hello!: ...........


Nombre de processus créés: .........

Prog6:
for (i = 1; i <= 2; i++) {
pid = fork();
if (pid == 0)
break; /* Fin de la
boucle for */
else
printf("Hello!\n");
}

Nombre de lignes Hello!: ...........


Nombre de processus créés: .........

Exercice
Écrire un programme C dans lequel le processus crée un processus
fils.

Vous aimerez peut-être aussi