ÃÑ ÆäÀÌÁö ¼ö : 3224
![]()
|
Facebook Joinc ±×·ì
Joinc QA »çÀÌÆ®
![]()
Tweet
joinc´Â Firefox¿Í chrome¿¡¼ Å×½ºÆ® Çß½À´Ï´Ù. IE¿¡¼´Â Å×À̺íÀÌ ±úÁö°Å³ª À̹ÌÁö°¡ º¸ÀÌÁö ¾ÊÀ» ¼ö ÀÖ½À´Ï´Ù. ƯÈ÷ ±¸±Û DocsÀ̹ÌÁöÀÇ °æ¿ì ¿¢¹Úó¸®µÉ ¼ö ÀÖ½À´Ï´Ù. ÇÁ·Î¼¼½º Áö±Ý Å͹̳ο¡¼ ps ¸í·ÉÀ» ½ÇÇàÇÏ¸é ¼ö¸¹Àº ÇÁ·Î¼¼½º°¡ ¶° ÀÖÀ½À» ¾Ë¼ö ÀÖ´Ù. ÇÁ·Î¼¼½º¶õ ½Ã½ºÅÛ»ó¿¡¼ ¾î¶°ÇÑ ¸í·ÉÀ» ½ÇÇàÇÔÀ¸·Î½á »ç¿ëÀÚ¿Í OS, OS ¿Í ½Ã½ºÅÛ °£ÀÇ ´ëȰ¡ °¡´ÉÇϵµ·Ï ÇØÁÖ´Â ½ÇÇà °´Ã¼ÀÌ´Ù. ÀÌ·¯ÇÑ ÇÁ·Î¼¼½º´Â ¿©·¯ºÐÀÌ À̹ÌÁö¸¦ º¸°Å³ª, À¥¼ÇÎÀ» Çϰųª, À½¾ÇÀ» µè°Å³ª ȤÀº À¥¼ºñ½º¸¦ ÇÏ´Âµî °¢ °´Ã¼ÀÇ Æ¯¼º¿¡ µû¶ó ´Ù¾çÇÑ ¾÷¹«¸¦ ¼öÇàÇÏ°Ô µÈ´Ù. [root@localhost root]# ps -aux USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND root 1 0.0 0.2 1384 520 ? S 21:37 0:04 init root 2 0.0 0.0 0 0 ? SW 21:37 0:00 [keventd] root 3 0.0 0.0 0 0 ? SW 21:37 0:00 [kapm-idled] root 4 0.0 0.0 0 0 ? SWN 21:37 0:00 [ksoftirqd_CPU0] root 5 0.0 0.0 0 0 ? SW 21:37 0:00 [kswapd] ... root 930 0.0 0.3 2920 1016 tty1 S 21:39 0:00 /bin/sh /usr/X11R root 937 0.0 0.2 2320 672 tty1 S 21:39 0:00 xinit /etc/X11/xi root 938 0.7 5.9 74844 15056 ? S< 21:39 0:34 /etc/X11/X :0 root 946 0.0 0.4 2956 1108 tty1 S 21:39 0:00 /bin/bash /usr/bi root 1011 0.0 1.9 16044 5020 ? S 21:39 0:00 kdeinit: Running. ...±×·±µ¥ ÀÌ·¯ÇÑ ÇÁ·Î¼¼½º°¡ ¾î´À¼ø°£ °©Àڱ⠻ý±âÁø ¾Ê¾ÒÀ»°ÍÀÌ´Ù. ÃÖÃÊÀÇ ¾î´ÀÇÑ ½ÃÀÛÁ¡ÀÌ ÀÖÀ»°ÍÀÌ´Ù. ÀÌ ½ÃÀÛÁ¡¿¡ ´ëÇØ¼ ¾Ë¾Æº¸ÀÚ init ÇÁ·Î¼¼½º ¸ðµç ÇÁ·Î¼¼½º´Â À§¿¡¼ ó·³ PID¸¦ °¡Áö°í ¶ÇÇÑ PPID ¸¦ °¡Áø´Ù. PID¶õ ÇÁ·Î¼¼½ºÀÚ½ÅÀ» °¡¸®Å°´Â ÀÏ·ÃÀÇ ¹øÈ£À̸ç PPID¶õ ÀÚ½ÅÀ» ½ÇÇà½ÃŲ ºÎ¸ðÇÁ·Î¼¼½ºÀÇ PID¸¦ °¡¸®Å²´Ù. ±×·¸´Ù¸é ÀÚ½ÅÀÇ ºÎ¸ð ÇÁ·Î¼¼½º¸¦ ½ÇÇà½ÃŲ ÇÁ·Î¼¼½º°¡ Á¸ÀçÇÒ°ÍÀ̰í, ¶Ç ±× ºÎ¸ð ÇÁ·Î¼¼½º¸¦ ½ÇÇàÇÑ ÇÁ·Î¼¼½º°¡ Á¸ÀçÇÒ°ÍÀÌ´Ù. ÀÌ·± ½ÄÀ¸·Î À¯ÃßÇØ¼ »ý°¢ÇØ º¸¸é °á±¹ ÃÖÃÊÀÇ Á¶»ó ÇÁ·Î¼¼½º°¡ Á¸ÀçÇÒ°ÍÀ̶ó´Â °á·Ð¿¡ µµ´ÞÇÒ¼ö ÀÖÀ»°ÍÀε¥(Àηù·Î »ý°¢Çغ¸ÀÚ¸é, "¾Æ´ã" Á¤µµ), ±×°ÍÀÌ ¹Ù·Î PID 1¹øÀ» °¡Áö´Â init ÇÁ·Î¼¼½ºÀÌ´Ù. ¸ðµç ÇÁ·Î¼¼½º´Â init ·ÎºÎÅÍ fork & exec °úÁ¤À» °ÅÃļ µ¶¸³µÈ ÇÁ·Î¼¼½º·Î ÀÓ¹«¸¦ ¼öÇàÇÏ°Ô µÈ´Ù. fork ¿Í exec ±×·³ fork ¿Í exec ¿¡ ´ëÇØ¼ Á» ¾Ë¾Æº¸µµ·Ï ÇϰڴÙ. fork ¿Í exec ´Â µÑ´Ù À¯´Ð½º ½Ã½ºÅÛ¿¡¼ »õ·Î¿î ÇÁ·Î¼¼½º¸¦ »ý¼º½Ã۱â À§Çؼ »ç¿ëÇÏ´Â System Call ÇÔ¼öµéÀÌ´Ù. µÑ´Ù »õ·Î¿î ÇÁ·Î¼¼½º¸¦ »ý¼ºÇϴµ¥ ±× ÇൿÀÌ ¾à°£ ´Ù¸£´Ù. fork ÀÇ °æ¿ì´Â ¾î¶² ÇÁ·Î¼¼½º¿¡¼ fork ¸¦ ½ÇÇàÇÏ°Ô µÇ¸é, ÀÚ½ÅÀÇ ÇÁ·Î¼¼½º¿Í ¶È°°Àº ÇÁ·Î¼¼½º¸¦ copy-on-write Çü½ÄÀ¸·Î ½ÇÇàÇÏ°Ô µÇ¸ç, À̶§ »ý¼ºµÈ ÇÁ·Î¼¼´Â ÀڽŸ¸ÀÇ PID¸¦ °¡Áö°í µ¶ÀÚÀûÀÎ ±æÀ» °¡°Ô µÈ´Ù. ¹°·Ð À̶§ »ý¼ºµÈ ÇÁ·Î¼¼¼ÀÇ ºÎ¸ð ÇÁ·Î¼¼½º´Â ÃÖÃÊ¿¡ ½ÇÇàµÈ ÇÁ·Î¼¼½º°¡ µÉ°ÍÀÌ´Ù. ¿ì¸®´Â ÀÌ·¯ÇÑ ÃÖÃÊÀÇ ÇÁ·Î¼¼½º¸¦ ºÎ¸ð ÇÁ·Î¼¼½º¶ó°í Çϰí fork µÇ¾î¼ ¸¸µé¾îÁø ÇÁ·Î¼¼½º¸¦ ÀÚ½Ä ÇÁ·Î¼¼½º¶ó°í ÇÑ´Ù. ¿¹Á¦ fork.c
ÀÌó·³ fork ´Â ÇÁ·Î¼¼½ºÀÇ º¹»çº»À» ¸¸µé¶§ »ç¿ëÇÑ´Ù. ÀÌ·¯ÇÑ fork ÀÇ Æ¯¼ºÀ¸·Î ´Ù¼öÀÇ Å¬¶óÀÌ¾ðÆ® ¿¬°áÀ» ó¸®ÇØ¾ß ÇÏ´Â ³×Æ®¿÷¼¹ö ¸¦ Á¦ÀÛÇÒ¶§ ¸Å¿ì ÈçÈ÷ »ç¿ëµÈ´Ù. fork ÇÔ¼ö¸¦ ½ÇÇàÇϸé int ÇüÀÇ Á¤¼ö¸¦ ³Ñ°ÜÁÖ°Ô µÇ´Âµ¥, ÀÚ½Ä ÇÁ·Î¼¼½º¿¡¼´Â 0ÀÌ ¹ÝȯµÇ°í, ºÎ¸ð ÇÁ·Î¼¼½º¿¡¼´Â 0º¸´Ù Å« Á¤¼ö°¡ ¹ÝȯµÈ´Ù. ¿©·¯°¡Áö ÀÌÀ¯·Î fork °¡ ½ÇÆÐÇÑ´Ù¸é -1 À» µ¹·ÁÁÖ°Ô µÉ°ÍÀÌ´Ù. exec exec ´Â ÈçÈ÷ exec °è¿ÇÔ¼ö±º¿¡ ÀÇÇØ¼ ±¸ÇöµÇ¸ç, exec ÇÔ¼ö±º¿¡´Â execl(3), execlp, execle.. µîÀÌ ÀÖ´Ù. ¸ðµÎ °°Àº ÀÏÀ» Çϸç, ´ÜÁö ÇÁ·Î±×·¥½ÇÇà ¾Æ±Ô¸ÕÆ®¸¦ ´Ù·ç´Âµ¥ ¾à°£¾¿ÀÇ Â÷À̸¦ °¡Áö°í ÀÖÀ» »ÓÀÌ´Ù. exec ¿ª½Ã fork ¿Í ¸¶Âù°¡Áö·Î »õ·Î¿î ÇÁ·Î»õ½º¸¦ »ý¼º½ÃŰÁö¸¸, fork ¿Í °°ÀÌ copy-on-write ¸¦ ÀÌ¿ëÇÑ ÀüÇô »õ·Î¿î ÇÁ·Î¼¼½º¸¦ ½ÇÇà½ÃŰÁö ¾Ê°í, ÇöÀçÀÇ ÇÁ·Î¼¼½ºÀ̹ÌÁö¸¦ »õ·Î¿î ÇÁ·Î¼¼½º À̹ÌÁö°¡ µ¤¾î½á ¹ö¸°´Ù. ´ÙÀ½ÀÇ ¿¹Á¦¸¦ ÄÄÆÄÀÏÇÑÈÄ ½ÇÇàÇϸé ÀÌÇØ°¡ ½¬¿ï°ÍÀÌ´Ù. myexec.c
¿©±â¿¡¼ exit ¸í·ÉÀ» »ç¿ëÇØ¼ ½©À» Á¾·áÇÏ¸é ¾î¶»°Ô µÉ±î ? ´ÙÀ½ ÀÇ printf ÇàÀ» ½ÇÇàÇØ¼ "I will be back" ¶ó´Â ¹®ÀåÀ» º¼¼ö ÀÖ°Ô µÉ±î ? ´ë´äÀº ¾Æ´Ï¿À ÀÌ´Ù. ÀÌÀ¯´Â À§¿¡¼ ¼³¸íÇßµíÀÌ, execl ÇÔ¼ö¸¦ È£ÃâÇØ¼ /bin/sh ¸¦ ¼öÇàÇѼø°£ myexec ÇÁ·Î¼¼½º¸¦ /bin/sh °¡ µ¤¾î½á ¹ö¸®±â ¶§¹®ÀÌ´Ù. ps ¸¦ ÀÌ¿ëÇØ¼ Çѹø È®ÀÎÀ» ÇØº¸µµ·Ï ÇÏÀÚ. ¸ÕÀú ./myexec ¸¦ ½ÇÇà½Ã۰í
Âü ±×¸®°í system(3) À̶ó´Â »õ·Î¿î ÇÁ·Î¼¼½º¸¦ ½ÃŰ´Â ÇÔ¼öµµ Àִµ¥, fork & exec ÀÇ ´Ù¸¥ ±¸ÇöÀ¸·Î º¸¸é µÉ°ÍÀ̸ç, ½ÇÁ¦·Î system À» »ç¿ëÇÏÁö ¾Ê°í, fork & exec ¸¦ ÅëÇÏ¿© ±¸ÇöÇÏ´Â °æ¿ìµµ ÀÖ´Ù. À§ÀÇ fork ¿Í exec ÀÇ °³³äÀ» ¿ÏÀüÈ÷ ÀÌÇØÇß´Ù¸é ÀÌÁ¦ ´ÜÁö ÇϳªÀÇ init ÇÁ·Î¼¼½º¿¡¼ ´Ù¸¥ ¸ðµç ÇÁ·Î¼¼½º°¡ fork & exec ¹æ½ÄÀ¸·Î ¾î¶»°Ô ÆÄ»ýµÇ¾î¼ ½ÇÇàµÇ´ÂÁö °¨À» ÀâÀ»¼ö ÀÖÀ»°ÍÀÌ´Ù. init ÇÁ·Î¼¼½º¿¡°Ô ¾î¶² ÇÁ·Î¼¼½º¸¦ ½ÇÇà½ÃÄѶó´Â ¸Þ½ÃÁö°¡ Àü´ÞµÇ¸é, init ´Â fork ¸¦ ÀÌ¿ëÇØ¼ ÀÚ±âÀÚ½ÅÀ» º¹»çÇÑ ÀÚ½Ä ÇÁ·Î¼¼½º¸¦ Çϳª ½ÇÇà½ÃŰ°Ô µÉ°ÍÀÌ´Ù. ±×¸®°í ³ª¼ º¹»çµÈ ÀÚ½ÄÇÁ·Î¼¼½º¿¡¼ exec ¸¦ ½á¼ »õ·Î¿î ÇÁ·Î¼¼½º¸¦ ½ÇÇà½Ã۸é init ´Â »õ·Î¿î ÇÁ·Î¼¼½º·Î ´ëü½ÇÇàµÇ´Â °ÍÀÌ´Ù.
ÇÁ·Î¼¼½ºÀÇ Áý´Ü(group)°ú ¼¼¼Ç(session) ¿ìÁÖ¸¦ ¿¹·Î µé¾îº¸¸é Ç༺ ÇϳªÇϳª¸¦ ÇÁ·Î¼¼½º¶ó°í »ý°¢ÇÒ¼ö ÀÖÀ»°ÍÀÌ´Ù, ±×·±µ¥ º¸Åë Ç༺Àº ÇϳªÀÇ Ç×¼º°è¿¡ Æ÷ÇÔµÇ°Ô µÈ´Ù. žç°è¿Í °°Àº °ÍÀÌ ÀϹÝÀûÀÎ °æ¿ì°¡ µÉ°ÍÀ̸ç, ÀÌ·¯ÇÑ Ç×¼º°è´Â ´Ù½Ã ÀºÇϰè¶ó´Â ´õ¿í Å« ±Ô¸ðÀÇ ÃµÃ¼¿¡ ¼ÓÇÏ°Ô µÈ´Ù. ÇÁ·Î¼¼½ºµµ ¸¶Âù°¡ÁöÀÌ´Ù. °¢°¢ÀÇ ÇÁ·Î¼¼½º´Â ¾î¶°ÇÑ Áý´Ü¿¡ Æ÷ÇԵɼö ÀÖÀ¸¸ç, °¢°¢ÀÇ Áý´ÜÀº ´õ¿íÅ« Áý´Ü¿¡ Æ÷ÇԵɼö Àִµ¥, ÀÌ·¯ÇÑ °¢°¢ÀÇ Áý´ÜÀ» ¿ì¸®´Â Group ¶ó°í ºÎ¸£¸ç, ¿©·¯°³ÀÇ GruopÀ» Æ÷ÇÔÇÏ´Â ´õÅ« ±×·ìÀ» ¼¼¼ÇÀ̶ó°í ºÎ¸¥´Ù. º¸Åë ±×·ìÀº ¾î¶°ÇÑ ÀÛ¾÷À» Çϱâ À§Çؼ °øÅëÀÇ ¸ñÀûÀ¸·Î »ý¼ºµÈ ÇÁ·Î¼¼½ºµéÀÇ Áý´ÜÀ» ¸»Çϴµ¥, °¡Àå ÀϹÝÀûÀÎ ¿¹°¡ fork ·Î »ý¼ºµÈ ÀÚ½Ä ºÎ¸ð°£ÀÇ ÇÁ·Î¼¼½º ±×·ìÀÌ µÉ°ÍÀÌ´Ù.
|