3.5. ½Ã±×³Î

½Ã±×³ÎÀº À¯´Ð½º °è¿­ OS ¼¼°è¿¡¼­ ``ÀÎÅÍ·´¼Ç (interruption, Áß´Ü)"ÀÇ °£´ÜÇÑ ÇüÅ·ΠÀ¯´Ð½ºÀÇ ¾ÆÁÖ ¿À·¡µÈ ºÎºÐÀÌ´Ù. ÇÁ·Î¼¼½º´Â ´Ù¸¥ ÇÁ·Î¼¼½º¿¡ ``½Ã±×³Î"À» ¼³Á¤ÇÒ ¼ö ÀÖÀ¸¸ç (kill(1) ¶Ç´Â kill(2) ¸¦ »ç¿ëÇÏ¿©) ´Ù¸¥ ÇÁ·Î¼¼½º´Â ºñµ¿±âÀûÀ¸·Î ½Ã±×³ÎÀ» ¹Þ¾Æ ó¸®ÇÒ ¼ö ÀÖ´Ù. ÇÁ·Î¼¼½º°¡ ¾î¶² ´Ù¸¥ ÇÁ·Î¼¼½º¿¡ ½Ã±×³ÎÀ» º¸³»´Â °ÍÀÌ Çã¿ëµÇ±â À§Çؼ­´Â ±× ÇÁ·Î¼¼½º°¡ ·çÆ® ±ÇÇÑÀ» °®°Å³ª ½ÇÁ¦ ¶Ç´Â À¯È¿ »ç¿ëÀÚ ID °¡ ½Ã±×³ÎÀ» ¹Þ´Â ÇÁ·Î¼¼½ºÀÇ ½ÇÁ¦ ¶Ç´Â À¯º¸µÈ (saved) set-user-ID ¿Í µ¿ÀÏÇØ¾ß ÇÑ´Ù. ±×·¯³ª ¸î¸î ½Ã±×³ÎÀº ´Ù¸¥ ¹æ¹ýÀ¸·Î º¸³»Áú ¼ö ÀÖ´Ù. ƯÈ÷ SIGURG ´Â TCP/IP ÀÇ out of band (OOB) ¸Þ½ÃÁö¸¦ ÅëÇÑ ³×Æ®¿öÅ©¸¦ ÅëÇØ Àü´ÞµÉ ¼ö ÀÖ´Ù.

½Ã±×³ÎÀÌ À¯´Ð½ºÀÇ ¾ÆÁÖ ¿À·¡µÈ ºÎºÐÀÓ¿¡µµ ºÒ±¸ÇÏ°í ½Ã±×³ÎÀº ¿©·¯°¡Áö ±¸Çö¿¡¼­ ´Ù¸¥ ÀÇ¹Ì Ã¼°è¸¦ °®´Â´Ù. ±âº»ÀûÀ¸·Î "´Ù¸¥ ½Ã±×³ÎÀ» ó¸®ÇÏ´Â µ¿¾È ½Ã±×³ÎÀÌ ¹ß»ýÇÏ¸é ¾î¶² ÀÏÀÌ »ý±æ±î?" ÇÏ´Â Áú¹®ÀÌ ÇÑ ¿¹°¡ µÉ ¼ö Àִµ¥ »õ·Î¿î GNU libc ¶óÀ̺귯¸®º¸´Ù ¿À·¡µÈ ¸®´ª½º libc 5 ´Â ¾î¶² ½Ã±×³Î ¿¬»ê¿¡ ´ëÇØ ÀÏ·ÃÀÇ ´Ù¸¥ ÀÇ¹Ì Ã¼°è¸¦ »ç¿ëÇß´Ù. ½Ã±×³Î Çڵ鷯³»¿¡¼­ C ¶óÀ̺귯¸® ÇÔ¼ö¸¦ È£ÃâÇÏ´Â °ÍÀÌ ÇʼöÀûÀ¸·Î ¾ÈÀüÇÏÁö´Â ¾ÊÀºµ¥ °¢ È£Ãâ¿¡ ´ëÇØ ¹®¼­¸¦ Á¶»çÇÒ ÇÊ¿ä°¡ ÀÖ´Ù. ´õ¿í ÀÚ¼¼ÇÑ Á¤º¸´Â glibc FAQ ¸¦ º¸¶ó (¾î¶² ½Ã½ºÅÛ¿¡¼­´Â /usr/doc/glibc-*/FAQ ¿¡¼­ ¾òÀ» ¼ö ÀÖ´Ù).

»õ·Î¿î ÇÁ·Î±×·¥¿¡ ´ëÇؼ­´Â ´ÜÁö POSIX ½Ã±×³Î ½Ã½ºÅÛ (BSD ¿¡ ±âÃÊÇÑ) À» »ç¿ëÇضó; ÀÌ´Â ³Î¸® Áö¿øµÇ°í ÀÖÀ¸¸ç ¿À·¡µÈ ½Ã±×³Î ½Ã½ºÅÛÀÌ °®°í ÀÖ´ø ¹®Á¦°¡ ¾ø´Ù. POSIX ½Ã±×³Î ½Ã½ºÅÛÀº sigset_t µ¥ÀÌŸ ŸÀÔ »ç¿ë¿¡ ±âÃÊÇϴµ¥ sigemptyset(), sigillset(), sigaddset(), sigdelset() °ú sigismember() µéÀÇ ÀÏ·ÃÀÇ ¿¬»êÀ» ÅëÇØ Á¶ÀÛµÉ ¼ö ÀÖ´Ù. sigsetops(3) ¿¡¼­ ÀÌ¿¡ ´ëÇØ ÀÐÀ» ¼ö Àִµ¥ manipulate ½Ã±×³Î Çڵ鸵À» ¼³Á¤Çϱâ À§Çؼ­´Â sigaction(2), sigprocmask(2) ¿Í sigsuspend(2) ¸¦ »ç¿ëÇضó (´õ¿í ÀÚ¼¼ÇÑ Á¤º¸´Â ¸Ç ÆäÀÌÁö¸¦ º¸¶ó).

ÀϹÝÀûÀ¸·Î ¸ðµç ½Ã±×³Î Çڵ鷯´Â ¸Å¿ì ª°í °£´ÜÇÏ°Ô ¸¸µé°í °æÀï »óŸ¦ ÁÖÀÇÇؼ­ ã¾Æ¶ó. ½Ã±×³ÎÀº º»ÁúÀûÀ¸·Î ºñµ¿±âÀûÀ̱⠶§¹®¿¡ ½±°Ô °æÀï »óŸ¦ ¾ß±âÇÒ ¼ö ÀÖ´Ù.

¼­¹ö¿¡ ´ëÇØ °øÅëµÈ °ü·Ê°¡ Á¸ÀçÇÑ´Ù: SIGHUP ½Ã±×³ÎÀ» ¹ÞÀ¸¸é ¸ðµç ·Î±× ÆÄÀÏÀ» ´Ý°í ¼³Á¤ÆÄÀÏÀ» ´Ù½Ã ¿­¾î ´Ù½Ã ÀÐÀº ÈÄ ·Î±× ÆÄÀÏÀ» ´Ù½Ã ¿­¾î¾ß ÇÑ´Ù. À̸¦ ÅëÇØ ¼­¹ö¸¦ ÁßÁöÇÏÁö ¾Ê°í Àç¼³Á¤ÇÒ ¼ö ÀÖÀ¸¸ç µ¥ÀÌŸ ¼Õ½Ç¾øÀÌ ·Î±× ¼øȯ (rotation) À» ÇÒ ¼ö ÀÖ´Ù. ÀÌ·¯ÇÑ °ü·Ê¸¦ µû¶ó¾ß ÇÏ´Â ¼­¹ö¸¦ ÀÛ¼ºÇÏ°í ÀÖ´Ù¸é À̸¦ Áö¿øÇϱ⠹ٶõ´Ù.

Michal Zalewski [2001] Àº ½Ã±×³Î Çڵ鷯°¡ ¾î¶»°Ô ¾Ç¿ëµÇ´Â°¡¿¡ ´ëÇÑ ÈǸ¢ÇÑ Áöµµ¼­¸¦ ÀÛ¼ºÇÏ¿´°í ½Ã±×³Î °æÀï ¹®Á¦¸¦ Á¦°ÅÇÏ´Â ¹æ¹ý¿¡ ´ëÇÑ ±Ç°í¸¦ ÇÏ¿´´Ù. ÀúÀÚ´Â ´õ¿í ÀÚ¼¼ÇÑ Á¤º¸¸¦ À§ÇØ ¿ä¾àÀ» º¸±â¸¦ ±ÇÇÑ´Ù; ´ÙÀ½Àº ÀúÀÚÀÇ ±Ç°í¾ÈÀ¸·Î Michal ÀÇ °Í°ú À¯»çÇÑ °ÍÀÌ´Ù: