ÃÑ ÆäÀÌÁö ¼ö : 3224
![]()
|
Facebook Joinc ±×·ì
Joinc QA »çÀÌÆ®
![]()
Tweet
joinc´Â Firefox¿Í chrome¿¡¼ Å×½ºÆ® Çß½À´Ï´Ù. IE¿¡¼´Â Å×À̺íÀÌ ±úÁö°Å³ª À̹ÌÁö°¡ º¸ÀÌÁö ¾ÊÀ» ¼ö ÀÖ½À´Ï´Ù. ƯÈ÷ ±¸±Û DocsÀ̹ÌÁöÀÇ °æ¿ì ¿¢¹Úó¸®µÉ ¼ö ÀÖ½À´Ï´Ù.
1절. ¼Ò°³±×µ¿¾È Pthread_1, Pthread_2, Pthread_3, À» ÅëÇØ¼ pthread ¿¡ ´ëÇÑ ¸î°¡Áö ±âº»ÀûÀÎ ³»¿ëµé¿¡ ´ëÇØ¼ ¾Ë¾Æ º¸¾Ò´Ù. ±×Áß Pthread_3 ¿¡¼ Á¶°Çº¯¼ö¿Í, mutex Àá±Ý¿¡ ´ëÇÑ ¼³¸íÀÌ ÀÖ¾ú´Âµ¥, ¼³¸í¸¸ ÀÖ¾ú°í ½ÇÁúÀûÀÎ ¿¹¸¦ ÀÌ¿ëÇÑ Å×½ºÆ®´Â ¾ø¾ú´Ù. À̹ø¿¡´Â mutex Àá±Ý°ú Á¶°Çº¯¼ö¿¡ ´ëÇÑ ÀÌÇØ¸¦ µµ¿ï¼ö ÀÖ´Â °£´ÜÇÑ ¾îÇø®ÄÉÀ̼ÇÀ» Á¦ÀÛÇØº¸°í ¾î¶°ÇÑ ¹®Á¦Á¡À» °¡Áú¼ö ÀÖ´ÂÁö¿¡ ´ëÇÑ Å×½ºÆ®µµ ÇÏ°Ô µÉ°ÍÀÌ´Ù. 2절. Mutex Àá±Ý°ú Á¶°Çº¯¼ö Å×½ºÆ®2.1절. Å×½ºÆ®¿ë ¾îÇø®ÄÉÀÌ¼Ç °³¿äÅ×½ºÆ®¿ë ¾îÇø®ÄÉÀ̼ÇÀÇ À̸§Àº mutex_con.c ·Î Çϵµ·Ï ÇϰڴÙ. ÀÌ ÇÁ·Î±×·¥Àº 3°³ÀÇ ¾²·¹µå·Î ÀÌ·ç¾îÁø´Ù. ù ¹øÂ° ¾²·¹µå´Â main ¾²·¹µå·Î ³ª¸ÓÁö 2°³ÀÇ ¾²·¹µå(thread 1, thread 2) ¸¦ »ý¼ºÇϰí (pthread_create) join ÇÏ´Â ÀÏÀ» ÇÏ°Ô µÉ°ÍÀÌ´Ù(Áï Æ¯º°È÷ ÇÏ´ÂÀÏ ¾ø´Ù). 2¹øÂ° ¾²·¹µå´Â 2°³ÀÇ int Çü ¸â¹öº¯¼ö¸¦ °¡Áö´Â ±¸Á¶Ã¼¿¡ Á¢±ÙÇØ¼ ƯÁ¤ÇÑ ¼ýÀÚ¸¦ ÀÔ·ÂÇÏ°Ô µÈ´Ù. 3¹øÂ° ¾²·¹µå´Â ÀÌ ±¸Á¶Ã¼¿¡ Á¢±ÙÇØ¼ ¸â¹öº¯¼öÀÇ °ªÀ» Àоî¿Í¼ "µ«¼À" Çϰí À̸¦ ȸ鿡 Ãâ·Â½ÃÄÑÁÖ´Â ÀÏÀ»ÇÑ´Ù. À̶§ ÀÌ ±¸Á¶Ã¼´Â 2¹ø ¾²·¹µå¿Í 3¹ø¾²·¹µå ¸ðµÎ°¡ Á¢±ÙÇÏ°Ô µÇ¹Ç·Î mutex Àá±ÝÀ» ÀÌ¿ëÇØ¼ Çѹø¿¡ ÇϳªÀÇ ¾²·¹µå¸¸ Á¢±ÙÇϵµ·Ï Á¦¾îÇØ¾ß µÉ°ÍÀÌ´Ù. mutex Àá±ÝÀ» ÀÌ¿ëÇÑ Á¢±ÙÁ¦¾î ¿Ü¿¡µµ, 3¹øÂ° ¾²·¹µå´Â 2¹øÂ° ¾²·¹µå¿¡ ÀÇÇØ¼ ±¸Á¶Ã¼ÀÇ °ªÀÌ º¯°æµÇ¾ú´Ù´Â°É °¨ÁöÇϰí, °ªÀÌ º¯°æµÈ ½ÃÁ¡¿¡¼ ±¸Á¶Ã¼¿¡ Á¢±ÙÇØ¾ß ÇÑ´Ù. Áï ±¸Á¶Ã¼ÀÇ °ªÀÌ º¯°æµÉ¶§±îÁö ±â´Ù·Á¾ß ÇÑ´Ù. ÀÌ "±â´Ù¸²" À» À§Çؼ Á¶°Çº¯¼ö¸¦ »ç¿ëÇÏ°Ô µÈ´Ù. ÀÌ Á¶°Çº¯¼ö¶ó´Â °ÍÀº °£´ÜÈ÷ ¸»Çؼ ½ÅÈ£(signal)¸¦ ÁÖ°í ¹Þ´Â °³³äÀÌ´Ù. ÇÑÂÊ¿¡¼´Â ½ÅÈ£¸¦ ±â´Ù¸®´Ù°¡, ½ÅÈ£°¡ ¿À¸é ½ÅÈ£¸¦ °¨ÁöÇØ¼ ÇÊ¿äÇÑ ÀÏÀ» ÇÏ°Ô µÇ´Â °³³äÀÌ´Ù. 2.2절. Á¶°Çº¯¼ö¸¦ ÅëÇØ ¾ò´Â ÇÁ·Î±×·¡¹Ö »óÀÇ ÀÌÁ¡Á¶°Çº¯¼ö¸¦ »ç¿ëÇÏÁö ¾Ê´Â ´Ù¸é ¾î¶»°Ô µÉ±î. (¹°·Ð Á¶°Çº¯¼ö ´ë½Å ¼¼¸¶Æ÷¾î¸¦ »ç¿ëÇÒ¼öµµ ÀÖÀ¸³ª ÀÌ´Â ³í¿Ü·Î ÇÏÀÚ.) ±×·¸´Ù¸é thread 2 ¿¡¼´Â ±¸Á¶Ã¼ÀÇ Á¤º¸°¡ º¯°æµÇ¾ú´ÂÁö ¾Ë¼ö ¾øÀ½À¸·Î ±¸Á¶Ã¼ÀÇ Á¤º¸°¡ º¯°æµÇ¾ú´ÂÁö È®ÀÎÇϱâ À§Çؼ busy wait(¹Ù»Û´ë±â »óÅÂ)¿¡ ³õÀÌ¸é¼ Áö¼ÓÀûÀ¸·Î °ªÀÌ º¯°æµÇ¾ú´ÂÁö¸¦ È®ÀÎÇØ¾ß ÇÒ°ÍÀÌ´Ù. ÇÏÁö¸¸ ÀÌ°Ç ÁÁÀº ¹æ¹ýÀÌ ¾Æ´Ï´Ù. busy wait »óŶõ Á¡µµ ¸¾¿¡ µéÁö ¾ÊÁö¸¸ ½ÇÁ¦·Î thread 1 ¿¡¼ °ªÀ» º¯°æÇߴµ¥ ±âÁ¸ÀÇ °ª°ú °°À»¼öµµ Àֱ⠶§¹®ÀÌ´Ù. ±âÁ¸ÀÇ °ª°ú °°µçÁö ¾Æ´ÏµçÁö °£¿¡ thread 2 ¿¡¼´Â °ªÀ» Àоîµé¿©¾ß Çϴµ¥, °ªÀÇ º¯°æÀ» È®ÀÎÇÏ´Â ¹æ¹ýÀ¸·Ð üũÀÚü°¡ ºÒ°¡´ÉÇØ Áú¼ö°¡ ÀÖ´Ù. À§ÀÇ ¹®Á¦¸¦ ÇØ°áÇϱâ À§Çؼ º°µµÀÇ º¯¼ö¸¦ Çϳª´õ µÑ¼ö ÀÖÀ»°ÍÀÌ´Ù. ±×·¡¼ thread 1 ¿¡¼ ±¸Á¶Ã¼ÀÇ °ªÀ» º¯°æ½ÃÄ×´Ù¸é ÀÌ º°µµÀÇ ÁغñÇÑ º¯¼öÀÇ °ªÀ» º¯°æÇÏ´Â °ÍÀÌ´Ù. ±×¸®°í thread 2 ¿¡¼´Â ¹Ù»Û ´ë±â »óÅ¿¡¼ ÀÌ º¯¼öÀÇ °ªÀÌ º¯°æµÇ¾ú´ÂÁö È®ÀÎÇØ¼ ±¸Á¶Ã¼ÀÇ °ªÀ» °¡Á®¿À´Â °ÍÀÌ´Ù. ÀÌ ¹æ¹ýÀ» »ç¿ëÇϸé À§ÀÇ ¹®Á¦¸¦ ÇØ°áÇÒ¼ö ÀÖ°ÚÁö¸¸, ¿ª½Ã ¹Ù»Û ´ë±â »óÅ¿¡ ³õÀÌ°Ô µÈ´Ù´Â ´ÜÁ¡À» °¡Áö°Ô µÈ´Ù. Á¶°Ç º¯¼ö¸¦ »ç¿ëÇϸé ÀÌ·¯ÇÑ ¸ðµç ¹®Á¦¸¦ ÇØ°áÇÒ¼ö ÀÖ´Ù. Á¶°Ç º¯¼ö¸¦ »ç¿ëÇÏ°Ô µÇ¸é thread 2 ¿¡¼´Â thread 1 ¿¡¼ Á¶°Çº¯¼ö¸¦ ÅëÇØ¼ ½Ã±×³ÎÀ» º¸³»±â Àü±îÁö ´ë±â »óÅ¿¡ ³õÀϼö ÀÖÀ»°ÍÀ̱⠶§¹®ÀÌ´Ù. Á¶°Çº¯¼ö´Â ¸Þ¸ð¸® buffer 󸮵 À¯¿ëÇÏ°Ô »ç¿ëµÉ¼ö ÀÖÀ»°ÍÀÌ´Ù. Á¶°Çº¯¼ö¸¦ »ç¿ëÇÔÀ¸·Î½á, ¸¸¾à¿¡ ¸Þ¸ð¸® buffer ¿¡ ó¸®ÇØ¾ßµÉ ÀÚ·á°¡ ¾ø´Ù¸é busy wait »óÅ¿¡ ³õÀÏ ÇÊ¿ä ¾øÀÌ signal À» ±â´Ù¸®¸é µÉ°ÍÀ̱⠶§¹®ÀÌ´Ù. ±×·¡¼ signal ÀÌ µµÂøÇÏ¸é ¸Þ¸ð¸® buffer ¿¡ ¿¢¼¼½º¸¦ ½ÃµµÇؼ ÃÖ±ÙÀÇ Á¤º¸¸¦ °¡Á®¿À¸é µÉ°ÍÀÌ´Ù. ÀÌ ¿Ü¿¡µµ Á¶°Çº¯¼ö´Â ¾²·¹µå°£ µ¿±âȵî°ú °°Àº ´Ù¸¥ ¿µ¿ª¿¡µµ ¸Å¿ì À¯¿ëÇÏ°Ô »ç¿ëÇÒ¼ö ÀÖ´Ù. 2.3절. ÀÛµ¿ ÇÁ·Î¼¼½ºÀÛµ¿ ÇÁ·Î¼¼½º´Â ¾î¶»°Ô mutex Àá±Ý°ú Á¶°Çº¯¼ö¸¦ ÀÌ¿ëÇØ¼ ÀӰ迵¿ªÀ» º¸È£ÇÏ°í ±¸Á¶Ã¼ÀÇ °ªÀÇ º¯°æ½ÃÁ¡À» ¾Ë¼ö ÀÖ´ÂÁö¿¡ ´ëÇÑ ³»¿ëÀ» Áß½ÉÀ¸·Î ÇØ¼ ±â¼úÇÒ°ÍÀÌ´Ù.
2.4절. ÄÚµùÀÌÁ¦ ÀÛµ¿ÇÁ·Î¼¼½º±îÁö ¸¸µé¾îÁ³À¸´Ï, ÄÚµù¿¡ µé¾î°¡µµ·Ï ÇÑ´Ù. ÄÚµù¿¡ µé¾î°¡±â À§Çؼ´Â ÀÛµ¿ÇÁ·Î¼¼½º ¿Ü¿¡µµ ¼³°è¼°¡ ÇÊ¿äÇÒ°ÍÀÌÁö¸¸, ÀÌ·¯ÇÑ °æ¿ì ¸Å¿ì °£´ÜÇÑ ÇÁ·Î±×·¥À¸·Î ÀÛµ¿ÇÁ·Î¼¼½º ÀÚü°¡ ¼³°è¼³ª ¸¶Âù°¡ÁöÀÓÀ¸·Î ¼³°è¼ ÀÌ·±°Ç »ý·«Çϵµ·Ï ÇϰڴÙ. ¿¹Á¦ : mutex_con.c
ÇÁ·Î±×·¥ÀÚü´Â ¸Å¿ì °£´ÜÇÏÁö¸¸ Á¶°Çº¯¼öÀÇ ±âº»ÀûÀÎ »ç¿ë¹æ¹ýÀ» ¾Ë¼ö ÀÖÀ»°ÍÀÌ´Ù. 2.5절. Á¶°Çº¯¼ö »ç¿ë½Ã ÁÖÀÇÇØ¾ßµÉ »çÇ×Á¶°Çº¯¼ö¿¡´Â pthread_cond_signal(3) °ú ptherad_cond_wait(3) ¸¦ ÀÌ¿ëÇØ¼ ½ÅÈ£¸¦ ÁÖ°í, ±â´Ù¸®´Â ¹æ½ÄÀ» »ç¿ëÇÑ´Ù°í Çß´Ù. ±×·¸´Ù¸é »ý°¢ÇÒ¼ö Àִ°Ô, °ú¿¬ ½ÅÈ£°¡ ½Ç½Ã°£À¸·Î Àü´ÞÀÌ µÉ°ÍÀ̶õ°É ¹ÏÀ»¼ö ÀÖÀ»±î? ½Ç½Ã°£À¸·Î Àü´ÞµÇ´ÂÁö ¾Æ´ÑÁö°¡ Áß¿äÇÑ ÀÌÀ¯´Â ¾²·¹µå°¡ ½ÅÈ£¸¦ º¸³»°í ³ª¼ ½ÅÈ£¸¦ Àß¹Þ¾Ò´ÂÁö ±â´Ù¸®Áö ¾Ê°í ¹Ù·Î ´ÙÀ½À¸·Î ³Ñ¾î°¡ ¹ö¸®±â ¶§¹®ÀÌ´Ù. ÀÌ°Ç ²Ï Áß¿äÇÑ ¹®Á¦°¡ µÉ¼öµµ ÀÖ´Ù. ¿Ö³ÄÇÏ¸é ¸¸¾à ½ÅÈ£°¡ ½Ç½Ã°£À¸·Î Àü´ÞµÇÁö ¾Ê´Â´Ù¸é ½ÅÈ£°¡ ¹ÌÃÄ Àü´ÞµÇ±â Àü¿¡ ¾î¶² µ¥ÀÌŸ°¡ º¯°æµÇ¾î ¹ö¸®´Â °æ¿ì°¡ ¹ß»ýÇÒ¼ö Àֱ⠶§¹®ÀÌ´Ù.
½ÅÈ£´Â ¸Å¿ì ºü¸¥ ½Ã°£¿¡ Àü´ÞµÊÀ¸·Î º¸ÅëÀÇ °æ¿ì ½ÅÈ£Àü´Þ½Ã°£À» ¿°µÎ¿¡ µÎ¾î¾ß ÇÏ´Â °æ¿ì´Â ¹ß»ýÇÏÁö ¾ÊÀ»°ÍÀÌ´Ù. ÇÏÁö¸¸ ºÒÇàÇϰԵµ ¿°µÎ¿¡ µÎ¾î¾ß ÇÏ´Â °æ¿ì°¡ ¹ß»ýÇϱ⵵ ÇÑ´Ù. ¹°·Ð ¿ì¸® ÇÁ·Î±×·¡¸ÓµéÀÇ »çÀü¿¡ ºÒ°¡´ÉÀ̶õ ¾øÀ¸¹Ç·Î À§ÀÇ ¹®Á¦µµ °£´ÜÇÏ°Ô ÇØ°á°¡´É ÇÏ´Ù. Á¶°Çº¯¼ö¸¦ 2°³ ¾²¸é µÈ´Ù. thread 1 ¿¡¼ ½ÅÈ£¸¦ º¸³Â´Ù¸é, thread 1 Àº ´ÙÀ½ ·çƾÀ¸·Î ³Ñ¾î°¡±â Àü¿¡ thread 2 ¿¡¼ ³Ñ¾î¿À´Â ½ÅÈ£¸¦ ±â´Ù¸®µµ·Ï ÇÏ¸é µÉ°ÍÀÌ´Ù. thread 2 ´Â thread 1ÀÇ ½ÅÈ£¸¦ ¹ÞÀºµÚ thread 1À¸·Î ½ÅÈ£¸¦ º¸³»°Ô µÉ°ÍÀÓÀ¸·Î ¹Ýµå½Ã ½ÅÈ£°¡ Àü´ÞµÉ°ÍÀ» È®½ÅÇÒ¼ö ÀÖÀ»°ÍÀÌ´Ù. 2°³ÀÇ Á¶°Çº¯¼ö¸¦ Áö¿øÇϱâ À§Çؼ 2°³ÀÇ mutex Àá±ÝÀÌ ÇÊ¿äÇÒ°ÍÀÌ´Ù. ¿©±â¿¡¼´Â ±× ±¸Çö±îÁö ¼³¸íÇÏÁö´Â ¾ÊÀ»°ÍÀÌ´Ù. Á¶±Ý¸¸ »ý°¢Çغ¸¸é °£´ÜÇÏ°Ô ±¸Çö °¡´ÉÇÒ°ÍÀ̱⠶§¹®ÀÌ´Ù.
½ÅÈ£ÀÇ Àü´Þ¿¡ °É¸®´Â ½Ã°£Àº ¿î¿µÃ¼Á¦¿¡ µû¶ó »ó´çÇÑ Â÷À̸¦ º¸ÀδÙ. ±×·¯¹Ç·Î ÀÌ·¯ÇÑ ¿ÀÂ÷½Ã°£±îÁöµµ ¿°µÎ¿¡ µÎ¾î¾ßÇÒ »óȲÀÌ ¹ß»ýÇÑ´Ù¸é ½Ã°£Å×½ºÆ®¸¦ ÇØ¾ßÇÒ°ÍÀÌ´Ù. |
|
||||
|
EmailÀ» ±âÀÔÇϸé, ´ñ±ÛÀÌ ¸ÞÀÏ·Î Àü´ÞµË´Ï´Ù. |
|