´ÙÀ½ ÀÌÀü Â÷·Ê

7. ¾î¶»°Ô ÄÄÇ»ÅÍ¿¡¼­ ¼­·Î ÇÁ·Î¼¼½º°¡ Ãæµ¹ÇÏÁö ¾Ê°í Àß µ¹¾Æ°¡´Â°¡?

Ä¿³ÎÀÇ ½ºÄÉÁì·¯´Â ÇÁ·Î¼¼½º¸¦ ÀûÀýÇÑ ½Ã°£ °£°ÝÀ¸·Î ³ª´©´Â ÀÏ¿¡ ½Å°æÀ» ¾´´Ù. ´ç½ÅÀÇ ¿î¿µÃ¼°è ¶ÇÇÑ °ø°£ÀûÀ¸·Îµµ ÇÁ·Î¼¼½º¸¦ ±¸ºÐÇØ¾ß Çϴµ¥, ±×·¡¾ß ÇÁ·Î¼¼½ºµéÀÌ »ç¿ëÇÏ´Â ¸Þ¸ð¸®¸¦ ¼­·Î ħ¹üÇÏÁö ¾ÊÀ» ¼ö Àֱ⠶§¹®ÀÌ´Ù. ¿î¿µÃ¼°è¿¡¼­ ÀÌ·± ¹®Á¦¸¦ ÇØ°áÇÏ´Â °ÍÀ» ¸Þ¸ð¸® °ü¸®(memory management)¶ó ÇÑ´Ù.

°¢°¢ÀÇ ÇÁ·Î¼¼½º´Â core ¸Þ¸ð¸®¿¡ ÀڽŸ¸ÀÇ °ø°£À» ÇÊ¿ä·Î Çϴµ¥, ±× °ø°£Àº ÇÁ·Î±×·¥ÀÇ º¯¼öµé°ú ½ÇÇà °á°ú¸¦ ÀúÀåÇÏ°í Äڵ带 ½ÇÇà½ÃÅ°±â À§ÇÑ °ø°£À¸·Î »ç¿ëµÈ´Ù. ´ç½ÅÀº ÀÌµé ¼¼Æ®¸¦ Àбâ Àü¿ëÀÇ ÄÚµå Á¶°¢(code segment) (ÇÁ·Î¼¼½ºÀÇ Á¤º¸¸¦ °¡Áö°í ÀÖ´Â)°ú ¾²±â °¡´ÉÇÑ µ¥ÀÌÅÍ Á¶°¢(data segment) (ÇÁ·Î¼¼½ºÀÇ º¯¼ö ÀúÀå) À¸·Î ±¸¼ºµÇ¾î ÀÖ´Ù°í »ý°¢ÇÒ ¼ö ÀÖ´Ù. µ¥ÀÌÅÍ Á¶°¢Àº °¢°¢ÀÇ ÇÁ·Î¼¼½º¿¡ ´ëÇØ ÁøÁ¤À¸·Î À¯ÀÏÇÏÁö¸¸, µÎ°³ÀÇ ÇÁ·Î¼¼½º°¡ °°Àº Äڵ带 ½ÇÇà½ÃŲ´Ù¸é À¯´Ð½º´Â ÀÚµ¿ÀûÀ¸·Î ½Ã½ºÅÛÀÇ È¿À²¼ºÀ» ³ôÀ̱â À§ÇØ ±× ÇÁ·Î¼¼½ºµéÀÌ ÇϳªÀÇ ÄÚµå Á¶°¢À» °øÀ¯Çϵµ·Ï Á¶ÀýÇÑ´Ù.

Core ¸Þ¸ð¸®´Â ºñ½Î±â ¶§¹®¿¡ È¿À²¼ºÀÌ ¸Å¿ì Áß¿äÇÏ´Ù. ¶§¶§·Î ¸Ó½ÅÀÇ ¸ðµç ½ÇÇà ÇÁ·Î±×·¥µéÀÌ »ç¿ëÇϱ⿡ ¸Þ¸ð¸®°¡ ºÎÁ·ÇÑ °æ¿ìµµ »ý±æ ¼ö ÀÖ´Ù. (X¼­¹ö¿Í °°ÀÌ Å« ÇÁ·Î±×·¥À» ½ÇÇà½ÃÅ°´Â °æ¿ì¸¦ ¿¹·Î µé ¼ö ÀÖ´Ù.) ÀÌ ¹®Á¦¸¦ ÇØ°áÇϱâ À§ÇØ À¯´Ð½º´Â °¡»ó ¸Þ¸ð¸®(virtual memory)¶ó´Â ¹æ¹ýÀ» ¾´´Ù. ÀÌ°ÍÀº Äھ¼­ ½ÇÇàµÇ´Â ÇÁ·Î¼¼½ºÀÇ ¸ðµç ÄÚµå¿Í µ¥ÀÌÅ͸¦ °®Áö ¾Ê°í, ´ë½Å¿¡ »ó´ëÀûÀ¸·Î ÀÛÀº ÀÛ¾÷ ¼¼Æ®(working set)¸¦ °®´Â´Ù. ÇÁ·Î¼¼½º°¡ ÇØ¾ß ÇÒ ³²Àº ÀÏÀº ÇÁ·Î¼¼½ºÀÇ »óŸ¦ ´ç½ÅÀÇ Çϵåµð½ºÅ©¿¡ ÀÖ´Â ½º¿Ò°ø°£(swap space)¿¡ ±â·ÏÇÏ´Â °ÍÀÌ´Ù.

ÇÁ·Î¼¼½º°¡ ½ÇÇàµÇ¸é À¯´Ð½º´Â ¾î¶»°Ô ÀÛ¾÷ ¼¼Æ®°¡ º¯ÇÒ°ÍÀÎÁö ¿¹ÃøÀ» ½ÃµµÇÏ°í Äھ ÇÊ¿äÇÑ Á¶°¢¸¸À» À§Ä¡½ÃŲ´Ù. ÀÌ ÀÛ¾÷À» È¿À²ÀûÀ¸·Î ÇÏ´Â °ÍÀº º¹ÀâÇÏ°í ±î´Ù·Î¿î ÀÛ¾÷À̱⠶§¹®¿¡, ¿©±â¼­ ¼³¸íÇÏÁö´Â ¾Ê±â·Î ÇÑ´Ù -- °£´ÜÈ÷ ¸»Çϸé, ÄÚµå¿Í µ¥ÀÌÅÍ ÂüÁ¶(references)°¡ Ŭ·¯½ºÅÍ¿¡¼­ ÀÛµ¿ÇÏ·Á°í ÇÏ¸é »õ·Î »ý¼ºµÈ ¿ä±¸´Â ÀÌÀü¿¡ Ȥ½Ã ºñ½ÁÇÑ °ÍÀÌ ÀÖÁö ¾Ê¾Ò´ÂÁö °Ë»öÇÏ°Ô µÈ´Ù. µû¶ó¼­ ¸¸¾à À¯´Ð½º°¡ ¾ÆÁÖ ÀÚÁÖ(ȤÀº ¾ÆÁÖ ÃÖ±Ù¿¡) ÀÌ¿ëÇÑ Äڵ峪 µ¥ÀÌÅ͸¦ °¡Áö°í Àִ´ٸé, ´ç½ÅÀº ½Ã°£À» Àý¾àÇÒ ¼ö ÀÖÀ» °ÍÀÌ´Ù.

µÎ ¹®´Ü Àü¿¡ "¶§¶§·Î"¶ó´Â ¸»Àº "°ÅÀÇ ¾ðÁ¦³ª"¸¦ ÀǹÌÇÑ´Ù´Â »ç½ÇÀ» ÁÖ¸ñÇ϶ó. -- ÄÚ¾îÀÇ Å©±â´Â ÀüÇüÀûÀ¸·Î ½ÇÇàµÇ´Â ÇÁ·Î±×·¥ÀÇ Å©±â¿¡ ºñÇØ ÀÛ´Ù. µû¶ó¼­ ½º¿ÍÇÎÀº ÀÚÁÖ ¹ß»ýÇÑ´Ù. ¿äÁò¿¡´Â ¸Þ¸ð¸®°¡ º°·Î ºñ½ÎÁö ¾Ê¾Æ¼­ ³·Àº ÃÖÁ¾ ¸Ó½Å (low-end machine) ¿ª½Ã ¸¹Àº ¸Þ¸ð¸®¸¦ °¡Áö°í ÀÖ´Ù. ¿À´Ã³¯ÀÇ ´ÜÀÏ À¯Àú ¸Ó½Å (single-user machine)ÀÌ 64MB ÀÌ»óÀÇ Äھ °¡Áö°í ÀÖ´Ù¸é, X³ª ¿©·¯°¡Áö ÀÛ¾÷µéÀ» ½º¿ÍÇÎ ¾øÀÌ µ¿½Ã¿¡ ó¸®ÇÒ ¼ö ÀÖ´Ù.

ÀÌ·± ÇູÇÑ »óȲ¿¡¼­µµ, ¿î¿µÃ¼°èÀÇ ÇÑ ºÎºÐÀÎ ¸Þ¸ð¸® °ü¸®ÀÚ´Â Áß¿äÇÑ ¿ªÇÒÀ» ÇÑ´Ù. ÀÌ°ÍÀº ÇÁ·Î±×·¥µéÀÌ Àڽſ¡°Ô ÇÒ´çµÇ¾î ÀÖ´Â µ¥ÀÌÅÍ Á¶°¢(segments) ¸¸À» »ç¿ëÇÏ´ÂÁö È®ÀÎÇÑ´Ù -- ÀÌ°ÍÀº ¾î¶² ÇÁ·Î±×·¥ÀÌ ´Ù¸¥ ÇÁ·Î±×·¥¿¡¼­ »ç¿ëÇÏ´Â µ¥ÀÌÅ͸¦ ¸ø¾²°Ô ÇÏ´Â °ÍÀ» ¸·¾ÆÁØ´Ù.(½Ç¼ö¿¡ ÀÇÇÑ °ÍÀ̳ª ȤÀº ¾ÇÀÇ¿¡ ÀÇÇÑ °Í ¸ðµÎ) Å×À̺íÀº ÇÁ·Î¼¼½º°¡ ´õ ¸¹Àº ¸Þ¸ð¸®¸¦ ¿ä±¸Çϰųª ÀÚ½ÅÀÌ °®°í ÀÖ´ø ¸Þ¸ð¸®¸¦ Ç®¾î ÁÙ ¶§¸¶´Ù °»½ÅµÈ´Ù. (¸Þ¸ð¸®¸¦ Ç®¾îÁÖ´Â ÀÏÀº º¸Åë ÇÁ·Î±×·¥ÀÌ Á¾·áµÉ ¶§ ÀϾ´Ù.)

ÀÌ Å×À̺íÀº MMU(Memory Management Unit)À¸·Î ºÒ¸®¿ì´Â ±Ùº»ÀûÀÎ Çϵå¿þ¾îÀÇ Æ¯º°ÇÑ ºÎºÐÀ¸·Î ¸í·ÉÀ» º¸³»´Â µ¥¿¡µµ ÀÌ¿ëµÈ´Ù. ÃÖ½ÅÀÇ ÇÁ·Î¼¼¼­ ĨµéÀº ±× ¾È¿¡ MMU¸¦ ³»ÀåÇÏ°í ÀÖ´Ù. MMU´Â ¸Þ¸ð¸® ÁÖÀÇ¿¡ ¹æ¾îº®À» ¼³Ä¡ÇÏ°í ±× ¹üÀ§¸¦ ³Ñ¾î¼­´Â ÂüÁ¶ ½Ãµµ¸¦ °ÅÀýÇϸ鼭 Ưº°ÇÑ ÀÎÅÍ·´Æ®¸¦ ¹ß»ý½ÃŲ´Ù.

¸¸¾à ´ç½ÅÀÌ "Segmentation fault"³ª "core dumped", ȤÀº ÀÌ¿Í ºñ½ÁÇÑ °°Àº À¯´Ð½º ¸Þ½ÃÁö¸¦ º» ÀûÀÌ ÀÖ´Ù¸é ÀÌÁ¦ ÀÌ°ÍÀÌ ¹«¾ùÀ» ¶æÇÏ´ÂÁö Á¤È®ÇÏ°Ô ¾Ë ¼ö ÀÖÀ» °ÍÀÌ´Ù ; ½ÇÇàÁßÀÎ ÇÁ·Î±×·¥ÀÌ Àڽſ¡°Ô ÇÒ´çµÈ ¹üÀ§ ¹ÛÀÇ ¸Þ¸ð¸®¸¦ Á¢±ÙÇÏ·Á°í ÇÏ´Ù°¡ Ä¡¸íÀûÀÎ ÀÎÅÍ·´Æ®¸¦ ¹ß»ý½ÃŲ °ÍÀÌ´Ù. ÀÌ°Ç ÇÁ·Î±×·¥»ó¿¡ ¹ö±×°¡ Á¸ÀçÇÏ°í ÀÖÀ½À» ¾Ë·ÁÁØ´Ù; core dump ÀÇ °æ¿ì ÈÄ¿¡ ¿¡·¯ »çÇ×À» Áø´ÜÇÒ ¼ö ÀÖ´Â Á¤º¸¸¦ ÆÄÀÏ·Î ³²°ÜÁֱ⠶§¹®¿¡ ÇÁ·Î±×·¡¸Ó°¡ ±×°ÍÀ» ºÐ¼®ÇÏ¿© ¹®Á¦¸¦ ÇØ°áÇÏ´Â °ÍÀ» µµ¿ÍÁØ´Ù.


´ÙÀ½ ÀÌÀü Â÷·Ê