ÔÆÌ⺣ - רҵÎÄÕ·¶ÀýÎĵµ×ÊÁÏ·ÖÏíÆ½Ì¨

µ±Ç°Î»ÖãºÊ×Ò³ > ³ÏÒãѧԺ²Ù×÷ϵͳÆÚÄ©¸´Ï°(2014-2015)´ð°¸

³ÏÒãѧԺ²Ù×÷ϵͳÆÚÄ©¸´Ï°(2014-2015)´ð°¸

  • 62 ´ÎÔĶÁ
  • 3 ´ÎÏÂÔØ
  • 2025/6/27 2:54:52

lock=0;

}while(1);

12¡¢ Çëд³ö¡°½»»»¡±µÄÔ­×ÓÖ¸Á¸ø³öÀûÓá°½»»»¡±Ö¸ÁîʵÏÖ»¥³âµÄËã·¨¡£

void swap(int *a,int *b){ int temp; temp=*a;

*a=*b; *b=temp;

}

»¥³âËã·¨£º

int lock=0(³õʼ=false); int key; do{

key=1; do {

swap(&lock,&key); } while(key==1); ÁÙ½çÇø lock=0; }while(1);

13¡¢ ʲô½Ð×ö½ø³Ìͬ²½£¿

Ò»×é½ø³Ì£¬ÎªÁËЭµ÷ÆäÍÆ½øËÙ¶È£¬ÔÚijЩµã´¦ÐèÒªÏ໥µÈ´ý»òÕß»½ÐÑ£¬½ø³ÌÖ®¼äÕâÖÖÏà»¥ÖÆÔ¼µÄ¹ØÏµ³ÆÎª½ø³Ìͬ²½¡£

14¡¢ Çë¸ø³öÐźÅÁ¿ÀàÐ͵͍Òå¡£

¡°ÐźÅÁ¿¡±ÊÇÒ»¸ö¾ßÓзǸº³õÖµµÄÕûÐͱäÁ¿£¬²¢ÇÒÓÐÒ»¸ö¶ÓÁÐÓëËü¹ØÁª¡£

15¡¢ ÐźÅÁ¿±äÁ¿µÄ³õÖµÓÐʲôҪÇó£¿

³õÖµ±ØÐëÊǷǸºÕûÊý

ͬ²½µÄÐźÅÁ¿³õÖµÒ»°ãΪ0 »¥³âµÄÐźÅÁ¿³õÖµÒ»°ãΪ1

16¡¢ ʲô½Ð×öÔ­Ó

Ò»¶Î²»¿É¼ä¶ÏÖ´ÐеijÌÐò³ÆÎªÔ­Óï

17¡¢ ·Ö±ðд³ö¶ÔÐźÅÁ¿½øÐÐP²Ù×÷ºÍV²Ù×÷µÄ²Ù×÷Ô­Óï¡£

P²Ù×÷Ô­Ó

void P(semaphore *s){ s->value--; If(s->value<0)

asleep(s->queue); }

V²Ù×÷Ô­Ó

void V(semaphore *s){

s->value++; If(s->value<=0) wakeup(s->queue); }

18¡¢ Çë¸ø³öÐźÅÁ¿ÔªËØs.valueÓës.queueÖ®¼äµÄ¹ØÏµ¡£

19¡¢ ˵³ö³õÖµ·Ö±ðÊÇ0¡¢1¡¢n(>1µÄÖµ)ʱÐźÅÁ¿µÄ×÷Óá£

0Ϊͬ²½ 1Ϊ»¥³â

NΪ×Ó×ÊÔ´¸öÊý

20¡¢ ijͼÊé¹ÝÔÄÀÀÊÒÓÐ50¸ö×ùλ¡£½øÈëÔÄÀÀÊҵĶÁÕßÐèÒªÔڵǼDz¾ÉϵǼǣ¬µÇ¼Çºó£¬Èç

¹ûÓпÕ×ù룬°²Åŵ½¶ÔӦλÖÃÉÏ£»Èç¹ûûÓпÕ×ù룬ҪÇóÔÚÈë¿ÚµÈ´ý¡£µ±¶ÁÕßÀ뿪ÔÄÀÀÊÒʱ£¬½øÐÐ×¢ÏúµÇ¼Ç¡£´Ëʱ£¬Èç¹ûÓжÁÕߵȴý£¬»½Ðѵȴý¶ÁÕß½øÐÐÔÄÀÀÊÒ¡£Ê¹ÓÃÐźÅÁ¿¡¢PV²Ù×÷ʵÏÖ¶ÔÔÄÀÀÊÒ½øÐйÜÀí¡£ ¡¾²Î¿¼´ð°¸¡¿ ¹«¹²±äÁ¿£º

enum seat[50];(free,used) semaphore S;(50) semaphore mutex;(1)

½øÈëµÇ¼Ç¿ØÖÆ£º int Enter(){ int i; P(S); P(mutex);

for(i=0;i<50;i++)

if(seat[i]==free) break; seat[i]=used; V(mutex); return i; }

À뿪עÏúµÇ¼Ç¿ØÖÆ£º void Leave(int j){ P(mutex); seat[j]=free; V(mutex); V(S); £ý

ÿ¸ö¶ÁÕߵĻ£º void Reader(){ int k; k=enter(); ÔĶÁ£» Leave(k); }

21¡¢ ij¹«¹²Æû³µÉÏ˾»ú¡¢ÊÛÆ±Ô±¡¢³Ë¿ÍµÄ»î¶¯ÈçÏ£º

˾»ú»î¶¯£º ÊÛÆ±Ô±»î¶¯£º Driver () { Conductor () { do{ do { Æô¶¯³µÁ¾£» ¹Ø³µÃÅ£» Õý³£Ðгµ£» ÊÛÆ±£» µ½Õ¾Í£³µ£» ¿ª³µÃÅ£» } while (1); } while (1); } } ³Ë¿Í»î¶¯£º Customer () { ³Ë¿ÍÉϳµ£» ³Ë×ø£» ³Ë¿Íϳµ£» }; Ϊ°²È«Æð¼û£¬ÒªÇó£º

£¨1£© ±ØÐë³Ë¿ÍÈ«²¿Éϳµ£¬²ÅÄܹرճµÃÅ£»¼ÙÉè³µÃÅÖ»ÔÊÐíÒ»¸ö³Ë¿Íͨ¹ý£¬ÇÒÓÐ×Ô¶¯

ÅбðµÚÒ»¸öϳµ³Ë¿ÍºÍ×îºóÒ»¸öÉϳµ³Ë¿ÍµÄ×°Öã¬ÇÒ×ñÊØÏÈÏ¡¢ºóÉÏÔ­Ôò£»

£¨2£© ¹Ø±Õ³µÃÅ£¬²ÅÄÜÆô¶¯Æû³µ£» £¨3£© ³µÁ¾µ½Õ¾Í£ÎÈ£¬²ÅÄÜ´ò¿ª³µÃÅ¡£

³õʼʱ£¬³µÁ¾Í£¿¿ÔÚÕ¾µãÉÏ£¬³µÃÅÊÇ´ò¿ª×Å¡£

ÇëÓÃÐźÅÁ¿ÓëPV²Ù×÷ʵÏÖ¶Ô˾»ú¡¢ÊÛÆ±Ô±ºÍ³Ë¿ÍÖ®¼äµÄͬ²½¡£ ¡¾²Î¿¼´ð°¸¡¿

semaphore dc1,dc2;(0,0) semaphore cc1,cc2;(1,0) semaphore metux;(1)£» ³Ë¿Í»î¶¯£º ˾»ú»î¶¯£º ÊÛÆ±Ô±»î¶¯£º Customer(){ Driver(){ Conductor(){ P(mutex)£» do{ do{ if(×îºóÒ»¸öÉϳµ³Ë¿Í?)V(cc2); P(dc1); P(cc2); ³Ë¿ÍÉϳµ£» Æô¶¯³µÁ¾£» ¹Ø³µÃÅ£» V(mutex)£» V(dc1) Õý³£Ðгµ£» ³Ë×ø£» µ½Õ¾Í£³µ£» ÊÛÆ±£» P(mutex); V(dc2); P(dc2); ³Ë¿Íϳµ£» }while(1); ¿ª³µÃÅ£» if(ÊǵÚÒ»¸öϳµ³Ë¿Í£¿) P(cc1);

22¡¢ ÔÚLinux²Ù×÷ϵͳÖУ¬sem_wait(sem_t *s) ºÍsem_post(sem_t *s)·Ö±ð±íʾ¶ÔÐźÅÁ¿

µÄʲô²Ù×÷£¿

sem_wait(sem_t *s)£ºP²Ù×÷ sem_post(sem_t *s)£ºV²Ù×÷

23¡¢ ¼ÙÉèÓÐÁ½¸ö½ø³Ì£¬P1ºÍP2£¬ÆäÖÐP1ÓÐÒ»¸ö»î¶¯act1¡¢P2ÓÐÒ»¸ö»î¶¯act2£»ÒªÇó

act1Ö´ÐÐÍê³Éºó²ÅÄÜÖ´ÐÐact2£¬ÓÃÐźÅÁ¿¡°semaphore S;¡±ÊµÏÖ¶ÔÁ½¸ö»î¶¯½øÐпØÖÆ¡£Çë¸ø³öÆäʵÏÖµÄÒ»°ã¹æÔò¡£

24¡¢ P1ºÍP2ΪÁ½¸öͬ²½½ø³Ì. ÒªÇóP2Íê³É¶¯×÷BºóP1²ÅÄÜÖ´Ðж¯×÷A. Çë¸ù¾ÝÒªÇó

ÌîдSµÄ³õÖµ¡¢P²Ù×÷ºÍV²Ù×÷¡£ semaphore S; (initial value_(1)_) P1:_(2)_¶¯×÷AP2:¶¯×÷B_(3)_

25¡¢ ÇëÍê³ÉÏÂÃæÉú²úÕß-Ïû·ÑÕß³ÌÐò¡£

itemtype B[n];//shared variables(n¸ö¿ÕÏä×Ó)

semaphore S1,S2,mutex; (³õÖµ: S1.value=___; S2.value=_____; mutex.value=____) int in,out;//shared variables void producer( ){ while(1){

produceitem(&item); ________ P(mutex); B[in]:= item; in:=(in+1) % k; _________ V(S2); } }

void consumer( ){ while(1){ P(s2); P(mutex); x:=B[out];

  • ÊÕ²Ø
  • Î¥¹æ¾Ù±¨
  • °æÈ¨ÈÏÁì
ÏÂÔØÎĵµ10.00 Ôª ¼ÓÈëVIPÃâ·ÑÏÂÔØ
ÍÆ¼öÏÂÔØ
±¾ÎÄ×÷Õߣº...

¹²·ÖÏí92ƪÏà¹ØÎĵµ

Îĵµ¼ò½é£º

lock=0; }while(1); 12¡¢ Çëд³ö¡°½»»»¡±µÄÔ­×ÓÖ¸Á¸ø³öÀûÓá°½»»»¡±Ö¸ÁîʵÏÖ»¥³âµÄËã·¨¡£ void swap(int *a,int *b){ int temp; temp=*a; *a=*b; *b=temp; } »¥³âËã·¨£º int lock=0(³õʼ=false); int key; do{ key=1; do { swap(&lock,&key); } while(key==1); ÁÙ½çÇø lock=0; }while(1); 13¡¢ ʲô½Ð×ö½ø³Ìͬ²½£¿ Ò»×é½ø³Ì£¬ÎªÁËЭµ÷ÆäÍÆ½øËÙ¶È£¬ÔÚijЩµã´¦ÐèÒªÏ໥µÈ´ý»ò

¡Á ÓοͿì½ÝÏÂÔØÍ¨µÀ£¨ÏÂÔØºó¿ÉÒÔ×ÔÓɸ´ÖƺÍÅŰ棩
µ¥Æª¸¶·ÑÏÂÔØ
ÏÞÊ±ÌØ¼Û£º10 Ôª/·Ý Ô­¼Û:20Ôª
VIP°üÔÂÏÂÔØ
ÌØ¼Û£º29 Ôª/Ô ԭ¼Û:99Ôª
µÍÖÁ 0.3 Ôª/·Ý ÿÔÂÏÂÔØ150·Ý
ȫվÄÚÈÝÃâ·Ñ×ÔÓɸ´ÖÆ
VIP°üÔÂÏÂÔØ
ÌØ¼Û£º29 Ôª/Ô ԭ¼Û:99Ôª
µÍÖÁ 0.3 Ôª/·Ý ÿÔÂÏÂÔØ150·Ý
ȫվÄÚÈÝÃâ·Ñ×ÔÓɸ´ÖÆ
×¢£ºÏÂÔØÎĵµÓпÉÄÜ¡°Ö»ÓÐĿ¼»òÕßÄÚÈݲ»È«¡±µÈÇé¿ö£¬ÇëÏÂÔØÖ®Ç°×¢Òâ±æ±ð£¬Èç¹ûÄúÒѸ¶·ÑÇÒÎÞ·¨ÏÂÔØ»òÄÚÈÝÓÐÎÊÌ⣬ÇëÁªÏµÎÒÃÇЭÖúÄã´¦Àí¡£
΢ÐÅ£ºfanwen365 QQ£º370150219
Copyright © ÔÆÌ⺣ All Rights Reserved. ËÕICP±¸16052595ºÅ-3 ÍøÕ¾µØÍ¼ ¿Í·þQQ£º370150219 ÓÊÏ䣺370150219@qq.com