Département INFormatique 
 CSC4508/M2 : Concepts des systèmes d'exploitation et mise en œuvre sous Unix


   Évaluation



TÉLÉCOM SudParis 2ème année

TP Noté CSC4508/M2 du 19/06/15

(Corrigés)

Modalités

Durée : 1 heure 30

Tous documents autorisés.

Les questions sont indépendantes les unes des autres. Aussi, n'hésitez pas à lire tout le sujet avant de commencer pour déterminer l'ordre dans lequel vous souhaitez traiter les questions.

Le barème est donné à titre indicatif des poids entre les différentes questions.

La « livraison » de votre travail en fin de TP noté se fera par remontée sous Moodle (rubrique « TP noté de 1 heure 30 ») du fichier d'extension tgz constitué de la manière suivante :
cd votreRepertoireDeTravailPourCSC4508M2
tar cvfz ${USER}.tgz ${USER}_TPNote2015Session2
NB: Si vous êtes plus à l'aise en écrivant vos réponses sur une copie plutôt qu'en les tapant sur ordinateur, vous pouvez rendre également une copie papier à l'enseignant qui vous surveille. En fin d'épreuve, même si vous ne rendez pas de copie, passez voir l'enseignant qui vous surveille pour lui signaler explicitement que vous ne rendez pas de copie.

Préparation

	    cd votreRepertoireDeTravailPourCSC4508M2
	    wget http://www-inf.it-sudparis.eu/COURS/CSC4508/Current/Documents/ExoCoursSys/TPNote2015Session2/WWW/tPNote2015Session2.tgz
	    tar xvfz tPNote2015Session2.tgz
	    mv TPNote2015Session2 ${USER}_TPNote2015Session2
	    cd ${USER}_TPNote2015Session2
	  

Question 1 : cartoonisation d'image

Le script cartoon.sh permet de transformer un fichier image pour qu'il ait l'air d'être dessiné. On souhaite utiliser ce script dans un logiciel fonctionnant en mode client-serveur : un serveur attend des connexions de processus clients qui lui envoient un fichier à transformer. Le serveur appelle alors le script afin de transformer l'image fournie par le client et renvoie le fichier résultant.

Question 1.1: utilisation de tubes nommés

Dans un premier temps, on souhaite que le serveur crée un tube nommé et attende qu'un client lui envoie le nom d'un fichier à traiter. Une fois le traitement effectué, le serveur envoie au client le nom du fichier créé et contenant le résulat.

Compléter les fichiers Q1/Q1.1/serveur_image.c et Q1/Q1.1/client_image.c afin d'implémenter ce fonctionnement.

NB: a priori, seules les parties marquées A COMPLETER sont à modifer.

---beginCorr

Corrigé : client_image.corrige.Q1.1.c et serveur_image.corrige.Q1.1.c

---endCorr

Question 1.2: copier le contenu du fichier

On souhaite maintenant que le programme fonctionne dans un mode client-serveur proche au fonctionnement d'un serveur web: le client envoie le nom du fichier au serveur qui transforme le fichier et renvoie le contenu du fichier résultat.

Pour simplifier le code, la connexion de fait toujours à travers des tubes nommés, il est donc conseillé de reprendre le code que vous avez écrit pour la question 1.1.

Compléter les fichiers Q1/Q1.2/client_image.c et Q1/Q1.2/serveur_image.c afin d'implémenter ce fonctionnement.

---beginCorr

Corrigé : client_image.corrige.Q1.2.c et serveur_image.corrige.Q1.2.c

---endCorr

Question 2 : find

Le but de l'exercice est d'écrire une partie d'un jeu informatique dans lequel des joueurs ne peuvent commencer une partie que lorsqu'ils sont au moins 4. On vous demande donc d'écrire à l'aide de sémaphores la fonction attend4joueurs() qui bloque tant que 4 joueurs n'ont pas rejoint la partie. Vous pouvez supposer qu'un joueur à rejoint la partie si il appelle attend4joueurs().

Question 2.1

De quelles variables et sémaphores avez-vous besoin ?
---beginCorr
attente = sémaphore initialisé à 0
n = compteur initialisé à 0
mutex = sémaphore initialisé à 1
---endCorr

Question 2.2

Donnez le pseudo-code de la fonction attend4joueurs().

---beginCorr
attend4joueurs() {
  P(mutex);
  n++;
  if(n == 4) {
     V(mutex);
     for(int i=1; i<4; i++)
       V(attente);
  } else {
     V(mutex);
     P(attente);
  }
}
		       
---endCorr





Page mise à jour le 15 juin 2015