Nothing Special   »   [go: up one dir, main page]

ICT204 Exercices Linux 2

Télécharger au format pdf ou txt
Télécharger au format pdf ou txt
Vous êtes sur la page 1sur 2

Fiche d’exercices (28/04/2022)

Question de cours.
1)Shell
a) Que signifie bash?
b) Citer deux autres shell que vous connaissez.

2) Processus.
a) Définir un processus
b) Donner les états d’un processus.
c) Dans un mono-processeur mono-cœur, comment le SE fait-il pour donner l’illusion d’une
exécution parallèle des processus?

Exercices détachés.
Exercice 1: Donner le contenu de sortie.txt après la commande:
cat mon_texte.txt | sort > sortie.txt
sachant le fichier mon_texte.txt a le contenu suivant:
Tiencheu
Fouba
Akwo
Mbiada
Kwemo

2- Considérez-le ci-dessous. Quelle est la partie exécutée par le père? Combien de processus
a-t-on au final?
…..
nb_proc = 3;
for(i=0;i<nb_proc;i++)
if(fork()==0)
{
printf("%d\n",2*i+1);
exit(0);
}
else
printf("%d\n",3*i+1);

Exercice 3: Donner la commande qui permet de rechercher le mot linux dans tous les fichiers
du répertoire courant.
Problème: Produit scalaire avec Posix Thread. (8 points)

1- Donner la différence entre un thread et un processus (en 2 lignes maximum).

2- On voudrait écrire un programme parallèle qui fait le produit scalaire en utilisant les threads
Posix.
a) Donner une stratégie permettant de répartir le calcul en plusieurs threads

b) Compléter le bout de code suivant qui donne la fonction exécutée par un thread.
void *produit_scalaire_parallel_1(void *arg)
{
/* Define and use local variables for convenience */
int i, taille; long debut, fin; long indice; float som_locale, *x, *y;

indice = (long)arg; taille = data.length;

debut = ……………………………………….; /* Indice de début*/

if(indice == (NUM_THREADS - 1))


fin = …………………………………………;
else
fin = …………………………………………; /* Indice de fin*/

x = data.x; y = data.y;

/* Calcule du produit scalaire local */


som_locale = 0;
for (i=debut; i<fin ; i++)
som_locale = ………………………………..;

/* Mise à jour du produit scalaire global (data.sum)*/

pthread_mutex_lock (&mutex_sum);
data.sum = ………………………………………………;
pthread_mutex_unlock (&mutex_sum);

pthread_exit((void*) 0);
}

c) Compléter le bout de code suivant qui permet de créer les threads.


for(t=0; t<NUM_THREADS; t++)
pthread_create(&thread[t], &attr, ……………………, (void *)...);

d) Quelle est la fonction qui permet au thread père d’attendre l’exécution des threads fils?

3. Que faut-il faire pour que ce programme puisse être appelé comme les autres commandes
bash?

Vous aimerez peut-être aussi