From 07778c1db75a46e99680278b05865e52439bf07b Mon Sep 17 00:00:00 2001 From: Philippe Pittoli Date: Sun, 20 Mar 2011 01:03:54 +0100 Subject: [PATCH] Avancement certain --- C_Language/TP_SYS/Exemples_semaphores/a.out | Bin 7276 -> 5932 bytes C_Language/TP_SYS/Exemples_semaphores/creaZ | Bin C_Language/TP_SYS/Exemples_semaphores/ecrireZ | Bin 9931 -> 0 bytes C_Language/TP_SYS/tp_sema/Makefile | 4 +- C_Language/TP_SYS/tp_sema/consommateur.c | 54 ++++++++++++++---- C_Language/TP_SYS/tp_sema/producteur.c | 18 +++--- 6 files changed, 53 insertions(+), 23 deletions(-) mode change 100644 => 100755 C_Language/TP_SYS/Exemples_semaphores/creaZ delete mode 100644 C_Language/TP_SYS/Exemples_semaphores/ecrireZ diff --git a/C_Language/TP_SYS/Exemples_semaphores/a.out b/C_Language/TP_SYS/Exemples_semaphores/a.out index feedb49722b0d92039396f6e189080c6be9fe471..034006d7203216878523b880aaae0d54844b6bb6 100755 GIT binary patch literal 5932 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 U&S&<-dIrj`hkl}b2UN}f5A&S2CjbBd literal 7276 zcmeHMaco;h9X==S=0Q4=EL*b?syE?|R5Wff(rz6>O`5n_IxoqRw6Im{n`6J^nZz#D?DKZtT~`>SA5Sf93U zA5V;IACI?;CsMh|P&OU9UzNc$S>DsPA1P%gb;49xw*fK7hUF)g+eUil+kDF_>HWX? zUH{3@YfFvn*KH8CA;-cH29h%GCy)GXfoX3bPX_~u9U366heRrHM+NSwz@M+ctrd7{ z1-=J(+q3=v$EA+FG|jPOI%Q^^XvQ&3fnkbqcyeA$uY|j)?~tA zI_ijtoRbw3nMBGN6;UUhfGXB5sY*r@DbW+@-P2{>A5vCT!3(bcd>AtyT|)}ZtW6{~ zat00&AQa&zw{XBt`UAHj_A|zS2N+{gY8ayY1&L{y-AMeh#I(>hh)+sPOYLUjd5LMU%|W_6B{40xA0(at zZu|S8hDolACe$3~V59`TjF@|!nn3Xl|z1L_FMmUqPav8&T zXiMDq7%Q%a^$}Pff%OqsAA$7|SRaA)5%@nG0qmu?r4u@4nmbNz0c#+wI2+?|A!@MQ zd;gl7K7lhP&ufuy;EaLzC1CD_xXb@Ig!S%(FmNAr1v@aF^*SIt6Y_|?2~tFTrVEI9 ze&eBl=Vr#(J*LkgA2y|FOA+xaz)1ejfoEo2=`i~8EaW-Ji;!0#OOQW9-i2shPgmDN zM)UrWT*}F9k0esjOxkD<;n&jEo|Cydw#p0~LPOajNhdmj*vY8a)+rqDtjvT6rP7WS z>fF=Y;zY+vXe^ZrjpPzIS0~~kL}W*^wg|cBFFPeX8ikvw^afdT_q2cEYX+8~-| z!{==9>bl2wn&B$m9Ceyc0;%R<^@6-HJ}NBCP{?4Bv!k-c#T`1>U?YQGeu7 zz75el-k%l0Yof8Gz_DX^0it<)hSb0S+#{5OZuk2o9#u4h*9_i$WtM7_@I?sqkv9O| z0C-vlvdZa~ktPpjsk=2?*_0Q!hxZE)kB9iCkKn!L;qkB@1n*|;E`kS>WV`at4!m=v zJVde%?RXQS?c;q-@h1AH{|_D>pQTs8+lD+H$f3Lq(fSPBJ{XvQoAvi1c+BUx@Rp+a zBY2lkPJOKq2J$|ulJcKr6h6bLONSxw{-FV4au^tU+(W#Hm&5=Jr!TNS>;tMwU-s&2 z!ZpEwr=r#e>J5R<8D^?mU3Dj_uu{P1hQg`^J|7fj>*_h6uv%qY?+SB9)w))gPa?H` z6_zx)P8H^gRPQ*2)olUSox*(b2*LHGaE-)VM+)wvW(S}Sic*q<&#R?8!EnfgVWy>zKfBdUn$Htxbh!`d1ZG!RExXI z^Uhqqc+X`Ic^gCQgV$hM%l7$jgWC+O?epPHfmf?Aa8HK_ezQ?Lf>_?FA@+$z@dRSt zy>aG{ z?}2syxGFAI;C}+^@%CZ7uLA4wG_WJ$JuUAj>3Q|&?#FL-&wzQo z%6Xx^zXjHT?ft0&F9XYKR+QCZJd41sCH=(jSMWDr348f9o@WB}^WF1yX};>KHj2+x zl!t+N?|U9x+P4o_ug7}s1Y#K{>*Pj9LowXPcMbOsnvve2VchJSX7?Jjugg;uPn%=o z>5=HTDR)$6G&d=*TbdZR94j7rpmpaC!2&Z8pCo!f$ZePz&n1&bbUWd`ZrRM$_v${td6n=?WL$Ktgm)~mEWSfbd5AF=%GmbeCGaWmZdO9>RS^Bc$CCYC%a^%H- E09eD7RR910 diff --git a/C_Language/TP_SYS/Exemples_semaphores/creaZ b/C_Language/TP_SYS/Exemples_semaphores/creaZ old mode 100644 new mode 100755 diff --git a/C_Language/TP_SYS/Exemples_semaphores/ecrireZ b/C_Language/TP_SYS/Exemples_semaphores/ecrireZ deleted file mode 100644 index ea8e2f4d731c9d5208631d5bf0231450a822f1cf..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9931 zcmcIqeQ=b=dEfgG96}~S5F6VhK4Hlg({TDgU~qy1h%?3`J}hB}563U3yH|RzIo)0E z-lI}G#5iYS)QcSQ(Wx^|8*n^Rx1|~WpsrhIJi?G*X4*vcWEy5dGGqp)M^Rh3Lu1+y zUw^;-kY1eu8;`p;&+Y#9dG^_7cc0yN_kH)tX!nCYpHGx3Y&yr@@v znfD#=KpRk?8^n6a_ak}*@~?nLdIOk5KItzi5FbO_ z0AingT<6^=Vtuqz_EnYOEgn1@>3N`95V}f)K-Hm9XOKr5A{w(Vi9fAzlg1Bgyi?St;`N;DGH4P&Szmd1o-@imaW>WpW~)vhA$s&*qY8x1THu_GfZm z5cymzoe*wv&=z?&0cq&Re>!8OGVz$3%%rI|?xq-Jvceupx+3OglET`w6-FeIX{(U8 z6DUSYv{{3(WLj+O-n72U>VRXLR2$6qzt4{=17#SP;(Q=6G$fO7zkv8Fq-DOuesNrK zh1d^2m<0!?Kh(fE4YzUaaLmXfU}l(kHqW==ON;460=8~ZNzIOX3sb~ zh}$G)4>@~?!xFQn95(1;y~OM>Crd0OX3sf8#FOtLqnSPE>?b}iF?-TENIWhvd(=5Z zJO+$dhW3AdV&qrF3zOTn_c(h>kT{0FM;>z)J`)U;?}gsWhYn#3dW#dmG7Ic}>f{Bi ztEF#V1@FL{ZcX_GBzEjRbMlZ3YP|NZnLusAt-G|iI2Qcg1%S$%M;Mjr54>5p^rIT` zeJG^lj~vHid}-MNbu1`JSwU zAm@GguhFQ|qo+#igQ&42MuJV{myk6QorDCnmRA!Z`-_NAZ)gfJ6ERmqQHoBIHA|Mb zOl}2Qr@5D>^_?q^{f>Ii7x$ePg`U&VaVofUUnzPH)ke=&qG!u#>Un)+{KS>JMoyf# zc-LsKws_vR^bKlx9i>Z;o-0Mqj`%Cl@#4PmIbS+yY*=3&1O0tB z(tm*Zh16dz?kitU|Mw|z9sB(^(%($|hv6F|(TU=|iRQmj?z<|6mY1S+Bhf3R=oRR#V}W`I zvH*Rg6unCA>rmjp*zoMrQ6$)$t7lG5*FeGP0@9pGm}6?V2R!Z{C{yLZQu&1`*^0{= zC^}t(Ga7vfGlJf(?c>v1+tz3sPnR_^YZ(&>JF6B zA}#%=qyJW^;C}*7^V3nRG;AKL8jY4Y!n&`2^S?98_$d88WnPzM)aoSt;d77mmY;*_ zr%v9ET|;rAZnVf1cl1^MFTHZ&ihnd)DZX2A>qhsA%EG_ff^^}X(c|~9UFGlMuXw6% z_Y>CVPlAtuqrQivzB71`L0@^}|3IBm`c0`63xOZ~?k;YxjQq>!%TzS_gL@fmtlV1s zQE>IX$-;jdt)<0HdNEc0+xsdv-B^H+$oNXdy%iPf^2JNR%6KVIyizG#-m&}hhgcFe zdDrVsSXEA-7j|Nm=DwDDh1&4CT+VjG*<2=W=ktYp7(1cxns9R>91h1bgIU)u6Iz zx$u`1k>&Dl9SWykXN(s0WLyDu3_OPTg%?W>oaWRA)!~b?dyzlFK8@Bb`$%YQJCNWh?Ws+<<-kN2>)lT)d%0p75SG2l=+19>7GL=ZQ z4)C0^tOLWgGLp!*tL$ZN&bGa*)_A@k;K<>1z2S~X`+dT|lakC-*vpH!JUm^sUj$F1_qPUb3Z+I(}K^|`LVXw+#@#8t)xf(| z3h8`uAZ;hYaVM7ZsGQ2DZdK=uEG{x#H~F}%UKS(y;XyanCn9+_r((yXP^+EGiby)+ z+L3kZH!X8x10v$Y@{WikhSMmhVmBuu1L;C!ubs>Dt&bO2;Njs-d6mefToGY6iim3u z;lCdMtV|;2#ze$+to~dKuaqKjHxM_1xw zM!sJL@IKF^n}NsKC>L|Y@;xvZVWdq^Pe&ozk-?>h`nYd=2y!nXZTO5y_ksBQq#XB? z6Oh{jlFJtID8v2XXF=RkQjYu2ZUF8(O+XPDHsYUqN6K;ESPKPwc2f@n^GVx5+-ow; z{pKnNv?1-S7f^6a?r$jEVjI|K&zz2vifMvjki+RFVimyLQ< z$UU(Mlw-((j9d%kS|GR9G!i_@k@&PVa$H5TQ2bLiLI>K)@D#|%adFy!4LFM)$9g_R6)uL7F{shWDE)xy_LK6rDl`BZo)e41L2m(Csxsh>cu*mE3(zH~i4a|8u)y=E2AUbTUNT30;Zy6P!m4Jje+sJ_xXvl8D&Tsiu<}lG-VI0(R_l}E zbLCa*kixQUV3W4)j zVfGxp9ZX@43cejoVGJ^YIfn=I6NU4P`2qbUkMl`k3?c&Ojlw({sQIC=cco%e9_eDLJ&0-N#hVV3+2uo({@zOHc{lke;i z`|#x9I>h(+h=6YuMwJ^x*3H{|o$=^mw!W3b1@Hf|&K!Vd5D7@!_lN9l&0D z?g6gX{>AoH_s3_zH-Y^%RE57>g-3vmzxn(N#5aIV{|NuvmG4#Im#gq;VB?QI|Hs8I zs`!(@+eU(+D2!@=z3%`sumkDsb1>yOe>k(}<4bY9S_0&=hx{cPH);758t>FN3VdFV z$9x=(dw_TTaWLdcew}z6nBR9cYn;;M=~vW$5SaT4B!O$iv%vp^@^?#IC;n8+ZlMIeeF(!}*J}Q1sZWR=V6&bzh+D)C z&EKv0NsWK5@vz3G|3)-6{qsDq*S;5k1KM93{B`2*fhRrozgAWLCmQ$Z`hEqR@c73h zuxU>{+VeXt4{;F&%~y{IxkqGwHv&&$Jk5CAt@-`nk>9B?lCr#r^(B|dgHW%y#z}nY zb&)!<#&&PmxnY`gPsb)(0Q#jc&KLuUp?8W$$^!R7qT9zzctUBVz5^>1zm9 zf7WvTK;Mq=GV~RR8Ckd{;l=3me8zHcZ6alhxKl_bEVK&M%li*_r6!vMJo6gG3>CCg zWU@A{aiFNWkKq+iS24Uf@thrVrSxO+wuYCdE?tO(ol@#}*<%KO+B8|QW#O2u3(1=r z@436-EzN_u7FPF1yiCuMkBVbzDxaB&9 z^cNz1LqfU+3T0-r3mLeWGOeYf`gJjeYT9_~;k{OmJ&?@feMna-me1oA0x!Qzmv6&m O9C>ZVn^kq)=KlaKgO5f4 diff --git a/C_Language/TP_SYS/tp_sema/Makefile b/C_Language/TP_SYS/tp_sema/Makefile index 81b662e..bca8952 100644 --- a/C_Language/TP_SYS/tp_sema/Makefile +++ b/C_Language/TP_SYS/tp_sema/Makefile @@ -1,10 +1,10 @@ CC = gcc CONS = consommateur PROD = producteur -CFLAGS = -Wall -g +CFLAGS = -Wall -g COMMUN = sema.o global.o all: $(COMMUN) consommateur.o producteur.o - $(CC) consommateur.o -o $(CONS) sema.o + $(CC) consommateur.o -o $(CONS) -std=c99 sema.o $(CC) producteur.o -o $(PROD) sema.o sema.o : sema.c sema.h diff --git a/C_Language/TP_SYS/tp_sema/consommateur.c b/C_Language/TP_SYS/tp_sema/consommateur.c index b60c493..f79336d 100644 --- a/C_Language/TP_SYS/tp_sema/consommateur.c +++ b/C_Language/TP_SYS/tp_sema/consommateur.c @@ -9,6 +9,7 @@ #include #include #include +#include #include "consommateur.h" #include "types.h" #include "sema.h" @@ -17,22 +18,51 @@ int main( int argc, char **argv) { - if(argc < 2) { printf("Usage : %s numIPC\n", argv[0]); exit(EXIT_FAILURE); } + int shmid, shm_key; + int mutex_data, mutex_tpa; + key_t sem_key_data; + key_t sem_key_tpa; + const char CTRL_D = 4; - key_t clef = (key_t) atoi(argv[1]); + if(argc < 2) { printf("Usage : %s nSHM \n", argv[0]); exit(EXIT_FAILURE); } - MEMP memoireP; - memoireP.tete = 0; - memoireP.queue = 0; + shm_key = (key_t) atoi(argv[1]); + sem_key_tpa = MUTEX_1; + sem_key_data = MUTEX_2; - int semid; - semid = creat_sem( clef, MAX_PROD); - if(semid >= 0) - { + MEMP * memoireP; - sleep(10); - del_sem(clef); - } + if((shmid = shmget(shm_key, sizeof(MEMP), IPC_CREAT|IPC_EXCL|0766)) == -1) + { perror("shmget"); exit(EXIT_FAILURE);} + + if((memoireP = (MEMP *) shmat(shmid, 0 , 0766)) == (void *) -1) + { perror("shmat"); exit(EXIT_FAILURE); } + + // MUTEX_2 => DATA + if((mutex_data = creat_sem( sem_key_data, MAX_PROD)) == -1) + { perror("creat_sem"); exit(EXIT_FAILURE); } + + if((mutex_tpa = creat_sem( sem_key_tpa, MAX_PROD)) == -1) + { perror("creat_sem"); exit(EXIT_FAILURE); } + + P(mutex_data); + + memoireP->tete = 0; + memoireP->queue = 0; + V(mutex_data); + + for(int i = 0; i < MAX_PROD ; i++) + memoireP->tpa[i] = -1; + + + + sleep(10); + + if(shmctl(shmid, IPC_RMID, 0) < 0) + { perror("shmctl"); exit(EXIT_FAILURE); } + + if(mutex_data >= 0) { del_sem(sem_key_data); } + if(mutex_tpa >= 0) { del_sem(sem_key_tpa); } exit(EXIT_SUCCESS); } diff --git a/C_Language/TP_SYS/tp_sema/producteur.c b/C_Language/TP_SYS/tp_sema/producteur.c index 9fcabaf..ccfeac6 100644 --- a/C_Language/TP_SYS/tp_sema/producteur.c +++ b/C_Language/TP_SYS/tp_sema/producteur.c @@ -11,20 +11,20 @@ int main( int argc, char **argv) { if(argc < 2) { printf("Usage %s numIPC\n", argv[0]); exit(EXIT_FAILURE); } - int *zone; - int memid; - int clef = atoi(argv[1]); - if(clef == -1) { printf("Usage %s numIPC message\n", argv[0]); exit(EXIT_FAILURE); } + MEMP *memoireP; + int shmid; + int shm_key = atoi(argv[1]); + if(shm_key == -1) { printf("Usage %s numIPC message\n", argv[0]); exit(EXIT_FAILURE); } -/* création ou lien avec une zone partagée */ - memid = shmget(clef, 100, 0700 | IPC_CREAT); - if (memid == -1) { perror("shmget"); return (EXIT_FAILURE); } +/* création ou lien avec une memoireP partagée */ + shmid = shmget(shm_key, 100, 0700 | IPC_CREAT); + if (shmid == -1) { perror("shmget"); return (EXIT_FAILURE); } /* montage en mémoire */ - zone = shmat(memid, NULL, 0); + memoireP = shmat(shmid, NULL, 0); /* utilisation */ - printf("zone[0] = %d\n", zone[0]++ ); +// printf("memoireP[0] = %d\n", memoireP[0]++ ); return (EXIT_SUCCESS);