From 29e9f594a894110643b669be8b4bb0d73103ee60 Mon Sep 17 00:00:00 2001 From: esterfreyja Date: Wed, 4 Dec 2024 13:34:16 +0100 Subject: [PATCH] tp3 --- sem/mutex/mutex-client.sh | 8 ++++++++ sem/mutex/mutex-init.sh | 10 ++++++++++ sem/rdv/rdv-client.sh | 10 ++++++++++ sem/rdv/rdv.sh | 13 +++++++++++++ sem/rdvN/rdv-client.sh | 10 ++++++++++ sem/rdvN/rdv.sh | 10 ++++++++++ tubes/tp3 | Bin 16392 -> 16432 bytes tubes/tp3.c | 15 ++++++++++++--- 8 files changed, 73 insertions(+), 3 deletions(-) create mode 100755 sem/mutex/mutex-client.sh create mode 100755 sem/mutex/mutex-init.sh create mode 100755 sem/rdv/rdv-client.sh create mode 100755 sem/rdv/rdv.sh create mode 100755 sem/rdvN/rdv-client.sh create mode 100755 sem/rdvN/rdv.sh diff --git a/sem/mutex/mutex-client.sh b/sem/mutex/mutex-client.sh new file mode 100755 index 0000000..51f8c7d --- /dev/null +++ b/sem/mutex/mutex-client.sh @@ -0,0 +1,8 @@ +#!/bin/sh + +echo "[`date +%M:%S`](client n°$2) Je demande la ressource." +semP $1 +echo "[`date +%M:%S`](client n°$2) J'utilise la ressource." +sleep 2 +echo "[`date +%M:%S`](client n°$2) Je libère la ressource." +semV $1 diff --git a/sem/mutex/mutex-init.sh b/sem/mutex/mutex-init.sh new file mode 100755 index 0000000..5d83504 --- /dev/null +++ b/sem/mutex/mutex-init.sh @@ -0,0 +1,10 @@ +#!/bin/sh + +mutex=$(semC) +echo "Création du sémaphore d'exclusion mutuelle (id=$mutex)" +for i in 1 2 3; do + ./mutex-client.sh $mutex $i & +done +wait +semD $mutex +echo "Suppression du sémaphore d'exclusion mutuelle (id=$mutex)" diff --git a/sem/rdv/rdv-client.sh b/sem/rdv/rdv-client.sh new file mode 100755 index 0000000..3590471 --- /dev/null +++ b/sem/rdv/rdv-client.sh @@ -0,0 +1,10 @@ +#!/bin/bash + +temps=$(($RANDOM%3+3)) + +sleep $temps +echo "[`date +%M:%S`](client n°$3) semV $2" +semV $2 +echo "[`date +%M:%S`](client n°$3) semP $1" +semP $1 +echo "[`date +%M:%S`](client n°$3) poursuite" diff --git a/sem/rdv/rdv.sh b/sem/rdv/rdv.sh new file mode 100755 index 0000000..a86778f --- /dev/null +++ b/sem/rdv/rdv.sh @@ -0,0 +1,13 @@ +#!/bin/bash + +attendreP2=$(semC 0) +attendreP1=$(semC 0) +for i in 1; do + ./rdv-client.sh $attendreP1 $attendreP2 1 & + ./rdv-client.sh $attendreP2 $attendreP1 2 & +done +wait +semD $attendreP1 +echo "Suppression du sémaphore de rdv (id=$attendreP1)" +semD $attendreP2 +echo "Suppression du sémaphore de rdv (id=$attendreP2)" diff --git a/sem/rdvN/rdv-client.sh b/sem/rdvN/rdv-client.sh new file mode 100755 index 0000000..02f6edf --- /dev/null +++ b/sem/rdvN/rdv-client.sh @@ -0,0 +1,10 @@ +#!/bin/bash + +temps=$(($RANDOM%3+3)) + +sleep $temps +echo "[`date +%M:%S`](client n°$2) semP $1" +semP $1 +echo "[`date +%M:%S`](client n°$2) semZ $1" +semZ $1 +echo "[`date +%M:%S`](client n°$2) poursuite" diff --git a/sem/rdvN/rdv.sh b/sem/rdvN/rdv.sh new file mode 100755 index 0000000..49613c7 --- /dev/null +++ b/sem/rdvN/rdv.sh @@ -0,0 +1,10 @@ +#!/bin/bash + +n=10 +rdv=$(semC $n) +for i in $n; do + ./rdv-client.sh $rdv $i & +done +wait +semD $rdv +echo "Suppression du sémaphore de rdv" diff --git a/tubes/tp3 b/tubes/tp3 index e6586ef8a65142338ae50d07df48bd88d879c501..a5e30893df8c2d453aff90ad305aefebda616ab5 100755 GIT binary patch delta 1296 zcmY*YZ%kWN6u;+{2Q9A9M`5pJ3J;VpOlWB-g|fz0H(Yf~fMg~xb#237HqlY{R%hnS zx@=umS(BB+mi3d6m`qGG=+nf+KVz8;{i2YVW!V>9)C^)4{pO;$dfq=W&&#{#oZs)< zbI-f)oO4-N$iju~kS=yysqV5eO}ebb+a6oqqI-E1U=n7PQ*amRzY>*u$1hFqci84@ z*iZ1zKfc=~JYflLonu)Fuc5b=-qrE%Upw?d(t#gyE_fX8SVX=^utdHSnp7X2*VbLy znp9Vut#ILjuLAU_VHKO^T~MzY{Fj^C-J0J+eyf`9i7K)L*2of3GDwV%U~J;h_)(e3 zM-QeBV;4Wj%VWvI6PV}U9OW1=%jN^DLbFYbY3u~0a%c$|6H_TWqo}ljWg1g9MthDM z{-?!Dm5g!hERI$#+s#6FVr!L#D#iMV;|+j&cuZ)AC45&H0tfynY~w1G2f{UDETIy(RJ1Diic%b@aHgsfiY+RNzvP4i)Ix>F! zN~T|GldEx$wC*gaH}!Ol<1Dw+UTK+uEmc-!xaFjprW#i|T`+;`oz0L%n*MoVPmcujmUZd}WtC+37-vgFb$0~ko)WPy>_BTI0YjLI^xD1+=-hdn MkMzPmyc22v4~*Gr*8l(j delta 1252 zcmZ8gUuaup6#vdmZRPTW#DLa)&Zja1a$uYTal=UA3!S zVc3=#G1frhLFr)N)ZzLv=yo0KX^V`t?4@ncCqYE0taC5=)F7GH^W8ra_FeAz`#Zny zeE(J#;L`;t9R#HuxYAU!Gkw(T9q1LPebMh~74k2OtH9hJCnNl{>Hkpvs*w@rJkB+)t7-d+0~3zeb=QXg zzv8Ua12^z%={Pv>FR4Sg%CN=l-K+eoY3FO&j9)2=Tg0vu)^|oR?jD}EQ|2}h_0E2> zmXdX4dFkW)l%{F<%1pQ6kKVmpSTjJ&k1WvW-AhEWLjL(=9SAs-thIigqQZx7FXi9S z3C?B>E1s-f#;VoA{nbd4 zz3|>0#?*zjspc=_0EXpuNB3KD_iJx7y^b%+58AHqEqh^)>l5KfOQY>uXtq1lv99@M ztO!lG)$4-{KIrX)5;}t!=)+vF6E?9B%yh}-r8X7I(pmE1FchnxGZX?DMNm5 zfV3Jolmb}B_ro3dbJ&BI!ZI=c7@pqiVt%G1%u-W*hvWTT|8;6m68!A=6WQBX?)M(r zpsb6vv+NVuixhXWR<>nc#senjPxv=+{$^(HOGa4V1Twd=8ur32mncVk(1l|Wuh=VC zuPlX&5wHJE^4$U*jdjsY?n(7pBn6`JULHL=j#C41yfbjnm&xR&Pfx_-nQ8u@5~-Jt z9zK!@2cznr18bmOjXe$U3|8YKFp1J&Na_;}LQ8Mr7)6=6zm|Rq%Yz}OY({0gHyD+y zGq7|8r6IzYM= 0 && dest < N) { printf("Processus %d a reçu: %s\n", dest, msg); write(fd[dest][1], msg, my_strlen(msg) + 1); + fsync(fd[dest]); } - } + }*/ i = 0; while(i < N) {