diff --git a/2A/systeme/tp/6_tp/mutex-client b/2A/systeme/tp/6_tp/mutex-client new file mode 100755 index 0000000..b2409d6 --- /dev/null +++ b/2A/systeme/tp/6_tp/mutex-client @@ -0,0 +1,8 @@ +#!/bin/sh + +echo "[`date +%M:%S`](client n°$2) Je demande la ressource." +$(semP $1) # opération P sur le sémaphore (obtention de la ressource) +echo "[`date +%M:%S`](client n°$2) J'utilise la ressource." +sleep 2 # simulation de l'utilisation de la ressource (section critique) +echo "[`date +%M:%S`](client n°$2) Je libère la ressource." +$(semV $1) # opération V sur le sémaphore (libération de la ressource) diff --git a/2A/systeme/tp/6_tp/mutex-init b/2A/systeme/tp/6_tp/mutex-init new file mode 100755 index 0000000..7f870da --- /dev/null +++ b/2A/systeme/tp/6_tp/mutex-init @@ -0,0 +1,14 @@ +#!/bin/sh + +mutex=$(semC) # Création du sémaphore d'exclusion mutuelle avec initialisation + # de sa valeur à 1. L'identificateur du sémaphore est mémorisé + # dans la variable mutex. +echo "Création du sémaphore d'exclusion mutuelle (id=$mutex)" +for i in 1 2 3; do # création de trois processus client + ./mutex-client $mutex $i & # chaque processus client reçoit en argument: + # - l'identificateur du sémaphore d'exclusion mutuelle + # - son numéro +done +wait # Attente de la fin des processus clients +$(semD $mutex) # # Suppression du sémaphore d'exclusion mutuelle +echo "Suppression du sémaphore d'exclusion mutuelle (id=$mutex)" diff --git a/2A/systeme/tp/6_tp/rdv-2Pers b/2A/systeme/tp/6_tp/rdv-2Pers new file mode 100755 index 0000000..d4ce156 --- /dev/null +++ b/2A/systeme/tp/6_tp/rdv-2Pers @@ -0,0 +1,15 @@ +#!/bin/sh + +s1=$(semC 0) # Création du sémaphore d'exclusion mutuelle avec initialisation +s2=$(semC 0) # de sa valeur à 1. L'identificateur du sémaphore est mémorisé + # dans la variable mutex. +echo "Création du sémaphore d'exclusion mutuelle (id=$s1)" +echo "Création du sémaphore d'exclusion mutuelle (id=$s2)" +./rdv-client $s1 $s2 1 & # chaque processus client reçoit en argument: +./rdv-client $s2 $s1 2 & + # - l'identificateur du sémaphore d'exclusion mutuelle + # - son numéro +wait # Attente de la fin des processus clients +semD $s1 +semD $s2 # # Suppression du sémaphore d'exclusion mutuelle +echo "Suppression des sémaphores d'exclusion mutuelle $s1 et $s2" diff --git a/2A/systeme/tp/6_tp/rdv-client b/2A/systeme/tp/6_tp/rdv-client new file mode 100755 index 0000000..3224d3d --- /dev/null +++ b/2A/systeme/tp/6_tp/rdv-client @@ -0,0 +1,12 @@ +#!/bin/bash + +t=$$ +temps=$(($t%10+1)) + +echo "[`date +%M:%S`](client n°$3)" + +sleep $temps + +semV $2 +echo "[`date +%M:%S`](client n°$3)" +semP $1 diff --git a/2A/systeme/tp/6_tp/rdvN b/2A/systeme/tp/6_tp/rdvN new file mode 100755 index 0000000..13c940a --- /dev/null +++ b/2A/systeme/tp/6_tp/rdvN @@ -0,0 +1,14 @@ +#!/bin/bash + +RDV=$(semC $1) + +echo "Création du sémaphore d'exclusion mutuelle (id=$RDV)" + +for i in $(seq $1); do + ./rdvN-client $RDV $i + sleep 2 +done + +wait # Attente de la fin des processus clients +semD $RDV # # Suppression du sémaphore d'exclusion mutuelle +echo "Suppression du sémaphore d'exclusion mutuelle (id=$RDV)" diff --git a/2A/systeme/tp/6_tp/rdvN-client b/2A/systeme/tp/6_tp/rdvN-client new file mode 100755 index 0000000..c0cc479 --- /dev/null +++ b/2A/systeme/tp/6_tp/rdvN-client @@ -0,0 +1,12 @@ +#!/bin/bash + +echo "[`date +%M:%S`](client n°$2) - Je suis au rendez-vous " + +semP $1 +semZ $1 + +echo "[`date +%M:%S`](client n°$2) - Coucou les gars, on se fait un tarot ?" +sleep 5 + +echo "[`date +%M:%S`](client n°$2) - Sympa, a plus" +semV $1