ÇÁ·Î¼¼½ºµéÀº »óÈ£°£ÀÇ È°µ¿À» Á¶Á¤Çϱâ À§Çؼ ÇÁ·Î¼¼½º°£, ±×¸®°í Ä¿³Î°ú Åë½ÅÀ» ÇÑ´Ù. ¸®´ª½º´Â ¿©·¯ Á¾·ùÀÇ ÇÁ·Î¼¼½º°£ Åë½Å ±â´É(Inter-Process Commuication, IPC)À» Á¦°øÇÑ´Ù. ¸®´ª½º´Â ½Ã±×³Î°ú ÆÄÀÌÇÁ ÀÌ¿Ü¿¡µµ ½Ã½ºÅÛ V IPC¸¦ Á¦°øÇϴµ¥ ½Ã½ºÅÛ V IPC´Â ÀÌ ±â´ÉÀÌ Ã³À½À¸·Î µîÀåÇÑ À¯´Ð½º ¹öÀüÀÇ À̸§À» µû¼ Áö¾îÁø À̸§ÀÌ´Ù.
Ä¿³ÎÀ̳ª ÇØ´çÇÏ´Â ±ÇÇÑÀ» °¡Áö°í ÀÖ´Â ½Ã½ºÅÛÀÇ ´Ù¸¥ ÇÁ·Î¼¼½ºµéÀÌ ¹ß»ýÇÒ ¼ö ÀÖ´Â ÀÏ·ÃÀÇ Á¤ÀÇµÈ ½Ã±×³ÎµéÀÌ ÀÖ´Ù. ÀÌ·¯ÇÑ ½Ã±×³ÎµéÀ» º¸·Á¸é kill ¸í·ÉÀ» »ç¿ëÇÏ¸é µÇ´Âµ¥(kill -l), ÇÊ ÀÚÀÇ ÀÎÅÚ ¸®´ª½º ±â°è¿¡´Â ´ÙÀ½°ú °°Àº ½Ã±×³ÎµéÀÌ ÀÖ´Ù.
1) SIGHUP 2) SIGINT 3) SIGQUIT 4) SIGILL 5) SIGTRAP 6) SIGIOT 7) SIGBUS 8) SIGFPE 9) SIGKILL 10) SIGUSR1 11) SIGSEGV 12) SIGFEP 13) SIGPIPE 14) SIGALRM 15) SIGTERM 17) SIGCHLD 18) SIGCONT 19) SIGSTOP 20) SIGTSTP 21) SIGTTIN 22) SIGTTOU 23) SIGURG 24) SIGXCPU 25) SIGXFSZ 26) SIGVTALRM 27) SIGPROF 28) SIGWINCH 29) SIGIO 30) SIGPWR
½Ã±×³ÎÀÇ °³¼ö´Â ¾ËÆÄ AXP ¸®´ª½º ½Ã½ºÅÛ°ú ´Ù¸¦ ¼ö ÀÖ´Ù. ÇÁ·Î¼¼½ºµéÀº ´ëºÎºÐÀÇ ½Ã±×³Î µéÀ» ¹«½ÃÇÏ·Á¸é ¹«½ÃÇÒ ¼ö ÀÖÁö¸¸, ¿©±â¿¡´Â µÎ °³ÀÇ Áß¿äÇÑ ¿¹¿Ü°¡ ÀÖ´Ù: ÇÁ·Î¼¼½ºÀÇ ½Ç ÇàÀ» ÁߴܽÃÅ°´Â SIGSTOP ½Ã±×³Î°ú ÇÁ·Î¼¼½º¸¦ ³¡³»°Ô ÇÏ´Â SIGKILL ½Ã±×³ÎÀº ¹«½ÃÇÒ ¼ö ¾ø´Ù. ±×·¸±ä ÇÏÁö¸¸, ÇÁ·Î¼¼½º´Â ¿©·¯°¡ÁöÀÇ ½Ã±×³ÎÀ» ¾î¶»°Ô ó¸®ÇÒ Áö °áÁ¤ÇÒ ¼ö ÀÖ´Ù. ÇÁ·Î¼¼½º´Â ½Ã±×³ÎÀ» ºí·°ÇÒ ¼ö ÀÖ°í, ºí·°ÇÏÁö ¾Ê´Â °æ¿ì¿¡´Â ½º½º·Î ó¸®Çϰųª Ä¿³ÎÀÌ Ã³¸®Çϵµ·Ï ÇÏ´Â °Í Áß¿¡ ¼±ÅÃÇÒ ¼ö ÀÖ´Ù. ¸¸¾à Ä¿³Î¿¡°Ô 󸮸¦ ¸Ã±â´Â °æ¿ì¿¡´Â ½Ã±×³Î¿¡ ÇØ´çÇÏ´Â ±âº» µ¿ÀÛÀÌ ÃëÇØÁö°Ô µÈ´Ù. ¿¹¸¦ µé¾î¼, ÇÁ·Î¼¼½º°¡ SIGFPE(ºÎµ¿ ¼Ò¼öÁ¡ ¿¬»ê ¿¹¿Ü) ½Ã±×³ÎÀ» ¹ÞÀº °æ¿ìÀÇ ±âº» µ¿ÀÛÀº ÄÚ¾î ´ýÇÁ(core dump)¸¦ ÇÏ°í ÇÁ·Î¼¼½º¸¦ ³¡³»´Â °ÍÀ¸·Î µÇ¾î ÀÖ´Ù. ½Ã±×³Î¿¡´Â º»·¡ ¿ì¼±¼øÀ§°¡ ¾ø´Ù. ÇÑ ÇÁ·Î¼¼½º¿¡°Ô µ¿½Ã¿¡ µÎ °³ÀÇ ½Ã±× ³ÎÀÌ ¹ß»ýÇÏ´Â °æ¿ì, ÀÌ ½Ã±×³ÎµéÀÌ ÇÁ·Î¼¼½º¿¡ Àü´ÞµÇ´Â ¼ø¼³ª 󸮵Ǵ ¼ø¼´Â Á¤ÇØÁ® ÀÖÁö ¾Ê´Ù. ¶ÇÇÑ µ¿½Ã¿¡ °°Àº ½Ã±×³ÎÀÌ ¿©·¯¹ø ¹ß»ýÇÏ´Â °ÍÀ» ó¸®ÇÒ ¼ö ÀÖ´Â ¸ÞÄ¿´ÏÁòµµ ¾ø´Ù. µû¶ó¼, ÇÁ·Î¼¼½º°¡ SINGCONT ½Ã±×³ÎÀ» ÇѹøÀ» ¹Þµç 42¹øÀ» ¹Þµç À̸¦ ±¸º°ÇÒ ¹æ¹ý ÀÌ ¾ø´Ù.
¸®´ª½º´Â ÇÁ·Î¼¼½ºÀÇ task_struct¿¡ ÀúÀåµÈ Á¤º¸¸¦ »ç¿ëÇؼ ½Ã±×³Î ±â´ÉÀ» ±¸ÇöÇÑ´Ù. Áö ¿øÇÒ ¼ö ÀÖ´Â ½Ã±×³ÎÀÇ °¹¼ö´Â ÇÁ·Î¼¼¼ÀÇ ¿öµå(word) Å©±â¿¡ Á¦ÇÑÀ» ¹Þ´Â´Ù. 32ºñÆ® ¿öµå¸¦ »ç¿ëÇÏ´Â ½Ã½ºÅÛ¿¡¼´Â ÃÖ´ëÇÑ 32°³ÀÇ ½Ã±×³ÎÀ» Áö¿øÇÒ ¼ö ÀÖ°í, ¾ËÆÄ AXP¿Í °°ÀÌ 64ºñÆ® ÇÁ·Î¼¼¼¸¦ »ç¿ëÇÏ´Â °æ¿ì¿¡´Â ÃÖ´ë 64°³ÀÇ ½Ã±×³ÎÀ» Áö¿øÇÒ ¼ö ÀÖ´Ù. ÇöÀç ó¸® ´ë±âÁßÀÎ ½Ã±×³ÎµéÀº signal Ç׸ñ¿¡ ÀúÀåµÇ¸ç, ºí·°µÈ ½Ã±×³ÎµéÀÇ ¸¶½ºÅ©´Â blocked Ç׸ñ¿¡ ´ã±â °Ô µÈ´Ù. SIGSTOP°ú SIGKILLÀ» Á¦¿ÜÇÑ ´Ù¸¥ ¸ðµç ½Ã±×³ÎµéÀº ºí·°Å· ÇÒ ¼ö ÀÖ´Ù. ºí·°µÈ ½Ã±×³ÎÀÌ ¹ß»ýÇÒ °æ¿ì ±× ½Ã±×³ÎÀº ºí·°Å·À» ÇØÁ¦ÇÒ ¶§±îÁö ´ë±â »óÅ·Π³²¾Æ ÀÖ°Ô µÈ´Ù. ¸®´ª½º´Â ¶ÇÇÑ ¹ß»ýÇÒ ¼ö ÀÖ´Â ¸ðµç ½Ã±×³ÎµéÀ» ÇÁ·Î¼¼½º°¡ ¾î¶»°Ô ó¸®Çϴ°¡¿¡ ´ëÇÑ Á¤º¸ ¸¦ °¡Áö°í Àִµ¥, ÀÌ Á¤º¸´Â ÇÁ·Î¼¼½ºÀÇ task_struct¿¡ ÀÖ´Â sigaction ÀڷᱸÁ¶ÀÇ ¹è ¿¿¡ ÀúÀåµÈ´Ù. sigaction¿¡´Â ¿©·¯°¡Áö ´Ù¸¥ Á¤º¸µé°ú ÇÔ²², ½Ã±×³Î Çڵ鷯ÀÇ ÁÖ¼Ò, ¶Ç´Â ÇÁ·Î¼¼½º°¡ ÇØ´ç ½Ã±×³ÎÀ» ¹«½ÃÇÒ °ÍÀÎÁö ȤÀº Ä¿³ÎÀÌ ±× ½Ã±×³ÎÀ» ´ë½Å ó¸®ÇÏ°Ô ÇÒ °ÍÀÎ Áö¸¦ ³ªÅ¸³»´Â Ç÷¡±×°¡ µé¾î ÀÖ´Ù. ÇÁ·Î¼¼½º´Â ½Ã½ºÅÛ ÄÝÀ» ÅëÇؼ ±âº» ½Ã±×³Î Çڵ鷯¸¦ ¹Ù²Ü ¼ö ÀÖÀ¸¸ç, ÀÌ ½Ã½ºÅÛ ÄÝÀº ÇØ´ç ½Ã±×³ÎÀÇ sigaction°ú blocked ¸¶½ºÅ©¸¦ º¯°æÇÑ ´Ù.
½Ã½ºÅÛ ³»ÀÇ ÇÁ·Î¼¼½ºµéÀÌ ¸ðµÎ ´Ù¸¥ ÇÁ·Î¼¼½º·Î ½Ã±×³ÎÀ» º¸³¾ ¼ö ÀÖ´Â °ÍÀº ¾Æ´Ï´Ù. Ä¿³Î °ú °ü¸®ÀÚ´Â ¸ðµç ÇÁ·Î¼¼½º¿¡°Ô º¸³¾ ¼ö ÀÖÁö¸¸, ÀÏ¹Ý ÇÁ·Î¼¼½º´Â °°Àº uid¿Í gid¸¦ °®´Â ÇÁ ·Î¼¼½º, ¶Ç´Â °°Àº ÇÁ·Î¼¼½º ±×·ì1 ³»ÀÇ ÇÁ·Î¼¼½º¿¡°Ô¸¸ ½Ã±×³ÎÀ» º¸³¾ ¼ö ÀÖ´Ù. ½Ã±×³ÎÀº task_struct³» signal Ç׸ñÀÇ ÇØ´çÇÏ´Â ºñÆ®¸¦ ¼³Á¤ÇÏ¿© ¹ß»ýµÈ´Ù. ÇÁ·Î¼¼½º°¡ ±× ½Ã±× ³ÎÀ» ºí·°ÇÏÁö ¾Ê¾Ò°í, ÀÎÅÍ·´Æ® °¡´ÉÇÑ »óÅ¿¡¼(Áï INTERRUPTIBLE »óÅ¿¡¼) ´ë±âÁß¿¡ ÀÖ´Ù¸é, ÇÁ·Î¼¼½º´Â ÇöÀç »óŸ¦ ½ÇÇàÁß(RUNNING)À¸·Î ¹Ù²Ù°í ÀÚ½ÅÀ» ½ÇÇàÅ¥¿¡ ³ÖÀ½À¸·Î ½á ±ú¾î³ª°Ô µÈ´Ù. ÀÌ·± ¹æ¹ýÀ¸·Î ½Ã½ºÅÛÀÌ ´ÙÀ½¹ø ½ºÄÉÁ층À» ¼öÇàÇÒ¶§, ½ºÄÉÁì·¯°¡ ±× ÇÁ ·Î¼¼½º¸¦ ½ÇÇàÇÒ È帷Π»ý°¢ÇÏ°Ô µÈ´Ù. ±âº» µ¿ÀÛÀ¸·ÎÀÇ ½Ã±×³Î 󸮸¸ÀÌ ÇÊ¿äÇÏ´Ù¸é ¸®´ª ½º´Â ½Ã±×³Î ó¸®À» ÃÖÀûÈ ½Ãų ¼ö ÀÖ´Ù. ¿¹¸¦ µé¾î SIGWINCH(X À©µµ¿ì°¡ Æ÷Ä¿½º¸¦ º¯°æ) °¡ ¹ß»ýÇÏ¿´°í ±âº» Çڵ鷯¸¦ »ç¿ëÇÒ °ÍÀ̶ó¸é, ÇÁ·Î¼¼½º°¡ µû·Î ¼öÇàÇÒ ÀÏÀº ¾ø°Ô µÇ´Â °Í ÀÌ´Ù.
½Ã±×³ÎÀº ¹ß»ýÇÏ´Â ¼ø°£ ¹Ù·Î ÇÁ·Î¼¼½º·Î Àü´ÞµÇ´Â °ÍÀÌ ¾Æ´Ï¶ó ±× ÇÁ·Î¼¼½º°¡ ´Ù½Ã ¼öÇàµÉ ¶§±îÁö ±â´Ù·Á¾ß ÇÑ´Ù. Áï ÇÁ·Î¼¼½º°¡ ½Ã½ºÅÛ ÄÝÀ» ¸¶Ä¡°í µ¹¾Æ¿Ã ¶§¸¶´Ù signal°ú blocked°¡ ¸Å¹ø °Ë»çµÇ´Âµ¥, À̶§ ºí·°µÇÁö ¾ÊÀº ½Ã±×³ÎÀÌ Á¸ÀçÇÏ´Â °æ¿ì ºñ·Î¼ ÇÁ·Î¼¼½º ·Î Àü´ÞµÇ´Â °ÍÀÌ´Ù. ÀÌ ¹æ½ÄÀº »ó´çÈ÷ ½Å·Ú¼ºÀÌ ³·Àº ¹æ¹ýó·³ º¸ÀÌÁö¸¸, ½Ã½ºÅÛ ³»ÀÇ ÇÁ·Î ¼¼½ºµéÀº ¹«½¼ ¸ñÀû¿¡¼µç(¿¹¸¦ µé¸é Å͹̳ο¡ ¹®ÀÚ¸¦ Âï±â À§Çؼ) ½ÇÇà ½Ã°£ ´ëºÎºÐ¿¡ °É ÃÄ ½Ã½ºÅÛ ÄÝÀ» °è¼Ó ¼öÇàÇϹǷΠ±×·¸Áö´Â ¾Ê´Ù. ¿øÇÑ´Ù¸é ÇÁ·Î¼¼½º´Â ½Ã±×³Î ¹ß»ýÀ» ±â´Ù ¸®´Â °ÍÀ» ¼±ÅÃÇÒ ¼ö Àִµ¥, ÀÌ °æ¿ì ÀÎÅÍ·´Æ® Çã¿ë »óÅ¿¡¼ ½Ã±×³ÎÀÌ Àü´ÞµÇ¾î ¿Ã ¶§±î Áö ÇÁ·Î¼¼½º´Â ¸ØÃç ¼ÀÖ°Ô µÈ´Ù. ¸®´ª½º ½Ã±×³Î ó¸® ÄÚµå´Â ÇöÀç ºí·°µÇÁö ¾ÊÀº ½Ã±×³Î¿¡ ´ëÇؼ sigaction ÀڷᱸÁ¶¸¦ ÂüÁ¶ÇÑ´Ù.
½Ã±×³Î Çڵ鷯°¡ ±âº» Çڵ鷯·Î µÇ¾î ÀÖÀ¸¸é Ä¿³ÎÀÌ ±× 󸮸¦ ´ë½Å ¼öÇàÇÏ°Ô µÈ´Ù. SIGSTOP ½Ã±×³Î¿¡ ´ëÇÑ ±âº» Çڵ鷯´Â ÇöÀç ÇÁ·Î¼¼½ºÀÇ »óŸ¦ ÁßÁöµÊ(STOPPED)À¸·Î ¹Ù ²Ù°í, »õ·Î ½ÇÇàÇÒ ÇÁ·Î¼¼½º¸¦ ¼±ÅÃÇϱâ À§ÇØ ½ºÄÉÁì·¯¸¦ ½ÇÇàÇÑ´Ù. SIGFPE ½Ã±×³ÎÀ» ¹ÞÀ¸ ¸é Ä¿³ÎÀº ÇöÀç ÇÁ·Î¼¼½º¸¦ ÄÚ¾î ´ýÇÁÇÏ°í ÇÁ·Î¼¼½º¸¦ Á¾·áÇÑ´Ù. ÀÌ¿Í ´Þ¸® ÇÁ·Î¼¼½º°¡ Á÷ Á¢ ÀÚ½ÅÀÇ ½Ã±×³Î Çڵ鷯¸¦ ÁöÁ¤ÇßÀ» ¼öµµ ÀÖ´Ù. ÀÌ°ÍÀº ½Ã±×³ÎÀÌ ¹ß»ýÇÒ ¶§¸¶´Ù È£ÃâµÇ´Â °ÍÀ¸·Î, sigaction ÀڷᱸÁ¶°¡ ÀÌ ·çƾÀÇ ÁÖ¼Ò¸¦ °¡Áö°í ÀÖ´Ù. ÀÌÁ¦ Ä¿³ÎÀº ¹Ýµå½Ã ÇÁ·Î¼¼ ½ºÀÇ ½Ã±×³Î Çڵ鷯¸¦ È£ÃâÇØ¾ß Çϴµ¥, ÀÌ°ÍÀÌ ¾î¶»°Ô ÀÌ·ç¾îÁö´Â°¡´Â ÇÁ·Î¼¼¼¿¡ µû¶ó ´Ù ¸£Áö¸¸, ÇÑ°¡Áö »ç½Ç, Áï ÇöÀç ÇÁ·Î¼¼½º´Â Ä¿³Î ¸ðµå¿¡¼ ½ÇÇàÁßÀÌ¸ç °ð »ç¿ëÀÚ ¸ðµå¿¡¼ Ä¿ ³Î ȤÀº ½Ã½ºÅÛ ·çƾÀ» ºÎ¸¥ ÇÁ·Î¼¼½º·Î µ¹¾Æ°¡·Á°í ÇÑ´Ù´Â Á¡¸¸Àº ¸ðµç CPUµéÀÌ ¿°µÎ¿¡ µÎ°í ´ëóÇÏ¿©¾ß ÇÏ´Â ¹®Á¦ÀÌ´Ù2. ÀÌ ¹®Á¦´Â ÇÁ·Î¼¼½ºÀÇ ½ºÅðú ·¹Áö½ºÅ͸¦ Á¶ÀÛÇÔÀ¸·Î½á ÇØ°á°¡´ÉÇÏ´Ù. ÇÁ·Î¼¼½ºÀÇ ÇÁ·Î±×·¥ Ä«¿îÅ͸¦ ±× ½Ã±×³Î ó¸® ·çƾÀ¸·Î ¼³Á¤ÇÏ°í, Çڵ鷯·Î Àü´ÞÇÒ ÀÎÀÚ¸¦ ½ºÅà ÇÁ·¹ÀÓ¿¡ Ãß°¡Çϰųª ·¹Áö½ºÅÍ¿¡ ´ã¾Æ º¸³»´Â °ÍÀÌ´Ù. ÀÌÈÄ ÇÁ·Î¼¼½º°¡ ½ÇÇàÀ» Àç°³ÇÏ¸é ½Ã±×³Î Ã³¸® ·çƾÀº ¸¶Ä¡ Á¤»óÀûÀÎ ¹æ¹ýÀ¸·Î È£ÃâµÇ¾ú´ø °Í°°ÀÌ º¸ÀÌ°Ô µÈ ´Ù.
¸®´ª½º´Â POSIX ȣȯÀ̹ǷÎ, ÇÁ·Î¼¼½º´Â ƯÁ¤ ½Ã±×³Î ó¸® ·çƾÀÌ È£ÃâµÇ¾úÀ» ¶§ ¾î¶² ½Ã ±×³ÎÀ» ºí·°ÇÒ °ÍÀÎÁö¸¦ ÁöÁ¤ÇÒ ÀÖ´Ù. ÀÌ°ÍÀº ÇÁ·Î¼¼½º ½Ã±×³Î Çڵ鷯°¡ ºÒ¸®´Â µ¿¾È blocked ¸¶½ºÅ©ÀÇ °ªÀ» ¹Ù²Ù°Ô µÊÀ» ¶æÇÑ´Ù. blocked ¸¶½ºÅ©´Â ½Ã±×³Î ó¸® ·çƾÀÌ Á¾·á µÉ ¶§ ¿ø·¡ °ªÀ¸·Î µ¹·Á ³õ¾Æ¾ß ÇÑ´Ù. ±×·¡¼ ¸®´ª½º´Â Á¤¸®¿ë ·çƾÀ» Çϳª ´õ ºÒ·¯¼, ½Ã±× ³ÎÀ» ¹ÞÀº ÇÁ·Î¼¼½ºÀÇ ÄÝ ½ºÅÿ¡ ÀúÀåÇسõÀº ¿ø·¡ÀÇ blocked ¸¶½ºÅ© °ªÀ» ²¨³»¾î º¹±¸ÇÏ µµ·Ï ÇÑ´Ù. ¶ÇÇÑ ¿©·¯ ½Ã±×³Î ó¸® ·çƾÀÌ °è¼Ó È£ÃâµÇ¾î¾ß ÇÒ ÇÊ¿ä°¡ ÀÖÀ» ¶§´Â ÀÌ ·çƾµé À» ½ºÅÃó·³ ½×¾Æ¼, ÇÑ Çڵ鷯¸¦ ºüÁ®³ª¿À¸é ´ÙÀ½ Çڵ鷯°¡ È£ÃâµÇ°í, ¸¶Áö¸·À¸·Î Á¤¸®¿ë ·çƾÀÌ È£ÃâµÇµµ·Ï ½Ã±×³Î 󸮸¦ ÃÖÀûÈÇÑ´Ù.
$ ls | pr | lpr
À̶ó´Â ¸í·ÉÀº ls ¸í·ÉÀÌ Ãâ·ÂÇÏ´Â ÆÄÀÏ À̸§µéÀ» pr ¸í·ÉÀÇ Ç¥ÁØ ÀÔ·ÂÀ¸·Î º¸³»°í, pr ¸í·É Àº ÀÔ·ÂµÈ ³»¿ëÀ» ÆäÀÌÁö ´ÜÀ§·Î ³ª´«´Ù. pr ¸í·ÉÀÇ Ç¥ÁØ Ãâ·ÂÀ¸·Î ³ª¿Â °á°ú´Â ´Ù½Ã lpr ¸í ·ÉÀÇ Ç¥ÁØ ÀÔ·ÂÀ¸·Î º¸³»Á®¼ ±âº» ÇÁ¸°ÅÍ·Î Ãâ·ÂµÈ´Ù. ÆÄÀÌÇÁ´Â À§ÀÇ ¿¹¿¡¼Ã³·³ ÇÑ ÇÁ·Î ¼¼½ºÀÇ Ç¥ÁØ Ãâ·ÂÀ» ´Ù¸¥ ÇÁ·Î¼¼½ºÀÇ Ç¥ÁØ ÀÔ·ÂÀ¸·Î º¸³»ÁÖ´Â ´Ü¹æÇâ ¹ÙÀÌÆ® ½ºÆ®¸²ÀÌ´Ù. ÆÄÀÌÇÁ·Î ¿¬°áµÇ´Â ÇÁ·Î¼¼½ºµéÀº ÀÌ·± ¸®´ÙÀÌ·º¼ÇÀÌ ÀϾ°í ÀÖ´Ù´Â °ÍÀº ¾ËÁö ¸øÇϸç, º¸ Åë ¶§¿Í ¸¶Âù°¡Áö·Î µ¿ÀÛÇÑ´Ù. ¿©±â¼ ÇÁ·Î¼¼½º°£¿¡ Àӽà ÆÄÀÌÇÁ¸¦ ¸¸µé¾î ¿¬°á½ÃÄÑÁÖ´Â °Í Àº ½©ÀÌ´Ù.
¸®´ª½º¿¡¼ ÆÄÀÌÇÁ´Â Àӽ÷Π¸¸µé¾îÁø VFS inode¸¦ ¶È°°ÀÌ °¡¸®Å°´Â µÎ °³ÀÇ file Àڷᱸ Á¶¸¦ »ç¿ëÇؼ ±¸ÇöµÇ¸ç, ¿©±â¼ VFS inode´Â ¸Þ¸ð¸®»óÀÇ ¹°¸®Àû ÆäÀÌÁö¸¦ °¡¸®Å°°Ô µÈ´Ù3. ±×¸² 5.1Àº °¢ file ÀڷᱸÁ¶°¡ °¢±â ´Ù¸¥ ÆÄÀÏ ¿¬»ê ·çƾ º¤Å͸¦ °¡¸®Å°´Â Æ÷ÀÎÅ͸¦ °¡Áö °í ÀÖ´Â ¸ð½ÀÀ» º¸¿©ÁØ´Ù. ¿©±â¼ ÇÑ file ÀڷᱸÁ¶´Â ÆÄÀÌÇÁ¿¡ ¾²´Â ÇÔ¼ö¿¡ ´ëÇÑ Æ÷ÀÎÅÍ ¸¦, ´Ù¸¥ ÀڷᱸÁ¶´Â ÆÄÀÌÇÁ¿¡¼ ÀоîµéÀÌ´Â ÇÔ¼ö¿¡ ´ëÇÑ Æ÷ÀÎÅ͸¦ °¡Áø´Ù. ÀÌ°ÍÀº º¸ÅëÀÇ ÆÄÀÏ¿¡ ÀÐ°í ¾²´Â ½Ã½ºÅÛ ÄÝÀÌ ¾Æ·¡ °èÃþÀÇ Â÷ÀÌ¿¡ °ü°è¾øÀÌ µ¿ÀÛÇϵµ·Ï ÇÑ´Ù4. ¾²´Â ÇÁ·Î ¼¼½º°¡ ÆÄÀÌÇÁ¿¡ ¾´ µ¥ÀÌÅÍ´Â °øÀ¯ µ¥ÀÌÅÍ ÆäÀÌÁö¿¡ º¹»çµÇ°í, Àд ÇÁ·Î¼¼½º°¡ ±× ÆÄÀÌÇÁ ·ÎºÎÅÍ ÀÐ¾î µéÀ϶§´Â °øÀ¯ µ¥ÀÌÅÍ ÆäÀÌÁö·ÎºÎÅÍ µ¥ÀÌÅÍ°¡ º¹»çµÇ°Ô µÈ´Ù. ¸®´ª½º´Â ÆÄÀÌÇÁ ¿¡ ´ëÇÑ Á¢±ÙÀ» µ¿±âÈÇØ¾ß ÇÑ´Ù. ÆÄÀÌÇÁÀÇ Àд ÇÁ·Î¼¼½º¿Í ¾²´Â ÇÁ·Î¼¼½º°¡ ¹Ýµå½Ã Â÷·Ê ¸¦ Áöų ¼ö ÀÖµµ·Ï ÇØ¾ß ÇÏ°í, ±×·¸°Ô Çϱâ À§ÇØ ¶ô(lock)°ú ´ë±âÅ¥(waiting queue), ½Ã±×³Î µî À» »ç¿ëÇÑ´Ù.
ÇÁ·Î¼¼½º°¡ ÆÄÀÌÇÁ¿¡ ¾²±â¸¦ ÇÒ ¶§´Â ¾²±â¸¦ Çϴ ǥÁØ ¶óÀ̺귯¸® ÇÔ¼ö¸¦ »ç¿ëÇÑ´Ù. À̵é ÇÔ¼öµé¿¡´Â ÆÄÀÏ ±â¼úÀÚ(file descriptor)¸¦ ³Ñ±â´Âµ¥, ÀÌ´Â ÇÁ·Î¼¼½º°¡ °¡Áø ¿©·¯°³ÀÇ file ÀÚ ·á±¸Á¶(ÀÌµé °¢°¢Àº ÇÁ·Î¼¼½º°¡ ¿¾î ³õÀº ÆÄÀÏÀ» ³ªÅ¸³»¸ç, ÀÌ °æ¿ì¿¡´Â ¿¾î ³õÀº ÆÄÀÌÇÁ ¸¦ ³ªÅ¸³½´Ù)¿¡ ´ëÇÑ À妽ºÀÌ´Ù5. ¸®´ª½º ½Ã½ºÅÛ ÄÝÀº ÀÌ ÆÄÀÌÇÁ¸¦ ³ªÅ¸³»´Â file Àڷᱸ Á¶¿¡¼ °¡¸®Å°°í ÀÖ´Â ¾²±â ·çƾÀ» »ç¿ëÇÑ´Ù. ÀÌ ¾²±â ·çƾÀº ¾²±â ¿äûÀ» ó¸®Çϱâ À§ÇØ ÆÄÀÌÇÁ¸¦ ³ªÅ¸³»´Â VFS inode¿¡ ÀÖ´Â Á¤º¸µéÀ» ÀÌ¿ëÇÑ´Ù. ÆÄÀÌÇÁ¿¡ ¿äûÇÑ ¹ÙÀÌÆ®µéÀ» ¸ðµÎ ¾µ °ø°£ÀÌ ÀÖ°í, ÆÄÀÌÇÁ¸¦ Àд ÇÁ·Î¼¼½º°¡ ¶ôÀ» °É¾îµÎÁö ¾Ê¾Ò´Ù¸é, ¸®´ª½º´Â ¸ÕÀú ÆÄÀÌÇÁ ¿¡ ¶ôÀ» °É°í, ¾µ µ¥ÀÌÅÍ ¹ÙÀÌÆ®µéÀ» ÇÁ·Î¼¼½ºÀÇ ÁÖ¼Ò°ø°£¿¡¼ °øÀ¯ µ¥ÀÌÅÍ ÆäÀÌÁö·Î º¹»ç ÇÑ´Ù. ¸¸¾à Àд ÇÁ·Î¼¼½º°¡ ÆÄÀÌÇÁ¿¡ ¶ôÀ» °É¾îµÎ¾ú°Å³ª µ¥ÀÌÅ͸¦ ´ãÀ» ÃæºÐÇÑ °ø°£ÀÌ ¾ø ´Ù¸é, ÇöÀç ÇÁ·Î¼¼½º´Â ÇØ´ç ÆÄÀÌÇÁ inode¿¡ ÀÖ´Â ´ë±âÅ¥¿¡ µé¾î°¡ Àáµé°í, ½ÇÇàÇÒ ¼ö ÀÖ´Â ´Ù¸¥ ÇÁ·Î¼¼½º¸¦ ¼±ÅÃÇϱâ À§ÇØ ½ºÄÉÁì·¯¸¦ È£ÃâÇÑ´Ù. Àáµç ÇÁ·Î¼¼½º´Â ÀÎÅÍ·´Æ® Çã¿ë »óÅ À̹ǷÎ, ½Ã±×³ÎÀ» ¹ÞÀ» ¼ö ÀÖÀ¸¸ç, Àд ÇÁ·Î¼¼½º¿¡ ÀÇÇØ ¾µ µ¥ÀÌÅ͸¦ ´ã±â¿¡ ÃæºÐÇÑ °ø°£ÀÌ »ý±â°Å³ª ÆÄÀÌÇÁÀÇ ¶ôÀ» Ç®¸®¸é ±ú¾î³ª°Ô µÈ´Ù. µ¥ÀÌÅ͸¦ ¾²°í ³ª¸é ÆÄÀÌÇÁÀÇ VFS inodeÀÇ ¶ôÀ» Ç®°í, inodeÀÇ ´ë±âÅ¥¿¡¼ ±â´Ù¸®¸ç Àáµé¾î ÀÖ´Â Àд ÇÁ·Î¼¼½º¸¦ ±ú¿ì°Ô µÈ´Ù.
ÆÄÀÌÇÁ¿¡¼ µ¥ÀÌÅ͸¦ Àд °úÁ¤Àº ÆÄÀÌÇÁ¿¡ ¾²´Â °úÁ¤°ú ¸Å¿ì ºñ½ÁÇÏ´Ù. ÇÁ·Î¼¼½ºµéÀº ºí·° Å·À» ÇÏÁö ¾Ê°í ÀÐÀ» ¼ö Àִµ¥ (ÀÌ´Â ÆÄÀÏÀ̳ª ÆÄÀÌÇÁ¸¦ ¿ ¶§ ¾î¶² ¸ðµå¸¦ »ç¿ëÇÏ¿´´À³Ä ¿¡ µû¶ó ´Ù¸£´Ù6), ÀÌ °æ¿ì ÀÐÀ» µ¥ÀÌÅÍ°¡ ¾ø°Å³ª ÆÄÀÌÇÁ¿¡ ¶ôÀÌ °É·ÁÀÖÀ¸¸é ¿¡·¯°¡ µ¹¾Æ¿Â ´Ù. ÀÌ´Â ÇÁ·Î¼¼½º°¡ ÀáµéÁö ¾Ê°í ½ÇÇàÀ» °è¼ÓÇÒ ¼ö ÀÖ´Ù´Â °ÍÀÌ´Ù. ºí·°Å· ¸ðµå¶ó¸é ÆÄÀÌÇÁ inodeÀÇ ´ë±âÅ¥¿¡¼ ¾²±â ÇÁ·Î¼¼½º°¡ ³¡³ª±â¸¦ ±â´Ù·Á¾ß ÇÑ´Ù. ¾çÂÊ ÇÁ·Î¼¼½º°¡ ÆÄÀÌÇÁ¸¦ Åë ÇÑ ÀÛ¾÷À» Á¾·áÇϸé, ÆÄÀÌÇÁ inode´Â °øÀ¯ µ¥ÀÌÅÍ ÆäÀÌÁö¿Í ÇÔ²² Æó±âµÈ´Ù.
¸®´ª½º´Â ÁöÁ¤ ÆÄÀÌÇÁ(named pipe)µµ Áö¿øÇÑ´Ù. ÁöÁ¤ ÆÄÀÌÇÁ´Â FIFO¶ó°íµµ ºÒ¸®´Âµ¥ ÀÌ´Â ÆÄ ÀÌÇÁ°¡ ¸ÕÀú µé¾î¿Â °ÍÀÌ ¸ÕÀú ³ª°¡´Â(First In First Out, FIFO) ¿øÄ¢¿¡ µû¶ó µ¿ÀÛÇϱ⠶§¹®ÀÌ ´Ù. ÆÄÀÌÇÁ¿¡ ¸ÕÀú ¾´ µ¥ÀÌÅÍ´Â ÆÄÀÌÇÁ¿¡¼ ÀÐÀ» ¶§ ¸ÕÀú ³ª¿Â´Ù. ÆÄÀÌÇÁ¿Í ´Þ¸® FIFO´Â ÀÓ ½ÃÀûÀ¸·Î »ý¼ºµÈ °ÍÀÌ ¾Æ´Ï¶ó ÆÄÀÏ ½Ã½ºÅÛ¿¡ ½ÇÀç Á¸ÀçÇÏ´Â °ÍÀ̸ç, mkfifo ¸í·ÉÀ¸·Î »ý¼º ÇÒ ¼ö ÀÖ´Ù. ÇÁ·Î¼¼½º´Â ÇØ´çÇÏ´Â Á¢±Ù ±ÇÇÑÀ» °¡Áö°í ÀÖ´Ù¸é FIFO¸¦ ÀÚÀ¯·Ó°Ô »ç¿ëÇÒ ¼ö ÀÖ´Ù. FIFO¸¦ ¿©´Â ¹æ¹ýÀº ÆÄÀÌÇÁ¿Í´Â Á¶±Ý ´Ù¸£´Ù. ÆÄÀÌÇÁ(µÎ°³ÀÇ file ÀڷᱸÁ¶¿Í À̵éÀÌ °¡Áø VFS inode, °øÀ¯ µ¥ÀÌÅÍ ÆäÀÌÁö)´Â Çѹø¿¡ ¸¸µé¾îÁö´Âµ¥ ¹ÝÇØ, FIFO´Â ÀÌ¹Ì Á¸ÀçÇÏ´Â °ÍÀ̸ç, »ç¿ëÀÚ¿¡ ÀÇÇØ ¿°í ´ÝÇôÁö´Â °ÍÀÌ´Ù7. ¸®´ª½º´Â FIFO¿¡ ¾²´Â ÇÁ·Î¼¼½º°¡ ¾øÀ» ¶§ ´Ù¸¥ ÇÁ·Î¼¼½º°¡ À̸¦ Àбâ À§ÇØ ¿·Á°í ÇÏ´Â °ÍÀ̳ª, FIFO¿¡ ¾²´Â ÇÁ·Î¼¼½º°¡ FIFO¿¡ ¾²±â ¸¦ Çϱâ Àü¿¡ Àд ÇÁ·Î¼¼½º°¡ ÀÐÀ¸·Á°í ÇÏ´Â °Í ¸ðµÎ ó¸®ÇØ¾ß ÇÑ´Ù. À̸¦ Á¦¿ÜÇϸé, FIFO ´Â °ÅÀÇ ¿ÏÀüÈ÷ ÆÄÀÌÇÁ¿Í ¶È°°Àº ¹æ¹ýÀ¸·Î Ãë±ÞµÇ¸ç, °°Àº ÀڷᱸÁ¶¿Í ¿¬»êÀ» »ç¿ëÇÑ´Ù8.
½Ã½ºÅÛ¿¡ ÀÖ´Â ½Ã½ºÅÛ V IPC °´Ã¼¸¦ ³ªÅ¸³»´Â ¸®´ª½º ÀڷᱸÁ¶´Â ¸ðµÎ, ÇÁ·Î¼¼½ºÀÇ ¼ÒÀ¯ÀÚ ¿Í »ý¼ºÀÚÀÇ uid, gid¿Í ÀÌ °´Ã¼¿¡ ´ëÇÑ Á¢±Ù ¸ðµå(¼ÒÀ¯ÀÚ, ±×·ì, ±×¹Û¿¡ ´ëÇÑ)¿Í IPC °´Ã¼ÀÇ Å°¸¦ °¡Áø ipc_permÀ̶ó´Â ÀڷᱸÁ¶¸¦ Æ÷ÇÔÇÏ°í ÀÖ´Ù. Å°´Â ½Ã½ºÅÛ V IPC °´Ã¼ÀÇ ÂüÁ¶ ½Ä º°ÀÚ¸¦ ã´Â ÇÑ ¹æ¹ýÀ¸·Î ¾²ÀδÙ. ¸ðµÎ µÎ Á¾·ùÀÇ Å°¸¦ Áö¿øÇϴµ¥, °ø¿ë(public)¿Í °³Àοë (private)ÀÌ ±×°ÍÀÌ´Ù. ¸¸¾à Å°°¡ °ø¿ë¶ó¸é ½Ã½ºÅÛ¿¡ ÀÖ´Â ¾î¶² ÇÁ·Î¼¼½ºµçÁö ±ÇÇÑ °Ë»ç¸¦ Åë °úÇÑ´Ù¸é ½Ã½ºÅÛ V IPC °´Ã¼¿¡ ´ëÇÑ ÂüÁ¶ ½Äº°ÀÚ¸¦ ãÀ» ¼ö ÀÖ´Ù10. ½Ã½ºÅÛ V IPC °´Ã¼´Â Å° ·Î ÂüÁ¶ÇÒ ¼ö ¾øÀ¸¸ç, À̵鿡 ´ëÇÑ ÂüÁ¶ ½Äº°Àڷθ¸ ÂüÁ¶ÇÒ ¼ö ÀÖ´Ù.
°¢ msqid_ds ÀڷᱸÁ¶´Â ipc_perm ÀڷᱸÁ¶¿Í, ÀÌ Å¥¿¡ µé¾î¿Â ¸Þ½ÃÁö¿¡ ´ëÇÑ Æ÷ÀÎÅ͵é À» °¡Áö°í ÀÖ´Ù. Ãß°¡·Î, ¸®´ª½º´Â Å¥¿¡ ¸¶Áö¸·À¸·Î ¾´ ½Ã°£°°Àº Å¥ ¼öÁ¤ ½Ã°£µµ À¯ÁöÇÑ´Ù. msqid_ds´Â µÎ °³ÀÇ ´ë±âÅ¥µµ °¡Áö°í ÀÖ´Ù : Çϳª´Â Å¥¿¡ ¾²·Á´Â ÇÁ·Î¼¼½º¸¦ À§ÇØ, Çϳª´Â Å¥¿¡¼ ÀÐÀ»·Á´Â ÇÁ·Î¼¼½º¸¦ À§Çؼ´Ù.
ÇÁ·Î¼¼½º°¡ Å¥¿¡ ¸Þ½ÃÁö¸¦ ¾²·Á°í ÇÒ ¶§¸¶´Ù, È¿·Â »ç¿ëÀÚ ½Äº°ÀÚ(effective user identifier)¿Í È¿·Â ±×·ì ½Äº°ÀÚ(effective group identifier)¸¦ Å¥ÀÇ ipc_perm ÀڷᱸÁ¶¿¡ ÀÖ´Â ¸ðµå¿Í ºñ±³ÇÑ ´Ù. ±×·¡¼ ÇÁ·Î¼¼½º°¡ Å¥¿¡ ¾µ ¼ö ÀÖ´Ù¸é ¸Þ½ÃÁö´Â ÇÁ·Î¼¼½ºÀÇ ÁÖ¼Ò°ø°£¿¡¼ msg Àڷᱸ Á¶·Î º¹»çµÇ°í ¸Þ½ÃÁö Å¥ÀÇ ¸¶Áö¸·¿¡ ³õÀδÙ. °¢ ¸Þ½ÃÁö¿¡´Â °°ÀÌ Çùµ¿ÇÏ´Â ÇÁ·Î¼¼½º°£¿¡ ¼·Î ¾à¼ÓÇÑ Å¸ÀÔÀÎ, ÀÀ¿ëÇÁ·Î±×·¥ ÁöÁ¤ ŸÀÔÀ» ²¿¸®Ç¥·Î ´Ü´Ù. ¸®´ª½º´Â ¾µ ¼ö ÀÖ´Â ¸Þ½ÃÁö ÀÇ °³¼ö¿Í ±æÀ̸¦ Á¦ÇÑÇÏ°í ÀÖÀ¸¹Ç·Î ¸Þ½ÃÁö¸¦ ¾µ °ø°£ÀÌ ¾øÀ» ¼öµµ ÀÖ´Ù. ÀÌ·± °æ¿ì ÇÁ·Î ¼¼½º´Â ¸Þ½ÃÁö Å¥ÀÇ ¾²±â ´ë±âÅ¥(msqid_dsÀÇ *wwait Ç׸ñ)¿¡ Ãß°¡µÇ°í ½ÇÇàÇÒ »õ·Î¿î ÇÁ ·Î¼¼½º¸¦ ¼±ÅÃÇϱâ À§ÇØ ½ºÄÉÁì·¯¸¦ È£ÃâÇÑ´Ù. ÇÁ·Î¼¼½º´Â ¸Þ½ÃÁö Å¥¿¡¼ Çϳª ÀÌ»óÀÇ ¸Þ½Ã Áö°¡ ÀÐÇûÀ» ¶§ ±ú¾î³ª°Ô µÈ´Ù.
Å¥¿¡¼ Àд °ÍÀº ºñ½ÁÇÑ °úÁ¤À» °ÅÄ£´Ù. ¸¶Âù°¡Áö·Î ÇÁ·Î¼¼½º°¡ °¡Áø Å¥¿¡ ´ëÇÑ Á¢±Ù ±ÇÇÑ À» °Ë»çÇÑ´Ù. Àд ÇÁ·Î¼¼½º´Â ŸÀÔ¿¡ °ü°è¾øÀÌ Å¥¿¡ Àִ ù¹ø° ¸Þ½ÃÁö¸¦ °¡Á®¿Ã Áö, ¶Ç´Â ƯÁ¤ÇÑ Å¸ÀÔÀ» °¡Áø ¸Þ½ÃÁö¸¦ ¼±ÅÃÇÒ Áö °í¸¦ ¼ö ÀÖ´Ù. ÀÌ ±âÁØ¿¡ ¸Â´Â ¸Þ½ÃÁö°¡ ¾ø´Ù¸é ÀÐ À¸·Á´Â ÇÁ·Î¼¼½º´Â ¸Þ½ÃÁö Å¥ÀÇ Àб⠴ë±âÅ¥(msgq_idÀÇ *rwait Ç׸ñ)¿¡ Ãß°¡µÇ°í, ½ºÄÉÁì ·¯°¡ ½ÇÇàµÈ´Ù. Å¥¿¡ »õ·Î¿î ¸Þ½ÃÁö¸¦ ¾²°Ô µÇ¸é ÀÌ ÇÁ·Î¼¼½º´Â ±ú¾î³ª ´Ù½Ã ½ÇÇàÇÒ ¼ö ÀÖ °Ô µÈ´Ù.
¿©·¯°³ÀÇ Çùµ¿ÇÏ´Â ÇÁ·Î¼¼½º°¡ ÇϳªÀÇ µ¥ÀÌÅÍ ÆÄÀÏ¿¡¼ ·¹Äڵ带 Àаųª ¾´´Ù°í ÇÏÀÚ. ÀÌ ¶§ ÆÄÀÏ¿¡ ´ëÇÑ Á¢±ÙÀÌ ¿ÏÀüÈ÷ Á¶È·Ó°Ô ÀÌ·ç¾îÁö±æ ¹Ù¶ö °ÍÀÌ´Ù. ¿©±â¼ ¼¼¸¶Æ÷¾î¸¦ »ç¿ë ÇÒ ¼ö Àִµ¥, ¸ÕÀú ¼¼¸¶Æ÷¾îÀÇ ÃʱⰪÀ» 1·Î ÇÏ°í, ÆÄÀÏ ¿¬»êÀ» ÇÏ´Â ÄÚµåÀÇ ÁÖÀ§¿¡ µÎ°³ÀÇ ¼¼¸¶Æ÷¾î ¿¬»êÀ» µÎ¾î¼, ù¹ø° °ÍÀº ¼¼¸¶Æ÷¾îÀÇ °ªÀ» °Ë»çÇÏ°í °ªÀ» °¨¼Ò½ÃÅ°°í, ´ÙÀ½ °Í Àº °ªÀ» °Ë»çÇÏ°í Áõ°¡½ÃÅ°°Ô ÇÒ ¼ö ÀÖ´Ù. ÆÄÀÏ¿¡ Á¢±ÙÇÏ·Á´Â ù¹ø° ÇÁ·Î¼¼½º´Â ¼¼¸¶Æ÷¾î ÀÇ °ªÀ» °¨¼Ò½ÃÅ°·Á°í ÇÏ°í, ÀÌ°ÍÀÌ ¼º°øÇÏ¿© ¼¼¸¶Æ÷¾îÀÇ °ªÀº 0ÀÌ µÈ´Ù. ÀÌ ÇÁ·Î¼¼½º´Â ÀÌ Á¦ °è¼Ó ÁøÇàÇÏ¿© µ¥ÀÌÅÍ ÆÄÀÏÀ» »ç¿ëÇÏÁö¸¸, À̸¦ »ç¿ëÇÏ·Á°í ÇÏ´Â ´Ù¸¥ ÇÁ·Î¼¼½º´Â ¼¼¸¶ Æ÷¾îÀÇ °ªÀ» °¨¼Ò½ÃÅ°·Á°í Çߴµ¥ °á°ú°¡ -1ÀÌ µÇ¹Ç·Î ½ÇÆÐÇÑ´Ù. ÀÌ ÇÁ·Î¼¼½º´Â ù¹ø° ÇÁ ·Î¼¼½º°¡ µ¥ÀÌÅÍ ÆÄÀÏ ÀÛ¾÷À» ³¡¸¶Ä¥ ¶§°¡Áö Áß´ÜµÉ °ÍÀÌ´Ù. ù¹ø° ÇÁ·Î¼¼½º°¡ µ¥ÀÌÅÍ ÆÄ ÀÏ ÀÛ¾÷À» ¸¶Ä¡¸é ¼¼ÆÄÆ÷¾îÀÇ °ªÀ» ´Ù½Ã Áõ°¡½ÃÄÑ 1·Î ¸¸µç´Ù. ÀÌÁ¦ ±â´Ù¸®´Â ÇÁ·Î¼¼½º´Â ±ú¾î³ª¼ À̹ø¿¡´Â ¼¼¸¶Æ÷¾î¸¦ °¨¼Ò½ÃÅ°·Á´Â ½Ãµµ°¡ ¼º°øÇÏ°Ô µÈ´Ù12.
½Ã½ºÅÛ V IPC ¼¼¸¶Æ÷¾î °´Ã¼µéÀº °¢°¢ ¼¼¸¶Æ÷¾îÀÇ ¹è¿À» ³ªÅ¸³»°í, ¸®´ª½º´Â À̸¦ ³ªÅ¸³» ±â À§ÇØ semid_ds ÀڷᱸÁ¶¸¦ »ç¿ëÇÑ´Ù. semary´Â ½Ã½ºÅÛ¿¡ ÀÖ´Â ¸ðµç semid_ds Àڷᱸ Á¶¸¦ °¡¸®Å°°í ÀÖ´Â, Æ÷ÀÎÅÍÀÇ º¤ÅÍÀÌ´Ù. semid_ds ÀڷᱸÁ¶¿¡´Â sem_nsems °¹¼ö¸¸ÅÀÇ ¼¼¸¶Æ÷¾î ¹è¿ÀÌ ÀÖÀ¸¸ç, °¢°¢Àº sem ÀڷᱸÁ¶·Î ±â¼úµÈ´Ù. ÀÌ ¼¼¸¶Æ÷¾î ¹è¿Àº sem_base ÀÌ °¡¸®Å°°í ÀÖ´Ù13. ½Ã½ºÅÛ V IPC ¼¼¸¶Æ÷¾î °´Ã¼ÀÇ ¼¼¸¶Æ÷¾î ¹è¿À» °ü¸®ÇÒ ¼ö ÀÖ´Â ±ÇÇÑÀ» °¡Áø ¸ðµç ÇÁ·Î¼¼½ºµéÀº À̵éÀ» ´Ù·ç´Â ½Ã½ºÅÛ ÄÝÀ» ºÎ¸¦ ¼ö ÀÖ´Ù. ½Ã½ºÅÛ ÄÝÀº Çѹø¿¡ ¿© ·¯°³ÀÇ ¿¬»êÀ» ÁöÁ¤ÇÒ ¼ö ÀÖÀ¸¸ç, °¢ ¿¬»êÀº ¼¼°¡Áö ÀÔ·Â - ¼¼¸¶Æ÷¾î À妽º, ¿¬»ê °ª, Ç÷¡ ±×µéÀÇ ¼¼Æ® - À¸·Î ³ªÅ¸³»Áø´Ù14. ¼¼¸¶Æ÷¾î À妽º´Â ¼¼¸¶Æ÷¾î ¹è¿¿¡¼ÀÇ À妽ºÀ̸ç, ¿¬ »ê °ªÀº ¼¼¸¶Æ÷¾îÀÇ ÇöÀç °ª¿¡ Ãß°¡µÉ ¼ýÀÚ °ªÀÌ´Ù. ¸ÕÀú ¸®´ª½º´Â ¸ðµç ¿¬»êÀÌ ¼º°øÇÒ ¼ö ÀÖ´ÂÁö Å×½ºÆ®ÇÑ´Ù. ¿¬»ê °ªÀ» ¼¼¸¶Æ÷¾îÀÇ ÇöÀç °ª¿¡ ´õÇÑ °ªÀÌ 0 ÀÌ»óÀ̰ųª, ¿¬»ê °ª°ú ¼¼ ¸¶Æ÷¾îÀÇ ÇöÀç °ªÀÌ ¸ðµÎ 0ÀÏ ¶§, ÀÌ ¿¬»êÀº ¼º°øÇÏ°Ô µÈ´Ù. ¸¸¾à ¼¼¸¶Æ÷¾î ¿¬»êÀÇ Çϳª¶óµµ ½ÇÆÐÇÑ´Ù¸é ¸®´ª½º´Â ÇÁ·Î¼¼½º¸¦ Áß´ÜÇÒ ¼ö Àִµ¥, ÀÌ´Â ½Ã½ºÅÛ ÄÝÀ» ºÎ¸¦ ¶§ Ç÷¡±×¿¡ ºí ·°Å· ¸ðµå¸¦ »ç¿ëÇÏÁö ¾ÊÀ»°Å¶ó°í ÁöÁ¤ÇÏÁö ¾ÊÀº °æ¿ìÀÌ´Ù. ÇÁ·Î¼¼½º°¡ ÁߴܵǾî¾ß ÇÑ´Ù¸é ¸®´ª½º´Â ¼öÇàÇØ¾ß ÇÒ ¼¼¸¶Æ÷¾î ¿¬»êÀÇ »óŸ¦ ÀúÀåÇÏ°í, ÇöÀç ÇÁ·Î¼¼½º¸¦ ´ë±âÅ¥¿¡ ³Ö´Â´Ù. ÀÌ ÀÛ¾÷Àº sem_queue ÀڷᱸÁ¶¸¦ ½ºÅÿ¡ ¸¸µé¾î ÀÌ°ÍÀÇ ³»¿ëÀ» ä¿òÀ¸·Î½á ÀÌ·ç¾îÁø´Ù15. »õ sem_queue ÀڷᱸÁ¶´Â ¼¼¸¶Æ÷¾î °´Ã¼ÀÇ ´ë±â Å¥ÀÇ ³¡¿¡ ³õ¿©Áø´Ù (¿©±â¼ sem_pending°ú sem_pending_last Æ÷ÀÎÅ͸¦ »ç¿ëÇÑ´Ù). ÇöÀç ÇÁ·Î¼¼½º´Â sem_queue ÀڷᱸÁ¶¿¡ ÀÖ´Â ´ë±âÅ¥(sleeper Ç׸ñ)¿¡ ³õ¿©Áö°í, ½ÇÇàÇÒ ´Ù¸¥ ÇÁ·Î¼¼½º¸¦ °í¸£±â À§ÇØ ½ºÄÉÁì·¯°¡ È£ÃâµÈ´Ù.
¸¸¾à ¸ðµç ¼¼¸¶Æ÷¾î ¿¬»êÀÌ ¼º°øÇÏ¿© ÇÁ·Î¼¼½º°¡ Áß´ÜµÉ ÇÊ¿ä°¡ ¾ø´Ù¸é, ¸®´ª½º´Â °è¼Ó Áø ÇàÇÏ¿© ¼¼¸¶Æ÷¾î ¹è¿ÀÇ ¿Ã¹Ù¸¥ ¸â¹ö¿¡°Ô ¿¬»êÀ» Àû¿ëÇÑ´Ù. ¸®´ª½º´Â ÀÌÁ¦ ´ë±âÅ¥¿¡¼ ±â´Ù ¸®¸ç ÁߴܵǾî ÀÖ´Â ÇÁ·Î¼¼½ºµéÀÌ ÀÌ ¼¼¸¶Æ÷¾î ¿¬»ê¿¡ Àû¿ëµÉ ¼ö ÀÖ´ÂÁö °Ë»çÇØ¾ß ÇÑ´Ù. ¸® ´ª½º´Â ¿¬»ê ¹Ì°áÅ¥(sem_pending)ÀÇ °¢ ¸â¹ö¸¦ Â÷·Ê·Î »ìÆ캸°í, À̹ø¿£ ¼¼¸¶Æ÷¾î ¿¬»êÀÌ ¼º°øÇÒ ¼ö ÀÖ´ÂÁö ¾Ë¾Æº¸±â À§ÇÑ Å×½ºÆ®¸¦ ÇÑ´Ù. ¸¸¾à ¼º°øÇÑ´Ù¸é ¿¬»ê ¹Ì°á ¸®½ºÆ®¿¡¼ sem_queue ÀڷᱸÁ¶¸¦ Á¦°ÅÇÏ°í ¼¼¸¶Æ÷¾î ¹è¿¿¡ ±× ¼¼¸¶Æ÷¾î ¿¬»êÀ» Àû¿ëÇÑ´Ù. ¸®´ª½º´Â Àáµç ÇÁ·Î¼¼½º¸¦ ±ú¿ö ´ÙÀ½¹ø ½ºÄÉÁì·¯°¡ ½ÇÇàµÉ ¶§¿¡´Â ´Ù½Ã ½ÃÀÛÇÒ ¼ö ÀÖµµ·Ï ¸¸µç´Ù. ¸® ´ª½º´Â ¹Ì°á ¸®½ºÆ®¸¦ óÀ½ºÎÅÍ ½ÃÀÛÇÏ¿© ´õÀÌ»ó ¼¼¸¶Æ÷¾î ¿¬»êÀ» Àû¿ëÇÒ ¼ö ¾ø°í, ±ú¿ï ÇÁ ·Î¼¼½º°¡ ¾øÀ» ¶§±îÁö °è¼Ó »ìÆ캻´Ù.
¼¼¸¶Æ÷¾î¿¡´Â ÇÑ°¡Áö ¹®Á¦°¡ Àִµ¥ µ¥µå¶ô(deadlock)ÀÌ ¹Ù·Î ±×°ÍÀÌ´Ù. ÀÌ´Â ÇÑ ÇÁ·Î¼¼½º°¡ ÀÓ°èÁö¿ª¿¡ µé¾î°¡¸é¼ ¼¼¸¶Æ÷¾îÀÇ °ªÀ» ¹Ù²Ù¾ú´Âµ¥ ÇÁ·Î¼¼½º°¡ À߸øµÇ°Å³ª °Á¦·Î Á¾·áµÇ ¾î¼ ÀÌ ÀÓ°èÁö¿ªÀ» ºüÁ®³ª°¡Áö ¸øÇÑ °æ¿ì¿¡ ¹ß»ýÇÑ´Ù16. ¸®´ª½º´Â ÀÌ·± ¹®Á¦¸¦ ¼¼¸¶Æ÷¾î ¹è ¿¿¡ ´ëÇÑ Á¶Á¤ ¸®½ºÆ®¸¦ °ü¸®ÇÔÀ¸·Î½á ¸·´Â´Ù. ÀÌ °³³äÀº ÀÌ·± Á¶Á¤À» Àû¿ëÇÏ¸é ¼¼¸¶Æ÷¾î °¡ ±× ÇÁ·Î¼¼½º°¡ ¼¼¸¶Æ÷¾î ¿¬»êÀ» ¼öÇàÇϱâ ÀÌÀüÀÇ »óÅ·ΠµÇµ¹¾Æ°¡°Ô ÇÏ´Â °ÍÀÌ´Ù. Á¶Á¤ ¿¡ ´ëÇÑ °ÍÀº sem_undo ÀڷᱸÁ¶¿¡ º¸°üµÇ°í, À̵éÀº semid_ds ÀڷᱸÁ¶¿Í ¼¼¸¶Æ÷¾î ¹è ¿À» »ç¿ëÇÏ´Â ÇÁ·Î¼¼½ºÀÇ task_struct ¾çÂÊ¿¡ Å¥µÈ´Ù.
°¢ °³º°ÀûÀÎ ¼¼¸¶Æ÷¾î ¿¬»êÀº Á¶Á¤À» °ü¸®Çϵµ·Ï ¿ä±¸ÇÒ ¼ö ÀÖ´Ù. ¸®´ª½º´Â ÇÁ·Î¼¼½º¸¶´Ù °¢ ¼¼¸¶Æ÷¾î ¹è¿¿¡ ´ëÇØ ¸¹¾ÆºÁ¾ß ÇϳªÀÇ sem_undo ÀڷᱸÁ¶¸¦ °ü¸®ÇÑ´Ù. ¸¸¾à ¿¬»êÀ» ¿äûÇÑ ÇÁ·Î¼¼½º°¡ ÀÌ ÀڷᱸÁ¶¸¦ °¡Áö°í ÀÖÁö ¾Ê´Ù¸é ÇÊ¿äÇÒ ¶§ Çϳª »ý¼ºÇÒ °ÍÀÌ´Ù. »õ·Î ¸¸µé¾îÁø sem_undo ÀڷᱸÁ¶´Â ÀÌ ÇÁ·Î¼¼½ºÀÇ task_struct ÀڷᱸÁ¶¿Í ¼¼¸¶Æ÷¾î ¹è¿ÀÇ semid_ds ÀڷᱸÁ¶ ¾çÂÊ¿¡ Å¥µÈ´Ù. ¼¼¸¶Æ÷¾î ¹è¿¿¡ ÀÖ´Â ¼¼¸¶Æ÷¾î¿¡ ¿¬»êÀ» Àû¿ëÇÏ¸é ¿¬ »ê°ªÀ» ¹Ý´ë·Î ÇÑ °ªÀÌ ÀÌ ÇÁ·Î¼¼½ºÀÇ sem_undo ÀڷᱸÁ¶¿¡ ÀÖ´Â Á¶Á¤ ¹è¿ÀÇ ¼¼¸¶Æ÷¾î ¿£Æ®¸®·Î Ãß°¡µÈ´Ù. Áï ¿¬»ê°ªÀÌ 2¸¦ ´õÇÏ´Â °ÍÀ̾ú´Ù¸é ÀÌ ¼¼¸¶Æ÷¾îÀÇ Á¶Á¤ ¿£Æ®¸®¿¡´Â -2 °¡ ´õÇØÁø´Ù.
ÇÁ·Î¼¼½º°¡ Á¾·áÇÏ¿© Áö¿öÁú ¶§, ¸®´ª½º´Â sem_undo ÀڷᱸÁ¶ ¼¼Æ®¸¦ °¡Áö°í ¼¼¸¶Æ÷¾î ¹è ¿¿¡ Á¶Á¤À» Àû¿ëÇÑ´Ù. ¸¸¾à ÇÑ ¼¼¸¶Æ÷¾î ¼¼Æ®°¡ Áö¿öÁö¸é ÇÁ·Î¼¼½ºÀÇ task_structÀÇ Å¥ µÇ¾î ÀÖ´Â sem_undo ÀڷᱸÁ¶´Â ±×´ë·Î ³²¾ÆÀÖÁö¸¸, ¼¼¸¶Æ÷¾î ¹è¿ ½Äº°ÀÚ´Â À߸øµÈ °ÍÀÏ °ÍÀÌ´Ù. ÀÌ °æ¿ì ¼¼¸¶Æ÷¾î Á¤¸® ÄÚµå´Â °£´ÜÇÏ°Ô sem_undo ÀڷᱸÁ¶¸¦ ¹«½ÃÇÑ´Ù.
»õ·Î ¸¸µé¾îÁø °øÀ¯ ¸Þ¸ð¸® ¿µ¿ªÀº shmid_ds ÀڷᱸÁ¶·Î ³ªÅ¸³½´Ù. À̵éÀº shm_segs º¤ ÅÍ¿¡ ÀúÀåµÈ´Ù. shmid_ds ÀڷᱸÁ¶´Â °øÀ¯ ¸Þ¸ð¸® ¿µ¿ªÀÌ ¾ó¸¶³ª Å«Áö, ¾ó¸¶³ª ¸¹Àº ÇÁ·Î ¼¼½º°¡ »ç¿ëÇÏ°í ÀÖÀ¸¸ç, °øÀ¯ ¸Þ¸ð¸®°¡ ÇÁ·Î¼¼½ºÀÇ ÁÖ¼Ò°ø°£¿¡ ¾î¶»°Ô ¸ÅÇεǾî ÀÖ´ÂÁö¿¡ ´ëÇÑ Á¤º¸¸¦ °¡Áø´Ù. °øÀ¯ ¸Þ¸ð¸®¸¦ ¸¸µç ÇÁ·Î¼¼½º°¡ ÀÌ ¸Þ¸ð¸®¿¡ ´ëÇÑ Á¢±Ù±ÇÇÑ°ú Å°°¡ °ø ¿ëÀÎÁö °³ÀοëÀÎÁö Á¦¾îÇϸç, ÃæºÐÇÑ ±ÇÇѸ¸ ÀÖ´Ù¸é °øÀ¯ ¸Þ¸ð¸®¸¦ ¹°¸®ÀûÀÎ ¸Þ¸ð¸®·Î ¶ô17 ½Ãų¼öµµ ÀÖ´Ù.
¸Þ¸ð¸®¸¦ °øÀ¯ÇÏ±æ ¹Ù¶ó´Â °¢ ÇÁ·Î¼¼½ºµéÀº ½Ã½ºÅÛ ÄÝÀ» ÅëÇÏ¿© ÀÌ °¡»ó ¸Þ¸ð¸®¿¡ ¿¬°áÇØ¾ß ÇÑ´Ù. ÀÌ°ÍÀº ÀÌ ÇÁ·Î¼¼½º¿¡¼ÀÇ °øÀ¯ ¸Þ¸ð¸®¸¦ ±â¼úÇÏ´Â »õ·Î¿î vm_area_struct Àڷᱸ Á¶¸¦ ¸¸µé¾î³½´Ù18. ÇÁ·Î¼¼½º´Â °øÀ¯ ¸Þ¸ð¸®°¡ ÀÚ½ÅÀÇ °¡»ó ÁÖ¼Ò °ø°£¿¡ À§Ä¡ÇÒ °÷À» ¼±ÅÃÇÒ ¼öµµ ÀÖ°í, ¾Æ´Ï¸é ¸®´ª½º°¡ ÃæºÐÈ÷ Å« ºó ¿µ¿ªÀ» ¼±ÅÃÇϵµ·Ï ÇÒ ¼öµµ ÀÖ´Ù. »õ·Î ¸¸µé¾îÁø vm_area_struct ÀڷᱸÁ¶´Â shmid_ds°¡ °¡¸®Å°°í ÀÖ´Â vm_area_struct ¸®½ºÆ®¿¡ Ãß °¡µÈ´Ù. vm_newxt_shared¿Í vm_prev_shared Æ÷ÀÎÅ͵éÀº À̵éÀ» ¼·Î ¿¬°áÇϴµ¥ »ç¿ë ÇÑ´Ù. °¡»ó ¸Þ¸ð¸®´Â ÀÌ·¸°Ô ¿¬°áÇÏ´Â µ¿¾È¿¡ ½ÇÁ¦·Î ¸¸µé¾îÁöÁö ¾ÊÀ¸¸ç, óÀ½À¸·Î ÇÁ·Î¼¼½º °¡ ¿©±â¿¡ Á¢±ÙÇÏ·Á°í ÇÒ ¶§ ¸¸µé¾îÁø´Ù.
ÇÁ·Î¼¼½º°¡ °øÀ¯ÇÏ°í ÀÖ´Â °¡»ó ¸Þ¸ð¸®ÀÇ ÇÑ ÆäÀÌÁö¿¡ óÀ½À¸·Î Á¢±ÙÀ» ½ÃµµÇϸé ÆäÀÌÁö Æú Æ®°¡ ¹ß»ýÇÑ´Ù. ¸®´ª½º°¡ ÀÌ ÆäÀÌÁö ÆúÆ®¸¦ ó¸®ÇÒ ¶§ À̸¦ ±â¼úÇÏ´Â vm_area_struct ÀÚ ·á±¸Á¶¸¦ ¹ß°ßÇÏ°Ô µÈ´Ù. ¿©±â¿¡´Â ÀÌ Å¸ÀÔÀÇ °øÀ¯ °¡»ó ¸Þ¸ð¸®¿¡ ´ëÇÑ Ã³¸® ·çƾ¿¡ ´ëÇÑ Æ÷ÀÎÅÍ°¡ ÀÖ´Ù19. °øÀ¯ ¸Þ¸ð¸®ÀÇ ÆäÀÌÁö ÆúÆ® ó¸® ÄÚµå´Â shmid_dsÀÇ ÆäÀÌÁö Å×ÀÌºí ¿£Æ® ¸®¸¦ µÚÁ®¼, °øÀ¯ °¡»ó ¸Þ¸ð¸®ÀÇ ÇØ´ç ÆäÀÌÁö¿¡ ´ëÇÑ ÆäÀÌÁö Å×ÀÌºí ¿£Æ®¸®°¡ ÀÖ´ÂÁö 㠴´Ù. ¸¸¾à ¾ø´Ù¸é ¹°¸®Àû ¸Þ¸ð¸®¸¦ Çϳª ÇÒ´ç ¹Þ¾Æ À̸¦ ³ªÅ¸³»´Â ÆäÀÌÁö Å×ÀÌºí ¿£Æ®¸® ¸¦ ¸¸µé °ÍÀÌ´Ù. À̸¦ ÇöÀç ÇÁ·Î¼¼½ºÀÇ ÆäÀÌÁö Å×ÀÌºí¿¡ ³ÖÀ¸¸é¼ shmid_ds¿¡µµ ÀúÀåÇÑ´Ù. ±×·¡¼ ´ÙÀ½ ÇÁ·Î¼¼½º°¡ ÀÌ ¸Þ¸ð¸®¿¡ Á¢±ÙÇÏ·Á°í ÇÏ´Ù°¡ ÆäÀÌÁö ÆúÆ®°¡ ¹ß»ýÇϸé, °øÀ¯ ¸Þ ¸ð¸® ÆäÀÌÁö ÆúÆ® ó¸® Äڵ尡 À̸¦ ã¾Æ¼, »õ·Î ¸¸µé¾îÁø ¹°¸®ÀûÀÎ ÆäÀÌÁö¸¦ ±× ÇÁ·Î¼¼½º ¿¡°Ôµµ »ç¿ëÇÏ°Ô ÇÑ´Ù. µû¶ó¼ °øÀ¯ ¸Þ¸ð¸®ÀÇ ¾î¶² ÆäÀÌÁö¿¡ Á¢±ÙÇϴ ù¹ø° ÇÁ·Î¼¼½º´Â À̸¦ »ý¼ºÇÏ°í, ´Ù¸¥ ÇÁ·Î¼¼½ºµéÀÌ ¿©±â¿¡ Á¢±ÙÇÒ ¶§´Â À̸¦ ÀÚ½ÅÀÇ °¡»ó ¸Þ¸ð¸® °ø°£¿¡ Ãß °¡ÇÏ°Ô µÈ´Ù.
ÇÁ·Î¼¼½º°¡ ´õÀÌ»ó °¡»ó ¸Þ¸ð¸®¸¦ °øÀ¯ÇÏ±æ ¹Ù¶óÁö ¾ÊÀ» ¶§´Â ¿©±â·ÎÀÇ ¿¬°áÀ» ²÷´Â´Ù. ÀÌ ¸Þ¸ð¸®¸¦ »ç¿ëÇÏ´Â ´Ù¸¥ ÇÁ·Î¼¼½º°¡ Á¸ÀçÇÏ´Â ÇÑÀº ¿¬°áÀ» ²÷´Â °ÍÀº ´ÜÁö ÇØ´ç ÇÁ·Î¼¼½º¿¡ °Ô¸¸ ¿µÇâÀ» ¹ÌÄ£´Ù. ±× ¸Þ¸ð¸®ÀÇ vm_area_struct´Â shmid_ds ÀڷᱸÁ¶¿¡¼ Á¦°ÅµÇ°í ÇØÁ¦µÉ °ÍÀ̸ç, ÇÁ·Î¼¼½º°¡ °øÀ¯Çϴµ¥ »ç¿ëÇß´ø °¡»ó ¸Þ¸ð¸® ¿µ¿ªÀ» ¹«È¿ÇÑ °ÍÀ¸·Î ³ªÅ¸³» ±â À§ÇØ ÇÁ·Î¼¼½ºÀÇ ÆäÀÌÁö Å×À̺íÀÌ °»½ÅµÈ´Ù. ¸¶Áö¸·À¸·Î ¸Þ¸ð¸®¸¦ °øÀ¯ÇÏ°í ÀÖ´ø ÇÁ·Î¼¼ ½º°¡ ¿¬°áÀ» ²÷À¸¸é ¹°¸®ÀûÀÎ ¸Þ¸ð¸®¿¡ Á¸ÀçÇÏ°í ÀÖ´Â ¸ðµç °øÀ¯ ¸Þ¸ð¸® ÆäÀÌÁöµéÀº ÇØÁ¦µÇ °í, ÀÌ °øÀ¯ ¸Þ¸ð¸®¸¦ ³ªÅ¸³»´ø shmid_ds ÀڷᱸÁ¶µµ ÇØÁ¦µÈ´Ù.
°øÀ¯ °¡»ó ¸Þ¸ð¸®°¡ ¹°¸®ÀûÀÎ ¸Þ¸ð¸®·Î ¶ôµÇ¾î ÀÖÁö ¾ÊÀ» ¶§ ¾à°£ º¹ÀâÇÑ ¹®Á¦°¡ ¹ß»ýÇÑ´Ù. ÀÌ´Â ¸Þ¸ð¸®ÀÇ »ç¿ë·®ÀÌ ¸¹¾Æ¼ °øÀ¯ ¸Þ¸ð¸®°¡ ½º¿Ò µð½ºÅ©·Î ½º¿ÒµÈ °ÍÀÎ °æ¿ìµµ ÀÖ´Ù. °ø À¯ ¸Þ¸ð¸®°¡ ¾î¶»°Ô ¹°¸®ÀûÀÎ ¸Þ¸ð¸®¿¡¼ ½º¿ÒµÇ¾î ³ª°¡°Å³ª µé¾î¿À´ÂÁö´Â 3Àå¿¡¼ ¼³¸íÇÏ °í ÀÖ´Ù.
¹ø¿ª : À̽Â, ÀÌÈ£, ±èÁø¼®, ±è±â¿ë, ½É¸¶·Î
Á¤¸® : ÀÌÈ£
1) REVIEW NOTE : ÇÁ·Î¼¼½º ±×·ìÀ» ¼³¸íÇÒ °Í
¿ªÁÖ 2) ÀÌ·¯ÇÑ ¹®Á¦´Â ½Ã±×³ÎÀÌ ¹ß»ýÇß´ÂÁö È®ÀÎÇÏ´Â °ÍÀÌ Ä¿³Î ¸ðµå¿¡¼ÀÌ°í, ½Ã±×³Î ÇÚ µé·¯´Â »ç¿ëÀÚ ¸ðµå¿¡¼ ½ÇÇàµÇ¾î¾ß Çϱ⠶§¹®¿¡, Ä¿³Î ¸ðµå¿¡¼ ¹Ù·Î ½Ã±×³Î Çڵ鷯´Â ºÎ¸¦ ¼ö ¾ø¾î¼ ¹ß»ýÇÑ´Ù. ÀÌ¿¡ »ç¿ëÀÚ ¸ðµå·Î ¹Ù²Ù¾î ½Ã±×³Î Çڵ鷯¸¦ ºÎ¸£°í ÀÌ°ÍÀÌ ³¡³µÀ» ¶§ ¸¶Ä¡ ½Ã½ºÅÛ ÄÝÀ» ÇÑ °Íó·³ Ä¿³Î ¸ðµå·Î ´Ù½Ã µ¹¾Æ¿À°Ô ÇÏ´Â ¹æ¹ýÀ» ¾²´Â °Í ÀÌ´Ù. (flyduck)
¿ªÁÖ 3) Áï ÆÄÀÌÇÁ¸¦ À§ÇØ ÆÄÀÏ ½Ã½ºÅÛ¿¡ ÆÄÀÏÀ» »ý¼ºÇÏ´Â °ÍÀÌ ¾Æ´Ï¶ó, ¸Þ¸ð¸® »ó¿¡ °øÀ¯ ¸Þ¸ð¸® ÆäÀÌÁö¸¦ ¸¸µé¾î¼ VFS inode°¡ À̸¦ »ç¿ëÇÏ°Ô ÇÏ´Â °ÍÀ̸ç, ÀÌ´Â ÆÄÀÌÇÁÀÇ ¼Óµµ ¸¦ ºü¸£°Ô ÇÑ´Ù. (flyduck)
¿ªÁÖ 4) VFS inodeÀÇ f_op Ç׸ñÀº Àбâ, ¾²±â¸¦ Æ÷ÇÔÇÏ¿© ÇÔ¼ö¿¡ °ü·ÃµÈ ¿¬»êµéÀÇ Æ÷ÀÎÅÍ ¹è¿À̸ç, ÆÄÀÏ ¿¬»êÀº ÀÌ Ç׸ñ¿¡ ÀÖ´Â ÇÔ¼ö Æ÷ÀÎÅ͸¦ ºÎ¸§À¸·Î½á ÀÌ·ç¾îÁø´Ù. ¿©±â¼ ÆÄ ÀÌÇÁ¸¦ ÀоîµéÀÌ´Â ÆÄÀÏÀ» Ÿ³ª³»´Â file ÀڷᱸÁ¶´Â º¸Åë ÆÄÀÏ¿¡ Àд ÇÔ¼ö¿¡ ´ëÇÑ Æ÷ ÀÎÅÍ°¡ ¾Æ´Ï¶ó ÆÄÀÌÇÁ¿¡¼ ÀоîµéÀÌ´Â Æ÷ÀÎÅ͸¦ °¡¸®Å°°Ô ÇÏ´õ¶óµµ, ½Ã½ºÅÛ ÄÝ¿¡ ÀÖ¾î¼ ´Â ¾îÂ¥ÇÇ f_op Ç׸ñÀÇ ÇÔ¼ö Æ÷ÀÎÅ͸¦ ÀÌ¿ëÇϹǷΠ¾Æ¹«·± Â÷ÀÌ°¡ ¾ø´Â °ÍÀÌ´Ù. ÀÌ°ÍÀº ÆÄÀÌÇÁ¿¡ ¾²´Â file ÀڷᱸÁ¶¿¡ À־µ ¸¶Âù°¡Áö¸ç, ÀÌ·¯ÇÑ ±â¹ýÀº ¸®´ª½º Ä¿³Î °÷°÷ ¿¡¼ ¾²ÀÌ°í ÀÖ´Ù. (flyduck)
¿ªÁÖ 5) task_struct´Â ÆÄÀÏ¿¡ °ü·ÃµÈ ÀڷᱸÁ¶ÀÎ struct files_struct files Ç׸ñ À» °¡Áö°í ÀÖÀ¸¸ç, files_struct´Â struct file *fd[NR_OPEN] Ç׸ñÀ» °¡Áö°í ÀÖ´Ù. ÀÌ fd¿¡¼ÀÇ À妽º°¡ ÆÄÀÏ ±â¼úÀÚÀ̸ç, fd Ç׸ñÀº ÇÁ·Î¼¼½º¿¡¼ ¿Àº ÆÄÀÏ¿¡ ´ëÇÑ Á¤º¸ ¸¦ °¡Áö°í ÀÖ´Ù. (flyduck)
¿ªÁÖ 6) file ÀڷᱸÁ¶ÀÇ f_flags Ç׸ñÀÌ ÆÄÀÏ¿¡ °ü·ÃµÈ Ç÷¡±×¸¦ °¡Áö°í Àִµ¥, ¿©±â¿¡ O_NONBLOCK °¡ ÁöÁ¤µÇ¾î ÀÖÀ¸¸é ºí·°Å·À» ÇÏÁö ¾Ê´Â »óÅÂÀÌ´Ù. ÀÌ´Â ÆÄÀÏÀ» ¿¶§ ÁöÁ¤ ÇÒ ¼öµµ, ioctlÀ̳ª fcntl°°Àº ½Ã½ºÅÛ ÄÝÀ» ÅëÇؼ ¹Ù²Ü ¼öµµ ÀÖ´Ù. (flyduck)
¿ªÁÖ 7) ¾ÕÀÇ ls | prÀ» ÁöÁ¤ ÆÄÀÌÇÁ¸¦ »ç¿ëÇÑ´Ù¸é, ¿ì¼± mkfifo fifo (ÆÄÀÏÀ̸§Àº ´Ù¸£°Ô Áö Á¤Çصµ µÈ´Ù) ¸í·ÉÀ¸·Î ÁöÁ¤ ÆÄÀÌÇÁ¸¦ ¸¸µç ÈÄ, ls > fifo & pr < fifo·Î ÇÏ¸é µÈ´Ù. (flyduck)
¿ªÁÖ 8) FIFOµµ ÆÄÀÌÇÁ¿Í ¸¶Âù°¡Áö·Î ½ÇÁ¦·Î ÆÄÀÏÀ» ÅëÇÏ¿© Åë½ÅÇÏ´Â °ÍÀÌ ¾Æ´Ï¶ó ¸Þ¸ð¸®¿¡ °øÀ¯ ÆäÀÌÁö¸¦ ¸¸µç´Ù. Áï ÀÐ°í ¾²´Â °ÍÀº ÆÄÀÌÇÁ¿Í ¶È°°Àº ¹æ¹ýÀ» »ç¿ëÇÏ°Ô µÈ´Ù. FIFO ¿Í ÆÄÀÌÇÁÀÇ Â÷ÀÌÁ¡Àº ÆÄÀÌÇÁ´Â Àӽ÷Π»ý¼ºµÇ´Â °ÍÀε¥ ¹ÝÇØ FIFO´Â ÀÌ¹Ì ¸¸µé¾îÁ® ÀÖ ´Â °ÍÀ̹ǷΠµÎ °³ÀÇ ÇÁ·Î¼¼½º°¡ open(), close() ÇÔ¼ö¸¦ ÅëÇÏ¿© ÆÄÀÏó·³ ¿ ¼ö ÀÖÀ¸¹Ç ·Î ½©ÀÌ °ü¿©ÇÏÁö ¾Ê¾Æµµ Åë½ÅÇÒ ¼ö ÀÖ´Ù´Â Á¡ÀÌ´Ù. (flyduck)
¿ªÁÖ 9) ¼ÒÄÏÀº ³×Æ®¿öÅ·¿¡¼ À̾߱âÇÏ´Â ¼ÒÄÏÀÌ´Ù. ¼ÒÄÏÀº ÇÑ ÄÄÇ»ÅÍ ³»¿¡¼ ÇÁ·Î¼¼½º »ç ÀÌ¿¡ Åë½ÅÀ» ÇÒ ¼ö ÀÖ°Ô ÇÒ »Ó¸¸ ¾Æ´Ï¶ó ³×Æ®¿÷¿¡ ÀÖ´Â ´Ù¸¥ ÄÄÇ»ÅÍ¿¡ ÀÖ´Â ÇÁ·Î¼¼½º¿Í µµ Åë½ÅÀ» °¡´ÉÇÏ°Ô ÇÑ´Ù. ¼ÒÄÏÀÇ »ç¿ëÀº À¯´Ð½º¿¡¼ ÀüÅëÀûÀ¸·Î »ç¿ëÇÏ´Â ÆÄÀÏ ±â¼úÀÚ (file descriptor)¸¦ ÅëÇÏ¿© ÇÑ´Ù. Áï socket() ÇÔ¼ö¸¦ ºÎ¸£¸é ¼ÒÄÏÀ» ³ªÅ¸³»´Â ÆÄÀÏ ±â¼úÀÚ °¡ µ¹¾Æ¿À°í À̸¦ °¡Áö°í bind, listen, connect, accept µîÀÇ ¿¬»êÀ» ÇÒ ¼ö ÀÖÀ¸ ¸ç, ÆÄÀÏ°ú ¸¶Âù°¡Áö·Î read, write, close ¿¬»êÀ» ÇÒ ¼ö ÀÖ´Ù. (flyduck)
¿ªÁÖ 10) °ø¿ëÅ°°¡ ¾Æ´Ï¶ó °³ÀοëÅ°¸¦ »ç¿ëÇÏ´Â °æ¿ì´Â ipc_permÀÇ key Ç׸ñÀÌ IPC_PRIVATE·Î ÁöÁ¤µÇ´Âµ¥, À̸¦ °¡Áö°í ÂüÁ¶ ½Äº°ÀÚ¸¦ ãÀ» ¼ö ¾ø´Ù. °³ÀοëÅ°¸¦ »ç¿ë ÇÏ´Â IPC °³Ã¼´Â °³Ã¼ ¹øÈ£¸¦ ÅëÇؼ¸¸ Á¢±ÙÇÒ ¼ö ÀÖ´Ù. (flyduck)
¿ªÁÖ 11) °Ë»ç¸¦ ÇÏ°í ¼³Á¤ÇÏ´Â »çÀÌ¿¡ Áß´ÜÀÌ µÇ¾î ´Ù¸¥ °ÍÀÌ ½ÇÇàµÇ¾ú´Âµ¥ ¿©±â¼ ÀÌ °ª À» °Ë»çÇÏ°í ¼³Á¤ÇÑ´Ù¸é, ´Ù½Ã ÀÌÀüÀ¸·Î µ¹¾Æ¿Í¼ ¼³Á¤ÇÏ·Á°í ÇÒ ¶§´Â ÀÌ¹Ì °ªÀÌ ¹Ù²ï ÀÌÈÄ°¡ µÇ¾î ¹®Á¦°¡ ¹ß»ýÇÒ °ÍÀÌ´Ù. µû¶ó¼ ÀÌ °Ë»ç ¹× ¼³Á¤ ¿¬»êÀº ÁߴܵǾ ¾ÈµÇ ¸ç, CPU¿¡¼ Á¦°øÇϴ Ưº°ÇÑ ¸í·É¾î¸¦ ÀÌ¿ëÇϰųª ¿î¿µÃ¼Á¦ Äڵ带 ÅëÇÏ¿© ±¸ÇöµÈ´Ù. ¸®´ª½º¿¡¼´Â Ä¿³Î¸ðµå¿¡¼ ºñ¼±Á¡ÇüÀ̹ǷΠÀÌ ¿¬»êÀÌ ÁߴܵÇÁö ¾Ê´Â´Ù°í »ý°¢ÇÏ°í ÀÏ¹Ý ¿¬»êÀ¸·Î ó¸®ÇÑ´Ù. Ä¿³Î Äڵ忡¼ ¼¼¸¶Æ÷¾î °ªÀ» °Ë»çÇÏ´Â ÇÔ¼ö´Â try_semop()À̸ç, ¼¼ ¸¶Æ÷¾î °ªÀ» ¹Ù²Ù´Â ÇÔ¼ö´Â do_semop()ÀÌ´Ù. À̵éÀº ipc/sem.c¿¡ ÀÖ´Ù. (flyduck)
¿ªÁÖ 12) ù¹ø° ÇÁ·Î¼¼½º°¡ ¼¼¸¶Æ÷¾îÀÇ °ªÀ» 0À¸·Î ¹Ù²Û ÈÄ¿¡´Â ´ÙÀ½ ÇÁ·Î¼¼½º°¡ °Ë»ç´Ü°è ¿¡¼ ½ÇÆÐÇϹǷΠ¼¼¸¶Æ÷¾îÀÇ °ªÀº º¯ÇÏÁö ¾ÊÀ¸¸ç, ù¹ø° ÇÁ·Î¼¼½º°¡ ÀÌ °ªÀ» 1·Î ¹Ù²Û ÈÄ¿¡¾ß ±â´Ù¸®°í ÀÖ´ø ÇÁ·Î¼¼½º°¡ À̸¦ ¹Ù²Ü ¼ö ÀÖ°Ô µÈ´Ù. ±×·¡¼ ¼¼¸¶Æ÷¾îÀÇ °ªÀº Ç× »ó 0º¸´Ù Å©°Å³ª °°°Ô µÈ´Ù. (flyduck)
¿ªÁÖ 13) ÇϳªÀÇ ¼¼¸¶Æ÷¾î °´Ã¼¿¡ ¿©·¯°³ÀÇ ¼¼¸¶Æ÷¾î ¹è¿(semÀÇ ¹è¿)ÀÌ ÀÖÀ¸¸ç, ½Ã½ºÅÛ ÄÝÀº ÀÌ ÁßÀÇ ÀϺθ¸À» °Ë»çÇÏ°í ¼³Á¤ÇÒ ¼ö ÀÖ´Ù. ÀÓ°èÁö¿ª¿¡¼ ¿©·¯°³ÀÇ ¼¼¸¶Æ÷¾î¸¦ ÇÊ ¿ä·ÎÇÏ´Â °æ¿ì ÀÌ Áß¿¡ ÇÊ¿ä·Î ÇÏ´Â °Íµé¸¸ ÁöÁ¤ÇÒ ¼ö ÀÖ´Ù. (flyduck)
¿ªÁÖ 14) ¼¼¸¶Æ÷¾î ¿¬»êÀ» ÇÏ´Â ½Ã½ºÅÛ ÄÝÀº sys_semop(int semid, struct sembuf *sops, unsigned nsops)À̸ç, ¿©±â¼ ÇϳªÀÇ ¿¬»êÀ» °¡¸®Å°´Â sembuf´Â sem_num, sem_op, sem_flg ¼¼°¡Áö ¿ø¼Ò·Î ÀÌ·ç¾îÁ® ÀÖ´Ù. ÀÌ ¼¼¸¶Æ÷¾î ¿¬»êÀº ¼¼¸¶Æ÷¾î °ªÀ» °¨ ¼Ò½Ãų ¼öµµ, Áõ°¡½Ãų ¼öµµ ÀÖ´Ù. (flyduck)
¿ªÁÖ 15) ¸Þ½ÃÁö Å¥ÀÇ °æ¿ì´Â ´ë±âÅ¥°¡ task_struct¸¦ °¡Áö°í ÀÖ´Â ´Ü¼øÇÑ wait_queue ÀÇ ¿¬°á ¸®½ºÆ®·Î µÇ¾î ÀÖÁö¸¸, ¼¼¸¶Æ÷¾îÀÇ ´ë±âÅ¥´Â sem_queueÀÇ ¿¬°á ¸®½ºÆ®·Î µÇ¾î ÀÖ´Ù. ÀÌ´Â ¸Þ½ÃÁö Å¥ÀÇ °æ¿ì Àб⸦ ±â´Ù¸®´ÂÁö, ¾²±â¸¦ ±â´Ù¸®´ÂÁö¸¸ ±¸º°ÇÏ¸é µÇÁö¸¸, ¼¼¸¶Æ÷¾î¿¡¼´Â ¼¼¸¶Æ÷¾î ¿¬»êÀ¸·Î ³Ñ°ÜÁØ ÀÎÀÚµéÀ» ¸ðµÎ ÀúÀåÇÏ°í ÀÖ¾î¾ß ÇÏ°í Á» ´õ º¹ÀâÇÑ ¿¬»êÀÌ ÇÊ¿äÇϱ⠶§¹®¿¡ ÀÌ Á¤º¸¸¦ ¸ðµÎ sem_queue¿¡ ÀúÀåÇÏ´Â °ÍÀÌ´Ù.(flyduck)
¿ªÁÖ 16) µ¥µå¶ôÀº ÀÌ °æ¿ì»Ó¸¸ ¾Æ´Ï¶ó ÇÑ ÇÁ·Î¼¼½º°¡ ÇÊ¿ä·Î ÇÏ´Â ÀÚ¿øÀ» ´Ù¸¥ ÇÁ·Î¼¼½º°¡ »ç¿ëÇÏ°í ÀÖ¾î ´ë±â »óÅ·Π°¬´Âµ¥, ³ªÁß¿¡ ±× ÇÁ·Î¼¼½º°¡ ¾ÕÀÇ ÇÁ·Î¼¼½º°¡ Á¡À¯ÇÏ°í ÀÖ ´Â ÀÚ¿øÀ» ÇÊ¿ä·Î ÇÏ°Ô µÇ¾î ÇÁ·Î¼¼½ºµéÀÌ ¼·Î »ó´ë°¡ ÀÚ¿ø »ç¿ëÀ» Á¾·áÇϱ⸸À» ±â´Ù ¸®°Ô µÇ´Â »óŵµ Æ÷ÇÔÇÑ´Ù. ÀÌ°ÍÀº ´Ü¼øÈ÷ µÎ ÇÁ·Î¼¼½º°¡ ¾Æ´Ï¶ó ¿©·¯ ÇÁ·Î¼¼½º°¡ ²¿¸® ¿¡ ²¿¸®¸¦ ¹°°í ÀÖÀ» ¶§ º¹ÀâÇÏ°Ô ÀÌ·ç¾îÁú ¼ö ÀÖ´Ù. ´Ü¼øÈ÷ ¼¼¸¶Æ÷¾î¿¡ ±¹ÇÑÇÏ¿© ÀÌ¾ß ±âÇÑ´Ù¸é, ÇÁ·Î¼¼½º°¡ ¼¼¸¶Æ÷¾î¸¦ ÀÌ¿ëÇÏ¿© ÀÓ°èÁö¿ªÀ¸·Î µé¾î°£ ÈÄ ´Ù½Ã ¼¼¸¶Æ÷¾î¸¦ ¾ò À¸·Á°í ÇÏÁö ¾Ê´Â´Ù¸é ÀÌ·± ¹®Á¦´Â ¹ß»ýÇÏÁö ¾ÊÀ» °ÍÀÌ´Ù. (flyduck)
¿ªÁÖ 17) °¡»ó ¸Þ¸ð¸®¸¦ ¹°¸®ÀûÀÎ ¸Þ¸ð¸®¿¡ Á¸ÀçÇÏ°Ô ¸¸µå´Â °ÍÀ» ¸»ÇÑ´Ù. (flyduck)
¿ªÁÖ 18) ¾ÕÀÇ ÇÁ·Î¼¼½º Àå¿¡¼ ¼³¸íÇÑ °Í°ú °°ÀÌ ÇÑ ÇÁ·Î¼¼½º°¡ ÇÒ´ç¹ÞÀº ¸Þ¸ð¸®µéÀº vm_area_structÀÇ ¸®½ºÆ®¿Í AVL Æ®¸®·Î °ü¸®µÇ´Âµ¥, ÀÌ´Â ÆäÀÌÁö ÆúÆ®°¡ ¹ß»ýÇßÀ» ¶§ ÇØ´ç ÆäÀÌÁö°¡ ½ÇÁ¦ ÇÁ·Î¼¼½º°¡ »ç¿ëÇÏ´Â ¸Þ¸ð¸®ÀÎÁö, ¾î¶»°Ô ¹°¸®ÀûÀÎ ÆäÀÌÁö¸¦ ¸¸µé°Í ÀÎÁö ¾Ë±â À§ÇØ »ç¿ëµÈ´Ù. (flyduck)
¿ªÁÖ 19) nopage ¿¬»ê (flyduck)