The Linux Kernel Copyright ¨Ï 1996-1999 David A Rusling david.rusling@arm.com REVIEW, Version 0.8-3 1999³â 1¿ù 25ÀÏ ÀÌ Ã¥Àº ¸®´ª½º Ä¿³ÎÀÌ ¾î¶»°Ô µ¿ÀÛÇÏ´ÂÁö ¾Ë°í ½Í¾îÇÏ´Â ¸®´ª½ºÀÇ ÆÒµéÀ» À§ÇÑ °ÍÀÌ´Ù. ÀÌ Ã¥Àº ³»ºÎ±¸Á¶¿¡ ´ëÇÑ ¸Å´º¾óÀÌ ¾Æ´Ï´Ù. À̺¸´Ù´Â ¸®´ª½º Ä¿³ÎÀÌ ¾î¶»°Ô µ¿ÀÛÇÏ°í ¿Ö ±×·¸°Ô ÇÏ´ÂÁö, ¸®´ª½º°¡ »ç¿ëÇÏ´Â ±Ùº» ¿ø¸® ¿Í ÀÛµ¿¹æ½ÄÀ» ¼³¸íÇÑ´Ù. ¸®´ª½º´Â °è¼Ó º¯ÇÏ°í ÀÖ´Ù. ÀÌ Ã¥Àº ÇöÀç °¡Àå ¾ÈÁ¤ÀûÀÌ°í, °³Àΰú ȸ»ç¿¡¼­ °¡Àå ¸¹ÀÌ »ç¿ëÇÏ°í ÀÖ´Â 2.0.33 ¼Ò½º¸¦ ¹ÙÅÁÀ¸·Î ÇÑ´Ù. ÀÌ Ã¥Àº ÀÚÀ¯·Ó°Ô ¹èÆ÷ÇÒ ¼ö ÀÖÀ¸¸ç, ƯÁ¤ Á¶°Ç¸¸ ¸¸Á·ÇÑ´Ù¸é º¹»çÇϰųª Àç¹èÆ÷µµ ÇÒ ¼ö ÀÖ´Ù. ÀÌ¿¡ ´ëÇؼ­´Â ÀúÀ۱ǰú ¹èÆ÷¿¡ °üÇÑ ±ÛÀ» ÂüÁ¶Çϱ⠹ٶõ´Ù. ===================================================================== ¸®´ª½º Ä¿³Î Copyright ¨Ï 1999- µ¹µµ³¢ linux@flyduck.com http://linux.flyduck.com/tlk/ Version 0.8-3, ¹ø¿ªÆÇ 0.1.0 1999³â 11¿ù 8ÀÏ ÀÌ Ã¥Àº ¸®´ª½º ¹®¼­È­ ÇÁ·ÎÁ§Æ®(Linux Documentation Project)ÀÇ ÇϳªÀÎ David A RuslingÀÇ Àú¼­ À» ¹ø¿ªÇÑ °ÍÀÌ´Ù. ¹ø¿ªÀº ¼­¿ï´ë ÄÄÇ»ÅÍ ¿¬±¸È¸ Á¹¾÷»ý ¸ðÀÓÀÎ µ¹µµ³¢¿¡¼­ ÇÏ¿´´Ù. ÀÌ ¹®¼­´Â ÀÚÀ¯ ·Ó°Ô ¹èÆ÷ÇÒ ¼ö ÀÖÀ¸¸ç, »ó¾÷ÀûÀ¸·Î ÀÌ¿ëÇÒ ¼ö ¾ø´Ù. ±× ¿Ü´Â ÀúÀÚ°¡ ¸í½Ã ÇÑ ¶óÀ̼±½º ±Ô¾à¿¡ µû¸¥´Ù. ===================================================================== ¸ñÂ÷ ¼­¹® (Prefaces) 1. Çϵå¿þ¾îÀÇ ±âÃÊ (Hardware Basics) 2. ¼ÒÇÁÆ®¿þ¾îÀÇ ±âÃÊ (Software Basics) 3. ¸Þ¸ð¸® °ü¸® (Memory Management) 4. ÇÁ·Î¼¼½º (Processes) 5. ÇÁ·Î¼¼½º°£ Åë½Å ¸ÞÄ¿´ÏÁò (Interprocess Communication Mechanisms) 6. PCI 7. ÀÎÅÍ·´Æ®¿Í ÀÎÅÍ·´Æ® ó¸® (Interrupt and Interrupt Handling) 8. µð¹ÙÀ̽º µå¶óÀ̹ö (Device Drivers) 9. ÆÄÀÏ ½Ã½ºÅÛ (The File System) 10. ³×Æ®¿öÅ© (Networks) 11. Ä¿³Î ¸ÞÄ¿´ÏÁò (Kernel Mechanisms) 12. ¸ðµâ (Modules) 13. ÇÁ·Î¼¼¼­ (Processors) 14. ¸®´ª½º Ä¿³Î ¼Ò½º (The LInux Kernel Sources) ¿ë·Ê (Glossary) ===================================================================== ¼­¹® ¸®´ª½º´Â ÀÎÅͳÝÀÇ ÇÑ Çö»óÀÌ´Ù. ¸®´ª½º´Â ÇÑ ÇлýÀÇ Ãë¹Ì ÇÁ·ÎÁ§Æ®·Î ½ÃÀÛÇؼ­, ÀÌÁ¦´Â ¹«·á·Î ¾òÀ» ¼ö ÀÖ´Â ´Ù¸¥ ¾î¶² ¿î¿µÃ¼Á¦º¸´Ùµµ ´ëÁßÀû À¸·Î ¼ºÀåÇß´Ù. ¸¹Àº »ç¶÷µé¿¡°Ô ¸®´ª½º´Â ¼ö¼ö²²³¢ÀÌ´Ù. ¾î¶»°Ô °øÂ¥Àε¥ µµ ¾µ¸¸ÇÑ °ÍÀÏ ¼ö ÀÖÀ»±î? ¸î ¾ÈµÇ´Â ´ë±Ô¸ð ¼ÒÇÁÆ®¿þ¾î ȸ»çµéÀÌ ÆÇÄ¡´Â ¼¼»ó¿¡¼­, ¾î¶»°Ô ÇÑ ¶¼ÀÇ "ÇØÄ¿µé" ÀÌ ¸¸µç ¼ÒÇÁÆ®¿þ¾î°¡ À̵é°ú ÇÔ²² °æÀïÇÒ ¼ö ÀÖÀ»±î? Àü¼¼°èÀÇ ¼­·Î ´Ù¸¥ ³ª¶óÀÇ ¼­·Î ´Ù¸¥ »ç¶÷µéÀÌ ±â¿©ÇÑ ¼ÒÇÁÆ®¿þ¾î°¡ ¾î¶»°Ô ¾ÈÁ¤ÀûÀ̸鼭 µ¿½Ã¿¡ È¿À²ÀûÀÏ ¼ö ÀÖÀ»±î? ÇÏÁö¸¸ ¸®´ª½º´Â ¾ÈÁ¤ÀûÀÌ°í È¿À²ÀûÀÎ µ¿½Ã¿¡ °æÀï±îÁö ÆîÄ¡°í ÀÖ´Ù. ¸¹Àº ´ëÇаú ¿¬±¸±â°ü¿¡¼­ ÀÏ»óÀûÀÎ ÄÄÇ»ÅÍ ¾÷¹«¿¡ ¸®´ª½º¸¦ »ç¿ëÇÏ°í ÀÖ´Ù. Áý¿¡ ÀÖ´Â ÄÄÇ»ÅÍ¿¡¼­ ¸®´ª½º¸¦ »ç¿ëÇÏ´Â »ç¶÷µµ ÀÖ°í, ´ëºÎºÐÀÇ È¸»çµéµµ ¸®´ª½º¸¦ »ç¿ëÇÏ°í ÀÖ´Ù´Â °ÍÀ» ½Ç°¨ÇÏÁö´Â ¸øÇÒÁö¶óµµ ¾îµð¼±°¡ Ʋ¸²¾øÀÌ ¸®´ª½º¸¦ »ç¿ëÇÏ°í ÀÖ´Ù. ±×µéÀº ¸®´ª½º¸¦ À¥»çÀÌÆ®¸¦ º¸°í, À¥»çÀÌÆ®¸¦ ±¸ÃàÇÏ°í, À̸ÞÀÏÀ» º¸³»°í, ´Ã ÇϵíÀÌ °ÔÀÓÀ» Çϴµ¥ »ç¿ëÇÑ´Ù. ¸®´ª½º´Â °á´ÜÄÚ Àå³­°¨ÀÌ ¾Æ´Ï´Ù. ¸®´ª½º´Â Àü¼¼°èÀÇ ¾ÖÈ£°¡µéÀÌ »ç¿ëÇÏ°í ÀÖ´Â, ¿ÏÀüÈ÷ °³¹ßµÇ°í Àü¹®ÀûÀ¸·Î ¸¸µé¾îÁø ¿î¿µÃ¼Á¦ÀÌ´Ù. ¸®´ª½ºÀÇ ±â¿øÀº UnixTMÀÇ ½ÃÀÛ±îÁö °Å½½·¯ ¿Ã¶ó°£´Ù. 1969³â º§ ¿¬±¸¼Ò (Bell Laboraties) ¿¬±¸ ±×·ì(Research Group)ÀÇ ÀÏ¿øÀÎ ÄË Åè½¼(Ken Thompson)Àº ³î°í ÀÖ´Â PDP-7À» ÀÌ¿ëÇÏ¿© ¸ÖƼÀ¯Àú,¸ÖƼŽºÅ· ¿î¿µÃ¼Á¦ ¸¦ ½ÇÇèÇϱ⠽ÃÀÛÇß´Ù. °ð µ¥´Ï½º ¸®Ä¡(Dennis Richie)°¡ ÇÕ·ùÇÏ¿´°í,µÑ Àº ¿¬±¸ ±×·ìÀÇ ´Ù¸¥ »ç¶÷µé°ú ÇÔ²² À¯´Ð½ºÀÇ Ãʱâ¹öÀüÀ» ¸¸µé¾ú´Ù. ¸®Ä¡ ´Â ÀÌÀü¿¡ ¼öÇàÇÑ MULTICS¶ó´Â ÇÁ·ÎÁ§Æ®¿¡ Å©°Ô ¿µÇâÀ» ¹Þ¾Ò´Âµ¥, À¯´Ð½º ¶ó´Â À̸§ ÀÚü°¡ MULTICS¿¡ ºø´ë¾î ÁöÀº °ÍÀÌ´Ù. Ãʱ⠹öÀüÀº ¾î¼Àºí¸® ÄÚµå·Î ÀÛ¼ºÇÏ¿´À¸¸ç, ¼¼¹ø° ¹öÀüÀº »õ·Î¿î ÇÁ·Î±×·¡¹Ö ¾ð¾îÀÎ C·Î ´Ù½Ã ÀÛ¼ºÇÏ¿´´Ù. ¸®Ä¡´Â ¿î¿µÃ¼Á¦¸¦ ¸¸µå´Âµ¥ »ç¿ëÇÒ ¸ñÀûÀ¸·Î C ÇÁ·Î±×·¡¹Ö ¾ð¾î¸¦ ¼³°èÇÏ°í ¸¸µé¾ú´Ù. C·Î °íÃĽè±â ¶§¹®¿¡ µðÁöÅÐ(Digital)ÀÇ ´õ¿í °­·ÂÇÑ PDP-11/45¿Í 11/70 ÄÄÇ»ÅÍ·Î À¯´Ð½º¸¦ ¿Å±æ ¼ö ÀÖ¾ú´Ù. ±× ÀÌÈÄ´Â ÈçÈ÷ ÇÏ´Â ¸»·Î ¿ª»ç°¡ µÇ¾ú´Ù. À¯´Ð½º´Â ¿¬±¸¼Ò¿¡¼­ ³ª¿Í ÄÄÇ»ÅÍ ¼¼°èÀÇ ÁÖ·ù¿¡ ÆíÀԵǾú°í, °ð ´ëºÎºÐÀÇ ÁÖ¿ä ÄÄÇ»ÅÍ »ý»ê¾÷üµéÀº ÀڽŵéÀÇ À¯´Ð ½º ¹öÀüÀ» ¸¸µé¾î ³»³õ¾Ò´Ù. ¸®´ª½º´Â ´Ü¼øÇÑ ¿å±¸¸¦ ¸¸Á·½ÃÄÑÁØ ÇØ´äÀ̾ú´Ù. ¸®´ª½ºÀÇ ÀÛ¼ºÀÚÀÌÀÚ ÁÖ °ü¸®ÀÚÀÎ ¸®´©½º Åä¹ßÁî(Linus Tovalds)°¡ °®°í ³î¸¸ÇÑ À¯ÀÏÇÑ ¼ÒÇÁÆ®¿þ¾î ´Â ¹Ì´Ð½º(Minix)¿´´Ù. ¹Ì´Ð½º´Â À¯´Ð½º¿Í ºñ½ÁÇÑ, °£´ÜÇÑ ¿î¿µÃ¼Á¦·Î¼­ ±³À°¸ñÀûÀ¸·Î ³Î¸® ¾²ÀÌ°í ÀÖ¾ú´Ù. ¸®´©½º´Â ¹Ì´Ð½ºÀÇ ±â´É¿¡ ¸¸Á·ÇÏÁö ¸øÇß°í, Àڱ⳪¸§ÀÇ ¼ÒÇÁÆ®¿þ¾î¸¦ ¸¸µé¾î À̸¦ ÇØ°áÇÏ·Á°í Çß´Ù. ±×´Â ÇÐâ½ÃÀý ¶§ Àͼ÷ÇÑ ¿î¿µÃ¼Á¦ÀÎ À¯´Ð½º¸¦ ¸ðµ¨·Î »ï°í, ÀÎÅÚ 386 PC¿¡¼­ ÇÁ·Î±×·¥À» ¸¸µé±â ½ÃÀÛÇß´Ù. ÀÛ¾÷Àº ¸Å¿ì ºü¸£°Ô ÁøôµÇ¾ú°í, ÀÌ¿¡ °í¹« ¹ÞÀº ¸®´©½º´Â ÀÚ½ÅÀÇ ³ë·ÂÀÇ °á°ú¹°À» ´ç½Ã ¸· µîÀåÇÏ´ø Àü¼¼°èÀûÀÎ ÄÄÇ» ÅÍ ³×Æ®¿÷À» ÅëÇÏ¿© ´Ù¸¥ Çлýµé¿¡°Ô Á¦°øÇÏ¿´´Ù. ±×¸®ÇÏ¿© ¸®´ª½º´Â ´ëÇÐ »çȸ¿¡¼­ ÁÖ·Î ¾²ÀÌ°Ô µÇ¾ú´Ù. ¼ÒÇÁÆ®¿þ¾î¸¦ º¸°í ÀÌ¿¡ °øÇåÇÏ´Â »ç¶÷ÀÌ ³ªÅ¸³ª±â ½ÃÀÛÇß´Ù. ±×µéÀº ÀÚ½ÅÀÌ ÀÌÀü¿¡ °¡Á³´ø ¹®Á¦Á¡µéÀ» ÇØ°áÇϴµ¥ »ç¿ëÇß´ø ¹æ¹ýµéÀ» »õ·Î¿î ¼ÒÇÁÆ®¿þ¾î¿¡ Àû¿ëÇß´Ù. ¿À·¡Áö ¾Ê¾Æ ¸®´ª½º´Â ¿î¿µÃ¼Á¦ÀÇ ¸ð½ÀÀ» °®Ãß°Ô µÇ¾ú´Ù. Áß¿äÇÑ Á¡Àº ¸®´ª½º°¡ À¯´Ð½º Äڵ带 ´Ü ÇÑ ÁÙµµ °¡Áö°í ÀÖÁö ¾Ê´Ù´Â »ç½ÇÀÌ´Ù. ¸®´ª½º´Â °øÇ¥µÈ POSIX Ç¥ÁØ¿¡ µû¸£´Â ¿ÏÀüÈ÷ »õ·Î Â¥¿©Áø °ÍÀÌ´Ù. ¸®´ª½º´Â ¸Þ»çÃß¼¼Ã÷ÁÖ Ä·ºê¸®Áö¿¡ ÀÖ´Â ¹«·á ¼ÒÇÁÆ®¿þ¾î Àç´Ü(Free Software Foundation)¿¡¼­ ¸¸µç GNU (GNU's Not UnixTM) ¼ÒÇÁÆ®¿þ¾î·Î ¸¸µé¾îÁö°í, ¸¹Àº GNU ¼ÒÇÁÆ®¿þ¾îµé À» »ç¿ëÇÑ´Ù. ´ëºÎºÐÀÇ »ç¶÷µéÀº ´ÜÁö ¿©·¯ Á¾·ùÀÇ Àß ¸¸µé¾îÁø CD-ROM ¹èÆ÷ÆÇ Áß Çϳª ¸¦ ¼³Ä¡ÇÏ°í, ¸®´ª½º¸¦ °£´ÜÇÑ µµ±¸·Î¼­ »ç¿ëÇÑ´Ù. »ó´ç¼öÀÇ ¸®´ª½º »ç¿ë ÀÚµéÀº ÇÁ·Î±×·¥À» ÀÛ¼ºÇϰųª, ´Ù¸¥ »ç¶÷ÀÌ ¸¸µç ÇÁ·Î±×·¥À» ½ÇÇàÇϴµ¥ ¸®´ª½º¸¦ »ç¿ëÇÑ´Ù. ¸¹Àº ¸®´ª½º »ç¿ëÀÚµéÀº ¿­½ÉÈ÷ HOWTO ¹®¼­¸¦ Àаí, ½Ã½ºÅÛÀÇ ÇÑ ºÎºÐÀ» Á¦´ë·Î ¼³Á¤ÇÏ¿´À» ¶§´Â ¼º°øÀÇ ÀüÀ²°¨À» ´À³¢Áö¸¸, µ¿½Ã¿¡ Á¦´ë·Î µ¿ÀÛÇÏÁö ¾Ê´Â °æ¿ì ½ÇÆÐÀÇ ÁÂÀý°¨À» ¸Àº¸±âµµ ÇÑ´Ù. ¼Ò¼ö ÀÇ »ç¿ëÀÚ´Â µð¹ÙÀ̽º µå¶óÀ̹ö¸¦ ¸¸µé°í, Ä¿³ÎÀ» ¼öÁ¤ÇÏ¿© ¸®´ª½º Ä¿³ÎÀÇ Á¦ÀÛÀÚÀ̸鼭 °ü¸®ÀÚÀÎ ¸®´©½º Åä¹ßÁî¿¡°Ô º¸³¾ Á¤µµ·Î ¿­¼ºÀÌ´Ù. ¸®´©½º ´Â ¾îµð¼­µç, ´©±¸ÇÑÅ×¼­µç Ä¿³Î ¼Ò½º¿¡ ´ëÇÑ Ãß°¡³ª ¼öÁ¤À» ¹Þ¾ÆµéÀδÙ. ÀÌ°ÍÀº ¾óÇÍ ¹«Á¤ºÎÁÖÀÇÀûÀÎ ¹æ¹ýó·³ µé¸± ¼öµµ ÀÖ°ÚÁö¸¸, ¸®´©½º´Â »õ ÄÚµåµéÀ» ¾ö°ÝÇÏ°Ô °Ë»çÇÏ°í ¸ðµç Äڵ带 ÀÚ½ÅÀÌ Á÷Á¢ Ä¿³Î¿¡ Ãß°¡ÇÑ´Ù. ±×·¸±ä ÇÏÁö¸¸, ½ÇÁ¦·Î ¾î´À ÇÑ ½ÃÁ¡¿¡¼­ ¸®´ª½º Ä¿³Î ¼Ò½º ÀÛ¾÷¿¡ Âü¿©ÇÏ ´Â »ç¶÷µéÀÇ ¼ö´Â ¼Õ¿¡ ²ÅÀ» ¼ö ÀÖ´Â Á¤µµ¿¡ ºÒ°úÇÏ´Ù. ´ëºÎºÐÀÇ ¸®´ª½º »ç¿ëÀÚµéÀº ¿î¿µÃ¼Á¦°¡ ¾î¶»°Ô µ¿ÀÛÇÏ´ÂÁö, °¢ ºÎºÐµéÀÌ ¾î¶»°Ô ¸Â¹°·Á µ¹¾Æ°¡´ÂÁö ´«¿©°Ü º¸Áö ¾Ê´Â´Ù. ±×·¯³ª ¸®´ª½º¸¦ ÀÚ¼¼È÷ »ìÆ캸´Â °ÍÀº ¿î¿µÃ¼Á¦ÀÇ µ¿ÀÛ ¿ø¸®¸¦ ¹è¿ì´Â ÈǸ¢ÇÑ ¹æ¹ýÀÓÀ» »ý°¢ÇØ º»´Ù¸é ÀÌ´Â ºÎ²ô·¯¿î ÀÏÀÌ´Ù. ¸®´ª½º ¼Ò½º´Â ¸Å¿ì Àß ¸¸µé¾îÁ³À» »Ó¸¸ ¾Æ´Ï¶ó ±× ´©±¸µçÁö ÀÚÀ¯·Ó°Ô »ìÆ캼 ¼ö ÀÖµµ·Ï ¿ÏÀüÈ÷ °ø°³µÇ¾î ÀÖ´Ù. ÀÌ°ÍÀº ÀÛ¼ºÀÚµéÀÌ ¼ÒÇÁÆ®¿þ¾î¿¡ ´ëÇØ ÀúÀÛ±ÇÀ» ¼ÒÀ¯ÇÏ°í´Â ÀÖÁö¸¸, ¹«·á ¼ÒÇÁÆ®¿þ¾î Àç´ÜÀÇ GNU °ø°³ ¶óÀ̼±½º¿¡ µû¶ó ±× ¼Ò½º Äڵ带 ÀÚÀ¯·Ó°Ô ¹èÆ÷ÇÒ ¼ö ÀÖµµ·Ï Çϱ⠶§¹®ÀÌ´Ù. ±×·¸Áö¸¸ ¸·»ó ¼Ò½º Äڵ带 óÀ½ ¸¶ÁÖÄ¥ ¶§´Â À̵éÀÌ ¹ºÁö ¹«Ã´ È¥µ¿½º·¯¿ï °ÍÀÌ´Ù. kernel, mm, netµîÀÇ µð·ºÅ丮 °¡ ´«¿¡ ¶ç°ÚÁö¸¸, ÀÌ ¾È¿¡´Â ¾î¶² Äڵ尡 ´ã°Ü ÀÖÀ¸¸ç ±× ÄÚµåµéÀº ¾î¶» °Ô µ¿ÀÛÇÒ °ÍÀΰ¡? ¿©±â¼­ ÇÊ¿äÇÑ °ÍÀº ¸®´ª½ºÀÇ Àü¹ÝÀûÀÎ ±¸Á¶¿Í ¸ñÀû¿¡ ´ëÇØ Æø³Ð°Ô ÀÌÇØÇÏ´Â °ÍÀÌ´Ù. ÀÌ°ÍÀº °£´ÜÈ÷ ¸»ÇÏÀÚ¸é ¹Ù·Î ÀÌ Ã¥ÀÇ ¸ñÀû À̱⵵ ÇÏ´Ù. Áï ¸®´ª½º¶ó´Â ¿î¿µÃ¼Á¦°¡ ¾î¶»°Ô µ¿ÀÛÇÏ´ÂÁö ¸íÈ®È÷ ÀÌÇØÇÒ ¼ö ÀÖµµ·Ï µµ¿ÍÁÖ´Â °ÍÀÌ´Ù. ´Ù½Ã ¸»Çϸé ÆÄÀÏÀ» º¹»çÇϰųª À̸ÞÀÏÀ» ÀÐÀ» ¶§, ¸®´ª ½º ½Ã½ºÅÛ ³»ºÎ¿¡¼­ ¾î¶² ÀϵéÀÌ ÀϾ´Â °¡¸¦ ¸Ó¸´¼Ó¿¡¼­ ±×·Áº¼ ¼ö ÀÖµµ·Ï ÇÏ·Á´Â °ÍÀÌ´Ù. ÇÊÀÚ´Â ¿î¿µÃ¼Á¦°¡ ½ÇÁ¦·Î ¾î¶»°Ô µ¿ÀÛÇÏ´ÂÁö óÀ½ ±ú´Þ¾ÒÀ» ¶§ ´À²¼´ø ÈïºÐÀ» ¾ÆÁ÷µµ Àß ±â¾ïÇÏ°í ÀÖ´Ù. ±× ÈïºÐÀÌ ÀÌ Ã¥À» Àд µ¶Àڵ鿡°Ô ÀüÇØÁö±æ ¹Ù¶õ´Ù. ³»°¡ óÀ½À¸·Î ¸®´ª½º¿Í °ü°è¸¦ ¸ÎÀº°ÍÀº 1994³â ÈĹÝ, ¾ËÆÄ AXPÇÁ·Î¼¼¼­ ±â¹Ý ½Ã½ºÅÛÀ¸·Î ¸®´ª½º Æ÷Æà ÀÛ¾÷À» ÇÏ´ø Áü ÆĶóµð½º(Jim Paradis)¸¦ ¹æ¹®ÇßÀ» ¶§´Ù. ³ª´Â 1984³âºÎÅÍ µðÁöÅÐ ÀÌÅ¢¸ÕÆ®(Digital Equipment Co, Ltd, ÁÙ¿©¼­ DEC ¶Ç´Â µðÁöÅÐÀ̶ó°í ÇÔ)¿¡¼­ ÁÖ·Î ³×Æ®¿÷ ¹× Åë½Å°ü·Ã ºÐ¾ß¿¡¼­ ÀÏÇØ ¿Ô¾ú°í, 1992³â¿¡´Â »õ·Î ±¸¼ºµÈ µðÁöÅÐ ¹ÝµµÃ¼ ºÎ¼­¿¡¼­ ¾÷¹«¸¦ ¸Ã°Ô µÇ¾ú´Ù. ±× ºÎ¼­ÀÇ ¸ñÇ¥´Â »ó¿ë ¹ÝµµÃ¼Ä¨ °ø±Þ ½ÃÀå¿¡ Àü¸éÀû À¸·Î ÁøÀÔÇÏ¿© ĨÀ» ÆǸÅÇÏ´Â °ÍÀ¸·Î, ±¸Ã¼ÀûÀ¸·Î´Â ¾ËÆÄ AXP °èÅëÀÇ ¸¶ÀÌÅ©·ÎÇÁ·Î¼¼¼­¿Í, DEC ¿ÜºÎ¿¡¼­ ¼³°èÇÑ ¾ËÆÄ AXP ½Ã½ºÅÛ º¸µå±îÁöµµ Ãë±Þ, ÆǸÅÇÏ´Â °ÍÀ̾ú´Ù. óÀ½ ¸®´ª½º¿¡ ´ëÇØ µè°í, ³ª´Â ±Ý¹æ ¸®´ª½º¿¡ Èï¹Ì¸¦ °®°Ô µÇ¾ú´Ù. ³ª´Â ÁüÀÇ ¿­Á¤¿¡ ²ø·È°í,Æ÷ÆÃÀÛ¾÷À» µ½±â ½ÃÀÛÇß´Ù. ÀÏÀ» °è¼ÓÇØ °¡¸é¼­ ³ª´Â ¸®´ª½º ¿î¿µÃ¼Á¦ ÀÚü»Ó¸¸ ¾Æ´Ï¶ó ±×°ÍÀ» ¸¸µé¾î ³»´Â ¿£Áö´Ï¾îµéÀÇ °øµ¿Ã¼¿¡ ´ëÇؼ­µµ Á¡Á¡ ±× Áø°¡¸¦ ¾Ë°Ô µÇ¾ú´Ù. ±×·¯³ª ¾ËÆÄ AXP´Â ¸®´ª½º°¡ µ¿ÀÛÇÏ´Â ¼ö¸¹Àº Çϵå¿þ¾î Ç÷§Æû °¡¿îµ¥ Çϳª¿¡ Áö³ªÁö ¾Ê´Â´Ù. ÇöÀç ¸®´ª½º Ä¿³ÎÀÇ ´ëºÎºÐÀº ÀÎÅÚ ÇÁ·Î¼¼¼­ ±â¹Ý ½Ã½ºÅÛ¿¡¼­ µ¹°í ÀÖÁö¸¸ ºñÀÎÅÚ ¸®´ª½º ½Ã½ºÅÛÀÇ ¼öµµ Á¡Á¡ ´Ã¾î³ª°í ÀÖ´Â Ãß¼¼´Ù. ¾ËÆÄ AXP, ARM, MIPS, Sparc, ±×¸®°í PowerPC µîÀÌ ±× ¿¹´Ù. ³ª´Â ÀÌ Ã¥À» ¾²¸é¼­ À̵é Ç÷§Æû Áß¿¡¼­ ¾î¶² °ÍÀ̵ç ÀÌ¿ëÇÒ¼ö ÀÖ¾úÁö¸¸, ³ªÀÇ ¸®´ª½º¿¡ ´ëÇÑ ±â¹ÝÁö½Ä°ú ±â¼úÀûÀÎ °æÇèÀº ÁÖ·Î ¾ËÆÄ AXP¿¡¼­ÀÌ°í, ARM¿¡¼­ µµ´Â ¸®´ª½º¿¡ ´ëÇØ ¾î´ÀÁ¤µµ ¾Ë°í ÀÖ´Â °ÍÀÌ´Ù. ÀÌ Ã¥¿¡¼­ Á¾Á¾ Å° Æ÷ÀÎÆ®¸¦ ¼³¸íÇϴµ¥ ºñÀÎÅÚ Çϵå¿þ¾î¸¦ ¿¹·Î µå´Â °ÍÀº ÀÌ ¶§¹®ÀÌ´Ù. ¸®´ª½º Ä¿³Î ¼Ò½ºÀÇ 95% °¡·®Àº ¸®´ª½º°¡ µ¿ÀÛÇÏ´Â ¸ðµç Çϵå¿þ¾î¿¡¼­ ±×´ë·Î »ç¿ëµÇ°í ÀÖ´Ù. ¸¶Âù°¡Áö·Î ÀÌ Ã¥ÀÇ 95% °¡·®Àº ¸®´ª½º Ä¿³ÎÁß¿¡¼­ Çϵå¿þ¾î¿Í ¹«°üÇÑ ºÎºÐ¿¡ ´ëÇÑ °ÍÀÌ´Ù. µ¶ÀÚÀÇ ÀÚ¼¼ ÀÌ Ã¥Àº µ¶ÀÚ°¡ °¡Áø Áö½ÄÀ̳ª °æÇè¿¡ ´ëÇØ ¾Æ¹«·± °¡Á¤µµ ÇÏÁö¾Ê°í ÀÖ´Ù. ³ª´Â µ¶ÀÚ°¡ ÁÖÁ¦·Î ´Ù·ç´Â ¹®Á¦¿¡ °ü½ÉÀ» °¡Áö°í ÀÖ´Ù¸é, ÇÊ¿äÇÑ ºÎºÐ¿¡ ´ëÇؼ­ ½º½º·Î °øºÎÇÏ°Ô µÇ¸®¶ó°í ¹Ï´Â´Ù. ÄÄÇ»ÅÍ¿¡ Ä£¼÷ÇÏ°í(¾Æ¸¶µµ PC ÀÌ°ÚÁö¸¸), C ÇÁ·Î±×·¡¹Ö ¾ð¾î¿¡ ´ëÇØ ¾î´ÀÁ¤µµ Áö½ÄÀ» °¡Áø´Ù¸é, µ¶ÀÚ ¿©·¯ºÐÀÌ ÀÌ ±Û¿¡¼­ ½ÇÁúÀûÀÎ À̵æÀ» ¾ò´Âµ¥ µµ¿òÀÌ µÉ °ÍÀÌ´Ù. ÀÌ Ã¥ÀÇ ±¸Á¶ ÀÌ Ã¥Àº ¸®´ª½ºÀÇ ³»ºÎ±¸Á¶¿¡ ´ëÇÑ ¸Å´º¾ó·Î ¸¸µç °ÍÀÌ ¾Æ´Ï´Ù. ±× ´ë½Å ÀϹÝÀûÀÎ ¿î¿µÃ¼Á¦, ƯÈ÷ ¸®´ª½º¿¡ ´ëÇÑ ¼Ò°³¼­°¡ µÉ °ÍÀÌ´Ù. °¢ Àå(íñ)Àº "ÀϹÝÀûÀÎ °Í¿¡¼­ ½ÃÀÛÇÏ¿© Ư¼öÇÑ °ÍÀ¸·Î ÀÛ¾÷ÇÏ´Â" ³ªÀÇ ±ÔÄ¢À» µû¸£°í ÀÖ´Ù. ¸ÕÀú ±× Àå¿¡¼­ ¼³¸íÇÏ·Á´Â Ä¿³Î ¼­ºê½Ã½ºÅÛÀÇ °³¿ä¸¦ Á¦½ÃÇÏ°í ³ª¼­, ´ÙÀ½À¸·Î ²ûÂïÇÑ »ó¼¼³»¿ëµéÀ» ´Ù·é´Ù. ³ª´Â ÀϺη¯ Ä¿³ÎÀÇ ÀÛµ¿¹æ½ÄÀÎ ¾Ë°í¸®ÁòÀ», ÇÔ¼ö X()°¡ ¾î¶² ÀڷᱸÁ¶ÀÇ ¾î¶² Ç׸ñÀÇ °ªÀ» Áõ°¡½ÃÅ°´Â ÇÔ¼ö Y()¸¦ ºÎ¸¥´Ù´Â ½ÄÀ¸·Î ¼³¸íÇÏÁö ¾Ê¾Ò´Ù. ÀÌ·± °ÍµéÀº Äڵ带 Àо¸é ¾Ë ¼ö ÀÖ´Â °ÍÀÌ´Ù. ³ª´Â ¾î¶² ÄÚµå ¸¦ ÀÌÇØÇϰųª ´Ù¸¥ »ç¶÷¿¡°Ô ±×°ÍÀ» ¼³¸íÇØ¾ß ÇÒ ¶§¸¶´Ù, Á¾Á¾ Ä¥ÆÇ¿¡ ÀڷᱸÁ¶¸¦ ±×¸®´Â ÀϺÎÅÍ ½ÃÀÛÇÏ°ï Çß´Ù. ¸¶Âù°¡Áö·Î, ³ª´Â ¿©·¯°³ÀÇ ¼­·Î °ü·ÃµÈ Ä¿³Î ÀڷᱸÁ¶¿Í ±×µéÀÇ »ó°ü°ü°è¸¦ ¾ÆÁÖ ÀÚ¼¼ÇÏ°Ô ¼³¸íÇß´Ù. °¢ Àå¿¡¼­ ´Ù·ç´Â ¸®´ª½º Ä¿³Î ¼­ºê½Ã½ºÅÛÀÌ ±×·¸µí, À̵éÀ» ´Ù·ç´Â °¢ Àå Àº ¾ÆÁÖ µ¶¸³ÀûÀÌ´Ù. ÇÏÁö¸¸ À̵û±Ý ¸î¸î ÀåÀº ¿¬°üµÇ¾î ÀÖ´Ù. ¿¹¸¦ µé¸é, °¡»ó ¸Þ¸ð¸®°¡ ¾î¶»°Ô µ¿ÀÛÇÏ´ÂÁö ÀÌÇØÇÏÁö ¸øÇÑ Ã¤ ÇÁ·Î¼¼½º¸¦ ¼³¸íÇÒ ¼ö ´Â ¾øÀ» °ÍÀÌ´Ù. 1Àå "Çϵå¿þ¾îÀÇ ±âÃÊ" Àå¿¡¼­´Â ¿äÁòÀÇ PC¿¡ ´ëÇØ °£·«È÷ ¼Ò°³ÇÑ´Ù. ¿î¿µ üÁ¦´Â ÀÚ½ÅÀÇ Åä´ë°¡ µÇ´Â Çϵå¿þ¾î ½Ã½ºÅÛ°ú ±ä¹ÐÇÏ°Ô ¿¬°áµÇ¾î µ¿ÀÛ ÇØ¾ß Çϸç, Çϵå¿þ¾î¸¸ Á¦°øÇÒ ¼ö ÀÖ´Â ¸î¸î ¼­ºñ½ºµéÀ» ÇÊ¿ä·Î ÇÑ´Ù. ¸®´ª½º ¿î¿µÃ¼Á¦¸¦ ¿ÏÀüÈ÷ ÀÌÇØÇÏ·Á¸é °ü·ÃµÈ Çϵå¿þ¾îÀÇ ±âº»ÀûÀÎ °ÍµéÀ» ÀÌÇØÇØ¾ß ÇÑ´Ù. 2Àå "¼ÒÇÁÆ®¿þ¾îÀÇ ±âÃÊ" Àå¿¡¼­´Â ±âº»ÀûÀÎ ¼ÒÇÁÆ®¿þ¾î ¿øÄ¢À» ¼Ò°³ÇÏ°í, ¾î¼Àºí¸®¿Í C ÇÁ·Î±×·¡¹Ö ¾ð¾î¸¦ »ìÆ캻´Ù. ÀÌ Àå¿¡¼­ ¸®´ª½º¿Í °°Àº ¿î¿µ üÁ¦¸¦ ¸¸µå´Âµ¥ »ç¿ëÇÏ´Â ÅøÀ» »ìÆ캸°í, ¿î¿µÃ¼Á¦ÀÇ ¸ñÀû°ú ±â´ÉµéÀ» °£·«È÷ ¼Ò°³ÇÑ´Ù. 3Àå "¸Þ¸ð¸® °ü¸®" Àå¿¡¼­´Â ¸®´ª½º¿¡¼­ ½Ã½ºÅÛ»óÀÇ ½ÇÁ¦ ¸Þ¸ð¸®¿Í °¡»ó ¸Þ¸ð¸®¸¦ °ü¸®ÇÏ´Â ¹æ¹ýÀ» ¼³¸íÇÑ´Ù. 4Àå "ÇÁ·Î¼¼½º"Àå¿¡¼­´Â ÇÁ·Î¼¼½º¶õ ¹«¾ùÀ̸ç, ¸®´ª½º Ä¿³ÎÀÌ ¾î¶»°Ô ÇÁ·Î ¼¼½º¸¦ »ý¼ºÇÏ°í °ü¸®ÇÏ¸ç »èÁ¦Çϴ°¡¿¡ ´ëÇÏ¿© ¼³¸íÇÑ´Ù. ÇÁ·Î¼¼½º´Â ±×µéÀÇ È°µ¿À» ÅëÇÕÇϱâ À§ÇØ ÇÁ·Î¼¼½º »çÀÌ¿¡, ±×¸®°í Ä¿³Î°ú Åë½ÅÇÑ´Ù. ¸®´ª½º´Â ¿©·¯ Á¾·ùÀÇ ÇÁ·Î¼¼½º°£ Åë½Å(Inter-Process Communication, IPC) ±¸Á¶¸¦ Áö¿øÇÑ´Ù. ½Ã±×³Î°ú ÆÄÀÌÇÁ´Â À̵é Áß ÀϺΠÀ̸ç, System V IPC(ÀÌ°ÍÀÌ Ã³À½ µîÀåÇÑ À¯´Ð½º ¹öÀüÀÇ À̸§À» µû¶ó ºÙ¿© Áø À̸§ÀÌ´Ù) ¸ÞÄ¿´ÏÁò ¿ª½Ã Áö¿øÇÑ´Ù. ÀÌ·¯ÇÑ ÇÁ·Î¼¼½º°£ Åë½Å ¸ÞÄ¿´ÏÁò Àº 5Àå¿¡¼­ ¼³¸íÇÏ°í ÀÖ´Ù. PCI(Peripheral Component Interconnect) Ç¥ÁØÀº ÀÌÁ¦ Àúºñ¿ë °í¼º´É PC¿ë µ¥ÀÌÅÍ ¹ö½º·Î¼­ È®°íÇÏ°Ô ÀÚ¸®Àâ¾Ò´Ù. 6Àå "PCI"Àå¿¡¼­´Â ¸®´ª½º Ä¿³ÎÀÌ ½Ã½ºÅÛ³»ÀÇ PCI ¹ö½ºµé°ú ÀåÄ¡µéÀ» ÃʱâÈ­ÇÏ°í »ç¿ëÇÏ´Â ¹æ¹ýÀ» ¼³¸íÇÑ´Ù. 7Àå "ÀÎÅÍ·´Æ®¿Í ÀÎÅÍ·´Æ® ó¸®" Àå¿¡¼­´Â ¸®´ª½º Ä¿³ÎÀÌ ¾î¶»°Ô ÀÎÅÍ·´Æ® ¸¦ ´Ù·ç´ÂÁö »ìÆ캻´Ù. Ä¿³ÎÀÌ ÀÎÅÍ·´Æ®¸¦ ó¸®ÇÏ´Â µ¥¿¡´Â ÀϹÝÀûÀÎ ¸ÞÄ¿´ÏÁò°ú ÀÎÅÍÆäÀ̽º°¡ ÀÖÁö¸¸, ¼¼ºÎÀûÀÎ ÀÎÅÍ·´Æ® 󸮴 Çϵå¿þ¾î¿Í ¾ÆÅ°ÅØó¿¡ µû¶ó ´Ù¸£´Ù. ¸®´ª½ºÀÇ °­Á¡ÁßÀÇ Çϳª´Â ¿äÁò PC¿¡¼­ »ç¿ëÇÒ ¼ö ÀÖ´Â ¸¹Àº Çϵå¿þ¾î ÀåÄ¡µéÀ» Áö¿øÇÑ´Ù´Â °ÍÀÌ´Ù. 8Àå "µð¹ÙÀ̽º µå¶óÀ̹ö" Àå¿¡¼­´Â ¸®´ª½º Ä¿³ÎÀÌ ½Ã½ºÅÛ¿¡ ÀÖ´Â ¹°¸®ÀûÀÎ ÀåÄ¡¸¦ Á¦¾îÇÏ´Â ¹æ¹ýÀ» ¼³¸íÇÑ´Ù. 9Àå "ÆÄÀÏ ½Ã½ºÅÛ" Àå¿¡¼­´Â ¸®´ª½º Ä¿³ÎÀÌ ¾î¶»°Ô ÆÄÀÏ ½Ã½ºÅÛ ³»ÀÇ ÆÄÀÏ µéÀ» ´Ù·ç´ÂÁö ¼³¸íÇÑ´Ù. ¶ÇÇÑ, °¡»ó ÆÄÀÏ ½Ã½ºÅÛ(Virtual File System, VFS)°ú ¸®´ª½º Ä¿³ÎÀÇ ½ÇÁ¦ ÆÄÀÏ ½Ã½ºÅÛ Áö¿ø ¹æ¹ýµµ ¼³¸íÇÑ´Ù. ³×Æ®¿öÅ·°ú ¸®´ª½º´Â °ÅÀÇ °°Àº Àǹ̸¦ °¡Áö´Â ´Ü¾îÀÌ´Ù. ½ÇÁ¦·Î ¸®´ª½º´Â ÀÎÅͳÝ, Áï ¿ùµå ¿ÍÀ̵å À¥(World Wide Web, WWW)ÀÇ »ê¹°ÀÌ´Ù. ¸®´ª½º °³¹ßÀÚµé°ú »ç¿ëÀÚµéÀº À¥À» ÀÌ¿ëÇÏ¿© Á¤º¸¿Í ¾ÆÀ̵ð¾î, Äڵ带 ±³È¯Çϸç, ¸®´ª½º ÀÚü´Â Á¾Á¾ ´ÜüµéÀÇ ³×Æ®¿öÅ·¿¡ ´ëÇÑ ¿ä±¸¸¦ Áö¿øÇϱâ À§ÇØ »ç¿ë µÈ´Ù. 10Àå "³×Æ®¿öÅ©" Àå¿¡¼­´Â ¾î¶»°Ô ¸®´ª½º°¡ ¾Ë·ÁÁø ³×Æ®¿öÅ© ÇÁ·ÎÅäÄÝÀ» Áö¿øÇÏ´ÂÁö TCP/IP·Î ÃÑ°ýÇÏ¿© ¼³¸íÇÑ´Ù. 11Àå "Ä¿³Î ¸ÞÄ¿´ÏÁò" Àå¿¡¼­´Â, Ä¿³ÎÀÇ ¿©·¯ ºÎºÐµéÀÌ È¿À²ÀûÀ¸·Î ÇÔ²² µ¿ÀÛÇÒ ¼ö ÀÖµµ·Ï ¸®´ª½º Ä¿³ÎÀÌ Á¦°øÇÏ´Â ¸î°¡Áö ÀϹÝÀûÀÎ ÀÛ¾÷°ú ¸ÞÄ¿´Ï Áò¿¡ ´ëÇØ »ìÆ캻´Ù. 12Àå "¸ðµâ" Àå¿¡¼­´Â ¸®´ª½º°¡ ¾î¶»°Ô ÆÄÀÏ ½Ã½ºÅÛ°°Àº ±â´É¿ä¼ÒµéÀ» µ¿ÀûÀ¸·Î, ÇÊ¿ä·Î ÇÒ ¶§¿¡¸¸ ·ÎµåÇÒ ¼ö ÀÖ´ÂÁö ¼³¸íÇÑ´Ù. 13Àå "ÇÁ·Î¼¼¼­" ÀåÀº ¸®´ª½º°¡ Æ÷ÆõǾî ÀÖ´Â ¿©·¯ ÇÁ·Î¼¼¼­µé¿¡ ´ëÇÑ °£·«ÇÑ ¼Ò°³±ÛÀ» ´ã°í ÀÖ´Ù. 14Àå "¼Ò½º" ÀåÀº Ä¿³ÎÀÇ Æ¯Á¤ ±â´É¿¡ ´ëÇØ ¾Ë°íÀÚ ÇÒ ¶§, ¸®´ª½º Ä¿³Î ¼Ò½º ÄÚµå ¾î´À°÷ºÎÅÍ ½ÃÀÛÇØ¾ß ÇÏ´ÂÁö ¼³¸íÇÑ´Ù. º»¼­ÀÇ Ç¥±â¹ý ÀÌ Ã¥¿¡¼­ »ç¿ëÇÑ È°ÀÚü Ç¥±â¹ýÀº ´ÙÀ½°ú °°´Ù.(TXT¿¡´Â º°·Î... --;;;) serif ±Û²Ã µ¶ÀÚ°¡ Á÷Á¢ ±×´ë·Î ÀÔ·ÂÇØ¾ß ÇÏ´Â ¸í·É¾î ¶Ç´Â ¹®ÀåÀ» ÀǹÌÇÑ´Ù. type ±Û²Ã ÀڷᱸÁ¶³ª ÀڷᱸÁ¶³»ÀÇ Ç׸ñÀ» °¡¸®Å²´Ù. Ã¥ Àüü¿¡ °ÉÃļ­ ¸®´ª½º Ä¿³Î ¼Ò½º¿¡ ÀÖ´Â Äڵ忡 ´ëÇÑ ÂüÁ¶ Ç¥½Ã°¡ ÀÖ´Ù (±× ¿¹·Î, º» ¹®Àå¿¡ ÀÎÁ¢ÇØ ÀÖ´Â Å׵θ®°¡ ÀÖ´Â ±Û»óÀÚ). ÀÌ´Â µ¶ÀÚ°¡ ¼Ò½º ÄÚµå ÀÚü¸¦ »ìÆ캸°íÀÚ ÇÒ °æ¿ì¸¦ À§Çؼ­À̸ç, ÂüÁ¶ÇÏ´Â ¸ðµç ÆÄÀÏ Àº /usr/src/linux µð·ºÅ丮¸¦ ±âÁØÀ¸·Î ÇÑ »ó´ëÀ§Ä¡ÀÌ´Ù. ¿¹¸¦ µé¾î foo/bar.c ÆÄÀÏÀÇ °æ¿ì ¿ÏÀüÇÑ ÆÄÀϸíÀº /usr/src/linux/foo/bar.c°¡ µÉ °ÍÀÌ´Ù. ÇöÀç ¸®´ª½º¸¦ ½ÇÇàÁßÀ̶ó¸é (´ç¿¬È÷ ±×·¡¾ß ÇÏ°ÚÁö¸¸) ¼Ò½º ÄÚµå ¸¦ µé¿©´Ùº¸´Â °ÍÀº °¡Ä¡ÀÖ´Â °æÇèÀ̸ç, µ¶ÀÚ´Â ÀÌ Ã¥À» ¼Ò½º ÄÚµåÀÇ ÀÌÇØ ¸¦ µ½°í ¶Ç ¿©·¯ ÀڷᱸÁ¶ÀÇ Àǹ̸¦ ÆľÇÇÏ´Â µ¥ À¯¿ëÇÑ Áöħ¼­·Î »ç¿ëÇÒ ¼ö ÀÖÀ» °ÍÀÌ´Ù. µî·Ï»óÇ¥ ARMÀº ARM Holdings PLCÀÇ µî·Ï»óÇ¥ÀÌ´Ù. Caldera, OpenLinux, ±×¸®°í "C" ·Î°í´Â Caldera, Inc.ÀÇ µî·Ï»óÇ¥ÀÌ´Ù. Caldera OpenDOS 1997 Caldera, Inc. DEC´Â Digital Equipment CorporationÀÇ µî·Ï»óÇ¥ÀÌ´Ù. DIGITALÀº Digital Equipment CorporationÀÇ µî·Ï»óÇ¥ÀÌ´Ù. Linux´Â Linus TorvaldsÀÇ µî·Ï»óÇ¥ÀÌ´Ù. Motif´Â The Open System Foundation, Inc.ÀÇ µî·Ï»óÇ¥ÀÌ´Ù. MSDOS´Â Microsoft CorporationÀÇ µî·Ï»óÇ¥ÀÌ´Ù. Red Hat, glint, ±×¸®°í Red Hat ·Î°í´Â Red Hat Software, Inc.ÀÇ µî·Ï »óÇ¥ÀÌ´Ù. UNIX´Â X/OpenÀÇ µî·Ï»óÇ¥ÀÌ´Ù. XFree86Àº XFree86 Project, Inc.ÀÇ µî·Ï»óÇ¥ÀÌ´Ù. X Window SystemÀº X Consortium°ú Massachusetts Institute of TechnologyÀÇ µî·Ï»óÇ¥ÀÌ´Ù. ÀúÀÚ ¼Ò°³ ³ª´Â 1957³â, ½ºÇªÆ®´ÏÅ©È£°¡ ¹ß»çµÇ±â ¸î ÁÖÀü ¿µ±¹ ºÏºÎ¿¡¼­ ž´Ù. ³ª´Â ´ëÇп¡¼­ À¯´Ð½º¸¦ óÀ½ Á¢Çß´Ù. °Å±â¼­ °­»ç´Â À¯´Ð½º¸¦ Ä¿³Î°ú ½ºÄÉÁ층 ¹× ´Ù¸¥ ¿î¿µÃ¼Á¦ÀÇ °³³äµéÀ» °¡¸£Ä¥ ¶§ ¿¹·Î »ç¿ëÇß´Ù. ³ª´Â Á¹¾÷³âµµ ÇÁ·ÎÁ§Æ®¸¦ À§ÇØ µµÀÔµÈ PDP-11 ½Ã½ºÅÛÀ» Áñ°Ü »ç¿ëÇß´Ù. 1982³â ÄÄÇ»ÅÍ°úÇаú¸¦ ÃÖ¿ìµîÀ¸·Î Á¹¾÷ÇÑ µÚ, ³ª´Â Prime Computers (Primos)¿¡¼­ ±Ù¹«ÇÏ¿´°í, 2³â ÈÄ µðÁöÅÐ(Digital)·Î ¿Å°å´Ù(VMS,Ultrix). µðÁöÅп¡ ÀçÁ÷ÇÏ´Â µ¿¾È ´Ù¾çÇÑ ¾÷¹«¸¦ ¸Ã¾Æ ÀÏÇߴµ¥, ¸¶Áö¸· 5³â°£Àº ¾ËÆÄ ¹× StrongARM Æò°¡¿ë º¸µå¸¦ ¼³°èÇÏ´Â ¹ÝµµÃ¼ ±×·ì¿¡¼­ ÀÏÇß´Ù. 1998³â ARMÀ¸·Î ¿Å°Ü ·Î¿ì ·¹º§ Æß¿þ¾î¸¦ ¸¸µé°í ¿î¿µÃ¼Á¦¸¦ Æ÷ÆÃÇÏ´Â ÀÛÀº ¿£Áö´Ï¾î ±×·ìÀ» ¸Ã°Ô µÇ¾ú´Ù. ³» ¾ÆÀ̵é(¿¡½º´õ¿Í ½ºÆ¼ºì)Àº ¾Æºü¸¦ ±«Â¥¶ó°í ºÎ¸¥´Ù. »ç¶÷µéÀÌ Á¾Á¾ Á÷Àå¿¡¼­³ª Áý¿¡¼­ ¸®´ª½º¿¡ ´ëÇÑ Áú¹®À» ´øÁö´Âµ¥, ³ª´Â ±×Àú °í¸¿°í ÇູÇÒ »ÓÀÌ´Ù. Á÷¾÷»óÀ¸·Î ¶Ç °³ÀÎÀûÀ¸·Î ¸®´ª½º¸¦ ¾²¸é ¾µ¼ö·Ï, ³ª´Â Á¡Á¡ ´õ ¸®´ª½º ±¤½Åµµ(zealot)°¡ µÇ¾î°¡°í ÀÖ´Ù. µ¶ÀÚµéÀº ¿©±â¼­ ¸Í½Åµµ(bigot)µîÀÌ ¾Æ´Ñ ±¤½Åµµ(zealot)¶ó´Â ¿ë¾î¸¦ ½èÀ½À» ´«¿©°Ü º¸¾ÆÁֱ⠹ٶõ´Ù. ÇÊÀÚ´Â '¸®´ª½º ±¤½Åµµ'¸¦, ´Ù¸¥ ¿î¿µÃ¼Á¦µéÀÇ Á¸Àç ¿ª½Ã ÀνÄÇÏ°í ÀÖÁö¸¸ ¾È¾²´Â ÆíÀ» ÅÃÇÑ ¿­¼ººÐÀÚ·Î Á¤ÀÇÇÑ´Ù. À©µµ¿ìÁî 95¸¦ ¾²´Â ³ªÀÇ ¾Æ³» ±æ(Gill)ÀÌ ¾ðÁ¨°¡ ÀÌ·¸°Ô ¸»Çß´Ù. "¿ì¸®°¡ ³²Æí ¿î¿µÃ¼Á¦´Ï ¾Æ³» ¿î¿µÃ¼Á¦´Ï ÇÏ´Â ¸»À» ¾²°Ô µÉ°Å¶ó°ï ÁüÀÛµµ ¸øÇß¾î¿ä". ¿£Áö´Ï¾îÀÎ ³»°Ô À־ ¸®´ª½º´Â ³ªÀÇ ¿ä±¸¿¡ ¿Ïº®ÇÏ°Ô ¸Â¾Æ ¶³¾îÁø´Ù. ¸®´ª½º´Â ³»°¡ Áý°ú ȸ»ç¿¡¼­ °°ÀÌ »ç¿ëÇÒ ¼ö ÀÖ´Â À¯¿¬ÇÏ°í Àû¿ëÇϱ⠽¬¿î ¿£Áö´Ï¾î¸µ µµ±¸À̸ç ÃÖ°íÀÇ ¿î¿µÃ¼Á¦ÀÌ´Ù. °øÂ¥·Î »ç¿ëÇÒ ¼ö ÀÖ´Â ¼ÒÇÁÆ®¿þ¾îÀÇ ´ëºÎºÐÀº ¸®´ª½º¿¡¼­ ½±°Ô ÄÄÆÄÀÏÀÌ µÇ¸ç, ¶§·Î´Â ¹Ì¸® ÄÄÆÄ ÀÏ µÈ ½ÇÇàÆÄÀÏÀ» ´Ù¿î·Îµå ¹Þ°Å³ª CDROM¿¡¼­ ¼³Ä¡ÇÒ ¼öµµ ÀÖ´Ù. °øÂ¥·Î C++À̳ª Perl ÇÁ·Î±×·¡¹ÖÀ» ¹è¿ì°í, Java¿¡ ´ëÇØ °øºÎÇϴµ¥ »ç¿ëÇÒ ¼ö ÀÖ´Â ´Ù¸¥°Ô ¹«¾ùÀÌ Àִ°¡! °¨»çÀÇ ±Û ¿ì¼± ½Ã°£À» ³»¾î ÀÌ Ã¥¿¡ ´ëÇØ À̸ÞÀÏ·Î ÁÖ¼®À» ´Þ¾Æ º¸³»ÁØ ¸¹Àº ºÐµé ¿¡°Ô °¨»çÇÑ´Ù. ³ª´Â »õ ÆÇÀ» ³¾ ¶§¸¶´Ù À̵é ÁÖ¼®µéÀ» ¸ðµÎ Æ÷ÇÔ½ÃÅ°·Á°í ÇØ ¿ÔÀ¸¸ç, ÀÌ´Â ÁÖ¼®À» ¹Þ´Â °Íº¸´Ù ´õ ÇູÇÑ ÀÛ¾÷À̾ú´Ù. ¾î·µç ³ªÀÇ »õ À̸ÞÀÏ ÁÖ¼Ò¸¦ ±â¾ïÇØÁÖ¸é °í¸¿°Ú´Ù. ¸¹Àº °­»çµéÀÌ ÀÌ Ã¥ÀÇ ÀϺθ¦ ÄÄÇ»Å͸¦ °¡¸£Ä¡´Âµ¥ ¾µ ¼ö ÀÖ´ÂÁö ÆíÁö·Î ¹°¾î¿Ô´Ù. ÀÌ¿¡ ´ëÇÑ ³ªÀÇ ´ë´äÀº ´ç¿¬È÷ "¿¹"ÀÌ´Ù. ÀÌ´Â ³»°¡ ƯÈ÷ ¹Ù·¨´ø ÀÌ Ã¥ÀÇ ¿ëµµ Áß ÇϳªÀÌ´Ù. ±× ¼ö¾÷¹Þ´Â Çлýµé Áß¿¡ ¶Ç ´Ù¸¥ ¸®´©½º Åä¹ßÁî°¡ ¾É¾ÆÀÖÀ»Áö ´©°¡ ¾Ë°Ú ´Â°¡. Ã¥ Àü¹Ý¿¡ °üÇؼ­ »ó¼¼ÇÏ°Ô °ËÅäÇØ ÁØ Á¸ ¸¯ºñ(John Rigby)¿Í ¸¶ÀÌŬ ¹Ù¿ì ¾î(Miachel Bauer)¿¡°Ô Ưº°È÷ °¨»çµå¸°´Ù. ½¬¿î ÀÏÀº ¾Æ´Ï¾úÀ»ÅÙµ¥µµ ³ªÀÇ Áú¹®¿¡ ÂüÀ»¼ºÀÖ°Ô ´ë´äÀ» ÇØÁØ ¾Ù·± ÄÛ½º(Alan Cox)¿Í ½ºÆ¼ºì Æ®À§ µð(Stephen Tweedie)¿¡°Ôµµ °¨»çµå¸°´Ù. °¢ ÀåÀ» Á»´õ Áñ°Ì°Ô Çϱâ À§ÇØ ·¡¸® ¿¡À®(Larry Ewing)ÀÇ Æë±ÏÀ» »ç¿ëÇß´Ù. ³¡À¸·Î, ÀÌ Ã¥À» ¸®´ª½º ¹®¼­ È­ ÇÁ·ÎÁ§Æ®(Linux Documentation Project, LDP)·Î ¹Þ¾ÆÁÖ°í À¥»çÀÌÆ®¿¡ ¿Ã·ÁÁØ ±×·º ÇÚŲ½º(Greg Hankins)¿¡°Ô °¨»çµå¸°´Ù. ===================================================================== ¿ªÀÚ ¼­¹® ÀÌ Ã¥Àº ¸®´ª½º ¹®¼­È­ ÇÁ·ÎÁ§Æ®ÀÇ(Linux Documentation Project)ÀÇ Çϳª ÀÎ David A RuslingÀÇ Àú¼­ À» ¹ÙÅÁÀ¸·Î ¹ø¿ªÇÑ °Í ÀÌ´Ù. ¹ø¿ªÀº ¼­¿ï´ë ÄÄÇ»ÅÍ ¿¬±¸È¸ Á¹¾÷»ý ¸ðÀÓÀÎ µ¹µµ³¢ÀÇ ¸¹Àº »ç¶÷µé ÀÌ Âü¿©ÇÏ¿© ÀÌ·ç¾îÁ³´Ù. ¿ø·¡´Â µ¹µµ³¢³»ÀÇ ¸®´ª½º ¿¬±¸ ¸ðÀÓ¿¡¼­ ¸®´ª½º Ä¿³ÎÀ» °øºÎÇÏ´ø Áß, ÀÌ ±ÛÀÌ ¸®´ª½º Ä¿³ÎÀ» ÀÌÇØÇϱ⿡ ÁÁÀº ±ÛÀ̶ó´Â »ý°¢ÀÌ µé¾î ¹ø¿ªÀ» ½ÃÀÛÇÏ°Ô µÇ¾ú°í ¸¹Àº »ç¶÷µéÀÇ µµ¿òÀ» ¹Þ¾Æ¼­ ÀÌ·ç¾î Áö°Ô µÇ¾ú´Ù. ¹ø¿ªÀº 1Â÷ ¹ø¿ª°ú 2Â÷ ¹ø¿ª µÎ °úÁ¤À¸·Î ÀÌ·ç¾îÁ³À¸¸ç, µÇµµ·Ï ¿ø¹®À» ¶æ À» »ì¸®¸é¼­ ¹®ÀåÀ» ¾Ë±â ½±°Ô °¡´Ùµë°í, ¹®¸ÆÀ» ÀÚ¿¬½º·´°Ô ÇÏ·Á°í Çß´Ù. ±×¸®°í ¼³¸íÀÌ ÇÊ¿äÇÑ ºÎºÐ¿¡ ´ëÇؼ­´Â µÇµµ·Ï ¸¹Àº ÁÖ¼®À» ´Þ·Á°í ÇßÀ¸¸ç, Ã¥ÀÇ ³»¿ë¿¡ Ãß°¡ÇÒ ³»¿ëÀº °¢ ÀåÀÇ ³¡¿¡ Ãß°¡ÇÏ·Á°í Çß´Ù. ¿ø¹®Àº Version 0.8-3À» ¹ÙÅÁÀ¸·Î ÇÏ¿´°í, Ã¥¿¡ ÀÖ´Â °¨¼ö ³ëÆ®(REVIEW NOTE) µîµµ ±×´ë·Î ³öµÎ¾ú´Ù. ¹ø¿ªÆÇÀÇ Ã¹ ¹öÀüÀº 0.1.0ÀÌ°í, ¿©±â¿¡´Â ¼­¹®À» Æ÷ÇÔÇÏ¿© 1ÀåºÎÅÍ 14Àå±îÁöÀÇ ¿ø¹®ÀÇ ³»¿ëÀÌ µé¾î ÀÖ´Ù. ¿©±â¿¡´Â ºÎ·ÏÀº ºüÁ® ÀÖÀ¸¸ç, ¸¶Áö¸·¿¡ ¿ë·ÊÁýÀÌ µé¾îÀÖ´Ù. ÀÌ ±ÛÀÌ ¸ðµç °ÍÀ» ´ã°í ÀÖ°í ¿ÏÀüÇÑ °ÍÀº ¾Æ´ÏÁö¸¸, ¸®´ª½º¸¦ °øºÎÇÏ´Â »ç¶÷µé¿¡°Ô ¸¹Àº µµ¿òÀÌ µÇ¸®¶ó°í »ý°¢ÇÑ´Ù. ÀÌ ±Û¿¡ À߸øµÈ ºÎºÐÀÌ Àְųª, º¸ÃæÇÒ ³»¿ëÀÌ ÀÖÀ¸¸é ¾ðÁ¦µçÁö linux@flyduck.comÀ¸·Î ¸ÞÀÏÀ» º¸³»Áֽðí, ´ÙÀ½¿¡ °³Á¤ÆÇÀ» ³¾ ¶§ ¹Ý¿µÇϵµ·Ï ÇÏ°Ú½À´Ï´Ù. ÀÌ ±ÛÀÇ °¡Àå ÃÖ½ÅÆÇÀº http://linux.flyduck.com/tlk/¿¡¼­ ±¸ÇÒ ¼ö ÀÖ´Ù. Âü°í·Î ¾ÆÁ÷ ÀÌ ¹ø¿ª¿¡ ´ëÇØ ÀúÀÚ¿¡°Ô¼­ °ø½ÄÀûÀÎ Çã¶ôÀ» ¹ÞÁø ¸øÇß´Ù. ÀúÀÚ¿¡°Ô ÆíÁö·Î ÀÌ ¹®¼­¸¦ Çѱ¹¾î·Î ¹ø¿ªÇÑ´Ù°í À̾߱⸦ ÇßÁö¸¸ ´äÀåÀÌ ¿ÀÁö ¾Ê¾Ò±â ¶§¹®¿¡, ¾ÕÀÇ ¾È³»¹®¿¡ µû¶ó ¾Ï¹¬ÀûÀ¸·Î Çã°¡ÇÑ °ÍÀ¸·Î »ý°¢ ÇÏ°í ÀÖ´Ù. ¸¶Áö¸·À¸·Î ÁÁÀº ±ÛÀ» ¾´ David A Rusling°ú ÀÌ ¹ø¿ª°úÁ¤¿¡ Âü¿©ÇØ ÁØ ¸ðµç ºÐµé²² °¨»çµå¸°´Ù. 1999³â 11¿ù 8ÀÏ µ¹µµ³¢ ===================================================================== ¹ø¿ª ±â·Ï 1Â÷ ¹ø¿ª : 1999³â 7¿ù 30ÀÏ - 1999³â 9¿ù 17ÀÏ 1Â÷¹ø¿ªÀº °Ô½ÃÆÇÀ» ÅëÇØ »ç¶÷µéÀÌ ÀÚÀ¯·Ó°Ô Âü¿©ÇÒ ¼ö ÀÖ´Â ÇüÅ·ΠÀÌ·ç¾îÁ³´Ù. ¿©±â¿¡´Â ½º¹°¸íÀÌ ³Ñ´Â »ç¶÷µéÀÌ Âü¿©ÇÏ¿´Áö¸¸, ´ÙÀ½ ³× »ç¶÷ÀÌ Å« °øÇåÀ» ÇÏ¿´´Ù. ÀÌÈ£ (flyduck) : flyduck@flyduck.com ½É¸¶·Î (maro) : °í¾ç¿ì (cat) : ±è¼º·æ : ÀÌ¿Ü¿¡ ´ÙÀ½ »ç¶÷µéÀÌ ¸¹Àº µµ¿òÀ» ÁÖ¾ú´Ù. ¼­Ã¢¹è (cbsuh) ½Å¹®¼® (scmoon) ±è±â¿ë (gyong) ±èÁø¼® (jinsuk) ¼ÕÀº¼® (soneus) Á¤Á÷ÇÑ (honest) À±°æÀÏ (kiyoon) È«°æ¼± (liberty) À̽ (icarus) À̽Âö (sclee) ÀÌ´ëÇö (donky) ±× ¹Û¿¡ Âü¿©ÇÑ »ç¶÷µéÀº ´ÙÀ½°ú °°´Ù. ÀÌÁØÈñ (jhlee), ȲÅ¿¬ (dolphin), ±èÇö¼®, truejaws, PCK, ±èÁ¾¿ø, ±ÝÈ­¼·, È«¼®±Ù 2Â÷ ¹ø¿ª : 1999³â 9¿ù 18ÀÏ - 1999³â 11¿ù 7ÀÏ 2Â÷ ¹ø¿ª¿¡´Â ´ÙÀ½ ¼¼»ç¶÷ÀÌ Âü¿©ÇÏ¿´À¸¸ç, °¢°¢ ´ÙÀ½°ú °°Àº ºÎºÐÀ» ¸Ã¾Ò´Ù. 2Â÷ ¹ø¿ª¿¡´Â ¿À¿ªÀ» Àâ°í, ¹®¸ÆÀ» ´ÙµëÀ¸¸ç, ÁÖ¼®À» ´Ù´Â ÀÏÀÌ Æ÷ÇԵǾúÀ¸¸ç, ÃÖÁ¾ÀûÀ¸·Î ±×¸²À» Ãß°¡ÇÏ°í ¹®¼­ Æ÷¸ËÀ» ÀÏÄ¡½ÃÅ°´Â ÀÏÀÌ Ãß°¡µÇ¾ú´Ù. ÀÌÈ£ (flyduck) : 1Àå - 8Àå, 11Àå - 14Àå °í¾ç¿ì (cat) : 9Àå ½É¸¶·Î (maro) : 10Àå Version 0.8-3, ¹ø¿ªÆÇ 0.1.0 : 1999³â 11¿ù 8ÀÏ ¼­¹®°ú 1ÀåºÎÅÍ 14Àå, ¿ë·Ê, °£´ÜÇÑ ¸ñÂ÷¸¦ Æ÷ÇÔÇÏ°í ÀÖ´Ù. ===================================================================== 1Àå Çϵå¿þ¾îÀÇ ±âÃÊ <<¿î¿µÃ¼Á¦´Â ±×ÀÇ ±â¹ÝÀÌ µÇ´Â Çϵå¿þ¾î ½Ã½ºÅÛ°ú ¹ÐÁ¢ÇÑ °ü°è¸¦ °¡Áö°í µ¿ÀÛÇØ¾ß ÇÑ´Ù. ¿î¿µÃ¼Á¦´Â Çϵå¿þ¾î¸¸ÀÌ Á¦°øÇÒ ¼ö Àִ ƯÁ¤ ¼­ºñ½ºµé À» ÇÊ¿ä·Î ÇÑ´Ù. ¸®´ª½º ¿î¿µÃ¼Á¦¸¦ ¿ÏÀüÈ÷ ÀÌÇØÇÏ·Á¸é ÀÌÀÇ ±â¹ÝÀÌ µÇ´Â Çϵå¿þ¾îÀÇ ±âº» »çÇ×µéÀ» ÀÌÇØÇÏ°í ÀÖ¾î¾ß ÇÑ´Ù. ÀÌ Àå¿¡¼­´Â Çϵå¿þ¾î - ¿äÁòÀÇ PC - ¿¡ ´ëÇØ °£´ÜÈ÷ ¼Ò°³Çϵµ·Ï ÇÏ°Ú´Ù.>> "Popular Electronics" ÀâÁöÀÇ 1975³â 1¿ùÈ£ Ç¥Áö¿¡ ¾ËÅ×¾î(Altair) 8080 ÀÇ »ðÈ­°¡ µîÀåÇßÀ» ¶§ºÎÅÍ Çõ¸íÀº ½ÃÀ۵Ǿú´Ù. ½ºÅ¸Æ®·º Ãʱ⠿¡ÇǼҵ忡 µîÀåÇÏ´Â ¸ñÀûÁöÀÇ ¸íĪÀ» µû¼­ À̸§Áö¾îÁø ¾ËÅ×¾î 8080Àº , Ãë¹Ì·Î ÀüÀÚ °øÀÛÀ» Áñ±â´Â ¿­¼ºÆĵéÀÌ °Ü¿ì 397 ´Þ·¯¸¸ µéÀ̸é Á¶¸³ÇÒ ¼ö ÀÖ´Â °Í À̾ú´Ù. ÀÎÅÚ 8080 ÇÁ·Î¼¼¼­¿Í 256 ¹ÙÀÌÆ®ÀÇ ¸Þ¸ð¸®¿¡ È­¸é°ú Å°º¸µåµµ ¾ø¾î ¿äÁò ±âÁØÀ¸·Î´Â º¸¸é º¸Àß°Í ¾ø´Â °ÍÀÌ´Ù. ÀÌ°ÍÀ» °³¹ßÇÑ ¿¡µå ·Î¹ö Æ®(Ed Roberts)´Â ÀÚ½ÅÀÇ »õ ¹ß¸íÇ°¿¡ "°³Àοë ÄÄÇ»ÅÍ(personal computer, PC)"¶ó´Â À̸§À» ºÙ¿´´Âµ¥, ÀÌÁ¦ ÀÌ PC¶ó´Â ¿ë¾î´Â È¥ÀÚ¼­ µé ¼ö ÀÖ´Â Å©±âÀÇ ´ëºÎºÐÀÇ ÄÄÇ»Å͸¦ °¡¸®Å°°Ô µÇ¾ú´Ù. ÀÌ Á¤ÀÇ¿¡ µû¸£¸é ¸Å¿ì °­·Â ÇÑ ¼º´ÉÀ» ¹ßÈÖÇÏ´Â ¾ËÆÄ AXP ½Ã½ºÅÛ ¿ª½Ã PC¶ó°í ÇÒ ¼ö ÀÖ´Ù. ¿­·ÄÇÑ ÇØÄ¿µéÀº ¾ËÅ×¾îÀÇ ÀáÀç·ÂÀ» ¾Ë¾Æº¸¾Ò°í, À̸¦ À§ÇÑ ¼ÒÇÁÆ®¿þ¾î¸¦ ÀÛ¼ºÇÏ°í, Çϵå¿þ¾î¸¦ Á¦ÀÛÇϱ⠽ÃÀÛÇß´Ù. ±×°ÍÀº À̵é Ãʱ⠼±±¸Àڵ鿡°Ô ÀÖ¾î ÀÚÀ¯ - ¿¤¸®Æ® ¼ºÁ÷ÀÚ¿¡ ÀÇÇØ ½ÇÇàµÇ°í º¸È£µÇ´Â °Å´ëÇÑ ÀÏ°ýó¸® ¸ÞÀÎÇÁ·¹ÀÓ ½Ã½ºÅÛÀ¸·ÎºÎÅÍÀÇ ÀÚÀ¯ - ¸¦ ÀǹÌÇß´Ù. ÀÚ±âÁý ½ÄŹ À§¿¡ ³õÀ» ¼ö ÀÖ´Â ÄÄÇ»ÅͶó´Â ÀÌ »õ·Î¿î Çö»ó¿¡ °í¹«µÈ ´ëÇÐ ÁßÅðÀÚµéÀº ¼ø½Ä°£¿¡ Å« µ·À» ¹ú°Ô µÇ¾ú´Ù. Á¶±Ý¾¿ ´Ù¸¥ ¼ö¸¹Àº Çϵå¿þ¾î °¡ µîÀåÇß°í, ¼ÒÇÁÆ®¿þ¾î ÇØÄ¿µéÀº ÀÌ »õ·Î¿î ±â°è¿ëÀ¸·Î ¼ÒÇÁÆ®¿þ¾î¸¦ ¸¸µé ¼ö À־ ÇູÇß´Ù. ¿ª¼³ÀûÀÌ°Ôµµ ¿äÁòÀÇ PC ÇüÅÂÀÇ ±â¹ÝÀ» ¸¸µç °Í Àº 1981 ³â IBM PC¸¦ ¹ßÇ¥ÇÏ°í 1982³â ÃÊ À̸¦ °í°´µé¿¡°Ô ÆǸÅÇϱ⠽ÃÀÛÇÑ IBMÀ̾ú´Ù. ÀÎÅÚ 8088 ÇÁ·Î¼¼¼­¿¡ 64K ¸Þ¸ð¸® (256K±îÁö È®Àå °¡´ÉÇß´Ù), µÎ °³ÀÇ Ç÷ÎÇÇ µð½ºÅ© µå¶óÀ̺ê¿Í °¡·Î 80±ÛÀÚ, ¼¼·Î 25ÁÙÀÇ ¹®ÀÚ¸¦ Ç¥½ÃÇÒ ¼ö ÀÖ´Â CGA (Color Graphic Adapter) Ä«µå¸¦ ÀåÂøÇÑ ÀÌ ÄÄÇ»ÅÍ´Â ¿äÁò ±âÁØÀ¸·Î º»´Ù¸é º°·Î °­·ÂÇÏÁø ¾ÊÁö¸¸ ¸Å¿ì Àß ÆÈ·È´Ù. À̸¦ À̾î IBMÀº 1983³â, ´ç½Ã¿£ »çÄ¡Ç°À¸·Î ¿©°ÜÁø 10M ¹ÙÀÌÆ®ÀÇ ¿ë·® ÀÇ ÇÏµå µð½ºÅ©°¡ ´Þ¸° IBM-XT¸¦ ³»³õ¾Ò´Ù. ¿À·¡Áö¾Ê¾Æ ÄÄÆÑ(Compaq)À» Æ÷ÇÔÇÑ ¸¹Àº ȸ»çµéÀÌ IBM PC¸¦ ¸ð¹æÇÑ ÄÄÇ»Å͵éÀ» »ý»êÇÏ°Ô ½ÃÀÛÇß°í, ÀÌ PCÀÇ ±¸Á¶´Â »ç½Ç»ó Ç¥ÁØÀÌ µÇ¾ú´Ù. ÀÌ ½ÇÁúÀûÀΠǥÁØÀº ¼ö¸¹Àº Çϵå¿þ¾î ¾÷üµéÀÌ ¼ºÀå´Ü°èÀÇ ½ÃÀåÀ» ³õ°í °æÀïÇÏ°Ô ¸¸µé¾ú°í, ÀÌ·ÎÀÎÇØ ³·¾ÆÁø °¡°Ý¿¡ °í°´µéÀº ÁÁ¾ÆÇß´Ù.ÀÌ ÃÊâ±â PC°¡ °¡Áø ½Ã½ºÅÛ ±¸Á¶Àû Ư¡ Áß ¸¹Àº °ÍµéÀÌ Áö±ÝÀÇ PC¿¡±îÁö ±×´ë·Î À̾îÁ® ¿Ô´Ù. ¿¹¸¦µé¾î, °¡Àå °­·ÂÇÑ ÀÎÅÚ ÆæƼ¾ö CPU¸¦ ä¿ëÇÑ ½Ã½ºÅÛ Á¶Â÷µµ, óÀ½ ½ÃÀÛÇÒ ¶§ ÀÎÅÚ 8086ÀÇ ¾îµå·¹½Ì ¸ðµå ¿¡¼­ ½ÃÀÛÇÑ´Ù. ¸®´©½º Åä¹ßÁî°¡ ³ªÁß¿¡ ¸®´ª½º¶ó°í ºÒ¸®°ÔµÈ ÇÁ·Î±×·¥À» Â¥±â ½ÃÀÛÇßÀ» ¶§, ±×´Â ´ç½Ã °¡Àå ³Î¸® º¸±ÞµÇ¾î ÀÖ¾ú°í, °¡°Ýµµ Àû´çÇÑ Çϵå¿þ¾î¿´´ø ÀÎÅÚ 80386 PC¸¦ ¼±ÅÃÇß´Ù. +------------------------------------------------------------------+ | | | +-------+ +-------+ | | | Power | | Power | | | +-------+ +-------+ +---------------+ | | |///////////////| | | +-----------------+ |///////////////| | | | Parallel Port | |///////////////| | | +-----------------+ |/// C P U ///| | | +-------+ +-------+ |///////////////| | | | COM1 | | COM2 | |///////////////| | | +-------+ +-------+ |///////////////| | | |///////////////| | | +---------------+ | | | | | | | | +-------------------+ +-------------------+ | | +-------------------+ +-------------------+ | | +-------------------+ +-------------------+ | | Memory SIMM Slot | | | | +-----------------+ | | +-----------------+ PCI Slot | | +-----------------+ | | +---------------------------------+ | | +---------------------------------+ ISA Slot | | +---------------------------------+ | | +---------------------------------+ | | | +------------------------------------------------------------------+ ±×¸² 1.1 : A typical PC motherboard PCÀÇ ¿Ü°üÀ» º¸¸é, °¡Àå ºÐ¸íÇÏ°Ô ±¸ºÐÇÒ ¼ö ÀÖ´Â °ÍÀº ½Ã½ºÅÛ ¹Ú½º¿Í Å°º¸µå, ¸¶¿ì½º, ±×¸®°í ¸ð´ÏÅÍÀÌ´Ù. ½Ã½ºÅÛ ¹Ú½ºÀÇ ¾Õ¸é¿¡´Â ¸î °³ÀÇ ¹öÆ°°ú, ¼ýÀÚ¸¦ º¸¿©ÁÖ´Â ÀÛÀº µð½ºÇ÷¹ÀÌ, ±×¸®°í Ç÷ÎÇÇ µå¶óÀ̺갡 ÀÖ´Ù. ¿äÁò¿¡ ³ª¿Â ´ëºÎºÐÀÇ ½Ã½ºÅÛ¿¡´Â CD ROMÀÌ ´Þ·ÁÀÖ°í, µ¥ÀÌÅÍ º¸È£ ¸¦ ÇÊ¿ä·Î ÇÏ´Â °æ¿ì ¹é¾÷¿ë Å×ÀÔ µå¶óÀ̺굵 ÀÖÀ» °ÍÀÌ´Ù. À̵é ÀåÄ¡µéÀ» ÃÑ°ýÇÏ¿© ÁÖº¯ÀåÄ¡¶ó°í ÇÑ´Ù. CPU°¡ ½Ã½ºÅÛ Àüü¸¦ ÅëÁ¦Çϱä ÇÏÁö¸¸, CPU¸¸ÀÌ ½Ã½ºÅÛ¿¡¼­ Áö´ÉÀ» °¡Áø À¯ÀÏÇÑ ÀåÄ¡´Â ¾Æ´Ï´Ù. IDE ÄÁÆ®·Ñ·¯ °°Àº ÁÖº¯ÀåÄ¡ ÄÁÆ®·Ñ·¯ ¸ðµÎ ¾î´À Á¤µµ ¼öÁØÀÇ Áö´ÉÀ» °¡Áö°í ÀÖ´Ù. PC ³»ºÎ¿¡´Â (±×¸² 1.1) CPU(¶Ç´Â ¸¶ÀÌ Å©·ÎÇÁ·Î¼¼¼­¶ó°í ÇÑ´Ù)¿Í ¸Þ¸ð¸®, ¿©·¯°³ÀÇ ISA³ª PCI ÁÖº¯ÀåÄ¡ ÄÁÆ®·Ñ·¯ ¸¦ ²ÈÀ» ¼ö ÀÖ´Â ½½·ÔÀ» °®Ãá ¸¶´õº¸µå°¡ ÀÖ´Ù. IDE µð½ºÅ© ÄÁÆ®·Ñ·¯°°Àº ¸î¸î ÄÁÆ®·Ñ·¯´Â ½Ã½ºÅÛ º¸µå»ó¿¡ Àֱ⵵ ÇÏ´Ù. 1.1 CPU CPU(CPUº¸´Ù´Â ¸¶ÀÌÅ©·ÎÇÁ·Î¼¼¼­¶õ À̸§ÀÌ ´õ Àû´çÇÏ´Ù)´Â ¸ðµç ÄÄÇ»ÅÍ ½Ã½ºÅÛÀÇ ÇÙ½ÉÀÌ´Ù. ¸¶ÀÌÅ©·ÎÇÁ·Î¼¼¼­´Â ¸Þ¸ð¸®¿¡¼­ ¸í·ÉÀ» Àаí À̸¦ ¼öÇàÇÔÀ¸·Î½á, °è»êÀ» ÇÏ°í ³í¸® ¿¬»êÀ» ¼öÇàÇÏ°í, µ¥ÀÌÅÍ È帧À» °ü¸® ÇÑ´Ù. ÄÄÇ»ÅÍ°¡ µîÀåÇÑ ÃÊâ±â¿¡´Â ¸¶ÀÌÅ©·ÎÇÁ·Î¼¼¼­ÀÇ ÀÌ·± ±â´ÉµéÀÌ °¢°¢ º°µµÀÇ ÀåÄ¡·Î (½ÇÁ¦·Î Å« µ¢Ä¡ÀÇ ÀåÄ¡·Î) µÇ¾î ÀÖ¾ú´Ù. ÀÌ ¶§´Â Áß¾Óó¸®ÀåÄ¡(Central Processing Unit, CPU)¶ó´Â ¸»ÀÌ ÀûÇÕÇß´Ù. Áö±ÝÀÇ ¸¶ÀÌÅ©·ÎÇÁ·Î¼¼¼­´Â ÀÌµé ±â´É ¿ä¼ÒµéÀ» °áÇÕÇØ ¸Å¿ì ÀÛÀº ½Ç¸®ÄÜ Á¶°¢ Çϳª¿¡ ÁýÀûȸ·Î·Î °¡Áö°í ÀÖ´Ù. ÀÌ Ã¥¿¡¼­´Â CPU, ¸¶ÀÌÅ©·ÎÇÁ·Î¼¼¼­ (microprocessor), ÇÁ·Î¼¼¼­(processor)¶ó´Â ¿ë¾î¸¦ ¸ðµÎ °°Àº Àǹ̷Π»ç¿ëÇÑ´Ù. ¸¶ÀÌÅ©·ÎÇÁ·Î¼¼¼­´Â 0°ú 1ÀÇ °áÇÕÀÎ ÀÌÁø µ¥ÀÌÅÍ·Î µ¿ÀÛÇÑ´Ù. ÀÌ 0°ú 1Àº ²¨Áø »óÅÂ¿Í ÄÑÁø »óŸ¦ °®´Â Àü±â½ºÀ§Ä¡¿Í °°Àº °ÍÀÌ´Ù. ½ÊÁø¼ö·Î 42°¡ 10Â¥¸® 4°³¿Í 1Â¥¸® 2°³¸¦ ÀǹÌÇÏ´Â °Íó·³, ÀÌÁø¼ö´Â °¢°¢ÀÇ ÀÌÁø ¼ýÀÚ°¡ 2ÀÇ ¸îÁ¦°ö½ÂÀ» ³ªÅ¸³»´Â 2Áø ¼ýÀÚÀÇ ¿¬¼ÓÀÌ´Ù. ¿©±â¼­ ¸îÁ¦°ö½ÂÀ̶õ °°Àº ¼ýÀÚ¸¦ ¿©·¯¹ø °öÇϴ Ƚ¼ö¸¦ ¸»ÇÑ´Ù. 10ÀÇ 1 Á¦°ö½Â(101)Àº 10ÀÌ°í, 10ÀÇ 2Á¦°ö½Â(102)Àº 10x10, 103Àº 10x10x10 µîµîÀÌ´Ù. ÀÌÁø¼ö 0001Àº ½ÊÁø¼ö·Î 1, ÀÌÁø¼ö 0010Àº ½ÊÁø¼ö 2, ÀÌÁø¼ö 0011Àº ½ÊÁø¼ö 3, ÀÌÁø¼ö 0100Àº ½ÊÁø ¼ö 4¿¡ ÇØ´çÇÑ´Ù. µû¶ó¼­ ½ÊÁø¼ö 42´Â ÀÌÁø¼ö·Î 101010, Áï 2 + 8 + 32 ¶Ç´Â 21 + 23 + 25ÀÌ´Ù. ÄÄÇ»ÅÍ ÇÁ·Î±×·¥¿¡¼­´Â ÀϹÝÀûÀ¸·Î ¼ýÀÚ¸¦ ³ªÅ¸³» ´Âµ¥ ÀÌÁø¼ö¸¦ ¾²±â º¸´Ù´Â ´Ù¸¥ Áø¹ýÀÎ ½ÊÀ°Áø¼ö¸¦ »ç¿ëÇÑ´Ù. ½ÊÀ°Áø¹ý ¿¡¼­´Â °¢ ¼ýÀÚ°¡ 16ÀÇ ¸îÁ¦°ö½ÂÀ» ³ªÅ¸³½´Ù. ¼ýÀÚ´Â 0ºÎÅÍ 9±îÁö¸¸ ÀÖÀ¸¹Ç·Î 10ºÎÅÍ 15±îÁö´Â ¹®ÀÚ A, B, C, D, E, F·Î Ç¥½ÃÇÑ´Ù. ¿¹¸¦µé¾î ½ÊÀ°Áø¼ö E´Â ½ÊÁø¼ö·Î 14ÀÌ°í, ½ÊÀ°Áø¼ö 2A´Â ¼ýÀÚ 42(16Â¥¸® 2°³ + 10) ÀÌ µÈ´Ù. C ÇÁ·Î±×·¡¹Ö ¾ð¾î¿¡¼­´Â ½ÊÀ°Áø¼ö ¾Õ¿¡"0x"¸¦ ºÙ¿©¼­ ±¸º°ÇÑ´Ù. Áï ½ÊÀ°Áø¼ö 2A´Â 0x2A¶ó°í ¾´´Ù. ÀÌ Ã¥¿¡¼­´Â ÀÌ Ç¥±â¹ýÀ» »ç¿ëÇÑ´Ù. ¸¶ÀÌÅ©·ÎÇÁ·Î¼¼¼­´Â µ¡¼Â, °ö¼À, ³ª´°¼À °°Àº ¼ýÀÚ ¿¬»ê°ú "X°¡ Yº¸´Ù Å«°¡?"°°Àº ³í¸® ¿¬»êÀ» ¼öÇàÇÒ ¼ö ÀÖ´Ù. ÇÁ·Î¼¼¼­ÀÇ ¸í·É ¼öÇàÀº ¿ÜºÎ Ŭ·°¿¡ ÀÇÇØ Á¦¾îµÈ´Ù. ÀÌ Å¬·°À» ½Ã½ºÅÛ Å¬·°À̶ó°í Çϸç, Á¤±âÀûÀ¸·Î Ŭ·° ÆÞ½º¸¦ ¸¸µé¾î ÇÁ·Î¼¼¼­·Î º¸³»°í, °¢ Ŭ·° ÆÞ½º¸¶´Ù ÇÁ·Î¼¼¼­´Â ÁÖ¾îÁø ÀÏÀ» ÇÏ°Ô µÈ´Ù. ¿¹¸¦ µé¾î, ¾î¶² ÇÁ·Î ¼¼¼­´Â °¢ Ŭ·° ÆÞ½º¸¶´Ù ¸í·É¾î¸¦ Çϳª¾¿ ó¸®ÇÑ´Ù. ÇÁ·Î¼¼¼­ÀÇ ¼Óµµ´Â ÃÊ´ç ½Ã½ºÅÛ Å¬·°ÀÇ È½¼ö·Î ³ªÅ¸³»´Âµ¥, ¿¹¸¦ µé¾î 100MHz ÇÁ·Î¼¼¼­´Â ÃÊ´ç 1¾ï¹øÀÇ Å¬·° ƽÀ» ¹Þ´Â´Ù. ±×·¯³ª ÇÁ·Î¼¼¼­¸¶´Ù ÇѹøÀÇ Å¬·° ƽµ¿¾È ¼öÇàÇÏ´Â ÀÏÀÇ ¾çÀÌ ´Ù¸£±â ¶§¹®¿¡, CPUÀÇ ¼º´ÉÀ» Ŭ·° ¼Óµµ·Î ºñ±³ÇÏ´Â °ÍÀº À߸øµÈ °ÍÀÌ´Ù. ÇÏÁö¸¸ ¸ðµç Á¡µéÀÌ ¶È°°´Ù¸é, Ŭ·° ¼Óµµ°¡ ºü¸¥°ÍÀÌ ´õ °­·ÂÇÑ ÇÁ·Î¼¼¼­ÀÌ´Ù. ÇÁ·Î¼¼¼­°¡ ¼öÇàÇÏ´Â ¸í·ÉÀº ¸Å¿ì ´Ü¼øÇÑ °ÍÀÌ ´Ù. ¿¹¸¦ µé¸é "¸Þ¸ð¸® X À§Ä¡¿¡ ÀÖ´Â ³»¿ëÀ» ·¹Áö½ºÅÍ Y·Î Àоîµé¿©¶ó" °°Àº °ÍÀÌ´Ù. ·¹Áö½ºÅÍ(register)´Â µ¥ÀÌÅ͸¦ ÀúÀåÇÏ°í ¿¬»êÀ» Çϴµ¥ »ç¿ëÇÏ´Â ¸¶ÀÌÅ©·ÎÇÁ·Î¼¼¼­ ³»ºÎ¿¡ ÀÖ´Â ±â¾ïÀå¼ÒÀÌ´Ù. ¾î¶² ¸í·ÉÀº ÇÁ·Î ¼¼¼­°¡ ÇÏ´ø ÀÏÀ» Áß´ÜÇÏ°í ¸Þ¸ð¸®ÀÇ ´Ù¸¥ À§Ä¡¿¡ ÀÖ´Â ¶Ç ´Ù¸¥ ¸í·É¾î·Î °Ç³Ê¶Ù°Ô Çϱ⵵ ÇÑ´Ù. ÀÌ·± Àڱ׸¸ ¸í·É ´ÜÀ§´Â ÇÁ·Î¼¼¼­°¡ 1ÃÊ¿¡ ¼ö¹é¸¸ ¿¡¼­ ½ÉÁö¾î ¼ö½Ê¾ï°³ÀÇ ¸í·É¾î¸¦ ½ÇÇàÇÒ ¼ö ÀÖ°Ô ÇÏ¿©, Áö±ÝÀÇ ÇÁ·Î¼¼¼­ °¡ °ÅÀÇ ¹«ÇÑÇÑ ´É·ÂÀ» °¡Áú ¼ö ÀÖ°Ô ÇÑ´Ù. ¸í·É¾î¸¦ ¼öÇàÇÏ·Á¸é ¸ÕÀú ¸í·É¾î¸¦ ¸Þ¸ð¸®¿¡¼­ °¡Á®¿Í¾ß ÇÑ´Ù. ¾î¶² ¸í·É ¾î´Â ¸Þ¸ð¸®¿¡ ÀÖ´Â µ¥ÀÌÅ͸¦ ÂüÁ¶Çϱ⵵ Çϴµ¥, ÀÌ °æ¿ì ¸Þ¸ð¸®¿¡¼­ µ¥ÀÌÅ͸¦ °¡Á®¿Í¾ß Çϸç, µ¥ÀÌÅ͸¦ ¾²·Á°í ÇÏ´Â °æ¿ì ¸Þ¸ð¸®¿¡ µ¥ÀÌÅ͸¦ ÀúÀåÇÏ°Ô µÈ´Ù. ÇÁ·Î¼¼¼­¿¡ ÀÖ´Â ·¹Áö½ºÅÍÀÇ Å©±â¿Í °¹¼ö, Á¾·ù´Â ÇÁ·Î¼¼¼­ Á¾·ù¸¶´Ù ´Ù¸£´Ù. ÀÎÅÚ 486 ÇÁ·Î¼¼¼­´Â ¾ËÆÄ AXP ÇÁ·Î¼¼¼­¿Í ´Ù¸¥ ·¹Áö½ºÅÍ ¼¼Æ®¸¦ °¡Áø´Ù. ¿ì¼± ÀÎÅÚÀÇ ·¹Áö½ºÅÍ´Â 32ºñÆ® Å©±âÁö¸¸ ¾ËÆÄ AXPÀÇ ·¹Áö½ºÅÍ´Â 64ºñÆ®ÀÌ´Ù. ±×·¸Áö¸¸ ´ëü·Î ¾î¶² ÇÁ·Î¼¼¼­ÀÌµç ¿©·¯°³ÀÇ ÀÏ¹Ý ¸ñÀû ·¹Áö½ºÅÍ¿Í À̺¸´Ù ÀûÀº °¹¼öÀÇ Æ¯¼ö ¸ñÀû ·¹Áö½ºÅ͸¦ °®´Â´Ù. ´ëºÎºÐÀÇ ÇÁ·Î¼¼¼­´Â ´ÙÀ½°ú °°Àº Ư¼ö ¸ñÀûÀÇ Àü¿ë ·¹Áö½ºÅ͸¦ °¡Áö°í ÀÖ´Ù. ÇÁ·Î±×·¥ Ä«¿îÅÍ (Program Counter, PC) : ÀÌ ·¹Áö½ºÅÍ´Â ´ÙÀ½¿¡ ½ÇÇàÇÒ ¸í·É¾îÀÇ ÁÖ¼Ò¸¦ °¡Áö°í ÀÖ´Ù. ÀÌ °ªÀº ¸í·É¾î¸¦ °¡Á®¿Ã ¶§¸¶´Ù ÀÚµ¿À¸·Î Áõ°¡ÇÑ´Ù. ½ºÅà Æ÷ÀÎÅÍ (Stack Pointer, SP) : ÇÁ·Î¼¼¼­´Â µ¥ÀÌÅ͸¦ Àӽ÷ΠÀúÀåÇÒ ¼ö ÀÖ´Â ´ë±Ô¸ðÀÇ ¿ÜºÎ RAM¿¡ Á¢±ÙÇØ¾ß ÇÑ´Ù. ½ºÅÃÀº ¿ÜºÎ ¸Þ¸ð¸®¿¡ Àӽ÷Πµ¥ÀÌÅ͸¦ ÀúÀåÇÏ°í ´Ù½Ã ÀоîµéÀÏ ¼ö ÀÖ´Â ¼Õ½¬¿î ¹æ¹ý Áß ÇϳªÀÌ´Ù. ´ë°³ ÇÁ·Î¼¼¼­µéÀº ½ºÅÿ¡ µ¥ÀÌÅ͸¦ ³Ö°í(push) , ³ªÁß¿¡ À̸¦ ´Ù½Ã °¡Á®¿À´Â (pop) Ưº°ÇÑ ¸í·É¾îµéÀ» °¡Áö°í ÀÖ´Ù. ½ºÅÃÀº "¸¶Áö¸·¿¡ µé¾î¿Â °ÍÀÌ ¸Ç ¸ÕÀú ³ª°¡´Â (last in first out, LIFO)" ¹æ½ÄÀ¸·Î µ¿ÀÛÇÑ´Ù. ´Ù¸£°Ô ¸»Çϸé, ½ºÅÿ¡ µÎ°³ÀÇ °ª x¿Í y¸¦ Áý¾î³Ö°í, °ªÀ» »©³»¸é ¸ÕÀú y°ªÀ» ¸ÕÀú ¾ò°Ô µÇ´Â °ÍÀÌ´Ù. ¾î¶² ÇÁ·Î¼¼¼­¿¡¼­´Â ½ºÅÃÀÌ À§·Î ÀÚ¶óÁö¸¸, ´Ù¸¥ ÇÁ·Î¼¼¼­´Â ¸Þ¸ð ¸®°¡ ½ÃÀÛÇÏ´Â ÂÊÀÎ ¾Æ·¡ÂÊÀ¸·Î ½ºÅÃÀÌ ÀÚ¶õ´Ù. ARM°°Àº ÇÁ·Î¼¼¼­ ´Â µÎ°¡Áö ¹æ½Ä ¸ðµÎ¸¦ Áö¿øÇÑ´Ù. ÇÁ·Î¼¼¼­ »óÅ (Processor Status, PS) : ¾î¶² ¸í·É¾îµéÀº ½ÇÇàÇÏ¸é °á°ú°¡ ³ª¿À´Â °ÍÀÌ ÀÖ´Ù. ¿¹¸¦ µé¾î "·¹Áö½ºÅÍ XÀÇ °ªÀÌ YÀÇ °ª º¸´Ù Å«°¡?"¶ó´Â ¸í·ÉÀ» ¼öÇàÇÏ¸é ¿¹ ¶Ç´Â ¾Æ´Ï¿ÀÀÇ °á°ú°¡ ³ª¿Â ´Ù. PS ·¹Áö½ºÅÍ´Â ÀÌ·±°ª°ú ÇÔ²², ÇÁ·Î¼¼¼­ÀÇ ÇöÀç »óŸ¦ ³ªÅ¸³» ´Â ´Ù¸¥ Á¤º¸µéÀ» °¡Áö°í ÀÖ´Ù. ÀÌ·± ¿¹·Î, ´ëºÎºÐÀÇ ÇÁ·Î¼¼¼­´Â Ä¿³Î ¸ðµå(¶Ç´Â °ü¸®ÀÚ ¸ðµå)¿Í »ç¿ëÀÚ ¸ðµå¶ó´Â µÎ°¡Áö ÀÌ»óÀÇ µ¿ÀÛ¸ðµå¸¦ °¡Áö°í Àִµ¥, PS ·¹Áö½ºÅÍ´Â ÇöÀç ¾î¶² ¸ðµå¿¡ ÀÖ´Â Áö ³ªÅ¸³»´Â ÀÖ´Â Á¤º¸¸¦ °¡Áö°í ÀÖ´Ù. 1.2 ¸Þ¸ð¸®(Memory) ¸ðµç ½Ã½ºÅÛ¿¡´Â ¸Þ¸ð¸® ºÐ·ù ü°è°¡ ÀÖÀ¸¸ç, ´Ù¸¥ Å©±â¿Í ¼Óµµ¸¦ °®´Â ¸Þ¸ð¸®µéÀÌ ÀÌ Ã¼°èÀÇ ¼­·Î ´Ù¸¥ ÁöÁ¡¿¡ À§Ä¡ÇÑ´Ù. ¿ì¼± °¡Àå ºü¸¥ ¸Þ¸ð¸® ´Â ij½Ã ¸Þ¸ð¸®·Î, ¸» ±×´ë·Î ¸ÞÀÎ ¸Þ¸ð¸®ÀÇ ³»¿ëÀ» Àӽ÷Πº¸°üÇÏ´Â, Áï ij½ÃÇϴµ¥ »ç¿ëÇÏ´Â ¸Þ¸ð¸®ÀÌ´Ù. ÀÌ·± ¸Þ¸ð¸®´Â ¼Óµµ´Â ¸Å¿ì ºü¸£Áö¸¸ °ª ÀÌ ºñ½Î±â ¶§¹®¿¡, ´ëºÎºÐÀÇ ÇÁ·Î¼¼¼­´Â Ĩ ¾È¿¡ ¼Ò·®ÀÇ Ä³½Ã ¸Þ¸ð¸®¸¦, ±×¸®°í º¸µå»ó¿¡ Ãß°¡·Î ij½Ã ¸Þ¸ð¸®¸¦ °¡Áö°í ÀÖ´Ù. ¾î¶² ÇÁ·Î¼¼¼­´Â ÇϳªÀÇ Ä³½Ã¿¡¼­ ¸í·É¾î¿Í µ¥ÀÌÅ͸¦ °°ÀÌ °®Áö¸¸, ¸í·É¾î¿Í µ¥ÀÌÅÍ ¿ëÀ¸·Î µÎ °³ÀÇ Ä³½Ã¸¦ °®´Â °Íµµ ÀÖ´Ù. ¾ËÆÄ AXP ÇÁ·Î¼¼¼­´Â µÎ°³ÀÇ ³»Àå ¸Þ¸ð¸® Ä³½Ã¸¦ °¡Áö°í Àִµ¥, Çϳª´Â µ¥ÀÌÅÍ¿ëÀÌ°í(D-ij½Ã), ´Ù¸¥ Çϳª´Â ¸í·É¾î ¿ëÀÌ´Ù(I-ij½Ã). ¿ÜÀå ij½Ã(B-ij½Ã)´Â ÀÌ µÎ°¡Áö¸¦ ÇÔ²² °¡Áø´Ù. ¸¶Áö¸·À¸ ·Î ¿ÜÀå ij½Ã ¸Þ¸ð¸®¿¡ ºñÇØ ¸Å¿ì ´À¸° ¸ÞÀÎ ¸Þ¸ð¸®°¡ ÀÖ´Ù. CPU Ĩ»ó¿¡ Àִ ij½Ã¿Í ºñ±³ÇÏ¸é ¸ÞÀÎ ¸Þ¸ð¸®´Â Á¤¸» ¹äÅë°°Àº °ÍÀ̴٠ij½Ã¿Í ¸ÞÀÎ ¸Þ¸ð¸®´Â °°Àº °ªÀ» À¯ÁöÇÏ°í ÀÖ¾î¾ß ÇÑ´Ù (ÀÏÄ¡¼º). ´Ù¸£°Ô ¸»Çϸé, ¸ÞÀÎ ¸Þ¸ð¸®¿¡ ÀÖ´Â ¾î¶² µ¥ÀÌÅÍ°¡ ij½ÃÀÇ Çϳª ÀÌ»óÀÇ À§Ä¡¿¡ ÀúÀåµÇ¾î ÀÖÀ» ¶§, ½Ã½ºÅÛÀº ij½Ã¿¡ ÀÖ´Â °ª°ú ¸Þ¸ð¸®¿¡ ÀÖ´Â °ªÀÌ ÀÏÄ¡ Çϵµ·Ï ÇØÁÖ¾î¾ß ÇÑ´Ù´Â °ÍÀÌ´Ù. ij½ÃÀÇ ÀÏÄ¡¼ºÀº ¾î¶² ºÎºÐÀº Çϵå¿þ¾î¿¡ ÀÇÇØ, ¾î¶² ºÎºÐÀº ¿î¿µÃ¼Á¦¿¡ ÀÇÇØ À¯ÁöµÈ´Ù. ÀÌ·± °ÍÀº ¼Ò±âÀÇ ¸ñÀûÀ» ´Þ¼ºÇϱâ À§ÇØ Çϵå¿þ¾î¿Í ¼ÒÇÁÆ®¿þ¾î°¡ ¹ÐÁ¢ÇÏ°Ô Çùµ¿ÇØ¾ß ÇÏ´Â, ½Ã½ºÅÛ ÀÇ ´Ù¸¥ ÁÖ¿ä ÀÛ¾÷µé¿¡ À־µµ ¸¶Âù°¡Áö´Ù. 1.3 ¹ö½º(Bus) ½Ã½ºÅÛ º¸µå»óÀÇ °³°³ ±¸¼º¿ä¼ÒµéÀº ¿©·¯°³ÀÇ ¹ö½º¶ó´Â ¿¬°á½Ã½ºÅÛÀ¸·Î »óÈ£ ¿¬°áµÇ¾î ÀÖ´Ù. ½Ã½ºÅÛ ¹ö½º´Â ¼¼°¡Áö ³í¸®ÀûÀÎ ±â´É ¿ä¼Ò·Î ³ª´©¾îÁö´Âµ¥, Çϳª´Â ÁÖ¼Ò ¹ö½º(address bus), ´Ù¸¥ Çϳª´Â µ¥ÀÌÅÍ ¹ö½º(data bus), ³ª¸ÓÁö Çϳª´Â Á¦¾î ¹ö½º(control bus)ÀÌ´Ù. ÁÖ¼Ò ¹ö½º´Â µ¥ÀÌÅ͸¦ Àü¼ÛÇÒ ¸Þ¸ð¸®ÀÇ À§Ä¡ (ÁÖ¼Ò)¸¦ ÁöÁ¤ÇÑ´Ù. µ¥ÀÌÅÍ ¹ö½º´Â Àü¼ÛµÇ´Â µ¥ÀÌÅ͸¦ °¡Áö°í ÀÖÀ¸¸ç, ¾ç¹æÇâÀ¸·Î Àü¼Û °¡´ÉÇÏ´Ù. Áï CPU·Î ÀÐ¾î µéÀ̰ųª CPU¿¡¼­ ¾²´Â °ÍÀÌ °¡´ÉÇÏ´Ù. Á¦¾î ¹ö½º´Â ½Ã½ºÅÛ Àüü¿¡ ŸÀÌ¹Ö ½ÅÈ£¿Í Á¦¾î ½ÅÈ£¸¦ Àü´ÞÇÏ´Â ¿©·¯ ¼±µéÀ» °¡Áö°í ÀÖ´Ù. ¿©·¯ ¹æ½ÄÀÇ ¹ö½º°¡ ÀÖÁö¸¸, ISA³ª PCI ¹ö½º°¡ ÁÖº¯ÀåÄ¡¸¦ ½Ã½ºÅÛ¿¡ ¿¬°á ÇÏ´Â ´ëÁßÀûÀÎ ¹æ¹ýÀ¸·Î »ç¿ëµÇ°í ÀÖ´Ù. 1.4 ÄÁÆ®·Ñ·¯¿Í ÁÖº¯ÀåÄ¡ ÁÖº¯ÀåÄ¡´Â ½Ã½ºÅÛ º¸µå »óÀ̳ª ¶Ç´Â º¸µå¿¡ ²ÈÈù Ä«µå¿¡ ÀÖ´Â ÄÁÆ®·Ñ·¯ Ĩ¿¡ ÀÇÇØ Á¦¾îµÇ´Â, ±×·¡ÇÈ Ä«µå³ª µð½ºÅ©°°ÀÌ ½ÇÁ¦·Î Á¸ÀçÇÏ´Â ÀåÄ¡¸¦ ¸»ÇÑ´Ù. IDEµð½ºÅ©´Â IDE ÄÁÆ®·Ñ·¯ Ĩ¿¡ ÀÇÇØ, SCSIµð½ºÅ©´Â SCSIµð½ºÅ© ÄÁÆ®·Ñ·¯ Ĩ¿¡ ÀÇÇØ Á¦¾îµÈ´Ù. À̵é ÄÁÆ®·Ñ·¯´Â ¿©·¯ Á¾·ùÀÇ ¹ö½º¸¦ ÅëÇØ, CPU¿Í ´Ù¸¥ ÄÁÆ®·Ñ·¯µé°ú ¼­·Î ¿¬°áµÇ¾î ÀÖ´Ù. ¿äÁò ³ª¿À´Â ½Ã½ºÅÛÀÇ ´ëºÎºÐÀº À̵é ÁÖ¿ä ½Ã½ºÅÛ ±¸¼º¿ä¼ÒµéÀ» ¿¬°áÇϱâ À§ÇØ PCI¿Í ISA¹ö½º¸¦ »ç¿ëÇÑ´Ù. ÄÁÆ®·Ñ·¯´Â CPU¿Í ºñ½ÁÇÑ ÇϳªÀÇ ÇÁ·Î¼¼¼­ÀÌ°í, CPU ÀÔÀå¿¡¼­ ´Â ¶È¶ÈÇÑ µµ¿ì¹ÌÀÌ´Ù. CPU´Â ½Ã½ºÅÛ Àüü¸¦ Á¦¾îÇÏ´Â °ÍÀÌ´Ù. ¸ðµç ÄÁÆ®·Ñ·¯´Â ¼­·Î ´Ù¸£Áö¸¸, ÀÚ½ÅÀ» Á¦¾îÇϱâ À§ÇÑ ·¹Áö½ºÅ͸¦ °¡Áö°í ÀÖ´Ù´Â Á¡Àº ºñ½ÁÇÏ´Ù. CPU¿¡¼­ ½ÇÇàµÇ´Â ¼ÒÇÁÆ®¿þ¾î´Â À̵é Á¦¾î¿ë ·¹Áö ½ºÅ͸¦ ÀÐ°í ¾µ ¼ö ÀÖ¾î¾ß ÇÑ´Ù. ¾î¶² ·¹Áö½ºÅÍ´Â ¿¡·¯¸¦ ³ªÅ¸³»´Â »óŸ¦ °¡Áö°í Àֱ⵵ ÇÏ°í, ¶Ç´Ù¸¥ ·¹Áö½ºÅÍ´Â ÄÁÆ®·Ñ·¯ÀÇ ¸ðµå¸¦ ¹Ù²Ù´Â °Í °°Àº Á¦¾î ¿ëµµ·Î »ç¿ëµÇ±âµµ ÇÑ´Ù. CPU´Â ¹ö½º»ó¿¡ ÀÖ´Â ÄÁÆ®·Ñ·¯ °¢°¢ ¿¡ °³º°ÀûÀ¸·Î ÁÖ¼ÒÁöÁ¤À» ÇÒ ¼ö ÀÖ´Ù. À̸®ÇÏ¿© ¼ÒÇÁÆ®¿þ¾î µð¹ÙÀ̽º µå¶óÀ̹ö°¡ ÄÁÆ®·Ñ·¯¸¦ Á¦¾îÇϱâ À§ÇØ ·¹Áö½ºÅ͸¦ ¾µ ¼ö ÀÖ°Ô µÈ´Ù. IDE ¸®º»ÀÌ ÁÁÀº ¿¹·Î, ÀÌ´Â ¹ö½º»ó¿¡ ÀÖ´Â µå¶óÀ̺긦 µû·Îµû·Î Á¢±ÙÇÒ ¼ö ÀÖµµ·Ï ÇØÁØ´Ù. ´Ù¸¥ ÁÁÀº ¿¹·Î´Â °¢ µð¹ÙÀ̽º(±×·¡ÇÈÄ«µå°°Àº)µéÀ» ¼­·Î µ¶¸³ÀûÀ¸·Î Á¢±ÙÇÒ ¼ö ÀÖ´Â PCI ¹ö½º°¡ ÀÖ´Ù. 1.5 ÁÖ¼Ò°ø°£(Address Space) CPU¿Í ¸ÞÀÎ ¸Þ¸ð¸®¸¦ ¿¬°áÇÏ´Â ½Ã½ºÅÛ ¹ö½º´Â, CPU¿Í ´Ù¸¥ Çϵå¿þ¾î ÁÖº¯ ÀåÄ¡¸¦ ¿¬°áÇÏ´Â ¹ö½º¿Í´Â ºÐ¸®µÇ¾î ÀÖ´Ù. Çϵå¿þ¾î ÁÖº¯ÀåÄ¡°¡ Á¸ÀçÇÏ°í ÀÖ´Â ¸Þ¸ð¸® °ø°£À» ÃÑ°ýÇÏ¿© I/O °ø°£À̶ó°í ÇÑ´Ù. I/O °ø°£Àº ´õ ÂÉ°¶ ¼ö ÀÖÁö¸¸, ´çºÐ°£ ÀÌ¿¡ ´ëÇØ »ý°¢ÇÏÁö ¾Êµµ·Ï ÇÏÀÚ. CPU´Â ½Ã½ºÅÛ °ø°£ ¸Þ¸ð¸®¿Í I/O °ø°£ ¸Þ¸ð¸®¿¡ ¸ðµÎ Á¢±Ù °¡´ÉÇÏÁö¸¸, ÄÁÆ®·Ñ·¯´Â ´ÜÁö ½Ã½ºÅÛ ¸Þ¸ð¸®¿¡ °£Á¢ÀûÀ¸·Î Á¢±ÙÇÒ ¼ö ÀÖÀ» »ÓÀ̸ç, À̰͵µ CPUÀÇ µµ¿òÀ» ¹Þ¾Æ¾ß¸¸ ÇÑ´Ù. ÀåÄ¡ÀÇ ÀÔÀå¿¡¼­ º¸¸é, °¡·É Ç÷ÎÇÇ µð½ºÅ© ÄÁÆ®·Ñ·¯¶ó°í ÇÑ´Ù¸é, ÀÚ½ÅÀÇ Á¦¾î ·¹Áö½ºÅÍ°¡ ÀÖ´Â ÁÖ¼Ò°ø°£(ISA)¸¸ º¸ÀÏ »Ó, ½Ã½ºÅÛ ¸Þ¸ð¸®´Â º¸ÀÌÁö ¾ÊÀ» °ÍÀÌ´Ù. ÀϹÝÀûÀ¸·Î CPU´Â ¸Þ¸ð¸® °ø°£°ú I/O °ø°£À» Á¢±ÙÇϴµ¥ ´Ù¸¥ ¸í·É¾î¸¦ »ç¿ëÇÑ´Ù. ¿¹¸¦ µé¾î, "I/O °ø°£ 0x3f0 ÁÖ¼Ò¿¡¼­ ÇÑ ¹ÙÀÌÆ® ¸¦ ÀÐ¾î ·¹Áö½ºÅÍ X¿¡ ÀúÀåÇ϶ó"°°Àº ¸í·ÉÀÌ ÀÖ´Â °ÍÀÌ´Ù. ÀÌ´Â CPU°¡ I/O °ø°£¿¡ ÀÖ´Â ÁÖº¯ÀåÄ¡ÀÇ ·¹Áö½ºÅ͸¦ ÀÐ°í ¾¸À¸·Î½á, Çϵå¿þ¾î ÁÖº¯ ÀåÄ¡¸¦ Á¦¾îÇÏ´Â ¹æ¹ýÀ» ±×´ë·Î º¸¿©ÁØ´Ù. ÀϹÝÀûÀ¸·Î ¾²ÀÌ´Â ÁÖº¯ÀåÄ¡µé (IDE ÄÁÆ®·Ñ·¯, Á÷·ÄÆ÷Æ®, Ç÷ÎÇÇ µð½ºÅ© ÄÁÆ®·Ñ·¯ µî)ÀÇ ·¹Áö½ºÅÍ°¡ ÀÖ´Â I/O °ø°£Àº PC ±¸Á¶°¡ °³¹ßµÈ ÈÄ ¿À·§µ¿¾È °ü·Ê¿¡ ÀÇÇØ °íÁ¤µÇ¾î ÀÖ´Ù. I/O °ø°£ÀÇ ÁÖ¼Ò 0x3f0Àº Á÷·ÄÆ÷Æ® COM1 Á¦¾î ·¹Áö½ºÅÍ Áß ÇϳªÀÇ ÁÖ¼Ò ÀÌ´Ù. °¡²ûÀº ÄÁÆ®·Ñ·¯°¡ ¸¹Àº¾çÀÇ µ¥ÀÌÅ͸¦ ½Ã½ºÅÛÀÇ ¸Þ¸ð¸®¿¡¼­ ÀÐ¾î µéÀ̰ųª ¸Þ¸ð¸®·Î ½á ³Ö¾î¾ß ÇÒ °æ¿ì°¡ ÀÖ´Ù. »ç¿ëÀÚÀÇ µ¥ÀÌÅ͸¦ Çϵåµð½ºÅ©¿¡ ±â·ÏÇÏ´Â °æ¿ì°¡ ÀÌ·± ÁÁÀº ¿¹ÀÌ´Ù. ÀÌ ¶§´Â, DMA (Direct Memory Access, Á÷Á¢ ¸Þ¸ð¸® Á¢±Ù) ÄÁÆ®·Ñ·¯¸¦ »ç¿ëÇÏ¿© Çϵå¿þ¾î ÁÖº¯ÀåÄ¡°¡ ¹Ù·Î ½Ã½ºÅÛ ¸Þ¸ð¸®¿¡ Á¢±ÙÇÒ ¼ö ÀÖ°Ô ÇÑ´Ù. ÇÏÁö¸¸ ÀÌ°Í ¿ª½Ã CPUÀÇ ¾ö°ÝÇÑ Á¦¾î¿Í °¨½ÃÇÏ¿¡ ÀÌ·ç¾îÁø´Ù. 1.6 ŸÀÌ¸Ó ¸ðµç ¿î¿µÃ¼Á¦´Â ÇöÀç ½Ã°£À» ¾Ë ÇÊ¿ä°¡ Àֱ⠶§¹®¿¡, Áö±Ý ³ª¿À´Â PCµéÀº RTC(Real Time Clock, ½Ç½Ã°£ Ŭ·°)¶ó´Â Ư¼öÇÑ ÁÖº¯ÀåÄ¡¸¦ °¡Áö°í ÀÖ´Ù. ÀÌ°ÍÀº Á¤È®ÇÑ ½Ã°£°ú, Á¤¹ÐÇÑ ½Ã°£ °£°ÝÀ» Á¦°øÇÏ´Â µÎ°¡Áö ¿ªÇÒÀ» ÇÑ´Ù. RTC ´Â ÀÚü ¹èÅ͸®¸¦ °¡Áö°í À־, PCÀÇ Àü¿øÀ» ²ô´õ¶óµµ °è¼Ó µ¿ÀÛ ÇÑ´Ù. ÀÌ°ÍÀÌ PC°¡ Ç×»ó Á¤È®ÇÑ ³¯Â¥¿Í ½Ã°£À» ¾Ë ¼ö ÀÖ´Â ¹æ¹ýÀÌ´Ù. °£°Ý ŸÀ̸Ó(interval timer)´Â ¿î¿µÃ¼Á¦°¡ Áß¿äÇÑ ÀÛ¾÷ÀÇ ÀÏÁ¤À» Á¤È® ÇÏ°Ô Á¶ÀýÇÒ ¼ö ÀÖ°Ô ÇØÁØ´Ù. ¹ø¿ª : ÀÌÈ£, ±èÁø¼®, ÀÌ´ëÇö, ÀÌÁØÈñ, °í¾ç¿ì, truejaws Á¤¸® : ÀÌÈ£ ===================================================================== 2Àå ¼ÒÇÁÆ®¿þ¾îÀÇ ±âÃÊ <<ÇÁ·Î±×·¥À̶õ ƯÁ¤ÇÑ ÀÛ¾÷À» ¼öÇàÇÏ´Â ÄÄÇ»ÅÍ ¸í·É¾îµéÀÇ ÁýÇÕÀÌ´Ù. ÇÁ·Î±×·¥Àº ¾î¼Àºí¸®¾î¿Í °°ÀÌ Àú±Þ ÄÄÇ»ÅÍ ¾ð¾î·Î ÀÛ¼ºÇÒ ¼öµµ ÀÖ°í, C ÇÁ·Î±×·¡¹Ö ¾ð¾îó·³ ±â°è¿Í ¹«°üÇÑ °í±Þ¾ð¾î·Î ÀÛ¼ºÇÒ ¼öµµ ÀÖ´Ù. ¿î¿µÃ¼Á¦´Â »ç¿ëÀÚ°¡ ½ºÇÁ·¹µå½ÃÆ®³ª ¿öµå ÇÁ·Î¼¼¼­¿Í °°Àº ÀÀ¿ë ÇÁ·Î ±×·¥À» ½ÇÇàÇÒ¼ö ÀÖµµ·Ï ÇØÁִ Ưº°ÇÑ ÇÁ·Î±×·¥ÀÌ´Ù. ÀÌ Àå¿¡¼­´Â ÇÁ·Î ±×·¡¹ÖÀÇ ±âº»¿øÄ¢°ú ¿î¿µÃ¼Á¦ÀÇ ¸ñÇ¥¿Í ±â´É¿¡ ´ëÇÑ °³¿ä¸¦ Á¦½ÃÇÏ°íÀÚ ÇÑ´Ù.>> 2.1 ÄÄÇ»ÅÍ ¾ð¾î(Computer Language) 2.1.1 ¾î¼Àºí¸®¾î(Assembly Language) CPU°¡ ¸Þ¸ð¸®¿¡¼­ °¡Á®¿Í ½ÇÇàÇÏ´Â ¸í·É¾î´Â »ç¶÷ÀÌ ÀüÇô ÀÌÇØÇÒ ¼ö ¾ø´Â °ÍÀÌ´Ù. À̵éÀº ÄÄÇ»ÅÍ°¡ Á¤È®È÷ ¹«¾ùÀ» ÇؾßÇÒ Áö ¸»ÇØÁÖ´Â ±â°è¾î ÄÚµå ÀÌ´Ù. ÀÎÅÚ 80486 CPU¿¡¼­ ½ÊÀ°Áø¼ö 0x89E5´Â ESP ·¹Áö½ºÅÍÀÇ ³»¿ëÀ» EBP ·¹Áö½ºÅÍ·Î º¹»çÇ϶ó´Â ¸í·ÉÀÌ´Ù. ÃÊâ±â ÄÄÇ»Å͸¦ À§ÇØ °³¹ßµÈ ÃÖÃÊÀÇ ¼ÒÇÁÆ®¿þ¾î µµ±¸ Áß Çϳª´Â ¾î¼Àºí·¯¿´´Ù. ¾î¼Àºí·¯´Â »ç¶÷ÀÌ ÀÐÀ» ¼ö ÀÖ´Â ÇüÅÂÀÇ ¼Ò½º ÆÄÀÏÀ» ¾î¼ÀºíÇÏ¿© ±â°è¾î Äڵ带 ¸¸µå´Â ÇÁ·Î±×·¥ÀÌ´Ù. ¾î¼Àºí¸®¾î´Â ·¹Áö½ºÅÍ¿Í ÀÚ·á¿¡ ´ëÇÑ ¿¬»êÀ» ¸í½ÃÀûÀ¸·Î ´Ù·ç¸ç, ¸¶ÀÌÅ© ·ÎÇÁ·Î¼¼¼­¸¶´Ù ´Ù¸£´Ù. ÀÎÅÚ x86 ¸¶ÀÌÅ©·ÎÇÁ·Î¼¼¼­¿ë ¾î¼Àºí¸®¾î¿Í ¾ËÆÄ AXP ¸¶ÀÌÅ©·ÎÇÁ·Î¼¼¼­¿ë ¾î¼Àºí¸®¾î´Â ¿ÏÀüÈ÷ ´Ù¸£´Ù. ´ÙÀ½ ¾ËÆÄ AXP¿ë ¾î¼Àºí¸® ÄÚµå´Â ÇÁ·Î±×·¥ÀÌ ¼öÇàÇÒ¼ö ÀÖ´Â ¿¬»êÀÇ ¿¹¸¦ º¸¿©ÁØ´Ù. ldr r16, (r15) ; Line 1 ldr r17, 4(r15) ; Line 2 beq r16, r17, 100 ; Line 3 str r17, (r15) ; Line 4 100: ; Line 5 ù¹ø° ¹®Àå(Line 1)Àº ·¹Áö½ºÅÍ15°¡ °¡Áø ÁÖ¼Ò¿¡ ÀÖ´Â °ªÀ» ·¹Áö½ºÅÍ16 À¸·Î ÀоîµéÀδÙ. ±× ´ÙÀ½ ¸í·ÉÀº ¸Þ¸ð¸® ´ÙÀ½ À§Ä¡ÀÇ ³»¿ëÀ» ·¹Áö½ºÅÍ17 ·Î ÀоîµéÀδÙ. ¼¼ ¹ø° ÁÙ¿¡¼­´Â ·¹Áö½ºÅÍ16°ú ·¹Áö½ºÅÍ17ÀÇ ³»¿ëÀ» ºñ±³ ÇÏ¿©, ÀÌ °ªÀÌ °°À¸¸é ·¹À̺í100À¸·Î ºÐ±âÇÑ´Ù. µÎ ·¹Áö½ºÅÍ¿¡ µé¾îÀÖ´Â °ªÀÌ °°Áö ¾Ê´Ù¸é, ÇÁ·Î±×·¥Àº ³× ¹ø° ÁÙ·Î °è¼Ó ÁøÇàÇÏ¿© ·¹Áö½ºÅÍ17ÀÇ ³»¿ëÀ» ¸Þ¸ð¸®¿¡ ÀúÀåÇÑ´Ù. µÎ ·¹Áö½ºÅÍ°¡ °°Àº °ªÀ» °®°í ÀÖ´Ù¸é, ±× °ª À» ÀúÀåÇÒ ÇÊ¿ä°¡ ¾ø´Ù. ¾î¼Àºí¸® ¼öÁØÀÇ ÇÁ·Î±×·¥Àº µûºÐÇÏ°í, ÀÛ¼ºÇÏ´Â µ¥ ÀܲҰ¡ ¸¹ÀÌ ÇÊ¿äÇϸç, ¿À·ù¸¦ ¹üÇϱ⠽±´Ù. ¸®´ª½º Ä¿³Î Áß¿¡¼­ ¾î¼À ºí¸®¾î·Î ÀÛ¼ºµÈ ºÎºÐÀº ±ØÈ÷ ÀϺο¡ Áö³ªÁö ¾Ê´Â´Ù. À̵éÀº ´Ü½Ã È¿À²¼º À» À§ÇØ ¾î¼Àºí¸®¾î·Î ÀÛ¼ºµÇ¾úÀ¸¸ç, ƯÁ¤ ¸¶ÀÌÅ©·ÎÇÁ·Î¼¼¼­¿¡ °íÀ¯ÇÏ´Ù. 2.1.2 C ÇÁ·Î±×·¡¹Ö ¾ð¾î¿Í ÄÄÆÄÀÏ·¯(Compiler) ¾î¼Àºí¸®¾î·Î Å« ÇÁ·Î±×·¥À» ÀÛ¼ºÇÏ´Â °ÍÀº ¾î·Á¿ï »Ó¸¸ ¾Æ´Ï¶ó ½Ã°£µµ ¸¹ÀÌ ÇÊ¿äÇÏ´Ù. °Ô´Ù°¡ ¿À·ù¸¦ ¹üÇϱ⠽±°í, ƯÁ¤ ÇÁ·Î¼¼¼­¿¡¸¸ ±¹ÇÑµÇ¹Ç ·Î À̽ļºµµ ¾ø´Ù. ±×·¡¼­ C°°ÀÌ ±â°è¿¡ ¹«°üÇÑ ¾ð¾î¸¦ »ç¿ëÇÏ´Â °ÍÀÌ ÈξÀ ÁÁ´Ù. C´Â ÇÁ·Î±×·¥À» ó¸®ÇÒ ³í¸®ÀûÀÎ ÀÚ·á¿Í ³í¸®ÀûÀÎ ¾Ë°í¸®Áò À¸·Î Ç¥ÇöÇÒ ¼ö ÀÖ°Ô ÇØÁØ´Ù. ÄÄÆÄÀÏ·¯¶ó°í Çϴ Ư¼öÇÑ ÇÁ·Î±×·¥Àº ÀÌ C ÇÁ·Î±×·¥À» Àо ¾î¼Àºí¸®·Î º¯È¯ÇÏ¿©, ƯÁ¤ ±â°è¿¡ ÇØ´çÇÏ´Â Äڵ带 ¸¸µé¾î³½´Ù. ÁÁÀº ÄÄÆÄÀÏ·¯´Â ÈǸ¢ÇÑ ¾î¼Àºí¸® ÇÁ·Î±×·¡¸Ó°¡ ÀÛ¼ºÇÑ °Í¿¡ °¡±õ°Ô È¿À²ÀûÀÎ ¾î¼Àºí¸® Äڵ带 ¸¸µé¾î³½´Ù. ¸®´ª½º Ä¿³ÎÀÇ ´ëºÎºÐÀº C¾ð¾î·Î µÇ¾î ÀÖ´Ù. ´ÙÀ½ C ÄÚµå´Â ¾Õ¿¡ ¿¹·Î µç ¾î¼Àºí¸® ÄÚµå¿Í ¶È°°Àº ¿¬»êÀ» ¼öÇàÇÑ´Ù. if (x != y) x = y; ÀÌ´Â º¯¼ö xÀÇ °ª°ú º¯¼ö yÀÇ °ªÀÌ ´Ù¸£¸é x¿¡ yÀÇ °ªÀ» º¹»çÇÒ °ÍÀÌ´Ù. C ÄÚµå´Â °¢±â ´Ù¸¥ ÀÏÀ» ¼öÇàÇÏ´Â ¿©·¯°³ÀÇ ·çƾµé·Î ÀÌ·ç¾îÁø´Ù. ·çƾÀº ¾î¶² °ªÀ̳ª, C¾ð¾î¿¡¼­ Áö¿øÇÏ´Â ÀÚ·áÇüÀ» ¸®ÅÏÇÒ ¼ö ÀÖ´Ù. ¸®´ª½º Ä¿³Î °°ÀÌ Å« ÇÁ·Î±×·¥Àº ¸¹Àº ¼öÀÇ C ¸ðµâ·Î ÀÌ·ç¾îÁö¸ç, °¢ ¸ðµâÀº ÀڽŸ¸ÀÇ ÀڷᱸÁ¶¿Í ·çƾµé·Î ±¸¼ºµÇ¾î ÀÖ´Ù. ÀÌ·± C ¼Ò½º ÄÚµå ¸ðµâÀÌ ¸ð¿©¼­ ÆÄÀÏ ½Ã½ºÅÛÀ» ´Ù·ç´Â °Í°°Àº ³í¸®ÀûÀÎ ±â´ÉÀ» ÇÏ°Ô µÈ´Ù. C´Â ¿©·¯ °¡Áö º¯¼öÇüÀ» Áö¿øÇÑ´Ù. º¯¼ö¶õ ½Éº¼ À̸§À¸·Î ÂüÁ¶ÇÒ ¼ö ÀÖ´Â ¸Þ¸ð¸® »óÀÇ ÇÑ À§Ä¡ÀÌ´Ù. ÇÁ·Î±×·¡¸Ó´Â ÀÌ·± º¯¼ö°¡ ¸Þ¸ð¸® »óÀÇ ¾îµð¿¡ ÀÖ´ÂÁö ½Å°æ ¾µ ÇÊ¿ä°¡ ¾ø´Ù. ÀÌ ÀÏÀº ¹Ø¿¡¼­ ¼³¸íÇÒ ¸µÄ¿°¡ ¾Ë¾Æ¼­ ÇØÁØ´Ù. º¯¼ö´Â °¢°¢ Á¤¼ö, ½Ç¼ö, Æ÷ÀÎÅÍ µîÀÇ ´Ù¸¥ Á¾·ùÀÇ ÀڷḦ °¡Áú ¼ö ÀÖ´Ù. Æ÷ÀÎÅÍ´Â ¾î¶²ÀÚ·áÀÇ ¸Þ¸ð¸® »óÀÇ À§Ä¡ÀÎ ÁÖ¼Ò¸¦ °ªÀ¸·Î °¡Áö´Â º¯¼öÀÌ´Ù. ¾î¶² º¯¼ö x°¡ ¸Þ¸ð¸® »óÀÇ ÁÖ¼Ò 0x80010000¿¡ ÀÖ´Ù°í ÇÏÀÚ. ¿©±â¼­ x¸¦ °¡¸®Å°´Â Æ÷ÀÎÅÍ º¯¼ö - ÀÌ°ÍÀ» px¶ó°í ÇÏÀÚ - ¸¦ ¸¸µé ¼ö ÀÖ°í, ÀÌ px´Â 0x80010030 ¹øÁö¿¡ ÀÖ´Ù°í ÇÏÀÚ. ±×·¯¸é pxÀÇ °ªÀº º¯¼ö xÀÇ ÁÖ¼ÒÀÎ 0x80010000ÀÌ°Ô µÈ´Ù. C¿¡¼­´Â ¼­·Î °ü·ÃµÈ º¯¼ö ¿©·¯°³¸¦ ¹­¾î ÇϳªÀÇ ÀڷᱸÁ¶·Î ¹­À» ¼ö ÀÖ´Ù. ¿¹¸¦ µé¾î, struct { int i; char b; } my_struct; ´Â i¶ó´Â Á¤¼ö(32ºñÆ® ÀÚ·á°ø°£À» Â÷ÁöÇÑ´Ù)¿Í, b¶ó´Â ¹®ÀÚ(8ºñÆ® ÀÚ·á), ÀÌ µÎ °³ÀÇ ¿ø¼Ò¸¦ °¡Áø my_struct¶ó´Â ÀڷᱸÁ¶¸¦ Á¤ÀÇÇÑ´Ù. 2.1.3 ¸µÄ¿(Linker) ¸µÄ¿´Â ¿©·¯°³ÀÇ ¿ÀºêÁ§Æ® ¸ðµâ°ú ¶óÀ̺귯¸®¸¦ ¿¬°áÇÏ¿© ÇϳªÀÇ ¿Ï°áµÈ ÇÁ·Î±×·¥À» ¸¸µé¾î³»´Â ÇÁ·Î±×·¥ÀÌ´Ù. ¿ÀºêÁ§Æ® ¸ðµâÀº ¾î¼Àºí·¯³ª ÄÄÆÄÀÏ ·¯°¡ ¸¸µé¾î ³½ ±â°è¾î ÄÚµå Ãâ·Â¹°·Î, ±â°è¾î ÄÚµå¿Í ÀÚ·á, ±×¸®°í ¸µÄ¿ °¡ ´Ù¸¥ ¸ðµâ°ú °áÇÕÇÏ¿© ÇϳªÀÇ ÇÁ·Î±×·¥À» ¸¸µé¾î ³»´Âµ¥ ÇÊ¿äÇÑ Á¤º¸¸¦ Æ÷ÇÔÇÑ´Ù. ¿¹¸¦ µé¾î ¾î¶² ÇÁ·Î±×·¥¿¡¼­, ÇÊ¿äÇÑ µ¥ÀÌÅͺ£À̽º ÇÔ¼ö¸¦ ¸ðµÎ ¾î¶² ÇϳªÀÇ ¸ðµâÀÌ °¡Áö°í ÀÖ°í, ¸í·ÉÇà ÀÎÀÚ¸¦ ó¸®ÇÏ´Â ÇÔ¼ö¸¦ ´Ù¸¥ ¸ðµâÀÌ °¡Áö°í ÀÖ´Ù°í ÇÏÀÚ. ¸µÄ¿´Â ÇϳªÀÇ ¿ÀºêÁ§Æ® ¸ðµâ¿¡¼­ ½ÇÁ¦ ·Î ´Ù¸¥ ¸ðµâ¿¡ ÀÖ´Â ÀڷᱸÁ¶³ª ·çƾÀ» ÂüÁ¶ÇÏ°í ÀÖÀ» ¶§, ÀÌµé ¸ðµâ »çÀÌÀÇ ÂüÁ¶¸¦ ¸ÂÃß¾î ÁØ´Ù. ¸®´ª½º Ä¿³ÎÀº ¸¹Àº ¿ä¼ÒÀÇ ¿ÀºêÁ§Æ® ¸ðµâ µéÀ» ¸µÅ©ÇÏ¿© ¸¸µç, ÇϳªÀÇ °Å´ëÇÑ ÇÁ·Î±×·¥ÀÌ´Ù. 2.2 ¿î¿µÃ¼Á¦(Operating System)¶õ ¹«¾ùÀΰ¡? ¼ÒÇÁÆ®¿þ¾î°¡ ¾ø´Ù¸é ÄÄÇ»ÅÍ´Â ±×Àú ¿­À̳ª ³»´Â ÀüÀÚÁ¦Ç° µ¢¾î¸®¿¡ Áö³ªÁö ¾Ê´Â´Ù. Çϵå¿þ¾î¸¦ ÄÄÇ»ÅÍÀÇ ½ÉÀåÀ̶ó°í ÇÑ´Ù¸é, ¼ÒÇÁÆ®¿þ¾î´Â ÄÄÇ»ÅÍÀÇ ¿µÈ¥À̶ó ÇÒ ¼ö ÀÖ´Ù. ¿î¿µÃ¼Á¦´Â »ç¿ëÀÚ°¡ ÀÀ¿ëÇÁ·Î±×·¥À» ½ÇÇà ÇÒ ¼ö ÀÖµµ·Ï ÇØÁÖ´Â ½Ã½ºÅÛ ÇÁ·Î±×·¥µéÀ» ¸ð¾Æ³õÀº °ÍÀÌ´Ù. ¿î¿µÃ¼Á¦´Â ½ÇÁ¦ Çϵå¿þ¾î¸¦ Ãß»óÈ­ÇÏ¿© ½Ã½ºÅÛÀÇ »ç¿ëÀÚ¿Í ÀÀ¿ëÇÁ·Î±×·¥ ¿¡°Ô °¡»ó ±â°è(virtual machine)¸¦ Á¦°øÇÑ´Ù. ±×·¡¼­ ½ÇÁ¦·Î ¿î¿µÃ¼Á¦°¡ ½Ã½ºÅÛÀÇ Æ¯¼ºÀ» Á¦°øÇØÁÖ´Â °Íó·³ ´À²¸Áø´Ù. ´ëºÎºÐÀÇ PC´Â Çϳª ÀÌ»óÀÇ ¿î¿µÃ¼Á¦¸¦ µ¹¸± ¼ö ÀÖÀ¸¸ç, °¢ ¿î¿µÃ¼Á¦´Â ¸Å¿ì ´Ù¸¥ ¸ð½À°ú ´À³¦À» °®°í ÀÖ´Ù. ¸®´ª½º´Â ¿î¿µÃ¼Á¦¸¦ ±¸¼ºÇÏ´Â ¿©·¯°³ÀÇ ±â´ÉÀûÀ¸·Î ºÐ¸®µÈ Á¶°¢µé ·Î ¸¸µé¾îÁø´Ù. ¸®´ª½º¿¡¼­ ¸í¹éÇÏ°Ô ±¸ºÐµÇ´Â ºÎºÐÀº Ä¿³ÎÀÌÁö¸¸, ¶óÀÌºê ·¯¸®³ª ½©ÀÌ ¾ø´Ù¸é Ä¿³ÎÀº ¹«¿ëÁö¹°ÀÌ´Ù. ¿î¿µÃ¼Á¦°¡ ¹«¾ùÀÎÁö ÀÌÇظ¦ ÇÒ ¼ö ÀÖµµ·Ï, ´ÙÀ½°ú °°ÀÌ °£´ÜÇÑ ¸í·ÉÀ» ÃÆÀ» ¶§ ¾î¶² ÀÏÀÌ ³ª´ÂÁö »ý°¢Çغ¸ÀÚ. $ ls Mail c images perl docs tcl $ ¿©±â¼­ $´Â ·Î±×ÀÎ ½©(ÀÌ °æ¿ì¿¡´Â bash)ÀÌ ³»º¸³»´Â ÇÁ·ÒÇÁÆ®ÀÌ´Ù. ÀÌ´Â »ç¿ëÀÚ°¡ ¾î¶² ¸í·ÉÀ» ³»¸®±â¸¦ ±â´Ù¸®°í ÀÖ´Ù´Â °ÍÀ» ÀǹÌÇÑ´Ù. ls¶ó°í ÃÄ ³ÖÀ¸¸é Å°º¸µå µå¶óÀ̹ö´Â ¹«½¼ ±ÛÀÚ°¡ ÀԷµǾú´ÂÁö ÀνÄÇÏ°í ÀνÄÇÑ ±ÛÀÚµéÀ» ½©¿¡ ³Ñ°ÜÁØ´Ù. ½©Àº ±×·± À̸§À» °¡Áø ½ÇÇà À̹ÌÁö°¡ ÀÖ´ÂÁö ã°í, ¿©±â¼­´Â /bin/ls¶ó´Â À̹ÌÁö¸¦ ã°Ô µÈ´Ù. Ä¿³Î ¼­ºñ½º¸¦ È£ÃâÇÏ¿© ls¶ó´Â ½ÇÇà À̹ÌÁö¸¦ °¡»ó ¸Þ¸ð¸®¿¡ ¿Ã¸®°í, À̸¦ ½ÇÇàÇÏ°Ô µÈ´Ù. ls À̹ÌÁö´Â Ä¿³ÎÀÇ ÆÄÀÏ ¼­ºê½Ã½ºÅÛÀÇ ÇÔ¼ö¸¦ È£ÃâÇÏ¿© ¾î¶² ÆÄÀϵéÀÌ ÀÖ´ÂÁö ã´Â´Ù. ÆÄÀÏ ½Ã½ºÅÛÀº ij½ÃµÈ ÆÄÀÏ ½Ã½ºÅÛ Á¤º¸¸¦ ÀÌ¿ëÇϰųª, µð½ºÅ© µð¹ÙÀ̽º µå¶óÀ̹ö¸¦ »ç¿ëÇÏ¿© µð½ºÅ©¿¡¼­ ÀÌ Á¤º¸¸¦ Àоî¿Ã ¼öµµ ÀÖ´Ù. ¶Ç´Â ÆÄÀÏ ½Ã½ºÅÛÀÌ ³×Æ®¿÷ ÆÄÀÏ ½Ã½ºÅÛ(Network File System, NFS)À» ÅëÇÏ¿© ¿ø°ÝÀ¸·Î ¸¶¿îÆ®µÈ °æ¿ì, ¾×¼¼½ºÇØ¾ß ÇÏ´Â ¿ø°Ý ÆÄÀϵéÀÇ ¼¼ºÎÁ¤º¸¸¦ ã±â À§ÇØ ³×Æ®¿÷ µå¶óÀ̹ö¸¦ ÀÌ¿ëÇÏ¿© ¿ø°Ý ±â°è¿Í Á¤º¸¸¦ ±³È¯ÇÒ ¼öµµ ÀÖ´Ù. ¾î¶² ¹æ¹ýÀ¸·Î Á¤º¸¸¦ ã¾Ò´ø °£¿¡, ls´Â ±× Á¤º¸¸¦ Ãâ·ÂÇÏ°í, ºñµð¿À µå¶óÀ̹ö´Â À̸¦ È­¸é¿¡ Ç¥½ÃÇÑ´Ù. ¾ê±â°¡ Á» º¹ÀâÇØÁø °Í °°Áö¸¸, ¾î·µç ÀÌ·± °£´ÜÇÑ ¸í·ÉÀ» ÅëÇؼ­µµ, ¿î¿µÃ¼Á¦´Â »ç½Ç»ó ¼­·Î Çùµ¿ÇÏ´Â ¿©·¯ ±â´ÉµéÀÌ ¸ð¿©¼­ »ç¿ëÀÚ¿¡°Ô ½Ã½º ÅÛÀÇ ÀÏ°üµÈ ¸ð½ÀÀ» º¸¿©Áشٴ °ÍÀ» ¾Ë ¼ö ÀÖ´Ù. 2.2.1 ¸Þ¸ð¸® °ü¸®(Memory Management) ÀÚ¿ø - ¿¹¸¦ µé¾î ¸Þ¸ð¸® - ÀÌ ¹«ÇÑÈ÷ ÀÖ´Ù¸é ¿î¿µÃ¼Á¦°¡ ÇÏ´Â ÀÏÀÇ »ó´ç ºÎºÐÀº ÇÊ¿ä¾ø´Â ÀÏÀÌ µÉ °ÍÀÌ´Ù. ¸ðµç ¿î¿µÃ¼Á¦ÀÇ ±âº»±â ÁßÀÇ Çϳª´Â ÀûÀº ¾çÀÇ ½ÇÁ¦ ¸Þ¸ð¸®(physical memory)¸¦ ¸¹ÀÌ ÀÖ´Â °Íó·³ º¸ÀÌ°Ô ÇÏ´Â °ÍÀÌ´Ù. °ÑÀ¸·Î º¸±â¿¡ ¸¹¾Æ º¸ÀÌ´Â ÀÌ ¸Þ¸ð¸®¸¦ °¡»ó ¸Þ¸ð¸® (virtual memory)¶ó°í ºÎ¸¥´Ù. ÀÌ ¾ÆÀ̵ð¾î´Â ½Ã½ºÅÛ ³»¿¡¼­ ½ÇÇàÁßÀÎ ¼ÒÇÁÆ®¿þ¾î¸¦ ¼Ó¿©¼­ ¸Þ¸ð¸®°¡ ¸¹ÀÌ ÀÖ´Â °Íó·³ ¹Ï°Ô ¸¸µå´Â °ÍÀÌ´Ù. ½Ã½ºÅÛÀº ¸Þ¸ð¸®¸¦ ½±°Ô ´Ù·ê ¼ö ÀÖµµ·Ï ÆäÀÌÁö(page)·Î ÂÉ°³°í, ½Ã½ºÅÛÀÌ ½ÇÇàµÇ¸é¼­ À̵é ÆäÀÌÁö¸¦ Çϵåµð½ºÅ©·Î ½º¿Ò(swap)ÇÑ´Ù. ¼ÒÇÁÆ®¿þ¾î´Â ¸ÖƼÇÁ·Î¼¼½ÌÀ̶ó´Â ¶Ç ´Ù¸¥ Æ®¸¯ ¶§¹®¿¡ ÀÌ »ç½ÇÀ» ±ú´ÝÁö ¸øÇÑ´Ù. 2.2.2 ÇÁ·Î¼¼½º(Process) ÇÁ·Î¼¼½º¶õ ½ÇÇàÁßÀÎ ÇÁ·Î±×·¥À̸ç, °¢ ÇÁ·Î¼¼½º´Â °¢±â ÇϳªÀÇ ÇÁ·Î±×·¥ À» ½ÇÇàÇÏ´Â ±¸ºÐµÈ °³Ã¼ÀÌ´Ù. ÇöÀç »ç¿ëÇÏ´Â ¸®´ª½º ½Ã½ºÅÛ¿¡ µ¿ÀÛÇÏ°í ÀÖ´Â ÇÁ·Î¼¼½º¸¦ »ìÆ캻´Ù¸é, »ó´çÈ÷ ¸¹Àº ¼öÀÇ ÇÁ·Î¼¼½º°¡ ÀÖÀ½À» ¾Ë ¼ö ÀÖÀ» °ÍÀÌ´Ù. ps¶ó°í ŸÀÌÇÎÇÏ¸é ½Ã½ºÅÛ¿¡ ÀÖ´Â ÇÁ·Î¼¼½ºµéÀ» º¸¿©Áִµ¥, ¿¹¸¦ µé¾î ´ÙÀ½°ú °°Àº °á°ú°¡ ³ª¿Â´Ù. $ ps PID TTY STAT TIME COMMAND 158 pRe 1 0:00 -bash 174 pRe 1 0:00 sh /usr/X11R6/bin/startx 175 pRe 1 0:00 xinit /usr/X11R6/lib/X11/xinit/xinitrc -- 178 pRe 1 N 0:00 bowman 182 pRe 1 N 0:01 rxvt -geometry 120x35 -fg white -bg black 184 pRe 1 < 0:00 xclock -bg grey -geometry -1500 -1500 -padding 0 185 pRe 1 < 0:00 xload -bg grey -geometry -0-0 -label xload 187 pp6 1 9:26 /bin/bash 202 pRe 1 N 0:00 rxvt -geometry 120x35 -fg white -bg black 203 ppc 2 0:00 /bin/bash 1796 pRe 1 N 0:00 rxvt -geometry 120x35 -fg white -bg black 1797 v06 1 0:00 /bin/bash 3056 pp6 3 < 0:02 emacs intro/introduction.tex 3270 pp6 3 0:00 ps $ ¸¸¾à ½Ã½ºÅÛ¿¡ CPU°¡ ¿©·¯°³ ÀÖ´Ù¸é °¢ ÇÁ·Î¼¼½º´Â °¢±â ´Ù¸¥ CPU¿¡¼­ ½ÇÇàµÉ ¼ö ÀÖÀ» °ÍÀÌ´Ù (ÃÖ¼ÒÇÑ ÀÌ·ÐÀûÀ¸·Î´Â ±×·¸´Ù). ÇÏÁö¸¸ ºÒÇàÈ÷µµ CPU´Â º¸Åë Çϳª¹Û¿¡ ¾ø±â ¶§¹®¿¡ ¿î¿µÃ¼Á¦´Â °¢°¢ÀÇ ÇÁ·Î¼¼½º¸¦ µ¹¾Æ °¡¸ç ªÀº ½Ã°£ ½ÇÇàÇÏ´Â ¶Ç ´Ù¸¥ Æ®¸¯À» »ç¿ëÇØ¾ß ÇÑ´Ù. ÀÌ ÂªÀº ½Ã°£À» ŸÀÓ ½½¶óÀ̽º(time-slice)¶ó°í ÇÑ´Ù. ÀÌ·± Æ®¸¯À» ¸ÖƼ ÇÁ·Î¼¼½Ì(multi-processing) ¶Ç´Â ½ºÄÉÁ층(scheduling)À̶ó°í ºÎ¸£¸ç, ÀÌ´Â °¢ ÇÁ·Î¼¼½º°¡ ÀڽŸ¸ÀÌ À¯ÀÏÇÑ ÇÁ·Î¼¼½ºÀÎ °Íó·³ »ý°¢Çϵµ·Ï ¼ÓÀÌ ´Â °ÍÀÌ´Ù. ÇÁ·Î¼¼½º °£¿¡´Â ¼­·Î º¸È£°¡ µÇ±â ¶§¹®¿¡ ÇÑ ÇÁ·Î¼¼½º°¡ ¹Ú»ì À̳ª°Å³ª ¿Àµ¿ÀÛÀ» Çصµ ´Ù¸¥ ÇÁ·Î¼¼½º¿¡ ¿µÇâÀ» ¹ÌÄ¡Áö ¾Ê´Â´Ù. ¿î¿µÃ¼Á¦ ´Â °¢ ÇÁ·Î¼¼½º¿¡°Ô ÀڽŸ¸ÀÌ ¾×¼¼½º ÇÒ ¼ö ÀÖ´Â ºÐ¸®µÈ ÁÖ¼Ò°ø°£À» ÁÜÀ¸ ·Î½á ÀÌ ±â´ÉÀ» ´Þ¼ºÇÑ´Ù. 2.2.3 µð¹ÙÀ̽º µå¶óÀ̹ö(Device Driver) µð¹ÙÀ̽º µå¶óÀ̹ö´Â ¸®´ª½º Ä¿³ÎÀÇ ÁÖ¿ä ºÎºÐÀ» ±¸¼ºÇÑ´Ù. µð¹ÙÀ̽º µå¶óÀ̹ö´Â ¿î¿µÃ¼Á¦ÀÇ ´Ù¸¥ ºÎºÐµé°ú ¸¶Âù°¡Áö·Î Ư±ÇÃþ¿¡¼­ µ¿ÀÛÇϹǷÎ, À߸øµÉ °æ¿ì ½É°¢ÇÑ °á°ú¸¦ °¡Á®¿Â´Ù. µð¹ÙÀ̽º µå¶óÀ̹ö´Â ÀÚ½ÅÀÌ Á¦¾îÇÏ´Â Çϵå¿þ¾î ÀåÄ¡¿Í ¿î¿µÃ¼Á¦ °£ÀÇ »óÈ£ÀÛ¿ëÀ» Á¦¾îÇÑ´Ù. ¿¹¸¦ µé¾î, ÆÄÀÏ ½Ã½ºÅÛÀº IDE µð½ºÅ©¿¡ ºí·°À» ±â·ÏÇÒ ¶§ ÀϹÝÀûÀÎ ºí·° ÀåÄ¡ ÀÎÅÍÆäÀ̽º¸¦ »ç¿ëÇϴµ¥, µð¹ÙÀ̽º µå¶óÀ̹ö´Â ÀåÄ¡ÀÇ ¼¼¼¼ÇÑ ºÎºÐ ±îÁö ì±â¸ç, ÀåÄ¡¸¶´Ù ´Ù¸¥ ÀϵéÀ» ½ÇÇàÇÑ´Ù. µð¹ÙÀ̽º µå¶óÀ̹ö´Â ±¸µ¿ ÇÏ·Á´Â ÄÁÆ®·Ñ·¯ Ĩ¿¡ µû¶ó ´Ù¸£´Ù. ±×·¡¼­ NCR810 SCSI ÄÁÆ®·Ñ·¯°¡ ÀÖ´Ù¸é NCR810 SCSI µå¶óÀ̹ö°¡ ÇÊ¿äÇÑ °Í ÀÌ´Ù. 2.2.4 ÆÄÀÏ ½Ã½ºÅÛ(File System) À¯´Ð½º¿Í ¸¶Âù°¡Áö·Î, ¸®´ª½º¿¡¼­µµ ½Ã½ºÅÛÀÌ »ç¿ëÇÒ ¼ö ÀÖ´Â ±¸ºÐµÈ ÆÄÀÏ ½Ã½ºÅÛ¿¡ Á¢±ÙÇϴµ¥ ÀåÄ¡ ½Äº°ÀÚ(µå¶óÀÌºê ¹øÈ£³ª µå¶óÀ̺ê À̸§°°Àº)¸¦ »ç¿ëÇÏÁö ¾Ê´Â´Ù. ´ë½Å ÆÄÀÏ ½Ã½ºÅÛ Àüü¸¦ ÇϳªÀÇ °èÃþÀûÀÎ Æ®¸® ±¸Á¶·Î ¿¬°áÇÏ¿© ÇϳªÀÇ °³Ã¼·Î º¸¿©ÁØ´Ù. ¸®´ª½º´Â °¢°¢ÀÇ »õ·Î¿î ÆÄÀÏ ½Ã½ºÅÛÀ» /mnt/cdrom°°Àº ¸¶¿îÆ® µð·ºÅ丮¿¡ ¸¶¿îÆ®ÇÏ¿©, ÇϳªÀÇ ÆÄÀÏ ½Ã½ºÅÛ Æ®¸® ±¸Á¶¿¡ Ãß°¡ÇÑ´Ù. ¿¹¸¦ µé¸é CD-ROMÀ» /mn/cdromÀ¸·Î ¸¶¿îÆ®ÇÏ´Â °ÍÀÌ´Ù. ¿©·¯ °¡Áö ÆÄÀÏ ½Ã½ºÅÛÀ» Áö¿øÇÏ´Â °ÍÀº ¸®´ª½ºÀÇ °¡Àå Áß¿äÇÑ Æ¯Â¡ ÁßÀÇ ÇϳªÀÌ´Ù. ÀÌ´Â ¸®´ª½º¸¦ ¸Å¿ì À¯¿¬ÇÏ°Ô ¸¸µé¸ç, ´Ù¸¥ ¿î¿µÃ¼Á¦¿Í Àß °øÁ¸ ÇÒ ¼ö ÀÖ°Ô ÇÑ´Ù. ¸®´ª½º¿¡¼­ °¡Àå ¸¹ÀÌ »ç¿ëÇÏ´Â ÆÄÀÏ ½Ã½ºÅÛÀº EXT2 ÆÄÀϽýºÅÛÀ¸·Î, ´ëºÎºÐÀÇ ¸®´ª½º ¹èÆ÷ÆÇÀÌ EXT2¸¦ Áö¿øÇÑ´Ù. ÆÄÀÏ ½Ã½ºÅÛ¿¡ ÀÇÇØ »ç¿ëÀÚ´Â ÆÄÀÏ ½Ã½ºÅÛÀÇ Çüųª ±× ÇϺÎÀÇ ¹°¸®ÀûÀÎ ÀåÄ¡ÀÇ Æ¯Â¡¿¡ »ó°ü¾øÀÌ ½Ã½ºÅÛÀÇ ÇÏµå µð½ºÅ©¿¡ ÀÖ´Â ÆÄÀÏÀ̳ª µð·ºÅ丮 ¸¦ ÀνÄÇÒ ¼ö ÀÖ°Ô µÈ´Ù. ¸®´ª½º´Â MS-DOS³ª EXT2 µîÀÇ ¸¹Àº ´Ù¸¥ ÆÄÀÏ ½Ã½ºÅÛÀ» Åõ¸íÇÏ°Ô Áö¿øÇϸç, ¸¶¿îÆ®µÇ¾î ÀÖ´Â ¸ðµç ÆÄÀÏ°ú ÆÄÀÏ ½Ã½ºÅÛÀ» ÇϳªÀÇ ÅëÇÕµÈ °¡»ó ÆÄÀÏ ½Ã½ºÅÛ(Virtual File System, VFS)À¸·Î Á¦°ø ÇÑ´Ù. µû¶ó¼­, »ç¿ëÀÚ¿Í ÇÁ·Î¼¼½º´Â ÀϹÝÀûÀ¸·Î ¾î¶² ÆÄÀÏÀÌ ¹«½¼ ÆÄÀÏ ½Ã½ºÅÛ¿¡ ¼ÓÇØ ÀÖ´ÂÁö ¾Ë ÇÊ¿ä ¾øÀÌ »ç¿ëÇϱ⸸ ÇÏ¸é µÈ´Ù. ºí·° µð¹ÙÀ̽º µå¶óÀ̹ö´Â ½ÇÁ¦ ºí·° ÀåÄ¡ÀÇ À¯Çü(IDE¿Í SCSI°°Àº)¿¡ µû¸¥ Â÷ÀÌÁ¡À» ¼û°ÜÁֱ⠶§¹®¿¡, ÆÄÀÏ ½Ã½ºÅÛ¿¡ À־´Â ÀÌ ¹°¸®Àû ÀåÄ¡ ´Â ±×Àú ¿¬¼ÓµÈ µ¥ÀÌÅÍ ºí·°ÀÇ ¸ðÀ½ÀÏ »ÓÀÌ´Ù. ºí·°ÀÇ Å©±â´Â ÀåÄ¡¿¡ µû¶ó ´Ù¸¦ ¼ö ÀÖ´Ù. ¿¹¸¦ µé¾î, Ç÷ÎÇÇ ÀåÄ¡´Â °øÅëÀûÀ¸·Î 512¹ÙÀÌÆ®¸¦ »ç¿ë Çϴµ¥ ¹ÝÇØ, IDE ÀåÄ¡´Â 1024¹ÙÀÌÆ®¸¦ »ç¿ëÇÑ´Ù. ÀÌ Â÷ÀÌ´Â ½Ã½ºÅÛ »ç¿ë ÀÚ¿¡°Õ º¸ÀÌÁö ¾Ê´Â´Ù. EXT2 ÆÄÀÏ ½Ã½ºÅÛÀÌ ¾î¶² ÀåÄ¡¿¡ µé¾îÀÖµç °£¿¡ »ç¿ëÀÚ¿¡°Õ ¸ðµÎ ¶È°°ÀÌ º¸ÀδÙ. 2.3 Ä¿³Î ÀڷᱸÁ¶(Kernel Data Structure) ¿î¿µÃ¼Á¦´Â ½Ã½ºÅÛÀÇ ÇöÀç »óÅ¿¡ ´ëÇÑ ¸Å¿ì ¸¹Àº ¾çÀÇ Á¤º¸¸¦ °®°í ÀÖ¾î¾ß ÇÑ´Ù. ½Ã½ºÅÛ ³»ºÎ¿¡¼­ ¾î¶² ÀÏÀÌ ÀϾ¸é ÇöÀç »óŸ¦ ¹Ý¿µÇϱâ À§ÇØ À̵é ÀڷᱸÁ¶¸¦ º¯°æÇØ¾ß ÇÑ´Ù. ¿¹¸¦ µé¾î, ÇÑ »ç¿ëÀÚ°¡ ½Ã½ºÅÛ¿¡ ·Î±×ÀÎÇÏ¸é »õ·Î¿î ÇÁ·Î¼¼½º°¡ ¸¸µé¾î Áö°Ô µÇ´Âµ¥, Ä¿³ÎÀº ÀÌ »õ·Î¿î ÇÁ·Î¼¼½º¸¦ ³ªÅ¸³»´Â ÀڷᱸÁ¶¸¦ ¸¸µé°í, À̸¦ ½Ã½ºÅÛ ³»ÀÇ ´Ù¸¥ ÇÁ·Î¼¼½º¸¦ ³ªÅ¸³»´Â ¸ðµç ÀڷᱸÁ¶¿Í ¿¬°áÇÏ¿©¾ß ÇÑ´Ù. À̵é ÀڷᱸÁ¶ÀÇ ´ëºÎºÐÀº ½ÇÁ¦ ¸Þ¸ð¸® »ó¿¡ Á¸ÀçÇÏ´Â °ÍÀ̸ç, Ä¿³Î°ú Ä¿³ÎÀÇ ¼­ºê½Ã½ºÅÛ¸¸ÀÌ ¾×¼¼½ºÇÒ ¼ö ÀÖ´Ù. ÀڷᱸÁ¶´Â µ¥ÀÌÅÍ¿Í Æ÷ÀÎÅ͸¦ Æ÷ÇÔÇϸç, ÀÌ Æ÷ÀÎÅÍ´Â ´Ù¸¥ ÀڷᱸÁ¶³ª ·çƾÀ» °¡¸®Å²´Ù. ¸®´ª½º Ä¿³ÎÀÌ »ç¿ëÇÏ´Â ÀڷᱸÁ¶¸¦ Çѹø¿¡ ¹¶Ãļ­ º¸¸é ¸Å¿ì È¥µ¿½º·¯¿ï ¼öµµ ÀÖ´Ù. ¸ðµç ÀڷᱸÁ¶´Â °íÀ¯ÀÇ ¸ñÀûÀ» °®°í ÀÖÀ¸¸ç, ÀϺδ ¿©·¯ Ä¿³Î ¼­ºê ½Ã½ºÅÛ¿¡¼­ »ç¿ëÇÏÁö¸¸, ½ÇÁ¦·Î´Â óÀ½ º¸±âº¸´Ù´Â ´õ ´Ü¼øÇÏ´Ù. ¸®´ª½º Ä¿³ÎÀ» ÀÌÇØÇÏ´Â °ÍÀº ¸®´ª½º Ä¿³ÎÀÇ ÀڷᱸÁ¶¿Í Ä¿³Î¿¡ ÀÖ´Â ¿©·¯ ÇÔ¼öµéÀÌ À̸¦ ¾î¶»°Ô È°¿ëÇÏ´ÂÁö ÀÌÇØÇϴµ¥ ´Þ·Á ÀÖ´Ù. ÀÌ Ã¥Àº ¸®´ª½º Ä¿³ÎÀ» ÀڷᱸÁ¶¿¡ ±â¹ÝÇÏ¿© ¼³¸íÇÑ´Ù. °¢ Ä¿³Î ¼­ºê½Ã½ºÅÛÀ» ¿øÇÏ´Â ÀÏÀ» ¾î¶»°Ô ó¸®ÇÏ´ÂÁö¸¦ ³ªÅ¸³»´Â ¾Ë°í¸®Áò°ú, Ä¿³ÎÀÇ ÀڷᱸÁ¶¸¦ ¾î¶»°Ô »ç¿ëÇÏ´ÂÁö¸¦ Áß½ÉÀ¸·Î ¼³¸íÇÑ´Ù. 2.3.1 ¿¬°á ¸®½ºÆ®(Linked List) ¸®´ª½º´Â ÀڷᱸÁ¶¸¦ ¼­·Î ¿¬°áÇϱâ À§ÇÏ¿© ¿©·¯ °¡Áö ¼ÒÇÁÆ®¿þ¾î °øÇÐÀû ±â¹ýÀ» »ç¿ëÇÑ´Ù. ¸¹Àº °æ¿ì ¸®´ª½º´Â ¿¬°áµÈ(linked), ¶Ç´Â ¿¬¼âµÈ(chained) ÀڷᱸÁ¶¸¦ »ç¿ëÇÏ°í ÀÖ´Ù. °¢ ÀڷᱸÁ¶°¡ ¾î¶² °Í - ¿¹¸¦ µé¾î ÇÁ·Î¼¼½º³ª ³×Æ®¿÷ ÀåÄ¡ - ÀÇ ÇÑ Á¸À糪 °æ¿ì¸¦ ³ªÅ¸³½´Ù¸é, Ä¿³ÎÀº ÀÌµé ¸ðµÎ¸¦ ã¾Æ³¾ ¼ö ÀÖ¾î¾ß ÇÑ´Ù. ¿¬°á ¸®½ºÆ®¿¡¼­´Â ·çÆ® Æ÷ÀÎÅÍ°¡ ¸®½ºÆ®¿¡ Àִ ù ¹ø° ÀڷᱸÁ¶(¶Ç´Â ¿ø¼Ò)ÀÇ ÁÖ¼Ò¸¦ °¡Áö°í, °¢ ÀڷᱸÁ¶´Â ¸®½ºÆ®ÀÇ ´ÙÀ½ ¿ø¼Ò ÀÇ ÁÖ¼Ò¸¦ °¡Áø´Ù. ¸¶Áö¸· ¿ø¼ÒÀÇ ´ÙÀ½ ¿ø¼Ò¸¦ °¡¸®Å°´Â Æ÷ÀÎÅÍ´Â ¸®½ºÆ® ÀÇ ³¡ÀÓÀ» ³ªÅ¸³»±â À§ÇØ 0 ¶Ç´Â NULL °ªÀ» °¡Áø´Ù. ÀÌÁß ¿¬°á ¸®½ºÆ® (Doubly Linked List)¿¡¼­´Â °¢ ¿ø¼Ò°¡ ´ÙÀ½ ¿ø¼Ò¸¦ °¡¸®Å°´Â Æ÷ÀÎÅÍ¿Í ÇÔ²², ÀÌÀü ¿ø¼Ò¸¦ °¡¸®Å°´Â Æ÷ÀÎÅ͵µ °¡Áø´Ù. ÀÌÁß ¿¬°á ¸®½ºÆ®¸¦ »ç¿ë ÇÏ¸é ¸Þ¸ð¸® ¾×¼¼½º Ƚ¼ö°¡ ´õ ¸¹¾ÆÁö±ä ÇÏÁö¸¸, ¸®½ºÆ®ÀÇ Áß°£¿¡ ¿ø¼Ò¸¦ Ãß°¡Çϰųª »èÁ¦ÇÏ´Â °ÍÀÌ ´õ ½±´Ù. ÀÌ´Â ¿î¿µÃ¼Á¦¿¡¼­ °¡Àå ÀüÇüÀûÀÎ Æ®·¹ÀÌµå ¿ÀÇÁ(trade off) ÀÌ´Ù. ¸Þ¸ð¸® ¾×¼¼½º¸¦ ´õ ÇÒ °ÍÀΰ¡, ¾Æ´Ï¸é CPU »çÀÌŬÀ» ´õ ¾µ °ÍÀΰ¡. 2.3.2 Çؽà Å×À̺í(Hash Table) ¿¬°á ¸®½ºÆ®´Â ÀڷᱸÁ¶¸¦ ¹­´Â ¼Õ½¬¿î ¹æ¹ýÀÌÁö¸¸, ¿¬°á ¸®½ºÆ®¸¦ Ž»ö ÇÏ´Â °ÍÀº ºñÈ¿À²ÀûÀÏ ¼ö ÀÖ´Ù. ¾î¶² ƯÁ¤ ¿ø¼Ò¸¦ ãÀ¸·Á°í ÇÒ ¶§, ¿øÇÏ´Â °É ¹ß°ßÇÒ ¶§±îÁö ¸®½ºÆ® Àüü¸¦ Âß ÈȾ¾Æ¾ß Çϱ⠶§¹®ÀÌ´Ù. ÀÌ·± Á¦ÇÑ À» ÇÇÇϱâ À§ÇØ ¸®´ª½º´Â ÇؽÌ(hashing)À̶ó´Â ±â¹ýÀ» »ç¿ëÇÑ´Ù. Çؽà Å×À̺íÀº Æ÷ÀÎÅÍÀÇ ¹è¿­, Áï Æ÷ÀÎÅÍÀÇ º¤ÅÍ(vector)ÀÌ´Ù. ¹è¿­, Áï º¤ÅÍ´Â ¾î¶² °ÍµéÀÌ ¸Þ¸ð¸® »ó¿¡ Çϳª¾¿ À̾îÁ® ÀÖ´Â °ÍÀ» ¸»ÇÑ´Ù . Áï Ã¥²ÈÀ̴ åÀÇ ¹è¿­À̶ó°í ÇÒ ¼ö ÀÖ´Ù. ¹è¿­Àº ¹è¿­¿¡¼­ÀÇ À§Ä¡¸¦ ³ªÅ¸³»´Â À妽º (index)¸¦ °¡Áö°í ¾×¼¼½ºÇÑ´Ù. Ã¥²ÈÀÌ ºñÀ¯¸¦ Á¶±Ý ´õ È®ÀåÇÑ´Ù¸é, °¢°¢ÀÇ Ã¥À» '´Ù¼¸¹ø° Ã¥'°ú °°Àº¹æ½ÄÀ¸·Î Ã¥²ÈÀÌ¿¡¼­ÀÇ À§Ä¡·Î Ç¥ÇöÇÏ´Â °Í ÀÌ´Ù. Çؽà Å×À̺íÀº ÀڷᱸÁ¶¿¡ ´ëÇÑ Æ÷ÀÎÅÍÀÇ ¹è¿­À̸ç, À妽º´Â ÀڷᱸÁ¶ÀÇ ³»¿ëÀ¸·ÎºÎÅÍ ¸¸µé¾îÁø´Ù. ¾î¶² ¸¶À»ÀÇ Àα¸ ºÐÆ÷¸¦ ³ªÅ¸³»´Â ÀڷᱸÁ¶°¡ ÀÖ´Ù¸é, À̸¦ Ç¥ÇöÇϴµ¥ »ç¶÷ÀÇ ³ªÀ̸¦ À妽º °ªÀ¸·Î ¾µ ¼ö ÀÖÀ» °Í ÀÌ´Ù. ÀÌ °æ¿ì ¾î¶² »ç¶÷ÀÇ ÀڷḦ ãÀ¸·Á°í ÇÑ´Ù¸é ±× »ç¶÷ÀÇ ³ªÀ̸¦ À妽º·Î ÇÏ¿© Àα¸ Çؽà Å×À̺í·ÎºÎÅÍ Æ÷ÀÎÅ͸¦ ¾ò°í, ±× Æ÷ÀÎÅ͸¦ µû¶ó°¡¸é ±× »ç¶÷ÀÇ »ó¼¼ÀÚ·á°¡ µé¾îÀÖ´Â ÀڷᱸÁ¶°¡ ³ª¿Ã °ÍÀÌ´Ù. ºÒÇàÈ÷µµ ¸¶À»¿¡´Â °°Àº ³ªÀ̸¦ °¡Áø »ç¶÷ÀÌ ¸¹ÀÌ ÀÖÀ» ¼ö ÀÖ´Ù. ±×·± °æ¿ì¿¡´Â ±× Æ÷ÀÎÅÍ°¡ °°Àº ³ªÀ̸¦ °¡Áø »ç¶÷µéÀÇ ¿¬°á ¸®½ºÆ®¸¦ °¡¸®Å°´Â Æ÷ÀÎÅÍ°¡ µÈ´Ù. ¹°·Ð ÀÌ ÂªÀº ¸®½ºÆ®¸¦ ã´Â °ÍÀÌ ÀڷᱸÁ¶ Àüü¸¦ µÚÁö´Â °Íº¸´Ù´Â ¿©ÀüÈ÷ ºü¸¦ °ÍÀÌ´Ù. Çؽà Å×À̺íÀº ÀÚÁÖ »ç¿ëÇÏ´Â ÀڷᱸÁ¶·ÎÀÇ ¾×¼¼½º ¼Óµµ¸¦ ³ô¿©Áֱ⠶§¹® ¿¡, ¸®´ª½º´Â ij½Ã¸¦ ±¸ÇöÇϱâ À§ÇØ Çؽà Å×À̺íÀ» Á¾Á¾ »ç¿ëÇÑ´Ù. ij½Ã ´Â »¡¸® ¾×¼¼½ºµÇ¾î¾ß ÇÏ´Â ¹Ù·Î ¾µ ¼ö ÀÖ´Â Á¤º¸À̸ç, ´ë°³ ÂüÁ¶ÇÒ ¼ö ¸ðµç Á¤º¸ÀÇ ÀϺθ¸À» °¡Áö°í ÀÖ´Ù. ÀڷᱸÁ¶¸¦ ij½Ã¿¡ ³Ö¾îµÎ´Â °ÍÀº Ä¿³ÎÀÌ ±× ÀڷᱸÁ¶¸¦ ÀÚÁÖ ¾×¼¼½ºÇϱ⠶§¹®ÀÌ´Ù. ij½Ã´Â °£´ÜÇÑ ¿¬°á ¸®½ºÆ®³ª Çؽà Å×ÀÌºí¿¡ ºñÇÏ¿© »ç¿ëÇÏ°í °ü¸®ÇϱⰡ º¹ÀâÇÏ´Ù´Â ´ÜÁ¡ÀÌ ÀÖ´Ù. ãÀ¸·Á´Â ÀڷᱸÁ¶°¡ ij½Ã¿¡ ÀÖ´Ù¸é (À̸¦ ij½Ã È÷Æ®¶ó°í ºÎ¸¥´Ù) ¾ÆÁÖ ÁÁÀº ÀÏÀÌ´Ù. ±×·¯³ª ¸¸¾à ij½Ã¿¡ ¾øÀ¸¸é °ü·ÃµÈ ÀڷᱸÁ¶¸¦ ¸ðµÎ µÚÁ®¾ß ÇÏ°í, ¿øÇÏ´Â ÀڷᱸÁ¶°¡ ½ÇÁ¦·Î ÀÖÀ¸¸é ±×°ÍÀ» ij½Ã¿¡ Ãß°¡ÇÏ¿©¾ß ÇÑ´Ù. »õ·Î¿î ÀڷᱸÁ¶¸¦ ij½Ã¿¡ ³ÖÀ¸·Á¸é ¿¾³¯ °ÍÀº ¹ö·Á¾ß ÇÒ ¼öµµ ÀÖ´Ù. ¸®´ª½º´Â ¾î¶² °ÍÀ» ¹ö·Á¾ß ÇÒ Áö Á¤ÇØ¾ß Çϴµ¥, À̹ø¿¡ ¹ö¸° ÀÚ·á°¡ ¹Ù·Î ´ÙÀ½¿¡ ÇÊ¿äÇÑ °ÍÀÌ µÇ´Â À§Çèµµ ÀÖ´Ù. 2.3.3 Ãß»ó ÀÎÅÍÆäÀ̽º(Abstract Interface) ¸®´ª½º´Â Á¾Á¾ ÀÚ½ÅÀÇ ÀÎÅÍÆäÀ̽º¸¦ Ãß»óÈ­ÇÑ´Ù. ÀÎÅÍÆäÀ̽º¶õ ƯÁ¤ ¹æ¹ý À¸·Î µ¿ÀÛÇÏ´Â ·çƾ°ú ÀڷᱸÁ¶ÀÇ ¸ðÀ½ÀÌ´Ù. ¿¹¸¦ µé¾î, ¸ðµç ³×Æ®¿÷ µð¹ÙÀ̽º µå¶óÀ̹ö´Â ƯÁ¤ÇÑ ÀڷᱸÁ¶¸¦ ÀÌ¿ëÇÏ¿© Á¤ÇØÁø ·çƾµéÀ» Á¦°ø ÇØ¾ß ÇÑ´Ù. ÀÌ·± ¹æ¹ýÀ¸·Î ÀåÄ¡¸¶´Ù ´Ù¸¥ ÄÚµå·Î µÈ ¾Æ·¡ °èÃþ¿¡¼­ Á¦°ø ÇÏ´Â ¼­ºñ½º(¶Ç´Â ÀÎÅÍÆäÀ̽º)¸¦ »ç¿ëÇÏ´Â ÀϹÝÀûÀÎ ÄÚµå °èÃþÀÌ ÀÖ°Ô µÈ´Ù. ³×Æ®¿÷ °èÃþÀº ÀϹÝÈ­ µÇ¾îÀÖ°í, ÀåÄ¡¸¶´Ù °íÀ¯ÇÑ ÄÚµå´Â Ç¥ÁØ ÀÎÅÍ ÆäÀ̽º¸¦ Á¦°øÇÏ¿© À̸¦ Áö¿øÇÑ´Ù. Á¾Á¾ À̵é ÇÏÀ§ °èÃþÀº ºÎÆÃÇÒ ¶§ »óÀ§ °èÃþ¿¡ ÀÚ½ÅÀ» µî·ÏÇÑ´Ù. ÀÌ·¯ÇÑ µî·Ï °úÁ¤Àº ´ë°³ ¾î¶² ¿¬°á¸®½ºÆ®¿¡ ÀڷᱸÁ¶¸¦ Ãß°¡ÇÏ´Â ÀÏÀ» ¼ö¹ÝÇÑ´Ù. ¿¹¸¦ µé¾î, Ä¿³Î¿¡ µé¾îÀÖ´Â °¢°¢ÀÇ ÆÄÀÏ ½Ã½ºÅÛÀº ºÎÆÃÇÒ ¶§ ÀÚ½ÅÀ» Ä¿³Î ¿¡ µî·ÏÇϸç, ¸ðµâÀ» »ç¿ëÇÏ´Â °æ¿ì¿¡´Â óÀ½À¸·Î ±× ÆÄÀÏ ½Ã½ºÅÛÀÌ »ç¿ë µÉ ¶§ µî·ÏµÈ´Ù. ¾î¶² ÆÄÀÏ ½Ã½ºÅÛÀÌ µî·ÏµÇ¾î ÀÖ´Â Áö¸¦ º¸·Á¸é /proc/filesystems¸¦ µé¿©´Ùº¸¸é µÈ´Ù. ¶§·Î µî·ÏµÈ ÀڷᱸÁ¶°¡ ÇÔ¼ö¿¡ ´ëÇÑ Æ÷ÀÎÅ͸¦ °¡Áö°í ÀÖ´Â °æ¿ìµµ ÀÖ´Ù. À̵é Æ÷ÀÎÅʹ ƯÁ¤ÇÑ ¾÷¹«¸¦ ¼öÇàÇÏ´Â ¼ÒÇÁÆ®¿þ¾î ÇÔ¼öÀÇ ÁÖ¼ÒÀÌ´Ù. ´Ù½Ã ÆÄÀÏ ½Ã½ºÅÛ µî·ÏÀ» ¿¹·Î µé¾îº¸¸é, °¢ ÆÄÀÏ ½Ã½ºÅÛÀÌ µî·ÏÇÒ ¶§ ¸®´ª½º Ä¿³Î¿¡ ³Ñ°ÜÁÖ´Â ÀڷᱸÁ¶ ¿¡´Â, ÆÄÀÏ ½Ã½ºÅÛÀÌ ¸¶¿îÆ®µÉ ¶§¸¶´Ù ºÒ¸®´Â ÆÄÀÏ ½Ã½ºÅÛ¿¡ °íÀ¯ÇÑ ·çƾ ÀÇ ÁÖ¼Ò°¡ µé¾îÀÖ´Ù. ¹ø¿ª : °í¾ç¿ì, ½Å¹®¼®, Á¤¸® : ÀÌÈ£ ===================================================================== 3Àå ¸Þ¸ð¸® °ü¸® (Memory Management) <<¸Þ¸ð¸® °ü¸® ¼­ºê½Ã½ºÅÛÀº ¿î¿µÃ¼Á¦¿¡¼­ °¡Àå Áß¿äÇÑ ºÎºÐ Áß ÇϳªÀÌ´Ù. ÃÊâ±âÀÇ ÄÄÇ»ÅÍ¿¡¼­ºÎÅÍ, ½Ã½ºÅÛ¿¡ ¹°¸®ÀûÀ¸·Î Á¸ÀçÇÏ´Â °Íº¸´Ù ´õ ¸¹Àº ¾çÀÇ ¸Þ¸ð¸®¸¦ ÇÊ¿äÇØ¿Ô´Ù. ¹°¸®ÀûÀÎ ¸Þ¸ð¸®ÀÇ ÇѰ踦 ±Øº¹Çϱâ À§ÇÑ ¿©·¯ ±â¹ýµéÀÌ °³¹ßµÇ¾ú´Âµ¥, °¡»ó ¸Þ¸ð¸® ±â¹ýÀÌ °¡Àå ¼º°øÀû ÀÌ´Ù. °¡»ó ¸Þ¸ð¸®(virtual memory)´Â ¸Þ¸ð¸®¸¦ ÇÊ¿ä·Î ÇÏ´Â ¼­·Î °æÀïÇÏ´Â ÇÁ·Î¼¼½º »çÀÌ¿¡ ¸Þ¸ð¸®¸¦ °øÀ¯Çϵµ·Ï ÇÏ¿©, ½Ã½ºÅÛÀÌ ½ÇÁ¦ °¡Áø °Íº¸´Ù ´õ ¸¹Àº ¸Þ¸ð¸®¸¦ °¡Áø °Íó·³ º¸À̵µ·Ï ÇÑ´Ù.>> °¡»ó ¸Þ¸ð¸®´Â ÄÄÇ»ÅÍÀÇ ¸Þ¸ð¸®¸¦ ´Ã¸®´Â Àϸ¸ ÇÏ´Â °ÍÀº ¾Æ´Ï´Ù. ¸Þ¸ð¸® °ü¸® ¼­ºê½Ã½ºÅÛÀº ´ÙÀ½°ú °°Àº °ÍÀ» Á¦°øÇÑ´Ù. ³ÐÀº ÁÖ¼Ò°ø°£ : ¿î¿µÃ¼Á¦´Â ½Ã½ºÅÛÀÌ ½ÇÁ¦ °¡Áø °Íº¸´Ù ÈξÀ ¸¹Àº ¾çÀÇ ¸Þ¸ð¸®¸¦ °¡Áö°í ÀÖ´Â °Íó·³ º¸ÀÌ°Ô ÇÑ´Ù. °¡»ó ¸Þ¸ð¸®´Â ½Ã½ºÅÛÀÇ ¹°¸®Àû ¸Þ¸ð¸®º¸´Ù ¸î ¹è³ª ´õ Ŭ ¼ö ÀÖ´Ù. º¸È£ :½Ã½ºÅÛÀÇ °¢ ÇÁ·Î¼¼½º´Â °¢ÀÚÀÇ µ¶¸³µÈ °¡»ó ÁÖ¼Ò°ø°£À» °®´Â ´Ù. ÀÌµé °¡»ó ÁÖ¼Ò°ø°£Àº ¼­·Î ¿Ïº®ÇÏ°Ô ºÐ¸®µÇ¾î À־, ¾î¶² ÀÀ¿ëÇÁ·Î±×·¥À» ½ÇÇàÇÏ´Â ÇÁ·Î¼¼½º´Â ´Ù¸¥ °Í¿¡ ¿µÇâÀ» ÁÙ ¼ö ¾ø´Ù. ¶Ç Çϵå¿þ¾î °¡»ó ¸Þ¸ð¸® ¸ÞÄ¿´ÏÁòÀº ¸Þ¸ð¸® ¿µ¿ª¿¡ ¾²±â¸¦ ±ÝÁöÇÒ ¼ö ÀÖ°Ô ÇÑ´Ù. ÀÌ°ÍÀº ÄÚµå¿Í µ¥ÀÌÅÍ°¡ ³ª»Û ÇÁ·Î±×·¥¿¡ ÀÇÇØ µ¤¾î ¾²¿©Áö´Â °ÍÀ» ¸·¾ÆÁØ´Ù. ¸Þ¸ð¸® ¸ÅÇÎ : ¸Þ¸ð¸® ¸ÅÇÎÀº À̹ÌÁö¿Í µ¥ÀÌÅÍ ÆÄÀÏÀ» ÇÁ·Î¼¼½ºÀÇ ÁÖ¼Ò°ø°£¿¡ ¸ÅÇÎÇϱâ À§ÇØ »ç¿ëµÈ´Ù. ¸Þ¸ð¸® ¸ÅÇο¡¼­ ÆÄÀÏÀÇ ³»¿ë Àº ÇÁ·Î¼¼½ºÀÇ °¡»ó ÁÖ¼Ò°ø°£¿¡ Á÷Á¢ ¿¬°áµÈ´Ù. °øÁ¤ÇÑ ¹°¸®Àû ¸Þ¸ð¸® ÇÒ´ç : ¸Þ¸ð¸® °ü¸® ¼­ºê½Ã½ºÅÛÀº ½Ã½ºÅÛ¿¡¼­ ½ÇÇàÁßÀÎ ÇÁ·Î¼¼½ºµéÀÌ ¼­·Î °øÁ¤ÇÏ°Ô ¹°¸®Àû ¸Þ¸ð¸®¸¦ °øÀ¯ÇÒ ¼ö ÀÖ°Ô ÇÑ´Ù. °øÀ¯ °¡»ó ¸Þ¸ð¸® °¡»ó ¸Þ¸ð¸®´Â ÇÁ·Î¼¼½ºµéÀÌ ºÐ¸®µÈ (°¡»ó) ÁÖ¼Ò°ø°£À» °¡Áú ¼ö ÀÖµµ·Ï ÇÏÁö¸¸, ¶§·Î´Â ÇÁ·Î¼¼½ºµéÀÌ ¸Þ¸ð¸®¸¦ °øÀ¯ÇÏ´Â °ÍÀÌ ÇÊ¿äÇÒ ¶§°¡ ÀÖ´Ù. ¿¹¸¦ µé¾î ½Ã½ºÅÛ¿¡ ¸í·É½© bash¸¦ ½ÇÇàÇÏ°í ÀÖ´Â ¿©·¯ °³ÀÇ ÇÁ·Î¼¼½º°¡ ÀÖ´Ù°í ÇÏÀÚ. °¢ ÇÁ·Î¼¼½ºÀÇ °¡Àå ÁÖ¼Ò°ø°£¿¡ bashÀÇ ¿©·¯ º¹»çº»À» °®´Â ´ë½Å ¿¡, ¹°¸®Àû °ø°£¿¡ ÇϳªÀÇ º¹»çº»À» °®°í bash¸¦ ½ÇÇàÇÏ´Â ¸ðµç ÇÁ·Î¼¼½º°¡ ±×°ÍÀ» °øÀ¯ÇÏ´Â °ÍÀÌ ¹Ù¶÷Á÷ÇÏ´Ù. µ¿Àû ¶óÀ̺귯¸®´Â ¿©·¯ ÇÁ·Î¼¼½º°¡ ½ÇÇà Äڵ带 °øÀ¯ÇÏ´Â ´ëÇ¥ÀûÀÎ ¿¹ÀÌ´Ù. °øÀ¯ ¸Þ¸ð¸®´Â ¶ÇÇÑ µÎ °³ ÀÌ»óÀÇ ÇÁ·Î¼¼½º°¡ ±×µé ¸ðµÎ¿¡°Ô °øÅë ÀûÀÎ ¸Þ¸ð¸®¸¦ ÅëÇØ Á¤º¸¸¦ ±³È¯ÇÔÀ¸·Î½á, ÇÁ·Î¼¼½º°£ Åë½Å(IPC) ¸ÞÄ¿´ÏÁòÀ¸·Î »ç¿ëµÉ ¼ö ÀÖ´Ù. ¸®´ª½º´Â À¯´Ð½º ½Ã½ºÅÛ VÀÇ °øÀ¯ ¸Þ¸ð¸® IPC¸¦ Áö¿øÇÑ´Ù. Process X Process Y +-------+ +-------+ | VPFN7 |-+ | VPFN7 | +-------+ | Process X Process Y +-------+ | VPFN6 | | Page Table Page Table +-| VPFN6 | +-------+ +-->+--------+ +-+--------+<+ | +-------+ | VPFN5 | |--------|-+ | |--------| | | | VPFN5 | +-------+ +-->|--------| | +------+ +|-|--------|<--+ +-------+ | VPFN4 | | |--------|-|-+ +>| PFN4 |<--+ |--------| | | VPFN4 | +-------+ | +>|--------|-----+ +------+ | |--------| | +-------+ | VPFN3 |---+ +--------+ | | | PFN3 | | +--------+ | | VPFN3 | +-------+ | | | +------+ | | +-------+ | VPFN2 | | | | | PFN2 |<-+ | | VPFN2 | +-------+ | | | +------+ | +-------+ | VPFN1 | | | +-->| PFN1 | +---| VPFN1 | +-------+ | | +------+ +-------+ | VPFN0 |-+ +---->| PFN0 | | VPFN0 | +-------+ +------+ +-------+ Virtual Memory Physical Memory Virtual Memory ±×¸² 3.1 : Abstract model of Virtual Physical address mapping 3.1 °¡»ó ¸Þ¸ð¸®ÀÇ Ãß»óÀû ¸ðµ¨(abstract model) ¸®´ª½º°¡ °¡»ó ¸Þ¸ð¸®¸¦ Áö¿øÇϱâ À§ÇØ »ç¿ëÇÏ´Â ±â¹ýÀ» »ìÆ캸±â Àü¿¡, ³Ê¹« ÀÚ¼¼È÷ ÆÄ°íµé¾î È¥¶õ½º·´Áö ¾Êµµ·Ï ¸ÕÀú Ãß»óÀû ¸ðµ¨À» °ËÅäÇÏ´Â °Í ÀÌ µµ¿òÀÌ µÉ °ÍÀÌ´Ù. ÇÁ·Î¼¼¼­°¡ ÇÁ·Î±×·¥À» ½ÇÇàÇÒ ¶§, ÇÁ·Î¼¼¼­´Â ¸Þ¸ð¸®·ÎºÎÅÍ ¸í·É¾î¸¦ ÀÐ¾î ¿Í¼­ Çؼ®ÇÑ´Ù. ¸í·ÉÀ» Çؼ®ÇÏ´Â µ¥¿¡´Â ¸Þ¸ð¸®ÀÇ ¾î¶² À§Ä¡¿¡ ÀÖ´Â ³»¿ëÀ» °¡Á®¿À°Å³ª ÀúÀåÇØ¾ß Çϱ⵵ ÇÑ´Ù. ÇÁ·Î¼¼¼­´Â ¸í·É¾î¸¦ ½ÇÇàÇÏ°í ÇÁ·Î±×·¥ÀÇ ´ÙÀ½ ¸í·É¾î·Î À̵¿ÇÑ´Ù. ÀÌ·¸°Ô ÇÏ¿© ÇÁ·Î¼¼¼­´Â ¾ðÁ¦³ª ¸í·É¾î¸¦ °¡Á®¿À°Å³ª, µ¥ÀÌÅ͸¦ °¡Á®¿À°Å³ª ÀúÀåÇϱâ À§ÇØ ¸Þ¸ð¸®¿¡ Á¢±ÙÇÑ´Ù. °¡»ó ¸Þ¸ð¸® ½Ã½ºÅÛ¿¡¼­ ÀÌ ÁÖ¼ÒµéÀº ¸ðµÎ ¹°¸®Àû ÁÖ¼Ò°¡ ¾Æ´Ï¶ó °¡»ó ÁÖ¼ÒÀÌ´Ù. ÀÌ °¡»ó ÁÖ¼ÒµéÀº ¿î¿µÃ¼Á¦°¡ °ü¸®ÇÏ´Â Å×À̺íµé¿¡ ÀúÀåµÈ Á¤º¸ ¸¦ ¹ÙÅÁÀ¸·Î ÇÁ·Î¼¼¼­¿¡ ÀÇÇØ ¹°¸®Àû ÁÖ¼Ò·Î º¯È¯µÈ´Ù. ÀÌ º¯È¯À» ½±°Ô Çϱâ À§ÇØ °¡»ó¸Þ¸ð¸®¿Í ¹°¸®Àû ¸Þ¸ð¸®´Â ÆäÀÌÁö¶ó´Â ÀÛÀº Á¶°¢À¸·Î ³ª´¶´Ù. ÀÌ ÆäÀÌÁöµéÀº ¸ðµÎ °°Àº Å©±âÀε¥, ²À °°Àº Å©±âÀÏ ÇÊ¿ä´Â ¾øÁö¸¸, ±×·¸Áö ¾Ê´Ù¸é ½Ã½ºÅÛÀ» °ü¸®ÇϱⰡ ¹«Ã´ ¾î·Á¿öÁú °Í ÀÌ´Ù. ¸®´ª½º´Â ¾ËÆÄ AXP ½Ã½ºÅÛ¿¡¼­´Â 8KB ÆäÀÌÁö¸¦, ÀÎÅÚ x86 ½Ã½ºÅÛ ¿¡¼­´Â 4KB ÆäÀÌÁö¸¦ »ç¿ëÇÑ´Ù . °¢ ÆäÀÌÁö¿¡´Â ÆäÀÌÁö ÇÁ·¹ÀÓ ¹øÈ£(page frame number, PFN)¶ó´Â À¯ÀÏÇÑ ¹øÈ£°¡ ºÎ¿©µÈ´Ù. ÀÌ¿Í °°Àº ÆäÀÌÁö ¸ðµ¨ ¿¡¼­ °¡»ó ÁÖ¼Ò´Â °¡»ó ÆäÀÌÁö ÇÁ·¹ÀÓ ¹øÈ£¿Í ¿ÀÇÁ¼Â, µÎ ºÎºÐÀ¸·Î ÀÌ·ç¾î Áø´Ù. ÆäÀÌÁö Å©±â°¡ 4KB¶ó¸é °¡»ó ÁÖ¼ÒÀÇ 0ºñÆ®¿¡¼­ 11ºñÆ®´Â ¿ÀÇÁ¼ÂÀ» ³ªÅ¸³»°í, 12¹ø ºñÆ® ÀÌ»óÀº °¡»ó ÆäÀÌÁö ÇÁ·¹ÀÓ ¹øÈ£¸¦ ³ªÅ¸³½´Ù. ÇÁ·Î ¼¼¼­°¡ °¡»ó ÁÖ¼Ò¸¦ ó¸®ÇÒ ¶§¸¶´Ù ¿ÀÇÁ¼Â°ú °¡»ó ÆäÀÌÁö ÇÁ·¹ÀÓ ¹øÈ£¸¦ ÃßÃâÇØ¾ß ÇÑ´Ù. ÇÁ·Î¼¼¼­´Â °¡»ó ÆäÀÌÁö ÇÁ·¹ÀÓ ¹øÈ£¸¦ ¹°¸®Àû ÆäÀÌÁö ÇÁ·¹ÀÓ ¹øÈ£·Î º¯È¯ÇÏ°í ÇØ´ç ¹°¸®Àû ÆäÀÌÁö¿¡¼­ ¿ÀÇÁ¼Â¿¡ ÇØ´çÇÏ´Â ÁÖ¼Ò ¸¦ Á¢±ÙÇÑ´Ù. ÀÌ·¸°Ô Çϱâ À§ÇØ ÇÁ·Î¼¼¼­´Â ÆäÀÌÁö Å×À̺í(page table)À» »ç¿ëÇÑ´Ù. ±×¸² 3.1Àº ÇÁ·Î¼¼½º X¿Í ÇÁ·Î¼¼½º Y µÎ ÇÁ·Î¼¼½ºÀÇ °¡»ó ÁÖ¼Ò°ø°£°ú, °¢ÀÚÀÇ ÆäÀÌÁö Å×À̺íÀ» º¸¿©ÁØ´Ù. ÀÌ ÆäÀÌÁö Å×À̺íÀº °¢ ÇÁ·Î¼¼½ºÀÇ °¡»ó ÆäÀÌÁö¸¦ ¸Þ¸ð¸®ÀÇ ¹°¸®Àû ÆäÀÌÁö·Î ´ëÀÀ½ÃŲ´Ù. ÀÌ ±×¸²¿¡¼­ ÇÁ·Î ¼¼½º XÀÇ °¡»ó ÆäÀÌÁö ÇÁ·¹ÀÓ ¹øÈ£ 0Àº ¹°¸®Àû ÆäÀÌÁö ÇÁ·¹ÀÓ ¹øÈ£ 1·Î ´ëÀÀµÇ°í, ÇÁ·Î¼¼½º YÀÇ °¡»ó ÆäÀÌÁö ÇÁ·¹ÀÓ ¹øÈ£ 1Àº ¹°¸®Àû ÆäÀÌÁö ÇÁ·¹ÀÓ ¹øÈ£ 4·Î ´ëÀÀµÈ´Ù. ÀÌ·ÐÀûÀ¸·Î ÆäÀÌÁö Å×À̺íÀº ´ÙÀ½°ú °°Àº Á¤º¸ ¸¦ °¡Áø´Ù : o À¯È¿ Ç÷¡±×. ÀÌ°ÍÀº ÆäÀÌÁö Å×ÀÌºí ¿£Æ®¸®°¡ À¯È¿ÇÑ°¡¸¦ ³ªÅ¸ ³½´Ù. o ÀÌ ¿£Æ®¸®°¡ ±â¼úÇÏ´Â ¹°¸®Àû ÆäÀÌÁö ÇÁ·¹ÀÓ ¹øÈ£. o Á¢±Ù Á¦¾î(access control) Á¤º¸. ÀÌ°ÍÀº ÆäÀÌÁö°¡ ¾î¶»°Ô »ç¿ëµÉ ¼ö ÀÖ´ÂÁö ±â¼úÇÑ´Ù. µ¥ÀÌÅ͸¦ ±â·ÏÇÒ ¼ö Àִ°¡? ½ÇÇà°¡´É ÇÑÄÚµå ¸¦ Æ÷ÇÔÇϴ°¡? ÆäÀÌÁö Å×À̺íÀº °¡»ó ÆäÀÌÁö ÇÁ·¹ÀÓ ¹øÈ£¸¦ ¿ÀÇÁ¼ÂÀ¸·Î »ç¿ëÇÏ¿© Á¢±Ù ÇÑ´Ù. °¡»ó ÆäÀÌÁö ÇÁ·¹ÀÓ 5´Â Å×À̺íÀÇ 6¹ø° Ç׸ñÀÌ µÈ´Ù (0ÀÌ Ã¹¹ø° Ç׸ñÀÌ´Ù) °¡»ó ÁÖ¼Ò¸¦ ¹°¸®Àû ÁÖ¼Ò·Î º¯È¯Çϱâ À§ÇØ, ÇÁ·Î¼¼¼­´Â ¸ÕÀú °¡»ó ÁÖ¼Ò ÆäÀÌÁö ÇÁ·¹ÀÓ ¹øÈ£¿Í, °¡»ó ÆäÀÌÁö ¾È¿¡¼­ÀÇ ¿ÀÇÁ¼ÂÀ» ±¸ÇØ¾ß ÇÑ´Ù. ÆäÀÌÁö Å©±â¸¦ 2ÀÇ Á¦°ö¼ö·Î Çϸé, ÀÌ °è»êÀº ºñÆ®¸¶½ºÅ©¿Í ½¬ÇÁÆ® ¿¬»ê À¸·Î ½±°Ô ó¸®ÇÒ¼ö ÀÖ´Ù. ´Ù½Ã ±×¸²3.1¿¡¼­, ÆäÀÌÁö Å©±â°¡ 0x2000¹ÙÀÌÆ® (8KB, ½ÊÁø¼ö·Î 8192)¶ó¸é, ÇÁ·Î¼¼¼­´Â ÇÁ·Î¼¼½º YÀÇ °¡»ó ÁÖ¼Ò°ø°£¿¡¼­ ÀÇ ÁÖ¼Ò 0x2194¸¦ °¡»ó ÆäÀÌÁö ÇÁ·¹ÀÓ ¹øÈ£ 1°ú ¿ÀÇÁ¼Â 0x194·Î º¯È¯ÇÑ´Ù. ÇÁ·Î¼¼¼­´Â °¡ »óÆäÀÌÁö ÇÁ·¹ÀÓ ¹øÈ£¸¦ À妽º·Î ÇÁ·Î¼¼½ºÀÇ ÆäÀÌÁö Å×ÀÌ ºíÀ» ÂüÁ¶ÇÏ¿©, ÆäÀÌÁö Å×ÀÌºí ¿£Æ®¸®(page table entry, PTE)¸¦ °¡Á® ¿Â´Ù. ÀÌ ÆäÀÌÁö Å×ÀÌºí ¿£Æ®¸®°¡ À¯È¿ÇÏ´Ù¸é, ÇÁ·Î¼¼¼­´Â ÀÌ ¿£Æ®¸®¿¡¼­ ¹°¸®Àû ÆäÀÌÁö ÇÁ·¹ÀÓ ¹øÈ£¸¦ °¡Á®¿Â´Ù. ¿£Æ®¸®°¡ À¯È¿ÇÏÁö ¾Ê´Ù¸é, ÇÁ·Î¼¼½º´Â °¡»ó ¸Þ¸ð¸® °ø°£¿¡ Á¸ÀçÇÏÁö ¾Ê´Â ¿µ¿ªÀ» Á¢±ÙÇÑ °ÍÀÌ´Ù. ÀÌ °æ¿ì¿¡ ÇÁ·Î¼¼¼­´Â ÁÖ¼Ò¸¦ °áÁ¤ÇÒ ¼ö ¾ø°í ¿î¿µÃ¼Á¦¿¡ Á¦¾î¸¦ ³Ñ°Ü¼­ ¿î¿µÃ¼Á¦°¡ ó¸®Çϵµ·Ï ÇÑ´Ù. ÇÁ·Î¼¼¼­°¡ ¿î¿µÃ¼Á¦¿¡°Ô, Á¤È®ÇÏ°Ô ¾î¶² ÇÁ·Î¼¼½º°¡ À¯È¿ÇÑ º¯È¯À» ÇÒ ¼ö ¾ø´Â °¡»ó ÁÖ¼Ò¿¡ Á¢±ÙÇÏ·Á Çß´ÂÁö¸¦ ¾Ë¸®´Â ¹æ¹ýÀº ÇÁ·Î¼¼¼­¸¶´Ù ´Ù¸£´Ù. ÀÌ°ÍÀº ÆäÀÌÁö ÆúÆ®(page fault)¶ó°í Çϸç, ÇÁ·Î¼¼¼­°¡ À̸¦ ¾î¶»°Ô Àü´Þ ÇϵçÁö °£¿¡, ¿î¿µÃ¼Á¦´Â ÆúÆ®°¡ ¹ß»ýÇÑ °¡»ó ÁÖ¼Ò¿Í ÆäÀÌÁö ÆúÆ®ÀÇ ¿øÀÎ À» Å뺸¹Þ´Â´Ù. ±× ÆäÀÌÁö Å×ÀÌºí ¿£Æ®¸®°¡ À¯È¿ÇÑ °æ¿ì, ÇÁ·Î¼¼¼­´Â ¹°¸®ÀûÆäÀÌÁö ÇÁ·¹ÀÓ ¹øÈ£¿¡ ÆäÀÌÁö Å©±â¸¦ °öÇؼ­ ¹°¸®Àû ¸Þ¸ð¸®¿¡¼­ÀÇ º£À̽º ÁÖ¼Ò¸¦ ¾ò´Â´Ù. ¸¶Áö¸·À¸·Î ÇÁ·Î¼¼¼­´Â ¿ÀÇÁ¼ÂÀ» ´õÇÏ¿© ÇÊ¿äÇÑ ¸í·ÉÀ̳ª µ¥ÀÌÅÍ¿¡ µµ´Þ ÇÑ´Ù . À§ÀÇ ¿¹¸¦ ´Ù½Ã º¸¸é, ÇÁ·Î¼¼½º YÀÇ °¡»ó ÆäÀÌÁö ÇÁ·¹ÀÓ ¹øÈ£ 1Àº ¹°¸®Àû ÆäÀÌÁö ÇÁ·¹ÀÓ ¹øÈ£ 4¿¡ ´ëÀÀµÇ°í, 0x8000(4 x 0x2000)¿¡¼­ ½ÃÀ۵ȴÙ. ¿©±â¿¡ 0x194 ¹ÙÀÌÆ®ÀÇ ¿ÀÇÁ¼ÂÀ» ´õÇϸé ÃÖÁ¾ÀûÀÎ ¹°¸®Àû ÁÖ¼Ò 0x8194¸¦ ¾òÀ» ¼ö ÀÖ´Ù. ÀÌ·¸°Ô °¡»ó ÁÖ¼Ò¸¦ ¹°¸®Àû ÁÖ¼Ò·Î ´ëÀÀ½ÃÅ´À¸·Î½á, °¡»ó ¸Þ¸ð¸®´Â ½Ã½ºÅÛ ÀÇ ¹°¸®Àû ÆäÀÌÁö¿¡ ÀÓÀÇÀÇ ¼ø¼­·Î ¹è¿­µÉ ¼ö ÀÖ´Ù. ¿¹¸¦ µé¾î, ±×¸² 3.1 ÀÇ ÇÁ·Î¼¼½º XÀÇ °¡»ó ÆäÀÌÁö ÇÁ·¹ÀÓ ¹øÈ£ 0Àº ¹°¸®Àû ÆäÀÌÁö ÇÁ·¹ÀÓ ¹øÈ£ 1·Î ´ëÀÀµÇ´Â ¹Ý¸é, °¡»ó ÆäÀÌÁö ÇÁ·¹ÀÓ ¹øÈ£ 7Àº °¡»ó ÆäÀÌÁö ÇÁ·¹ÀÓ ¹øÈ£ 0º¸´Ù ³ôÀ½¿¡µµ ¹°¸®Àû ÆäÀÌÁö ÇÁ·¹ÀÓ ¹øÈ£ 0À¸·Î ´ëÀÀµÈ´Ù. ÀÌ°ÍÀº °¡»ó ¸Þ¸ð¸®ÀÇ Àç¹ÌÀÖ´Â ºÎ»ê¹°À» º¸¿©ÁØ´Ù. °¡»ó ¸Þ¸ð¸®ÀÇ ÆäÀÌÁöµéÀº ¹°¸®Àû ¸Þ¸ð¸®¿¡ ¾î¶² ƯÁ¤ÇÑ ¼ø¼­·Î Á¸ÀçÇÏÁö ¾Ê¾Æµµ µÈ´Ù. 3.1.1 ¿ä±¸ ÆäÀÌ¡(Demand Paging) ½ÇÁ¦·Î °¡»ó ¸Þ¸ð¸®º¸´Ù ÈξÀ ÀûÀº ¹°¸®Àû ¸Þ¸ð¸®¸¸ Àֱ⠶§¹®¿¡, ¿î¿µ üÁ¦´Â ¹°¸®Àû ¸Þ¸ð¸®°¡ ºñÈ¿À²ÀûÀ¸·Î »ç¿ëµÇÁö ¾Êµµ·Ï ÁÖÀÇÇØ¾ß ÇÑ´Ù. ¹°¸®Àû ¸Þ¸ð¸®¸¦ Àý¾àÇÏ´Â ¹æ¹ý Çϳª´Â, ½ÇÇàÁßÀÎ ÇÁ·Î±×·¥ÀÌ ÇöÀç »ç¿ë ÇÏ´Â °¡»ó ÆäÀÌÁö¸¸À» ·ÎµåÇÏ´Â °ÍÀÌ´Ù. ¿¹¸¦ µé¾î, µ¥ÀÌÅͺ£À̽º ÇÁ·Î ±×·¥ÀÌ µ¥ÀÌÅͺ£À̽º¿¡ ÁúÀǸ¦ ÇÑ´Ù°í ÇÏÀÚ. ÀÌ °æ¿ì ¸ðµç µ¥ÀÌÅͺ£À̽º °¡ ¸Þ¸ð¸®¿¡ ·ÎµåµÉ ÇÊ¿ä´Â ¾ø´Ù. °Ë»öÇÒ µ¥ÀÌÅÍ ·¹ÄÚµåµé¸¸ ÀÖÀ¸¸é µÈ´Ù. µ¥ÀÌÅͺ£À̽º ÁúÀÇ°¡ °Ë»ö ÁúÀǶó¸é, µ¥ÀÌÅͺ£À̽º ÇÁ·Î±×·¥¿¡¼­ »õ·Î¿î ·¹Äڵ带 Ãß°¡ÇÏ´Â °ÍÀ» ó¸®ÇÏ´Â ºÎºÐÀÇ Äڵ带 ÀоîµéÀÏ ÇÊ¿ä´Â ¾øÀ» °ÍÀÌ´Ù. ÀÌ·¸°Ô °¡»ó ÆäÀÌÁöµéÀÌ Á¢±ÙµÇ´Â °æ¿ì¿¡¸¸ ¸Þ¸ð¸®¿¡ ÀоîµéÀÌ´Â ±â¹ýÀ» ¿ä±¸ ÆäÀÌ¡À̶ó°í ÇÑ´Ù. ÇÁ·Î¼¼½º°¡ ÇöÀç ¸Þ¸ð¸®¿¡ ¾ø´Â °¡»ó ÁÖ¼Ò¸¦ Á¢±ÙÇÏ·Á°í Çϸé, ÇÁ·Î¼¼¼­´Â ÂüÁ¶µÈ °¡»ó ÆäÀÌÁö¿¡ ´ëÇÑ ÆäÀÌÁö Å×ÀÌºí ¿£Æ®¸®¸¦ ãÀ» ¼ö ¾øÀ» °ÍÀÌ´Ù. ¿¹¸¦ µé¾î, ±×¸² 3.1¿¡¼­ ÇÁ·Î¼¼½º XÀÇ ÆäÀÌÁö Å×ÀÌºí¿¡´Â °¡»ó ÆäÀÌÁö ÇÁ·¹ÀÓ ¹øÈ£ 2¿¡ ´ëÇÑ ¿£Æ®¸®°¡ ¾øÀ¸¹Ç·Î, ÇÁ·Î¼¼½º X°¡ °¡»ó ÆäÀÌÁö ÇÁ·¹ÀÓ ¹øÈ£ 2¿¡ Æ÷ÇÔµÈ ÁÖ¼Ò¿¡¼­ ÀÐÀ¸·Á°í Çϸé, ÇÁ·Î¼¼¼­´Â ±× ÁÖ¼Ò¸¦ ¹°¸®Àû ÁÖ¼Ò·Î º¯È¯ÇÒ ¼ö ¾øÀ» °ÍÀÌ´Ù. ÀÌ ½ÃÁ¡¿¡¼­ ÇÁ·Î¼¼¼­´Â ¿î¿µÃ¼Á¦ ¿¡°Ô ÆäÀÌÁö ÆúÆ®°¡ ¹ß»ýÇß´Ù°í Å뺸ÇÑ´Ù. ¸¸¾à ÆúÆ®°¡ ¹ß»ýÇÑ °¡»ó ÁÖ¼Ò°¡ À¯È¿ÇÏÁö ¾ÊÀº °ÍÀ̶ó¸é, ±× ÇÁ·Î¼¼½º´Â Á¢±ÙÇÒ ¼ö ¾ø´Â °¡»ó ÁÖ¼Ò¿¡ Á¢±ÙÇÏ·Á°í ÇÑ °ÍÀÌ´Ù. ´ëü·Î ÀÌ°Ç ¸Þ¸ð¸® ÀÇ ¾Æ¹« ÁÖ¼Ò¿¡³ª °ªÀ» ¾²´Â °Íó·³, ÀÀ¿ëÇÁ·Î±×·¥ÀÌ À߸øµÈ °ÍÀÌ´Ù. ÀÌ °æ¿ì ¿î¿µÃ¼Á¦´Â ÀÌ ÇÁ·Î¼¼½º¸¦ Á¾·á½ÃÄÑ, ½Ã½ºÅÛÀÇ ´Ù¸¥ ÇÁ·Î¼¼½ºµéÀ» ÀÌ À߸øµÈ ÇÁ·Î¼¼½º·ÎºÎÅÍ º¸È£ÇÑ´Ù. ¸¸¾à ÆúÆ®°¡ ¹ß»ýÇÑ °¡»ó ÁÖ¼Ò°¡ À¯È¿ÇÑ °ÍÀε¥, ÁÖ¼Ò°¡ °¡¸®Å°´Â ÆäÀÌÁö °¡ ¸Þ¸ð¸®¿¡ ÇöÀç ¾ø´Ù¸é, ¿î¿µÃ¼Á¦´Â ÇØ´çÇÏ´Â ÆäÀÌÁö¸¦ µð½ºÅ©ÀÇ À̹ÌÁö ·ÎºÎÅÍ ¸Þ¸ð¸®¿¡ °¡Á®¿Í¾ß ÇÑ´Ù. µð½ºÅ© Á¢±ÙÀº »ó´ëÀûÀ¸·Î ±ä ½Ã°£ÀÌ °É¸®¹Ç·Î, ÇÁ·Î¼¼½º´Â ÆäÀÌÁö°¡ µµÂøÇÒ ¶§±îÁö ÇÑÂüÀ» ±â´Ù·Á¾ß ÇÑ´Ù. ½Ã½ºÅÛ¿¡ ½ÇÇàÇÒ ¼ö ÀÖ´Â ´Ù¸¥ ÇÁ·Î¼¼½º°¡ ÀÖ´Ù¸é ¿î¿µÃ¼Á¦´Â À̵é Áß Çϳª¸¦ ¼±ÅÃÇÏ¿© ½ÇÇàÇÑ´Ù. °¡Á®¿Â ÆäÀÌÁö´Â ºó ¹°¸®Àû ÆäÀÌÁö ÇÁ·¹ÀÓ¿¡ ±â·ÏµÇ°í, °¡»ó ÆäÀÌÁö ÇÁ·¹ÀÓ ¹øÈ£¸¦ À§ÇÑ ¿£Æ®¸®°¡ ÇÁ·Î¼¼½ºÀÇ ÆäÀÌÁö Å×ÀÌºí¿¡ Ãß°¡µÈ´Ù. ÀÌÁ¦ ÇÁ·Î¼¼½º´Â ¸Þ¸ð¸® ÆúÆ®°¡ ¹ß»ýÇß´ø ±â°è¾î ¸í·É ¿¡¼­ºÎÅÍ Àç½ÇÇàµÈ´Ù. À̹ø¿¡ ´Ù½Ã °¡»ó ¸Þ¸ð¸® Á¢±ÙÀÌ ÀÌ·ç¾îÁú ¶§, ÇÁ·Î¼¼¼­´Â °¡»ó ÁÖ¼Ò¸¦ ¹°¸®Àû ÁÖ¼Ò·Î º¯È¯ÇÒ ¼ö ÀÖ°Ô µÇ°í, ÇÁ·Î¼¼½º´Â °è¼Ó ½ÇÇàµÈ´Ù. ¸®´ª½º´Â ½ÇÇà À̹ÌÁö¸¦ ÇÁ·Î¼¼½ºÀÇ °¡»ó ¸Þ¸ð¸®¿¡ ·ÎµåÇϱâ À§ÇØ ¿ä±¸ ÆäÀÌ¡À» »ç¿ëÇÑ´Ù. ¸í·ÉÀ» ½ÇÇàÇÒ ¶§¸¶´Ù, ¸í·ÉÀ» Æ÷ÇÔÇÏ´Â ÆÄÀÏÀ» ¿­°í, ÆÄÀÏÀÇ ³»¿ëÀÌ ÇÁ·Î¼¼½ºÀÇ °¡»ó ¸Þ¸ð¸®·Î ¸ÅÇεȴÙ. ÀÌ°ÍÀº ÀÌ ÇÁ·Î¼¼½ºÀÇ ¸Þ¸ð¸® ¸ÊÀ» ±â¼úÇÏ´Â ÀڷᱸÁ¶¸¦ º¯°æÇÏ¿© ÀÌ·ç¾îÁö¸ç, À̸¦ ¸Þ¸ð¸® ¸ÅÇÎÀ̶ó°í ÇÑ´Ù. ¾î·µç À̹ÌÁöÀÇ Ã¹¹ø° ºÎºÐ¸¸ ½ÇÁ¦·Î ¹°¸®Àû ¸Þ¸ð¸®¿¡ °¡Á®¿À¸ç, ³ª¸ÓÁö ºÎºÐÀº µð½ºÅ©¿¡ ³²¾Æ ÀÖ´Ù. À̹ÌÁö°¡ ½ÇÇàµÊ¿¡ µû¶ó ÆäÀÌÁö ÆúÆ®°¡ ¹ß»ý ÇÏ°í, ¸®´ª½º´Â ÇÁ·Î¼¼½ºÀÇ ¸Þ¸ð¸® ¸ÊÀ» »ç¿ëÇÏ¿© À̹ÌÁöÀÇ ¾î´À ºÎºÐÀ» ½ÇÇàÇÒ ¼ö ÀÖµµ·Ï ¸Þ¸ð¸®¿¡ °¡Á®¿Ã Áö °áÁ¤ÇÑ´Ù. 3.1.2 ½º¿ÍÇÎ(Swapping) ÇÁ·Î¼¼½º°¡ °¡»ó ÆäÀÌÁö¸¦ ¹°¸®Àû ¸Þ¸ð¸®¿¡ °¡Á®¿Í¾ß Çϴµ¥, ºñ¾î ÀÖ´Â ¹°¸®Àû ÆäÀÌÁö°¡ ¾ø´Ù¸é, ¿î¿µÃ¼Á¦´Â ¹°¸®Àû ¸Þ¸ð¸®¿¡¼­ ´Ù¸¥ ÆäÀÌÁö¸¦ Á¦°ÅÇÏ¿©, °¡Á®¿Ã ÆäÀÌÁö¸¦ À§ÇØ °ø°£À» ¸¶·ÃÇØ¾ß ÇÑ´Ù. ¹°¸®Àû ¸Þ¸ð¸®¿¡¼­ Á¦°ÅµÉ ÆäÀÌÁö°¡ À̹ÌÁö³ª µ¥ÀÌÅÍ ÆÄÀÏ¿¡¼­ ¿Â °ÍÀÌ°í, ÀÌ ÆäÀÌÁö¿¡ ¾²¿©Áø °ÍÀÌ ¾ø´Ù¸é, ÆäÀÌÁöÀÇ ³»¿ëÀ» ÀúÀåÇÒ ÇÊ¿ä´Â ¾ø´Ù. ´ë½Å ±×³É Á¦°Å¸¦ ÇÏ°í, ³ªÁß¿¡ ´Ù½Ã ÇÊ¿äÇÏ°Ô µÇ¸é À̹ÌÁö³ª µ¥ÀÌÅÍ ÆÄÀÏ ·ÎºÎÅÍ ´Ù½Ã ¸Þ¸ð¸®¿¡ ÀоîµéÀÌ¸é µÈ´Ù. ±×·¯³ª ÆäÀÌÁö°¡ º¯°æµÇ¾ú´Ù¸é, ¿î¿µÃ¼Á¦´Â ÆäÀÌÁöÀÇ ³»¿ëÀ» ³ªÁß¿¡ ´Ù½Ã »ç¿ëÇÒ ¼ö ÀÖµµ·Ï º¸Á¸ÇØ¾ß ÇÑ´Ù. ÀÌ·± ÆäÀÌÁö¸¦ ´õƼ ÆäÀÌÁö(dirty page) ¶ó°í Çϸç, À̸¦ ¸Þ¸ð¸®¿¡¼­ Á¦°ÅÇÒ ¶§ ½º¿ÒÆÄÀÏ(swap file)À̶ó´Â Ưº°ÇÑ ÆÄÀÏ¿¡ ÀúÀåÇÑ´Ù. ½º¿Ò ÆÄÀÏ¿¡ Á¢±ÙÇÏ´Â °ÍÀº ÇÁ·Î¼¼¼­³ª ¹°¸®Àû ¸Þ¸ð¸® ÀÇ ¼Óµµ¿¡ ºñÇØ ¸Å¿ì ¿À·¡ °É¸®¹Ç·Î, ¿î¿µÃ¼Á¦´Â ÆäÀÌÁö¸¦ µð½ºÅ©¿¡ ±â·ÏÇÒ Çʿ伺°ú, ´Ù½Ã »ç¿ëµÉ ¼ö ÀÖµµ·Ï ¸Þ¸ð¸®·Î °¡Á®¿À°Ô µÉ Çʿ伺À» Àß ´Ù·ç¾î¾ß ÇÑ´Ù. ¾î¶² ÆäÀÌÁö¸¦ Á¦°Å ¶Ç´Â ½º¿ÒÇÒÁö¸¦ °áÁ¤Çϱâ À§ÇØ »ç¿ëÇÏ´Â ¾Ë°í¸®Áò (½º¿Ò ¾Ë°í¸®Áò)ÀÌ È¿À²ÀûÀÌÁö ¾ÊÀ¸¸é ¾²·¹½Ì(thrashing) À̶ó°í ºÒ¸®´Â »óÅ°¡ ¹ß»ýÇÑ´Ù. ÀÌ ¶§ ÆäÀÌÁö´Â °è¼Ó µð½ºÅ©¿¡ ±â·ÏµÇ°í ¶Ç ´Ù½Ã ÀÐ¾î ¿À°Ô µÇ¸ç, ¿î¿µÃ¼Á¦´Â ³Ê¹« ¹Ùºü¼­ ½ÇÁ¦ ÀÛ¾÷Àº °ÅÀÇ ¸øÇÏ°Ô µÈ´Ù. ¿¹¸¦ µé¾î ±×¸² 3.1¿¡¼­, ¹°¸®Àû ÆäÀÌÁö ÇÁ·¹ÀÓ ¹øÈ£ 1ÀÌ °è¼Ó Á¢±ÙµÈ´Ù¸é, ÀÌ°ÍÀº Çϵåµð½ºÅ©·Î ½º¿ÍÇÎÇÒ ÁÁÀº È帰¡ ¾Æ´Ï´Ù. ÇÁ·Î¼¼½º°¡ ÇöÀç »ç¿ë ÇÏ°í ÀÖ´Â ÆäÀÌÁöÀÇ ÁýÇÕÀ» ÀÛ¾÷ ÁýÇÕ(working set)À̶ó°í Çϴµ¥, È¿À²Àû ÀÎ ½º¿Ò Á¤Ã¥Àº ¸ðµç ÇÁ·Î¼¼½ºµéÀÇ ÀÛ¾÷ ÁýÇÕÀÌ ¸ðµÎ ¹°¸®Àû ¸Þ¸ð¸®¿¡ ÀÖµµ·Ï ÇÑ´Ù. ¸®´ª½º´Â ½Ã½ºÅÛ¿¡¼­ Á¦°ÅµÉ ÆäÀÌÁö¸¦ °øÁ¤ÇÏ°Ô ¼±ÅÃÇϱâ À§ÇØ, °¡Àå ÃÖ±Ù ¿¡ »ç¿ëµÈ(Least Recently Used, LRU) ÆäÀÌÁö ¼ö¸í(page aging) ±â¹ýÀ» »ç¿ëÇÑ´Ù. ÀÌ ±â¹ý¿¡¼­ ½Ã½ºÅÛÀÇ ¸ðµçÆäÀÌÁö´Â, ±× ÆäÀÌÁö¿¡ Á¢±ÙµÉ ¶§ ¸¶´Ùº¯°æµÇ´Â ¼ö¸íÀ» °®°í ÀÖ´Ù. ÆäÀÌÁö´Â ÀÚÁÖ Á¢±ÙµÉ¼ö·Ï Àþ¾îÁö°í, Àû°Ô Á¢±ÙµÉ¼ö·Ï ³ªÀÌ°¡ µé°Ô µÈ´Ù. ³ªÀ̵ç ÆäÀÌÁö´Â ½º¿ÍÇÎÀÇ ÁÁÀº Èĺ¸ÀÌ´Ù. 3.1.3 °øÀ¯ °¡»ó ¸Þ¸ð¸®(Shared Virtual Memory) °¡»ó ¸Þ¸ð¸®´Â ¿©·¯ ÇÁ·Î¼¼½º°¡ ¸Þ¸ð¸®¸¦ ½±°Ô °øÀ¯ÇÏ°Ô ÇØÁØ´Ù. ¸ðµç ¸Þ¸ð¸® Á¢±ÙÀº ÆäÀÌÁö Å×À̺íÀ» ÅëÇؼ­ ÀÌ·ç¾îÁö¸ç, °¢ ÇÁ·Î¼¼½º´Â µ¶¸³ µÈ ÆäÀÌÁö Å×À̺íÀ» °®°í ÀÖ´Ù. µÎ °³ÀÇ ÇÁ·Î¼¼½º°¡ ¹°¸®Àû ¸Þ¸ð¸®ÀÇ ÆäÀÌ Áö¸¦ °øÀ¯ÇÏ·Á¸é, ±× ¹°¸®Àû ÆäÀÌÁöÀÇ ÇÁ·¹ÀÓ ¹øÈ£°¡ µÎ ÇÁ·Î¼¼½ºÀÇ ÆäÀÌ Áö Å×ÀÌºí ¸ðµÎ¿¡ ÆäÀÌÁö Å×ÀÌºí ¿£Æ®¸®·Î ÀÖ¾î¾ß ÇÑ´Ù. ±×¸² 3.1Àº µÎ ÇÁ·Î¼¼½º°¡ ¹°¸®Àû ÆäÀÌÁö ÇÁ·¹ÀÓ ¹øÈ£ 4¸¦ °øÀ¯ÇÏ´Â °ÍÀ» º¸¿©ÁØ´Ù. ÀÌ ¹°¸®Àû ÆäÀÌÁö´Â ÇÁ·Î¼¼½º X ÀÔÀå¿¡¼­ °¡»ó ÆäÀÌÁö ÇÁ·¹ÀÓ ¹øÈ£ 4ÀÌ°í, ÇÁ·Î¼¼½º Y ÀÔÀå¿¡¼­ °¡»ó ÆäÀÌÁö ÇÁ·¹ÀÓ ¹øÈ£ 6ÀÌ´Ù. ÀÌ°ÍÀº ÆäÀÌÁö °øÀ¯ÀÇ Àç¹ÌÀÖ´Â Á¡À» º¸¿©ÁØ´Ù. °øÀ¯µÇ´Â ¹°¸®Àû ÆäÀÌÁö´Â ÀÌ ¹°¸®Àû ÆäÀÌÁö¸¦ °øÀ¯ÇÏ´Â ¾î¶² ÇÁ·Î¼¼½º¿¡¼­µµ °¡»ó ¸Þ¸ð¸®ÀÇ °°Àº À§Ä¡ ¿¡ ÀÖÀ» ÇÊ¿ä°¡ ¾ø´Ù. 3.1.4 ¹°¸®Àû ÁÖ¼Ò ¸ðµå(Physical Addressing Mode)¿Í °¡»ó ÁÖ¼Ò ¸ðµå (Virtual Addressing Mode) ¿î¿µÃ¼Á¦ ÀÚ½ÅÀÌ °¡»ó ¸Þ¸ð¸®¿¡¼­ µ¿ÀÛÇÏ´Â °ÍÀº º° Àǹ̰¡ ¾ø´Ù. ±×·¸°Ô µÇ¸é ¿î¿µÃ¼Á¦°¡ ÀÚ½ÅÀ» À§ÇØ ÆäÀÌÁö Å×À̺íÀ» À¯ÁöÇØ¾ß ÇÏ´Â ²ûÂïÇÑ »óȲÀÌ ¹ú¾îÁú °ÍÀÌ´Ù. ´ëºÎºÐÀÇ ¹ü¿ë ÇÁ·Î¼¼¼­µéÀº ¹°¸®Àû ÁÖ¼Ò ¸ðµå¿Í °¡»ó ÁÖ¼Ò ¸ðµå¸¦ ÇÔ²² Á¦°øÇÑ´Ù. ¹°¸®Àû ÁÖ¼Ò ¸ðµå¿¡¼­´Â ÆäÀÌÁö Å×À̺í ÀÌ ÇÊ¿ä¾øÀ¸¸ç, ÀÌ ¸ðµå¿¡¼­ ÇÁ·Î¼¼¼­´Â ¾Æ¹«·± ÁÖ¼Ò º¯È¯µµ ÇÏÁö ¾Ê´Â´Ù. ¸®´ª½º Ä¿³ÎÀº ¹°¸®Àû ÁÖ¼Ò°ø°£¿¡¼­ ½ÇÇàµÇµµ·Ï ¸µÅ©µÇ¾î ÀÖ´Ù. ¾ËÆÄ AXP ÇÁ·Î¼¼¼­´Â Ưº°ÇÑ ¹°¸®Àû ÁÖ¼Ò ¸ðµå¸¦ °®°í ÀÖÁö ¾Ê´Ù. ´ë½Å¿¡ ¸Þ¸ð¸® °ø°£À» ¿©·¯ ºÎºÐÀ¸·Î ³ª´©¾î, ±× ÁßÀÇ µÎ °³¸¦ ¹°¸®ÀûÀ¸·Î ¸ÅÇÎµÈ ÁÖ¼Ò·Î ÁöÁ¤ÇØ µÐ´Ù. ÀÌ Ä¿³Î ÁÖ¼Ò°ø°£Àº KSEG ÁÖ¼Ò°ø°£À̶ó°í ºÎ¸£¸ç, 0xfffffc0000000000ºÎÅÍ À§ÂÊ ÁÖ¼Ò ÀüºÎ¸¦ Æ÷ÇÔÇÑ´Ù. KSEG¿¡ ¸µÅ©µÈ ÄÚµå(Á¤ÀÇ¿¡ µû¶ó Ä¿³Î ÄÚµåÀÌ´Ù)¸¦ ½ÇÇàÇϰųª KSEGÀÇ µ¥ÀÌÅ͸¦ Á¢±ÙÇϱâ À§Çؼ­´Â ÄÚµå´Â ¹Ýµå½Ã Ä¿³Î ¸ðµå¿¡¼­ ½ÇÇàµÇ¾î¾ß ÇÑ´Ù. ¾ËÆÄ¿¡¼­ÀÇ ¸®´ª½º Ä¿³ÎÀº ÁÖ¼Ò 0xfffffc0000310000·ÎºÎÅÍ ½ÇÇà µÇµµ·Ï ¸µÅ©µÇ¾î ÀÖ´Ù. 3.1.5 Á¢±Ù Á¦¾î(Access Control) ÆäÀÌÁö Å×ÀÌºí ¿£Æ®¸®´Â Á¢±Ù Á¦¾î Á¤º¸µµ °¡Áö°í ÀÖ´Ù. ÇÁ·Î¼¼¼­´Â ÇÁ·Î ¼¼½ºÀÇ °¡»ó ÁÖ¼Ò¸¦ ¹°¸®Àû ÁÖ¼Ò·Î º¯È¯Çϱâ À§ÇØ ÀÌ¹Ì ÆäÀÌÁö Å×ÀÌºí ¿£Æ®¸®¸¦ »ç¿ëÇϱ⠶§¹®¿¡, ½±°Ô Á¢±Ù Á¦¾î Á¤º¸¸¦ »ç¿ëÇÏ¿©, ÀÌ ÇÁ·Î¼¼½º °¡ Çã¿ëµÇÁö ¾ÊÀº ¹æ½ÄÀ¸·Î ¸Þ¸ð¸®¸¦ Á¢±ÙÇÏÁö ¾Êµµ·Ï ÇÒ ¼ö ÀÖ´Ù. ¸Þ¸ð¸® ¿µ¿ª¿¡ ´ëÇÑ Á¢±ÙÀ» Á¦ÇÑÇÏ·Á°í ÇÏ´Â ÀÌÀ¯´Â ¸î °¡Áö°¡ ÀÖ´Ù. ½ÇÇà Äڵ带 ´ã°í ÀÖ´Â °÷ °°Àº ¾î¶² ¸Þ¸ð¸®´Â ÀÚ¿¬È÷ Àбâ Àü¿ë ¸Þ¸ð¸®À̸ç, ¿î¿µÃ¼Á¦´Â ÇÁ·Î¼¼½º°¡ ÀÚ½ÅÀÇ ½ÇÇà ÄÚµå À§¿¡ µ¥ÀÌÅ͸¦ ¾²´Â °ÍÀ» Çã¶ô Çؼ­´Â ¾È µÈ´Ù. ¹Ý´ë·Î, µ¥ÀÌÅ͸¦ ´ã°í ÀÖ´Â ÆäÀÌÁö´Â ¾²¿©Áú ¼ö ÀÖÁö¸¸ ±× ¸Þ¸ð¸®¸¦ ¸í·É¾î·Î °£ÁÖÇÏ¿© ½ÇÇàÇÏ·Á´Â ½Ãµµ´Â ½ÇÆÐÇØ¾ß ÇÑ´Ù. ´ëºÎºÐ ÀÇ ÇÁ·Î¼¼¼­´Â Àû¾îµµ µÎ °¡Áö ½ÇÇà ¸ðµå - Ä¿³Î¸ðµå¿Í »ç¿ëÀÚ¸ðµå - ¸¦ °¡Áö°í ÀÖ´Ù. ÇÁ·Î¼¼¼­°¡ Ä¿³Î ¸ðµå·Î ¼öÇàÁßÀÌ ¾Æ´Ï¶ó¸é, »ç¿ëÀÚ°¡ Ä¿³Î Äڵ带 ½ÇÇà Çϰųª Ä¿³Î ÀڷᱸÁ¶¿¡ Á¢±ÙÇÏ´Â °ÍÀ» ¸·°í ½ÍÀ» °ÍÀÌ´Ù. 31 15 14 13 12 11 10 9 7 6 5 4 3 2 1 0 +--------------+-+-+-+--------+--+--+--+--+-----+-+-+---+-+-+-+-+-+ | | | | | | | | U| K| |U|K| G |A|F|F|F|V| | | | | | | | | W| W| |R|R| H |S|O|O|O| | | | | | | | | | E| E| |E|E| |M|E|W|R| | +--------------+-+-+-+--------+--+--+--+--+-----+-+-+---+-+-+-+-+-+ ^ ^ | +-----_PAGE_DIRTY +---------_PAGE_ACCESSED 63 32 +-----------------------------------------------------------------+ | | | PFN | | | +-----------------------------------------------------------------+ ±×¸² 3.2 : Alpha AXP Page Table Entry Á¢±Ù Á¦¾î Á¤º¸´Â PTE¿¡ µé¾îÀÖÀ¸¸ç ÇÁ·Î¼¼¼­¸¶´Ù ´Ù¸£´Ù. ±×¸² 3.2´Â ¾ËÆÄ AXP ÇÁ·Î¼¼¼­ÀÇ PTE¸¦ º¸¿©ÁØ´Ù. °¢ ºñÆ® ÇʵåÀÇ Àǹ̴ ´ÙÀ½°ú °°´Ù : V : À¯È¿(Valid) ÀÌ ÆäÀÌÁö Å×ÀÌºí ¿£Æ®¸®´Â À¯È¿ÇÔ. FOE : "½ÇÇà½Ã ¿À·ù(Fault on Execute)" ÀÌ ÆäÀÌÁöÀÇ ¸í·ÉÀ» ½ÇÇà ÇÏ·Á°í ÇÒ ¶§¸¶´Ù ÇÁ·Î¼¼¼­´Â ÆäÀÌÁö ¿À·ù¸¦ ¹ß»ýÇÏ°í ÄÁÆ®·ÑÀ» ¿î¿µÃ¼Á¦¿¡°Ô ³Ñ±ä´Ù. FOW : "¾²±â½Ã ¿À·ù(Fault on Write)" À§¿Í °°À¸³ª ½ÇÇà´ë½Å ÀÌ ÆäÀÌ Áö·Î ¾²·Á°í ÇÒ ¶§ ¿À·ù°¡ ¹ß»ýÇÑ´Ù. FOR : "Àбâ½Ã ¿À·ù(Fault on Read)" À§¿Í °°À¸³ª ÀÌ ÆäÀÌÁö¿¡¼­ ÀÐÀ¸·Á ÇÒ ¶§ ¿À·ù°¡ ¹ß»ýÇÑ´Ù. ASM : ÁÖ¼Ò°ø°£ ¸ÅÄ¡(Address Space Match). º¯È¯¹öÆÛ¿¡¼­ ÀϺΠ¿£Æ® ¸®¸¸À» Áö¿ì·Á°í ÇÒ ¶§ »ç¿ëµÈ´Ù. KRE : Ä¿³Î ¸ðµå¿¡¼­ ½ÇÇà ÁßÀÎ Äڵ忡¼­ ÀÌ ÆäÀÌÁö¸¦ ÀÐÀ» ¼ö ÀÖÀ½. URE : »ç¿ëÀÚ ¸ðµå¿¡¼­ ½ÇÇàÁßÀÎ Äڵ忡¼­ ÀÌ ÆäÀÌÁö¸¦ ÀÐÀ» ¼ö ÀÖÀ½. GH : ÀÔµµ ÈùÆ®(granularity hint)´Â ºí·° ÀüüÀ» ¿©·¯°³ÀÇ º¯È¯ ¹öÆÛ ¿£Æ®¸®°¡ ¾Æ´Ñ ÇϳªÀÇ ¿£Æ®¸®¿¡ ¸ÅÇÎÇÒ ¶§ »ç¿ëµÈ´Ù. KWE : Ä¿³Î ¸ðµå¿¡¼­ ½ÇÇà ÁßÀÎ Äڵ尡 ÀÌ ÆäÀÌÁö¿¡ ¾µ ¼ö ÀÖÀ½, UWE : »ç¿ëÀÚ ¸ðµå¿¡¼­ ½ÇÇà ÁßÀÎ Äڵ尡 ÀÌ ÆäÀÌÁö¿¡ ¾µ ¼ö ÀÖÀ½, ÆäÀÌÁö ÇÁ·¹ÀÓ ¹øÈ£ : V ºñÆ®°¡ ¼¼Æ®µÈ PTEÀÇ °æ¿ì ÀÌ Ç׸ñÀº ±× PTEÀÇ ¹°¸®Àû ÆäÀÌÁö ÇÁ·¹ÀÓ ¹øÈ£¸¦ °®´Â´Ù. À¯È¿ÇÏÁö ¾ÊÀº PTEÀÇ °æ¿ì, Ç׸ñÀÇ °ªÀÌ 0ÀÌ ¾Æ´Ï¶ó¸é ÆäÀÌÁö°¡ ½º¿Ò ÆÄÀÏ ¾îµð¿¡ ÀúÀå µÇ¾î ÀÖ´ÂÁö¿¡ ´ëÇÑ Á¤º¸¸¦ °®°í ÀÖ´Ù. ¸®´ª½º´Â ´ÙÀ½ µÎ ºñÆ®¸¦ Á¤ÀÇÇÏ¿© »ç¿ëÇÑ´Ù: _PAGE_DIRTY : ÀÌ ºñÆ®°¡ ¼³Á¤µÇ¾î ÀÖÀ¸¸é ÆäÀÌÁö´Â ½º¿Ò ÆÄÀÏ¿¡ ±â·ÏµÉ ÇÊ¿ä°¡ ÀÖ´Ù. _PAGE_ACCESSED : Á¢±ÙµÈ ÆäÀÌÁö¸¦ Ç¥½ÃÇϱâ À§ÇØ ¸®´ª½º°¡ »ç¿ë ÇÑ´Ù. 3.2 ij½Ã(Cache) ¸¸¾à À§¿¡¼­ ¾ð±ÞÇÑ ÀÌ·ÐÀû ¸ðµ¨À» »ç¿ëÇÏ¿© ½Ã½ºÅÛÀ» ±¸ÇöÇÑ´Ù¸é, µ¿ÀÛ Çϱâ´Â ÇÏ°ÚÁö¸¸ ±×´ÙÁö È¿À²ÀûÀÌÁö´Â ¾ÊÀ» °ÍÀÌ´Ù. ¿î¿µÃ¼Á¦¿Í ÇÁ·Î¼¼¼­ ¼³°èÀÚµéÀº ½Ã½ºÅÛ¿¡¼­ ´õ ¸¹Àº ¼º´ÉÀ» ¾ò¾î³»±â À§ÇØ ¾Ö¾²°í ÀÖ´Ù. ÇÁ·Î¼¼¼­, ¸Þ¸ð¸® µîÀ» ´õ ºü¸£°Ô ¸¸µå´Â °Í ¿Ü¿¡, °¡Àå ÁÁÀº ¹æ¹ýÀº ¾î¶² ÀÛ¾÷µéÀ» ´õ ºü¸£°Ô ½ÇÇàÇÒ ¼ö ÀÖµµ·Ï, À¯¿ëÇÑ ÀÚ·á¿Í µ¥ÀÌÅÍÀÇ Ä³½Ã¸¦ °ü¸®ÇÏ´Â °ÍÀÌ´Ù. ¸®´ª½º´Â ¸Þ¸ð¸® °ü¸®¿Í °ü·ÃÇÏ¿© ¸î°¡Áö ij½Ã¸¦ »ç¿ë ÇÑ´Ù: ¹öÆÛ Ä³½Ã(Buffer Cache) : ¹öÆÛ Ä³½Ã´Â ºí·° µð¹ÙÀ̽º µå¶óÀ̹ö°¡ »ç¿ëÇÏ´Â µ¥ÀÌÅÍ ¹öÆÛµéÀ» °®°í ÀÖ´Ù. ÀÌµé ¹öÆÛ´Â °íÁ¤µÈ Å©±â·Î (¿¹¸¦ µé¾î 512¹ÙÀÌÆ®), ºí·° ÀåÄ¡¿¡¼­ Àаųª, °Å±â¿¡ ¾²´Â ÀÚ·á ÀÇ ºí·°À» °®°í ÀÖ´Ù. ºí·° ÀåÄ¡´Â °íÁ¤µÈ Å©±âÀÇ µ¥ÀÌÅÍ ºí·° ´ÜÀ§·Î Àбâ/¾²±â¸¸À» ÇÒ ¼ö ÀÖ´Â ÀåÄ¡ÀÌ´Ù. ¸ðµç ÇÏµå µð½ºÅ©´Â ºí·° ÀåÄ¡ÀÌ´Ù. ¹öÆÛ Ä³½Ã´Â ÀåÄ¡ ½Äº°ÀÚ¿Í ¿øÇÏ´Â ºí·° ¹øÈ£¿¡ ÀÇÇØ »öÀεǾî ÀÖ°í, ÀÌ »öÀÎÀ» ÅëÇØ µ¥ÀÌÅÍ ºí·°À» »¡¸® ãÀ» ¼ö ÀÖ´Ù. ºí·° ÀåÄ¡´Â ¹öÆÛ Ä³½Ã¸¦ ÅëÇؼ­¸¸ Á¢±ÙµÈ´Ù. µ¥ÀÌÅÍ°¡ ¹öÆÛ Ä³½Ã¿¡¼­ ¹ß°ßµÇ¸é ÇÏµå µð½ºÅ©°°Àº ¹°¸®Àû ºí·° ÀåÄ¡¿¡¼­ ÀÐÀ» ÇÊ¿ä°¡ ¾øÀ¸ ¸ç, µû¶ó¼­ ÈξÀ ºü¸£°Ô Á¢±ÙµÈ´Ù. ÆäÀÌÁö ij½Ã(Page Cache) : ÆäÀÌÁö ij½Ã´Â µð½ºÅ©»óÀÇ À̹ÌÁö¿Í µ¥ÀÌÅÍ¿¡ Á¢±ÙÇÏ´Â ¼Óµµ¸¦ ³ôÀ̱â À§ÇØ »ç¿ëµÈ´Ù. ÀÌ°ÍÀº ÆÄÀÏÀÇ ³í¸®ÀûÀÎ ³»¿ëÀ» ÆäÀÌÁö ´ÜÀ§·Î ij½ÃÇϱâ À§ÇØ »ç¿ëµÇ¸ç, ÆÄÀÏ°ú ÆÄÀÏ ³»ÀÇ ¿ÀÇÁ¼ÂÀ» ÅëÇØ Á¢±ÙµÈ´Ù. µð½ºÅ©¿¡¼­ ¸Þ¸ð¸®·Î ÆäÀÌÁöµé À» ÀоîµéÀ̸é, ÆäÀÌÁöµéÀº ÆäÀÌÁö ij½Ã¿¡ ij½ÃµÈ´Ù. ½º¿Ò ij½Ã(Swap Cache) : ´õƼ ÆäÀÌÁöµé¸¸ÀÌ ½º¿Ò ÆÄÀÏ¿¡ ÀúÀåµÈ´Ù. À̵é ÆäÀÌÁö°¡ ½º¿Ò ÆÄÀÏ¿¡ ±â·ÏµÈ ´ÙÀ½ ´õÀÌ»ó º¯°æµÇÁö ¾Ê¾Ò´Ù ¸é, ±× ÆäÀÌÁö°¡ ´ÙÀ½¿¡ ½º¿Ò ¾Æ¿ôµÉ ¶§´Â ÀÌ¹Ì ±× ÆäÀÌÁö°¡ (µ¿ÀÏ ÇÑ ³»¿ëÀ¸·Î) ½º¿Ò ÆÄÀÏ¿¡ ÀÖÀ¸¹Ç·Î, ½º¿Ò ÆÄÀÏ¿¡ ±â·ÏÇÒ ÇÊ¿ä°¡ ¾ø´Ù. ´ë½Å ±× ÆäÀÌÁö´Â ±×³É Æó±âÇÏ¸é µÈ´Ù. ½º¿ÍÇÎÀÌ ½ÉÇÏ°Ô ÀϾ´Â ½Ã½ºÅÛ¿¡¼­´Â ÀÌ·¸°Ô ÇÔÀ¸·Î½á ºÒÇÊ¿äÇÏ°í °ªºñ½Ñ µð½ºÅ© ¿¬»êÀ» ¸¹ÀÌ ÁÙÀÏ ¼ö ÀÖ´Ù. Çϵå¿þ¾î ij½Ã(Hardware Cache) : ÈçÈ÷ ±¸ÇöµÇ´Â Çϵå¿þ¾î ij½Ã´Â ÇÁ·Î¼¼¼­ ³»ºÎ¿¡ ÀÖ´Â ÆäÀÌÁö Å×ÀÌºí ¿£Æ®¸®(PTE)ÀÇ Ä³½ÃÀÌ´Ù. ÀÌ °æ¿ì ÇÁ·Î¼¼¼­´Â Ç×»ó ÆäÀÌÁö Å×À̺íÀ» Á÷Á¢ Àд °ÍÀÌ ¾Æ´Ï¶ó, PTE¸¦ ÇÊ¿ä·Î ÇÒ ¶§¸¶´Ù ÆäÀÌÁö¿¡ ´ëÇÑ º¯È¯ °á°ú¸¦ ij½ÃÇÑ´Ù. À̵éÀº º¯È¯ ÂüÁ¶ ¹öÆÛ(Translation Look-aside Buffers, TLB)¶ó°í ºÒ¸®¸ç ½Ã½ºÅÛÀÇ ¿©·¯ ÇÁ·Î¼¼½ºÀÇ ÆäÀÌÁö Å×ÀÌºí ¿£Æ®¸®ÀÇ Ä³½ÃµÈ º¹»çº»À» °®°í ÀÖ´Ù. °¡»ó ÁÖ¼Ò¸¦ ÂüÁ¶ÇÒ ¶§, ÇÁ·Î¼¼¼­´Â TLB ¿£Æ®¸®¿¡¼­ ÀÏÄ¡ÇÏ´Â Ç׸ñ À» ãÀ¸·Á°í ÇÑ´Ù. ¸¸¾à ã´Â´Ù¸é, °¡»ó ÁÖ¼Ò¸¦ ¹Ù·Î ¹°¸®Àû ÁÖ¼Ò ·Î º¯È¯ÇÏ¿©, µ¥ÀÌÅÍ¿¡ ´ëÇÑ ¿Ã¹Ù¸¥ ¿¬»êÀ» ¼öÇàÇÒ ¼ö ÀÖ´Ù. ÇÁ·Î ¼¼¼­°¡ ÀÏÄ¡ÇÏ´Â TLB ¿£Æ®¸®¸¦ ãÁö ¸øÇϸé, ¿î¿µÃ¼Á¦ÀÇ µµ¿òÀ» ¹Þ¾Æ¾ß ÇÑ´Ù. µµ¿òÀ» ¹Þ±â À§ÇؿüÁ¦¿¡°Ô TLB¸¦ ãÁö ¸øÇß´Ù´Â (TLB miss) ½ÅÈ£¸¦ º¸³½´Ù. ¹®Á¦¸¦ ÇØ°áÇϵµ·Ï ¿î¿µÃ¼Á¦¿¡°Ô ¿¹¿Ü ½ÅÈ£¸¦ Àü´ÞÇϱâ À§Çؼ­´Â ½Ã½ºÅÛ¸¶´Ù ƯÀ¯ÇÑ ¸ÞÄ¿´ÏÁòÀÌ »ç¿ëµÈ ´Ù. ¿î¿µÃ¼Á¦´Â ÁÖ¼Ò º¯È¯À» À§ÇØ »õ·Î¿î TLB ¿£Æ®¸®¸¦ »ý¼ºÇÑ´Ù. ¿¹¿Ü°¡ ó¸®µÈ ´ÙÀ½, ÇÁ·Î¼¼¼­´Â °°Àº °¡»ó ÁÖ¼Ò º¯È¯À» ´Ù½Ã ½Ãµµ ÇÑ´Ù. À̹ø¿¡´Â ÀÌ °¡»ó ÁÖ¼Ò¿¡ ÇØ´çÇÏ´Â À¯È¿ÇÑ TLB ¿£Æ®¸®°¡ Àֱ⠶§¹®¿¡ Àß Ã³¸®µÉ °ÍÀÌ´Ù. Çϵå¿þ¾î ij½ÃÀÌµç ´Ù¸¥ ij½ÃÀ̵ç ij½Ã¸¦ »ç¿ëÇÏ´Â °ÍÀÇ ´ÜÁ¡Àº, ±×·¸°Ô È¿À²À» ³ôÀ̱â À§Çؼ­ ¸®´ª½º´Â À̵é ij½Ã¸¦ °ü¸®Çϴµ¥ ´õ ¸¹Àº ½Ã°£°ú °ø°£À» »ç¿ëÇØ¾ß ÇÑ´Ù´Â °Í°ú, ij½Ã°¡ ¸Á°¡Áö´Â °æ¿ì ½Ã½ºÅÛÀÌ Á״´ٴ °ÍÀÌ´Ù. 3.3 ¸®´ª½º ÆäÀÌÁö Å×À̺í(Linux Page Table) ¸®´ª½º´Â 3´Ü°èÀÇ ÆäÀÌÁö Å×À̺íÀ» °¡Á¤ÇÑ´Ù . Á¢±ÙµÇ´Â °¢ ÆäÀÌÁö Å×À̺í Àº ´ÙÀ½ ´Ü°èÀÇ ÆäÀÌÁö Å×À̺íÀÇ ÆäÀÌÁö ÇÁ·¹ÀÓ ¹øÈ£¸¦ °®°í ÀÖ´Ù. ±×¸² 3.3Àº °¡»ó ÁÖ¼Ò°¡ ¾î¶»°Ô ¿©·¯°³ÀÇ Ç׸ñÀ¸·Î ³ª´©¾îÁö´ÂÁö º¸¿©ÁØ´Ù. °¢ Ç׸ñÀº ƯÁ¤ ÆäÀÌÁö Å×ÀÌºí¿¡¼­ÀÇ ¿ÀÇÁ¼ÂÀ» Á¦°øÇÑ´Ù. °¡»ó ÁÖ¼Ò¸¦ ¹°¸®Àû ÁÖ¼Ò·Î º¯È¯Çϱâ À§ÇØ, ÇÁ·Î¼¼¼­´Â °¢ ´Ü°èÀÇ Ç׸ñÀÇ ³»¿ëÀ» °¡Á®¿Í¼­ ÆäÀÌÁö Å×À̺íÀ» °®°í ÀÖ´Â ¹°¸®Àû ÆäÀÌÁö¿¡ ´ëÇÑ ¿ÀÇÁ¼Â À¸·Î º¯È¯ÇÏ°í, ´ÙÀ½ ´Ü°èÀÇ ÆäÀÌÁö Å×À̺íÀÇ ÆäÀÌÁö ÇÁ·¹ÀÓ ¹øÈ£¸¦ Àд ´Ù. ÀÌ °úÁ¤À» 3ȸ ¹Ýº¹ÇÏ¸é °¡»ó ÁÖ¼Ò¸¦ Æ÷ÇÔÇÏ´Â ¹°¸®Àû ÆäÀÌÁöÀÇ ÆäÀÌ Áö ÇÁ·¹ÀÓ ¹øÈ£¸¦ ¾òÀ» ¼ö ÀÖ´Ù. ±×¸®°í °¡»ó ÁÖ¼ÒÀÇ ¸¶Áö¸· Ç׸ñÀÎ ¹ÙÀÌ Æ® ¿ÀÇÁ¼ÂÀ» »ç¿ëÇÏ¿© ÆäÀÌÁö ³»¿¡ ÀÖ´Â µ¥ÀÌÅ͸¦ ¾ò´Â´Ù. VIRTUAL ADDRESS +----- ------+-----------+-----------+-----------+---------------+ | | | | | | | | Levle 1 | Levle 2 | Levle 3 | Byte within | | | | | | | | | page | | +-- ---------+---|-------+-----|-----+-------|---+------------|--+ | | | | Level 1 | Level 2 | Level 3 | | Page Table | Page Table | Page Table | Physical Page | +-------+ | +-------+ | +-------+ | +-------+ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | +---+---+ | +---+---+ | +---+---+ | | | | |PEN| |<-+ |PEN| |<-+ |PEN| |<-+ +-------+<----+ +---+---+ +---+---+ +---+---+ +-------+ | | | | | | | | | | | | | | | | | | | | | | PGD | | | | | | | | | | | -----> +-|-----+ +->+-|-----+ +->+-|-----+ +->+-------+ | | | | | | +--------+ +--------+ +--------+ ±×¸² 3.3 : Three Level Page Table ¸®´ª½º¸¦ ½ÇÇàÇÏ´Â Ç÷§ÆûµéÀº, ¹Ýµå½Ã Ä¿³ÎÀÌ Æ¯Á¤ ÇÁ·Î¼¼½ºÀÇ ÆäÀÌÁö Å×À̺íÀ» Ž»öÇÒ ¼ö ÀÖµµ·Ï ÇÏ´Â ¸ÅÅ©·ÎµéÀ» Áö¿øÇØ¾ß ÇÑ´Ù. ÀÌ°°Àº ¹æ½Ä ´öÅÿ¡ Ä¿³ÎÀº ÆäÀÌÁö Å×ÀÌºí ¿£Æ®¸®ÀÇ Çü½ÄÀ̶óµç°¡ ¾î¶»°Ô ¹è¿­µÇ¾î ÀÖ´ÂÁö ¾Ë¾Æ¾ß µÉ ÇÊ¿ä°¡ ¾ø´Ù. ÀÌ·± ¹æ½ÄÀº ¸Å¿ì ¼º°øÀûÀ̾ ¼¼´Ü°èÀÇ ÆäÀÌÁö Å×À̺íÀ» °¡Áö´Â ¾ËÆÄ ÇÁ·Î¼¼¼­¿Í µÎ ´Ü°èÀÇ ÆäÀÌÁö Å×À̺íÀ» °¡Áö ´Â ÀÎÅÚÀÇ x86°è¿­ÀÇ ÇÁ·Î¼¼¼­¿¡ ´ëÇؼ­ µ¿ÀÏÇÑ ÆäÀÌÁö Å×À̺í ó¸® ÄÚµå ¸¦ »ç¿ëÇÏ°í ÀÖ´Ù. 3.4 ÆäÀÌÁöÀÇ ÇÒ´ç(allocation)°ú ÇØÁ¦(deallocation) ½Ã½ºÅÛ¿¡ ÀÖ´Â ¹°¸®Àû ÆäÀÌÁö¿¡ ´ëÇØ ¿©·¯ ¿ä±¸µéÀÌ ÀÖ´Ù. ¿¹¸¦ µé¾î, À̹ÌÁö¸¦ ¸Þ¸ð¸®¿¡ ·ÎµåÇÒ ¶§ ¿î¿µÃ¼Á¦´Â ÆäÀÌÁö¸¦ ÇÒ´çÇØ¾ß ÀÖ´Ù. ±×¸®°í À̹ÌÁöÀÇ ½ÇÇàÀÌ ³¡³ª°í ¾ð·ÎµåµÉ ¶§ ÆäÀÌÁö¸¦ ÇØÁ¦ÇØ¾ß ÇÑ´Ù. ¹°¸®Àû ÆäÀÌÁöÀÇ ¶Ç ´Ù¸¥ ¿ëµµ´Â ÆäÀÌÁö Å×À̺í ÀÚü¿Í °°Àº Ä¿³Î ƯÀ¯ÀÇ ÀÚ·á ±¸Á¶¸¦ ÀúÀåÇϱâ À§ÇÑ °ÍÀÌ´Ù. ÆäÀÌÁö ÇÒ´ç°ú ÇØÁ¦¿¡ »ç¿ëµÇ´Â ¸ÞÄ¿´ÏÁò À̳ª ÀڷᱸÁ¶´Â, °¡»ó ¸Þ¸ð¸® ¼­ºê½Ã½ºÅÛÀÇ È¿À²¼º¿¡ °¡Àå Áß¿äÇÑ ¿µÇâÀ» ¹ÌÄ£´Ù. ½Ã½ºÅÛÀÇ ¸ðµç ¹°¸®Àû ÆäÀÌÁö´Â mem_map_t ±¸Á¶Ã¼ÀÇ ¸®½ºÆ®ÀÎ mem_map ÀڷᱸÁ¶·Î ³ªÅ¸³»¸ç À̵éÀº ºÎÆýÿ¡ ÃʱâÈ­µÈ´Ù. °¢ mem_map_t ±¸Á¶Ã¼ ´Â ½Ã½ºÅÛÀÇ ¹°¸®Àû ÆäÀÌÁö Çϳª¸¦ ±â¼úÇÑ´Ù. ¸Þ¸ð¸® °ü¸®¿¡ °üÇØ Áß¿äÇÑ Ç׸ñµéÀº ´ÙÀ½°ú °°´Ù : Ä«¿îÆ®(count) : ÀÌ ÆäÀÌÁö¸¦ »ç¿ëÇÏ°í ÀÖ´Â »ç¿ëÀÚ(ÇÁ·Î¼¼½º)µéÀÇ ¼ö. ÆäÀÌÁö¸¦ ¿©·¯ ÇÁ·Î¼¼½º°¡ °øÀ¯ÇÏ°í ÀÖ´Ù¸é Ä«¿îÆ®´Â 1º¸´Ù Å©´Ù. ³ªÀÌ(age) : ÀÌ Ç׸ñÀº ÆäÀÌÁöÀÇ ³ªÀ̸¦ ±â·ÏÇÏ°í ÀÖÀ¸¸ç, ±× ÆäÀÌÁö °¡ Æó±â ¶Ç´Â ½º¿ÒÇÒ ÁÁÀº Èĺ¸ÀÎÁö °áÁ¤Çϴµ¥ »ç¿ëµÈ´Ù. map_nr : ÀÌ mem_map_t°¡ ±â¼úÇÏ´Â ¹°¸®Àû ÆäÀÌÁöÀÇ ÇÁ·¹ÀÓ ¹øÈ£ ÀÌ´Ù. free_areaº¤ÅÍ´Â ÆäÀÌÁö¸¦ ÇÒ´çÇÏ´Â Äڵ尡 ÇÁ¸®ÆäÀÌÁö¸¦ ã´Âµ¥ »ç¿ë µÈ´Ù. ÀüüÀûÀÎ ¹öÆÛ °ü¸® °èȹÀº ÀÌ·± ¸ÞÄ¿´ÏÁòÀ¸·Î ÀÌ·ç¾îÁö¸ç ¼¼ºÎÀûÀÎ ÄÚµå ¿¡ ´ëÇؼ­¶ó¸é, ÇÁ·Î¼¼¼­°¡ »ç¿ëÇÏ´Â ÆäÀÌÁöÀÇ Å©±â¿Í ¹°¸®ÀûÀÎ ÆäÀÌ¡ ¸ÞÄ¿´ÏÁòÀº ¼­·Î ´Ù¸¦ ¼ö ÀÖ´Ù. free_areaÀÇ °¢ ¿ø¼ÒµéÀº ÆäÀÌÁö ºí·°µé¿¡ ´ëÇÑ Á¤º¸¸¦ °¡Áö°í ÀÖ´Ù. ¹è¿­ÀÇ Ã¹¹ø° ¿ø¼Ò´Â ÇÑ ÆäÀÌÁö¸¦, ±× ´ÙÀ½Àº µÎ ÆäÀÌÁöÀÇ ºí·°µéÀ», ±× ´ÙÀ½Àº ³× ÆäÀÌÁöÀÇ ºí·°µéÀ», ÀÌ·±½ÄÀ¸·Î °è¼Ó 2ÀÇ Á¦°öÀ¸·Î Áõ°¡ÇÏ´Â ÆäÀÌÁöÀÇ ºí·°µéÀ» ±â¼úÇÑ´Ù. list ¿ø¼Ò´Â Å¥ÀÇ Çìµå·Î »ç¿ëµÇ¸ç, mem_map ¹è¿­ ³»ÀÇ page ÀڷᱸÁ¶¿¡ ´ëÇÑ Æ÷ÀÎÅ͸¦ °®°í ÀÖ´Ù. ÆäÀÌÁöÀÇ ÇÁ¸® ºí·°µéÀº ÀÌ Å¥¿¡ ÀúÀåµÈ´Ù. mapÀº ÀÌ Å©±âÀÇ ÇÒ´çµÈ ÆäÀÌÁö ±×·ìÀ» ÃßÀû ÇÏ¿© °ü¸®ÇÏ´Â ºñÆ®¸Ê¿¡ ´ëÇÑ Æ÷ÀÎÅÍÀÌ´Ù. ºñÆ®¸ÊÀÇ ºñÆ® NÀº ÆäÀÌÁöÀÇ N¹ø° ÆäÀÌÁö ºí·°ÀÌ ÇÁ¸®À̸é 1·Î ¼³Á¤µÈ´Ù. ±×¸² 3.4´Â free_area ±¸Á¶Ã¼¸¦ º¸¿©ÁØ´Ù. 0¹ø° ¿ø¼Ò´Â ÇϳªÀÇ ÇÁ¸®ÆäÀÌ Áö(ÆäÀÌÁö ÇÁ·¹ÀÓ ¹øÈ£ 0), 2¹ø° ¿ø¼Ò´Â µÎ°³ÀÇ 4 ÆäÀÌÁö Å©±âÀÇ ÇÁ¸® ºí·ÏÀ» º¸¿©ÁØ´Ù. ¾ÕÀÇ °ÍÀº ÆäÀÌÁö ÇÁ·¹ÀÓ ¹øÈ£ 4¿¡¼­, µÚÀÇ °ÍÀº ÆäÀÌÁö ÇÁ·¹ÀÓ ¹øÈ£ 56¿¡¼­ ½ÃÀÛÇÑ´Ù. 3.4.1 ÆäÀÌÁö ÇÒ´ç(Page Allocation) ¸®´ª½º´Â ÆäÀÌÁö ºí·°À» È¿À²ÀûÀ¸·Î ÇÒ´çÇÏ°í ÇØÁ¦Çϱâ À§ÇØ ¹öµð ¾Ë°í¸® Áò(Buddy algorithm) À» »ç¿ëÇÑ´Ù. ÆäÀÌÁö ÇÒ´ç ÄÚµå´Â Çϳª ÀÌ»óÀÇ ¹°¸® Àû ÆäÀÌÁö·Î ±¸¼ºµÈ ÇϳªÀÇ ºí·°À» ÇÒ´çÇÑ´Ù. ÆäÀÌÁöµéÀº 2ÀÇ Á¦°ö Å©±âÀÎ ºí·°À¸·Î ÇÒ´çµÈ´Ù. Áï 1 ÆäÀÌÁö, 2 ÆäÀÌÁö, 4 ÆäÀÌÁö ½ÄÀ¸·Î ºí·°À» ÇÒ´ç ÇÒ ¼ö ÀÖ´Ù´Â °ÍÀÌ´Ù. ½Ã½ºÅÛ¿¡ ÀÖ´Â ÇÁ¸® ÆäÀÌÁö°¡ ¿äûÀ» ó¸®Çϱ⿡ ÃæºÐÇÏ´Ù¸é(nr_free_pages > min_free_pages), ÇÒ´ç ÄÚµå´Â free_area¿¡¼­ ¿äûÇÑ Å©±â¿¡ ÇØ´çÇÏ´Â ÆäÀÌÁöÀÇ ºí·°À» Ž»öÇÑ´Ù. free_areaÀÇ °¢ ¿ø¼Ò ´Â ÇÒ´çµÈ ¸Ê°ú, ÇØ´ç Å©±â¸¦ °®´Â ÆäÀÌÁöÀÇ ÇÁ¸® ºí·°ÀÇ ¸ÊÀ» °¡Áö°í ÀÖ´Ù. ¿¹¸¦ µé¾î ¹è¿­ÀÇ µÎ¹ø° ¿ø¼Ò´Â, °¢°¢ 4 ÆäÀÌÁö ±æÀÌÀÇ ÇÒ´çµÈ ºí·°°ú ÇÁ¸® ºí·°À» ±â¼úÇÏ´Â ¸Þ¸ð¸® ¸ÊÀ» °¡Áö°í ÀÖ´Ù. ÇÒ´ç ¾Ë°í¸®ÁòÀº ¸ÕÀú ¿äûµÈ Å©±âÀÇ ÆäÀÌÁö ºí·°À» °Ë»öÇÑ´Ù. free_area ÀڷᱸÁ¶ÀÇ list ¿ø¼Ò¿¡ Å¥µÇ¾î ÀÖ´Â ÇÁ¸® ÆäÀÌÁöÀÇ °í¸®¸¦ µû¶ó°£´Ù. ¸¸ÀÏ ¿äûµÈ Å©±âÀÇ ÇÁ¸® ÆäÀÌÁö ºí·°ÀÌ ¾ø´Ù¸é, ±× ´ÙÀ½ Å©±â(¿äûµÈ Å©±âÀÇ µÎ ¹è)ÀÇ ºí·°À» ã¾Æº»´Ù. ÀÌ °úÁ¤Àº ¸ðµç free_area¸¦ ´Ù °Ë»öÇϰųª, »ç¿ëÇÒ ¼ö ÀÖ´Â ÆäÀÌÁö ºí·Ï À» ã¾Æ³¾ ¶§±îÁö °è¼ÓµÈ´Ù. ã¾Æ³½ ÆäÀÌÁö ºí·°ÀÌ ¿äûÇÑ Å©±âº¸´Ù Å©´Ù ¸é, ±× ÆäÀÌÁö ºí·°Àº ¿äûÇÑ Å©±â°¡ µÉ ¶§±îÁö ºÐÇÒÇÑ´Ù. ºí·°¿¡ µé¾î ÀÖ´Â ÆäÀÌÁöÀÇ ¼ö´Â µÎ ¹è¾¿ ´Ã¾î³ª´Â Å©±â·Î µÇ¾î Àֱ⠶§¹®¿¡, ºÐÇÒ°úÁ¤ Àº ºí·°À» ¹ÝÀ¸·Î À߶󰡱⸸ ÇÏ¸é µÈ´Ù. ÇÁ¸® ºí·°Àº ÇØ´çÇϴ ť¿¡ Å¥ µÇ¸ç ÇÒ´çµÈ ÆäÀÌÁö ºí·°Àº È£ÃâÀÚ¿¡°Ô µÇµ¹·ÁÁø´Ù. ¿¹¸¦ µé¾î, ±×¸² 3.4¿¡¼­ 2 ÆäÀÌÁöÂ¥¸® ºí·°À» ¿äûÇß´Ù¸é, 4 ÆäÀÌÁö Â¥¸® ù¹ø° ºí·°(ÆäÀÌÁö ÇÁ·¹ÀÓ ¹øÈ£ 4¿¡¼­ ½ÃÀÛÇÏ´Â)Àº 2 ÆäÀÌÁöÂ¥¸® ºí·° µÎ°³·Î ³ª´· °ÍÀÌ´Ù. ÇÁ·¹ÀÓ ¹øÈ£ 4¿¡¼­ ½ÃÀÛÇϴ ù¹ø° ºí·°Àº ÇÒ´çµÈ ÆäÀÌÁö°¡ µÇ¾î È£ÃâÀÚ¿¡°Ô µÇµ¹·ÁÁö°í, ÆäÀÌÁö ÇÁ·¹ÀÓ¹øÈ£ 6¿¡¼­ ½ÃÀÛÇÏ´Â µÎ¹ø° ºí·°Àº 2 ÆäÀÌÁö Å©±âÀÇ ÇÁ¸® ºí·°À¸·Î free_area ¹è¿­ ÀÇ Ã¹¹ø° ¿ø¼Ò¿¡ Àִ ť¿¡ ÀúÀåµÈ´Ù. 3.4.2 ÆäÀÌÁö ÇØÁ¦(Page Deallocation) ÆäÀÌÁö ºí·°À» ÇÒ´çÇÏ´Â °ÍÀº ´õ Å« ÇÁ¸® ÆäÀÌÁö ºí·°À» ÀÛÀº °ÍÀ¸·Î ÂÉ°³ ±â ¶§¹®¿¡ ¸Þ¸ð¸®¸¦ Á¶°¢³»°Ô µÈ´Ù. ÆäÀÌÁö ÇØÁ¦ ÄÚµå´Â °¡´ÉÇÒ ¶§¸¶´Ù ÇÁ¸® ÆäÀÌÁöµéÀ» ´õ Å« ºí·°ÀÇ ÇÁ¸® ÆäÀÌÁö·Î ÇÕÄ£´Ù. »ç½Ç ÆäÀÌÁö ºí·°ÀÇ Å©±â´Â Áß¿äÇѵ¥, ±×°ÍÀÌ ºí·°µéÀ» ´õ Å« ºí·°À¸·Î ½±°Ô ÇÕÄ¥ ¼ö ÀÖ°Ô Çϱ⠶§¹®ÀÌ´Ù. ÆäÀÌÁö ºí·°ÀÌ ÇØÁ¦µÉ ¶§¸¶´Ù, °°Àº Å©±âÀÇ ÀÎÁ¢ÇÑ ¹öµð(buddy) ºí·°ÀÌ ÇÁ¸®ÀÎÁö °Ë»çÇÑ´Ù. ±×·¸´Ù¸é ±× ºí·°°ú »õ·Î ÇÁ¸® ºí·°ÀÌ µÈ ÆäÀÌÁöµéÀÌ ÇÕÃÄÁ®¼­, »õ·Î¿î ºó ºí·°ÀÌ µÇ¾î ´ÙÀ½ Å©±âÀÇ ÇÁ¸® ºí·°À» ÀÌ·é´Ù. µÎ°³ÀÇ ÆäÀÌÁö ºí·°ÀÌ ÇÕÃÄ Á®¼­ ´õ Å« ÇÁ¸® ÆäÀÌÁö ºí·°ÀÌ µÉ ¶§¸¶´Ù, ÆäÀÌÁö ÇØÁ¦ ÄÚµå´Â ÀÌ ºí·°À» ´Ù½Ã ÀÎÁ¢ÇÑ °Í°ú ÇÕÃļ­ ´õ Å« °ÍÀ¸·Î ¸¸µé·Á°í ÇÑ´Ù. ÀÌ·¸°Ô Çؼ­ ÇÁ¸® ÆäÀÌÁö ºí·°Àº ¸Þ¸ð¸®°¡ Çã¶ôÇÏ´Â ¸¸Å­ Ä¿Áú ¼ö ÀÖ°Ô µÈ´Ù. free_area PHYSICAL MEMORY +-----+ +-------+ | | | | | 5 | | | +-----+ +-------+ | | | | 8 | 4 | | | +-----+ map +-------+ | |--->+-----+ |///////| 7 mem_map_t mem_map_t | 3 | +-----+ |///////| +-----+ +-----+ +-----+ map +-------+ | |<--- | |<---| | +-----+ |///////| 6 | |---> | |--->| 2 |--->| | |///////| | 56 | | 4 | +-----+ +-----+ +-------+ +-----+ +-----+ | | map |///////| 5 mem_map_t | 1 |-+ +-----+ |///////| +-----+ +-----+ +->| | +-------+ | |<---| | | | |///////| 4 | |--->| 0 |-+ +-----+ |///////| | 0 | +-----+ | map +-------+ +-----+ + +-----+ | | 3 +->| | | | | | +-------+ | | | | 2 | | | | +-----+ +-------+ ^ | | 1 | | | PFN +-------+ /////// Free PFN |///////| 0 /////// |///////| +-------+ ±×¸² 3.4 : The free_area data structure ¿¹¸¦ µé¾î, ±×¸² 3.4¿¡¼­ ÆäÀÌÁö ÇÁ·¹ÀÓ ¹øÈ£ 1ÀÌ ÇØÁ¦µÇ¸é, ÀÌ¹Ì ÇØÁ¦ µÇ¾î ÀÖ´Â ÆäÀÌÁö ÇÁ·¹ÀÓ ¹øÈ£ 0°ú ÇÕÃÄÁ® 2ÆäÀÌÁö Å©±âÀÇ ÇÁ¸® ºí·°ÀÌ µÇ¾î, free_areaÀÇ Ã¹¹ø° ¿ø¼ÒÀÇ Å¥¿¡ ¿¬°áµÈ´Ù. 3.5 ¸Þ¸ð¸® ¸ÅÇÎ(Memory Mapping) À̹ÌÁö¸¦ ½ÇÇàÇÏ·Á¸é, ±× ½ÇÇà À̹ÌÁöÀÇ ³»¿ëÀ» ÇÁ·Î¼¼½ºÀÇ °¡»ó ÁÖ¼Ò°ø°£ À¸·Î °¡Á®¿Í¾ß ÇÑ´Ù. ½ÇÇà À̹ÌÁö°¡ ¸µÅ©Çؼ­ »ç¿ëÇÏ´Â °øÀ¯ ¶óÀ̺귯¸®µµ ¸¶Âù°¡Áö´Ù. ¸®´ª½º´Â ½ÇÇàÆÄÀÏÀ» ½ÇÁ¦·Î ¹°¸®Àû ¸Þ¸ð¸®¿¡ °¡Á®¿À´Â ´ë½Å ¿¡, ´ÜÁö ÇÁ·Î¼¼½ºÀÇ °¡»ó ¸Þ¸ð¸®¿Í ¿¬°á¸¸ ½ÃŲ´Ù. ±×¸®°í ÀÀ¿ë ÇÁ·Î±×·¥ÀÌ ½ÇÇàµÇ¸é¼­ ÇÁ·Î±×·¥ÀÇ ÀϺΰ¡ ÂüÁ¶µÊ¿¡ µû¶ó, ½ÇÇà À̹ÌÁö·ÎºÎÅÍ ÇØ´çÇÏ´Â À̹ÌÁö ºÎºÐÀ» ¸Þ¸ð¸®·Î °¡Á®¿Â´Ù. ÀÌ·¸°Ô À̹ÌÁö¸¦ ÇÁ·Î¼¼½ºÀÇ °¡»ó ÁÖ¼Ò°ø°£¿¡ ¿¬°áÇÏ´Â °ÍÀ» ¸Þ¸ð¸® ¸ÅÇÎÀ̶ó°í ÇÑ´Ù. ¸ðµç ÇÁ·Î¼¼½ºÀÇ °¡»ó ¸Þ¸ð¸®´Â mm_struct ÀڷᱸÁ¶·Î Ç¥ÇöµÈ´Ù. ¿©±â¿¡ ´Â ÇöÀç ½ÇÇàÁßÀÎ À̹ÌÁö(¿¹¸¦ µé¾î, bashÀÇ)¿¡ ´ëÇÑ Á¤º¸¿Í, ¿©·¯°³ÀÇ vm_area_struct ÀڷᱸÁ¶¿¡ ´ëÇÑ Æ÷ÀÎÅÍ°¡ µé¾î ÀÖ´Ù. °¢°¢ÀÇ vm_area_struct ÀڷᱸÁ¶´Â °¡»ó ¸Þ¸ð¸® ¿µ¿ªÀÇ ½ÃÀÛ°ú ³¡, ÇÁ·Î¼¼½ºÀÇ Á¢±Ù ±ÇÇÑ, ¸Þ¸ð¸®¿¡ ´ëÇÑ ¿¬»êµé µîÀ» ±â¼úÇÑ´Ù. ¿©±â¼­ ¿¬»êÀº ÀÌ ¿µ¿ª ÀÇ °¡»ó ¸Þ¸ð¸®¸¦ ó¸®Çϱâ À§ÇØ ¸®´ª½º°¡ »ç¿ëÇØ¾ß ÇÏ´Â ·çƾµéÀÌ´Ù. ¿¹ ¸¦ µé¾î, °¡»ó ¸Þ¸ð¸® ¿¬»êÁßÀÇ Çϳª´Â, ÇÁ·Î¼¼½º°¡ °¡»ó ¸Þ¸ð¸®¸¦ Á¢±ÙÇÏ ·Á´Ù (ÆäÀÌÁö ÆúÆ®¸¦ ÅëÇØ) ±× ¸Þ¸ð¸®°¡ ½ÇÁ¦·Î´Â ¹°¸®Àû ¸Þ¸ð¸®¿¡ ¾ø´Ù´Â °ÍÀ» ¾Ë¾ÒÀ» ¶§, À̸¦ ó¸®ÇÏ´Â ¿Ã¹Ù¸¥ ÀÛ¾÷À» ¼öÇàÇÑ´Ù. ÀÌ ¿¬»êÀÌ nopage ¿¬»êÀÌ´Ù. ¸®´ª½º´Â ½ÇÇà À̹ÌÁöÀÇ ÆäÀÌÁö¸¦ ¸Þ¸ð¸®·Î ¿Å±æ °ÍÀ» ¿ä±¸ÇÒ ¶§ nopage ¿¬»êÀ» »ç¿ëÇÑ´Ù. Processes Virtual Memory +----------------+ | | | | | | +------->+----------------+ | | | | | Virtual Area | vm_area_struct | | | +----------+ | | | | vm_end |-------------+ | | +----------+ | | | vm_start |--------------------->+----------------+ +----------+ | | | vm_flags | | | +----------+ | | | vm_inode | | | +----------+ Virtual Memory | | | vm_ops |--> Operation | | +----------+ | | | | open() | | +----------+ close() | | | vm_next | unmap() | | +----------+ protect() | | sync() | | advise() | | nopage() | | wppage() | | swapout() | | swapin() | | | | | | +----------------+ ±×¸² 3.5 : Areas of Virtual Memory ¾î¶² ½ÇÇà À̹ÌÁö°¡ ÇÁ·Î¼¼½ºÀÇ °¡»ó ÁÖ¼Ò¿¡ ¸ÅÇ뵃 ¶§, ÇÑ ¼¼Æ®ÀÇ vm_area_struct ÀڷᱸÁ¶°¡ ¸¸µé¾îÁø´Ù. °¢ vm_area_struct ÀڷᱸÁ¶´Â ½ÇÇà À̹ÌÁöÀÇ ÇÑ ºÎºÐÀ» ³ªÅ¸³½´Ù - ½ÇÇàÄÚµå, ÃʱâÈ­µÈ µ¥ÀÌÅÍ(º¯¼ö), ÃʱâÈ­µÇÁö ¾ÊÀº µ¥ÀÌÅÍ(BSS) µîÀÌ´Ù. ¸®´ª½º´Â »ó´ç¼öÀÇ Ç¥ÁØ °¡»ó ¸Þ¸ð ¸® ¿¬»êÀ» Áö¿øÇϸç, vm_area_struct ÀڷᱸÁ¶°¡ ¸¸µé¾îÁú ¶§, ±×¿¡ ¸Â´Â ÀÏ·ÃÀÇ °¡»ó ¸Þ¸ð¸® ¿¬»êÀÌ ¿©±â¿¡ ÁöÁ¤µÈ´Ù. 3.6 ¿ä±¸ ÆäÀÌ¡(Demand Paging) ½ÇÇà À̹ÌÁö°¡ ÇÁ·Î¼¼½ºÀÇ °¡»ó ¸Þ¸ð¸®¿¡ ¸ÅÇÎµÇ°í ³ª¸é, ½ÇÇàÇÒ ¼ö ÀÖ°Ô µÈ´Ù. À̹ÌÁöÀÇ ¸Ç ¾ÕºÎºÐ¸¸ ¹°¸®ÀûÀ¸·Î ¸Þ¸ð¸®¿¡ ¿Ã¶ó¿Í Àֱ⠶§¹®¿¡, °ð ¾ÆÁ÷ ¹°¸®Àû ¸Þ¸ð¸®¿¡ ÀÖÁö ¾ÊÀº °¡»ó ¸Þ¸ð¸® ¿µ¿ªÀ» Á¢±ÙÇÏ°Ô µÈ´Ù. ÇÁ·Î ¼¼½º°¡ À¯È¿ÇÑ ÆäÀÌÁö Å×ÀÌºí ¿£Æ®¸®¸¦ °®Áö ¾ÊÀº °¡»ó ÁÖ¼Ò¿¡ Á¢±ÙÇϸé, ÇÁ·Î¼¼¼­´Â ¸®´ª½º¿¡ ÆäÀÌÁö ÆúÆ®¸¦ º¸°íÇÑ´Ù. ÆäÀÌÁö ÆúÆ®´Â ÆäÀÌÁö ÆúÆ® °¡ ¹ß»ýÇÑ ÆäÀÌÁö¿Í, ÆäÀÌÁö ÆúÆ®¸¦ ¹ß»ý½ÃŲ ¸Þ¸ð¸® Á¢±ÙÀÇ À¯ÇüÀ» ¼³¸í ÇÑ´Ù. ¸®´ª½º´Â ÆäÀÌÁö ÆúÆ®°¡ ¹ß»ýÇÑ °÷À» Æ÷ÇÔÇÏ´Â ¸Þ¸ð¸® ¿µ¿ªÀ» ³ªÅ¸³»´Â vm_area_struct¸¦ ã¾Æ¾ß ÇÑ´Ù. vm_area_structÀڷᱸÁ¶¸¦ °Ë»öÇÏ´Â °ÍÀº, ÆäÀÌÁö ÆúÆ®¸¦ È¿À²ÀûÀ¸·Î ó¸®Çϴµ¥ ÀÖ¾î ÇÙ½ÉÀûÀ̱⠶§¹®¿¡, À̵é ÀÚ·á ±¸Á¶´Â AVL(Adelson-Velskii and Landis) Æ®¸® ±¸Á¶·Î ¸¸µé¾îÁ® ÀÖ´Ù. ¸¸¾à ÆúÆ®°¡ ¹ß»ýÇÑ °¡»óÁÖ¼Ò¿¡ ´ëÇÑ vm_area_struct ÀڷᱸÁ¶°¡ ¾ø´Ù¸é, ÀÌ ÇÁ·Î¼¼½º´Â ±ÝÁöµÈ °¡»ó ÁÖ¼Ò¿¡ Á¢±ÙÇÑ °ÍÀÌ´Ù. ¸®´ª½º´Â SIGSEGV ½Ã±×³ÎÀ» ÀÌ ÇÁ·Î¼¼½º¿¡ º¸³»¸ç, ÀÌ ÇÁ·Î¼¼½º°¡ ±× ½Ã±×³ÎÀ» ó¸®ÇÏ´Â Çڵ鷯¸¦ °®°í ÀÖÁö ¾Ê´Ù¸é, ÇÁ·Î¼¼½º´Â Á¾·áµÉ °ÍÀÌ´Ù. ±×·±´ÙÀ½ ¸®´ª½º´Â ¹ß»ýÇÑ ÆäÀÌÁö ÆúÆ®ÀÇ À¯Çü°ú, °¡»ó ¸Þ¸ð¸®ÀÇ ÀÌ ¿µ¿ª ¿¡ ´ëÇØ Çã¿ëµÈ Á¢±Ù À¯ÇüÀ» ºñ±³ÇÑ´Ù. ÇÁ·Î¼¼½º°¡ Àб⸸ Çã¿ëµÈ ¿µ¿ª¿¡ ¾²·Á°í ÇÏ´Â °Íó·³, Çã¿ëµÇÁö ¾ÊÀº ¹æ¹ýÀ¸·Î Á¢±ÙÇÏ·Á°í ÇÏ¸é ¸Þ¸ð¸® ¿¡·¯°¡ ½Ã±×³Î·Î Àü´ÞµÈ´Ù. ÆäÀÌÁö ÆúÆ®°¡ ¿Ã¹Ù¸¥ °ÍÀÌ¶óµµ ÆÇ´ÜÇß´Ù¸é, ¸®´ª½º´Â À̸¦ ó¸®ÇØ¾ß ÇÑ´Ù. ¸®´ª½º´Â ½º¿ÒÆÄÀÏ¿¡ ÀÖ´Â ÆäÀÌÁö¿Í, µð½ºÅ©ÀÇ ¾îµò°¡¿¡ ÀÖ´Â ½ÇÇà À̹ÌÁö ÀÇ ÀϺÎÀÎ ÆäÀÌÁö¸¦ ±¸ºÐÇØ¾ß ÇÑ´Ù. ±¸ºÐÀ» À§ÇØ ÆúÆ®°¡ ¹ß»ýÇÑ °¡»ó ÁÖ¼Ò ÀÇ ÆäÀÌÁö Å×ÀÌºí ¿£Æ®¸®¸¦ »ç¿ëÇÑ´Ù. ±× ÆäÀÌÁöÀÇ ÆäÀÌÁö Å×ÀÌºí ¿£Æ®¸®°¡ À¯È¿ÇÏÁö ¾ÊÁö¸¸ ºñ¾îÀÖÁöµµ ¾Ê´Ù¸é, ÆäÀÌÁö ÆúÆ®´Â ½º¿Ò ÆÄÀÏ¿¡ µé¾îÀÖ´Â ÆäÀÌÁö¿¡ ´ëÇÏ¿© ¹ß»ýÇÑ °ÍÀÌ´Ù. ¾ËÆÄ AXPÀÇ ÆäÀÌÁö Å×À̺íÀ̶ó¸é, À¯È¿ ºñÆ®°¡ ¼³Á¤µÇÁö ¾Ê°í, PFN Ç׸ñ ¿¡ 0ÀÌ ¾Æ´Ñ °ªÀ» °¡Áø ¿£Æ®¸®µéÀÌ ÀÌ¿¡ ÇØ´çµÈ´Ù. ÀÌ °æ¿ì PFN Ç׸ñÀº ½º¿Ò ÆÄÀÏÀÇ(±×¸®°í ¾î¶² ½º¿Ò ÆÄÀÏÀÇ) ¾î´À ºÎºÐ¿¡ ±× ÆäÀÌÁö°¡ µé¾î ÀÖ´ÂÁö¿¡ ´ëÇÑ Á¤º¸¸¦ °®°í ÀÖ´Ù. ½º¿Ò ÆÄÀÏ¿¡ ÀÖ´Â ÆäÀÌÁöµéÀ» ¾î¶»°Ô ´Ù·ç´Â°¡´Â ÀÌ ÀåÀÇ µÚ¿¡¼­ ¼³¸íÇÑ´Ù. ¸ðµç vm_area_struct ÀڷᱸÁ¶°¡ °¡»ó ¸Þ¸ð¸® ¿¬»êÀ» °®°í ÀÖ´Â °ÍÀº ¾Æ´Ï °í, °¡Áö°í ÀÖ´Ù°í Çصµ nopage¿¬»êÀ» °¡Áö°í ÀÖÁö ¾ÊÀ» ¼öµµ ÀÖ´Ù. ÀÌ´Â ±âº»ÀûÀ¸·Î ¸®´ª½º°¡ »õ·Î¿î ¹°¸®Àû ÆäÀÌÁö¸¦ ÇÒ´çÇÏ°í ÀÌ¿¡ ´ëÇÑ À¯È¿ÇÑ ÆäÀÌÁö Å×ÀÌºí ¿£Æ®¸®¸¦ »ý¼ºÇÏ¿©, À̸¦ ó¸®ÇØÁֱ⠶§¹®ÀÌ´Ù. ÀÌ °¡»ó ¸Þ¸ð¸® ¿µ¿ª¿ëÀ¸·Î nopage ¿¬»êÀÌ ÀÖ´Ù¸é, ¸®´ª½º´Â À̸¦ »ç¿ëÇÒ °ÍÀÌ´Ù. ÀÏ¹Ý nopage¿¬»êÀº ¸Þ¸ð¸®¿¡ ¸ÅÇÎµÈ ½ÇÇà À̹ÌÁö¸¦ À§ÇØ »ç¿ëµÇ¸ç, ÆäÀÌÁö ij½Ã¸¦ »ç¿ëÇÏ¿© ¿äûÇÑ ÆäÀÌÁö¸¦ ½ÇÁ¦ ¸Þ¸ð¸®·Î °¡Á®¿Â´Ù. ¾î·µç ¿äûÇÑ ÆäÀÌÁö°¡ ¹°¸®Àû ¸Þ¸ð¸®·Î ¿Ã¶ó¿À¸é, ÇÁ·Î¼¼½ºÀÇ ÆäÀÌÁö Å×À̺íÀÌ °»½ÅµÈ´Ù. ÀÌ ¿£Æ®¸®¸¦ °»½ÅÇϱâ À§ÇÏ¿©, ƯÈ÷ º¯È¯ ÂüÁ¶ ¹öÆÛ(translation look aside buffer)¸¦ »ç¿ëÇÏ´Â ÇÁ·Î¼¼¼­ÀÇ °æ¿ì¿¡´Â, ƯÁ¤ÇÑ Çϵå¿þ¾î¿¡ ¸Â´Â ÇൿÀÌ ÇÊ¿äÇÒ ¼öµµ ÀÖ´Ù. ÀÌÁ¦ ÆäÀÌÁö ÆúÆ®°¡ 󸮵ǾúÀ¸¹Ç·Î ±× »óȲÀº ÇØÁ¦µÇ¸ç, ÇÁ·Î¼¼½º´Â °¡»ó ¸Þ¸ð¸® Á¢±Ù¿¡ ´ëÇÑ ÆúÆ®¸¦ ¹ß»ý½ÃÄ×´ø ¸í·É¿¡¼­ºÎÅÍ ½ÇÇàÀ» Àç°³ÇÑ´Ù. 3.7 ¸®´ª½º ÆäÀÌÁö ij½Ã ¸®´ª½º ÆäÀÌÁö ij½ÃÀÇ ¿ªÇÒÀº µð½ºÅ©¿¡ ÀÖ´Â ÆÄÀÏ·ÎÀÇ Á¢±Ù ¼Óµµ¸¦ ³ôÀÌ´Â °ÍÀÌ´Ù. ¸Þ¸ð¸® ¸ÅÇÎµÈ ÆÄÀÏÀº Çѹø¿¡ ÇÑ ÆäÀÌÁö¾¿ ÀÐÇôÁö¸ç, À̵é ÆäÀÌÁö ´Â ÆäÀÌÁö ij½Ã¿¡ ÀúÀåµÈ´Ù. ±×¸² 3.6Àº ÆäÀÌÁö ij½Ã°¡ mem_map_t ÀÚ·á ±¸Á¶¿¡ ´ëÇÑ Æ÷ÀÎÅ͵éÀÇ º¤ÅÍÀÎ page_hash_table·Î ±¸¼ºµÇ¾î ÀÖ´Â °ÍÀ» º¸¿©ÁØ´Ù. ¸®´ª½ºÀÇ °¢ ÆÄÀÏÀº VFS inode ÀڷᱸÁ¶(9Àå, ÆÄÀÏ ½Ã½ºÅÛ¿¡¼­ ¼³¸í)¿¡ ÀÇÇØ ½Äº°µÇ¸ç, °¢ VFS inode´Â À¯ÀÏÇϸç, ÇÑ ÆÄÀÏ¿¡ ÀÏ´ëÀÏ·Î ´ëÀÀµÇ¾î ÆÄÀÏÀ» ¿ÏÀüÈ÷ ±â¼úÇÑ´Ù. ÆäÀÌÁö Å×ÀÌºí¿¡ ´ëÇÑ À妽º´Â, ÆÄÀÏ VFS inode¿Í ÆÄÀÏ¿¡¼­ÀÇ ¿ÀÇÁ¼ÂÀ» °¡Áö°í ¸¸µé¾îÁø´Ù. ÆäÀÌÁö¸¦ ¸Þ¸ð¸® ¸ÅÇÎµÈ ÆÄÀÏ¿¡¼­ ÀÐÀ» ¶§, ¿¹¸¦ µé¾î ¿ä±¸ ÆäÀÌ¡¿¡¼­ ÆäÀÌÁö¸¦ ¸Þ¸ð¸®·Î ´Ù½Ã °¡Á®¿Ã ¶§, ÆäÀÌÁö´Â ÆäÀÌÁö ij½Ã¸¦ ÅëÇØ ÀÐ°Ô µÈ´Ù. ÆäÀÌÁö°¡ ij½Ã¿¡ ÀÖÀ¸¸é, ±× ÆäÀÌÁö¸¦ ³ªÅ¸³»´Â mem_map_t ÀÚ·á ±¸Á¶¿¡ ´ëÇÑ Æ÷ÀÎÅÍ°¡ ÆäÀÌÁö ÆúÆ® ó¸® ÄÚµå·Î µÇµ¹·ÁÁø´Ù. ij½Ã¿¡ ¾ø´Ù¸é À̹ÌÁö¸¦ °®°í ÀÖ´Â ÆÄÀÏ ½Ã½ºÅÛÀ¸·ÎºÎÅÍ ÆäÀÌÁö¸¦ ¸Þ¸ð¸® ·Î °¡Á®¿Í¾ß ÇÑ´Ù. ¸®´ª½º´Â ¹°¸®Àû ÆäÀÌÁö¸¦ ÇÒ´çÇÏ°í µð½ºÅ© »óÀÇ ÆÄÀÏ ·ÎºÎÅÍ ÆäÀÌÁö¸¦ ÀÐ¾î µéÀδÙ. °¡´ÉÇÏ´Ù¸é ¸®´ª½º´Â ÆÄÀÏÀÇ ´ÙÀ½ ÆäÀÌÁö¿¡ ´ëÇÑ Àб⸦ ½ÃÀÛÇÑ´Ù. ÀÌ·¸°Ô ÇÑ ÆäÀÌÁö¸¦ ¹Ì¸® Àд °ÍÀº, ÇÁ·Î¼¼½º°¡ ÆÄÀÏÀÇ ÆäÀÌÁö¸¦ ¼øÂ÷ÀûÀ¸·Î Á¢±ÙÇÏ´Â °æ¿ì, ´ÙÀ½ ÆäÀÌÁö°¡ (ÇÁ·Î¼¼½º°¡ ´ÙÀ½ ¸Þ¸ð¸®¸¦ Àбâ Àü¿¡) ÇÁ·Î¼¼½º¸¦ À§ÇÑ ¸Þ¸ð¸®¿¡ ±â´Ù¸®°í ÀÖ°Ô ÇÑ´Ù. page_hash_table +-----------------+ | | +-----------------+ | | mem_map_t mem_map_t +-----------------+ +-----------+ +-----------+ | |--->| inode | 12 +-->| inode | 12 +-----------------+ +-----------+ 0x8000 | +-----------+ 0x2000 | | | offset | | | offset | +-----------------+ +-----------+ | +-----------+ | | | | | | | | | | | | | | | | +-----------+ | +-----------+ | | | next_hash |--------+ | next_hash | | : | +-----------+ +-----------+ | : | | prev_hash | | prev_hash | | : | +-----------+ +-----------+ | | | | | | | | | | | | | | +-----------+ +-----------+ | | | | | | | | | | +-----------------+ | | +-----------------+ | | +-----------------+ ±×¸² 3.6 : The Linux Page Cache ½Ã°£ÀÌ Èê·¯ À̹ÌÁö¸¦ ÀÐ°í ½ÇÇàÇÔ¿¡ µû¶ó ÆäÀÌÁö ij½Ã°¡ Áõ°¡ÇÏ°Ô µÈ´Ù. ÆäÀÌÁö´Â ´õÀÌ»ó ÇÊ¿ä¾ø°Ô µÇ¸é, °¡·É À̹ÌÁö°¡ ´õÀÌ»ó ¾î¶² ÇÁ·Î¼¼½º¿¡ ÀÇÇؼ­µµ »ç¿ëµÇÁö ¾Ê°Ô µÇ¸é, ij½Ã·ÎºÎÅÍ Á¦°ÅµÈ´Ù. ¸®´ª½º°¡ ¸Þ¸ð¸®¸¦ »ç¿ëÇØ ³ª°¨¿¡ µû¶ó ¹°¸®Àû ÆäÀÌÁö°¡ ºÎÁ·ÇØÁö±â ½ÃÀÛÇÑ´Ù. ÀÌ ¶§ ¸®´ª½º ´Â ÆäÀÌÁö ij½ÃÀÇ Å©±â¸¦ ÁÙÀÏ °ÍÀÌ´Ù. 3.8 ÆäÀÌÁöÀÇ ½º¿Ò ¾Æ¿ô(swap out)°ú Æó±â(discarding) ¹°¸®Àû ¸Þ¸ð¸®°¡ ºÎÁ·ÇÏ°Ô µÇ¸é ¸®´ª½º ¸Þ¸ð¸® °ü¸® ¼­ºê½Ã½ºÅÛÀº ¹°¸®Àû ¸Þ¸ð¸®¸¦ ÇØÁ¦ÇÏ·Á ÇÑ´Ù. ÀÌ ÀÏÀº Ä¿³Î ½º¿Ò µ¥¸ó(kswapd)¿¡°Ô ÇÒ´çµÈ´Ù. Ä¿³Î ½º¿Ò µ¥¸óÀº Ä¿³Î ¾²·¹µå¶ó´Â Ưº°ÇÑ Á¾·ùÀÇ ÇÁ·Î¼¼½ºÀÌ´Ù. Ä¿³Î ¾²·¹µå´Â °¡»ó ¸Þ¸ð¸® ¾øÀÌ, ¹°¸®Àû ¸Þ¸ð¸® °ø°£¿¡¼­ Ä¿³Î¸ðµå·Î ½ÇÇà µÇ´Â ÇÁ·Î¼¼½ºÀÌ´Ù. Ä¿³Î ½º¿Ò µ¥¸óÀ̶ó´Â À̸§Àº ¾à°£ À߸øµÇ¾ú´Âµ¥, ÀÌ´Â ´ÜÁö ÆäÀÌÁö¸¦ ½º¿Ò ¾Æ¿ôÇÏ¿© ½Ã½ºÅÛÀÇ ½º¿Ò ÆÄÀÏ¿¡ ÀúÀåÇÏ´Â °Í ÀÌ»óÀÇ ¿©·¯ ÀÏÀ» Çϱ⠶§¹®ÀÌ´Ù. Ä¿³Î ½º¿Ò µ¥¸óÀÇ ¿ªÇÒÀº ¸Þ¸ð¸® °ü¸® ½Ã½ºÅÛÀÌ È¿À²ÀûÀ¸·Î µ¿ÀÛÇÒ ¼ö ÀÖµµ·Ï ½Ã½ºÅÛ¿¡ ÃæºÐÇÑ ÇÁ¸® ÆäÀÌÁö°¡ ÀÖµµ·Ï ÇÏ´Â °ÍÀÌ´Ù. Ä¿³Î ½º¿Ò µ¥¸ó(kswapd)Àº Ä¿³ÎÀÇ init ÇÁ·Î¼¼½º¿¡ ÀÇÇØ ½ÃÀ۵Ǹç Ä¿³Î ½º¿Ò ŸÀ̸Ӱ¡ ÁÖ±âÀûÀ¸·Î ¸¸·áµÉ ¶§¸¦ ±â´Ù¸®°í ÀÖ´Ù. ŸÀ̸Ӱ¡ ¸¸·áµÉ ¶§¸¶´Ù, ½º¿Ò µ¥¸óÀº ½Ã½ºÅÛÀÇ ÇÁ ÆäÀÌÁö ¼ö°¡ ³Ê¹« ÀûÁö ¾ÊÀºÁö È®ÀÎ ÇÑ´Ù. free_pages_high¿Í free_pages_low¶ó´Â µÎ°³ÀÇ º¯¼ö¸¦ »ç¿ëÇÏ¿©, ÆäÀÌÁö ¸¦ ÇØÁ¦ÇØ¾ß ÇÒ ÇÊ¿ä°¡ ÀÖ´ÂÁö °áÁ¤ÇÑ´Ù. ½Ã½ºÅÛ¿¡ ³²¾ÆÀÖ´Â ÇÁ¸® ÆäÀÌÁö ÀÇ ¼ö°¡ free_pages_highº¸´Ù Å« µ¿¾ÈÀº, Ä¿³Î ½º¿Ò µ¥¸óÀº ¾Æ¹« Àϵµ ÇÏÁö ¾Ê°í ´Ù½Ã Àáµé¾î ´ÙÀ½ ŸÀ̸Ӱ¡ ¸¸·áµÉ ¶§¸¦ ±â´Ù¸°´Ù. ÀÌ È®ÀÎ ÀÛ¾÷À» À§ÇØ, Ä¿³Î ½º¿Ò µ¥¸óÀº ÇöÀç ½º¿Ò ÆÄÀÏ¿¡ ¾º¾îÁö°í ÀÖ´Â ÆäÀÌÁö ÀÇ ¼öµµ °í·ÁÇÑ´Ù. ÀÌ °³¼ö´Â nr_async_pages¶ó´Â Ä«¿îÆ® °ªÀ¸·Î À¯Áö µÈ´Ù. ÀÌ °ªÀº ¾î¶² ÆäÀÌÁö°¡ ½º¿Ò ÆÄÀÏ¿¡ ¾º¾îÁö±â À§ÇØ Å¥¿¡ µé¾î°¥ ¶§ ¸¶´Ù Áõ°¡ÇÏ°í, ½º¿Ò ÀåÄ¡¿¡ ¿ÏÀüÈ÷ ¾º¾îÁú ¶§¸¶´Ù °¨¼ÒÇÑ´Ù. free_pages_low¿Í free_pages_high´Â ½Ã½ºÅÛÀÌ ºÎÆÃÇÒ ¶§ ¼³Á¤µÇ¸ç,½Ã½ºÅÛ ¿¡ ÀÖ´Â ½ÇÁ¦ ÆäÀÌÁö ¼ö¿Í °ü·ÃÀÌ ÀÖ´Ù. ¸¸¾à, ½Ã½ºÅÛ¿¡ ÀÖ´Â ÇÁ¸® ÆäÀÌÁö ¼ö°¡ free_pages_highº¸´Ù, ½ÉÁö¾î´Â free_pages_lowº¸´Ù ÀÛ¾ÆÁö¸é, Ä¿³Î ½º¿Ò µ¥¸óÀº ½Ã½ºÅÛÀÌ »ç¿ëÇÏ´Â ¹°¸®Àû ÆäÀÌÁöÀÇ ¼ö¸¦ ÁÙÀ̱â À§ÇÏ¿© ´ÙÀ½ ¼¼°¡Áö ¹æ¹ýÀ» ½ÃµµÇÑ´Ù. ¹öÆÛ Ä³½Ã¿Í ÆäÀÌÁö ij½ÃÀÇ Å©±â¸¦ ÁÙÀδÙ. ½Ã½ºÅÛ V °øÀ¯ ¸Þ¸ð¸® ÆäÀÌÁö¸¦ ½º¿Ò ¾Æ¿ôÇÑ´Ù. ÆäÀÌÁö¸¦ ½º¿Ò ¾Æ¿ôÇÏ°í Æó±âÇÑ´Ù. ½Ã½ºÅÛÀÇ ÇÁ¸® ÆäÀÌÁöÀÇ ¼ö°¡ free_pages_low ÀÌÇÏ·Î ¶³¾îÁö¸é, Ä¿³Î ½º¿Ò µ¥¸óÀº ´ÙÀ½¿¡ ½ÇÇàµÇ±â Àü¿¡, 6°³ÀÇ ÆäÀÌÁö¸¦ ÇØÁ¦ÇÏ·Á ÇÑ´Ù. ±×·¸Áö ¾ÊÀ¸¸é 3°³ÀÇ ÆäÀÌÁö¸¦ ÇØÁ¦ÇÏ·Á°í ÇÑ´Ù. ÃæºÐÇÑ ÆäÀÌÁöµéÀÌ ÇØÁ¦µÉ ¶§ ±îÁö À§ÀÇ °¢ ¹æ¹ýÀÌ Â÷·Ê·Î ½ÃµµµÈ´Ù. Ä¿³Î ½º¿Ò µ¥¸óÀº ¹°¸®Àû ÆäÀÌÁö¸¦ ÇØÁ¦ÇϱâÀ§ÇØ Áö³­¹ø¿¡ ¾î¶² ¹æ¹ýÀ» »ç¿ëÇß´ÂÁö ±â¾ïÇÏ°í, ¸Å¹ø ½ÇÇàµÉ ¶§ ¸¶´Ù ÃÖÁ¾ÀûÀ¸·Î ¼º°øÇÑ ¹æ¹ýÀ» »ç¿ëÇؼ­ ÆäÀÌÁö¸¦ ÇØÁ¦½ÃÅ°·Á°í ÇÑ´Ù . ÃæºÐÇÑ ÆäÀÌÁö¸¦ ÇØÁ¦ÇÑ ÈÄ, ½º¿Ò µ¥¸óÀº ´Ù½Ã Àáµé¾î ŸÀ̸Ӱ¡ ¸¸·áµÇ±æ ±â´Ù¸°´Ù. Ä¿³Î ½º¿Ò µ¥¸óÀÌ ÆäÀÌÁö¸¦ ÇØÁ¦ÇÑ ÀÌÀ¯°¡, ÇÁ¸® ÆäÀÌÁöÀÇ ¼ö °¡ free_pages_low ÀÌÇÏ·Î ¶³¾îÁ®¼­ ¿´´Ù¸é, Æò¼Ò¿¡ ÀÚ´ø ½Ã°£ÀÇ Àý¹Ý¸¸ ÀÜ´Ù. ±×·¡¼­ ºó ÆäÀÌÁöÀÇ ¼ö°¡ free_pages_lowº¸´Ù Ä¿Áö¸é Ä¿³Î ½º¿Ò µ¥¸óÀº ´õ ¿À·¨µ¿¾È ÀÚ°Ô µÈ´Ù. 3.8.1 ÆäÀÌÁö ij½Ã¿Í ¹öÆÛ Ä³½Ã Å©±â¸¦ ÁÙÀ̱â ÆäÀÌÁö ij½Ã¿Í ¹öÆÛ Ä³½Ã¿¡ µé¾îÀÖ´Â ÆäÀÌÁö´Â free_area º¤ÅÍ·Î ÇØÁ¦ÇÒ ÁÁÀº È帵éÀÌ´Ù. ¸Þ¸ð¸®¿¡ ¸ÅÇÎµÈ ÆÄÀÏÀÇ ÆäÀÌÁö¸¦ °®°í ÀÖ´Â ÆäÀÌÁö ij½Ã´Â ½Ã½ºÅÛÀÇ ¸Þ¸ð¸®¸¦ ä¿ì°í ÀÖ´Â ºÒÇÊ¿äÇÑ ÆäÀÌÁö¸¦ °®°í ÀÖÀ» ¼ö ÀÖ´Ù. ¸¶Âù°¡Áö·Î ½ÇÁ¦ ÀåÄ¡·Î ¾²°Å³ª ÀÐÀº µ¥ÀÌÅÍ ¹öÆÛ¸¦ °®°í ÀÖ´Â ¹öÆÛ Ä³½Ã ¿ª½Ã ºÒÇÊ¿äÇÑ ¹öÆÛ¸¦ °®°í ÀÖÀ» ¼ö ÀÖ´Ù. ½Ã½ºÅÛÀÇ ½ÇÁ¦ ÆäÀÌÁö°¡ °í°¥µÇ±â ½ÃÀÛÇϸé, À̵é ij½Ã·ÎºÎÅÍ ÆäÀÌÁö¸¦ ¹ö¸®´Â °ÍÀº, ¸Þ¸ð¸®¿¡¼­ ½º¿Ò ¾Æ¿ôÇÏ´Â °æ¿ì¿Í ´Þ¸® ½ÇÁ¦ ÀåÄ¡¿¡ ±â·ÏÇÒ ÇÊ¿ä°¡ ¾øÀ¸¹Ç·Î »ó´ëÀû À¸·Î ½±´Ù. À̵é ÆäÀÌÁö¸¦ ¹ö¸®´Â °ÍÀº ½ÇÁ¦ ÀåÄ¡¿Í ¸Þ¸ð¸® ¸ÅÇÎµÈ ÆÄÀÏÀ» ¾×¼¼½ºÇÏ´Â ¼Óµµ°¡ ´À·ÁÁø´Ù´Â °ÍÀ» Á¦¿ÜÇÏ°í´Â ´Ù¸¥ ½É°¢ÇÑ ºÎÀÛ¿ëÀº ¾ø´Ù. ±×¸®°í À̵é ij½Ã·ÎºÎÅÍ ÆäÀÌÁö¸¦ Á¦°ÅÇÏ´Â °ÍÀÌ °øÁ¤ÇÏ°Ô ÀÌ·ç¾î Áø´Ù¸é, ¸ðµç ÇÁ·Î¼¼½ºµéÀº °øÆòÇÏ°Ô ¼ÕÇغ¼ °ÍÀÌ´Ù. Ä¿³Î ½º¿Ò µ¥¸óÀÌ À̵é ij½Ã¸¦ ÁÙÀÌ·Á°í ÇÒ ¶§ ¸¶´Ù, mem_map ÆäÀÌÁö º¤ÅÍ¿¡ ÀÖ´Â ÆäÀÌÁö ºí·°À» °Ë»çÇÏ¿© ½ÇÁ¦ ¸Þ¸ð¸®¿¡¼­ ¹ö·Áµµ µÉ °ÍÀÌ ÀÖ´ÂÁö È®ÀÎÇÑ´Ù. Ä¿³Î ½º¿Ò µ¥¸óÀÌ ½ÉÇÏ°Ô ½º¿ÍÇÎÀ» ÇÏ°í ÀÖ´Ù¸é - Áï, ½Ã½ºÅÛÀÇ ÇÁ¸® ÆäÀÌÁöÀÇ ¼ö°¡ ½É°¢ÇÏ°Ô ³·°Ô ¶³¾îÁ³´Ù¸é - °Ë»çÇÒ ÆäÀÌÁö ºí·°ÀÇ Å©±â°¡ Ä¿Áø´Ù. ÆäÀÌÁö ºí·°Àº µ¹¾Æ°¡¸ç °Ë»çµÈ´Ù. Áï ¸Þ¸ð¸® ¸ÊÀ» ÁÙÀÌ·Á°í ÇÒ ¶§¸¶´Ù ¼­·Î ´Ù¸¥ ÆäÀÌÁö ºí·°ÀÌ °Ë»çµÈ´Ù. ÀÌ ¹æ¹ýÀº ½Ã°è ¾Ë°í¸®Áò(clock algorithm)À̶ó°í ºÒ¸®´Âµ¥, ½Ã°è ¹Ù´ÃÀÇ ¿òÁ÷ÀÓó·³ Àüü mem_map ÆäÀÌÁö º¤ÅÍ¿¡¼­ Çѹø¿¡ ¸î ÆäÀÌÁö¾¿ Â÷·Ê·Î Á¶»çµÇ±â ¶§¹®ÀÌ´Ù. Á¶»çµÇ´Â °¢ ÆäÀÌÁö´Â ±×°ÍÀÌ ÆäÀÌÁö ij½Ã³ª ¹öÆÛ Ä³½Ã¿¡ Àִ°ÍÀÎÁö °Ë»ç µÈ´Ù. ÀÌ ´Ü°è¿¡¼­ °øÀ¯ ÆäÀÌÁö´Â °í·ÁµÇÁö ¾ÊÀ¸¸ç, ÇÑ ÆäÀÌÁö°¡ µ¿½Ã¿¡ µÎ ij½Ã¿¡ ¸ðµÎ¿¡ ÀÖÀ» ¼ö ¾ø´Ù´Â °ÍÀ» ±â¾ïÇØ µÎ±â ¹Ù¶õ´Ù. ÆäÀÌÁö°¡ µÎ ij½Ã ¾îµð¿¡µµ ¼ÓÇÏÁö ¾ÊÀ¸¸é mem_map ÆäÀÌÁö º¤ÅÍÀÇ ´ÙÀ½ ÆäÀÌÁö°¡ Á¶»çµÈ´Ù. ¹öÆÛÀÇ ÇÒ´ç°ú ÇØÁ¦°¡ ´õ¿í È¿À²ÀûÀ¸·Î ÀÌ·ç¾îÁö°Ô Çϱâ À§ÇÏ¿© (ÆäÀÌÁö ³»ÀÇ ¹öÆÛ°¡ ij½ÃµÇ´Â °ÍÀÌ ¾Æ´Ï¶ó) ÆäÀÌÁö ÀÚü°¡ ¹öÆÛ Ä³½Ã¿¡ ij½ÃµÈ´Ù. ¸Þ¸ð¸® ¸Ê Ãà¼ÒÄÚµå´Â °Ë»çµÇ´Â ÆäÀÌÁö¿¡ Æ÷ÇÔµÈ ¹öÆÛ¸¦ ÇØÁ¦ÇÏ·Á°í ÇÑ´Ù. ÆäÀÌÁö¿¡ Æ÷ÇÔµÈ ¸ðµç ¹öÆÛ°¡ ÇØÁ¦µÇ¸é, ±×µéÀ» °®°í ÀÖ´ø ÆäÀÌÁöµµ ÇØÁ¦ µÈ´Ù. Á¶»çµÈ ÆäÀÌÁö°¡ ¸®´ª½º ÆäÀÌÁö ij½Ã¿¡ ÀÖ´Ù¸é, ÆäÀÌÁö ij½Ã¿¡¼­ Á¦°ÅµÈ ´ÙÀ½ ÇØÁ¦µÈ´Ù. ÀÌ·¸°Ô Çؼ­ ÃæºÐÇÑ ÆäÀÌÁö°¡ ÇØÁ¦µÇ¾ú´Ù¸é Ä¿³Î ½º¿Ò µ¥¸óÀº ´ÙÀ½¿¡ ÁÖ±â ÀûÀ¸·Î ±ú¾î³ª´Â ½ÃÁ¡±îÁö ±â´Ù¸°´Ù. ÇØÁ¦µÇ´Â ÆäÀÌÁö Áß¿¡´Â ¾î¶² ÇÁ·Î¼¼ ½ºÀÇ °¡»ó ¸Þ¸ð¸®¿¡µµ ¼ÓÇÏÁö ¾ÊÀ¸¹Ç·Î (¸ðµÎ ij½ÃµÈ ÆäÀÌÁöÀ̹ǷÎ), ¾Æ¹« ·± ÆäÀÌÁö Å×ÀÌºíµµ ¼öÁ¤ÇÒ ÇÊ¿ä°¡ ¾ø´Ù. ij½ÃµÈ ÆäÀÌÁö¸¦ Á¦°ÅÇÏ´Â °É·Î ÃæºÐÇÏÁö ¾ÊÀº °æ¿ì, ½º¿Ò µ¥¸óÀº °øÀ¯ ÆäÀÌÁö¸¦ ½º¿Ò ¾Æ¿ôÇÏ·Á°í ÇÏ°Ô µÈ´Ù. 3.8.2 ½Ã½ºÅÛ V °øÀ¯ ¸Þ¸ð¸® ÆäÀÌÁöÀÇ ½º¿Ò ¾Æ¿ô ½Ã½ºÅÛ V °øÀ¯ ¸Þ¸ð¸®´Â µÑ ÀÌ»óÀÇ ÇÁ·Î¼¼½º°¡ °¡»ó ¸Þ¸ð¸®¸¦ °øÀ¯ÇÏ¿© ±×µé »çÀÌ¿¡ Á¤º¸¸¦ Àü¼ÛÇÒ ¼ö ÀÖ´Â ÇÁ·Î¼¼½º°£ Åë½Å(IPC) ¸ÞÄ¿´ÏÁòÀÇ ÀÏÁ¾ÀÌ´Ù. ÇÁ·Î¼¼½ºµéÀÌ ÀÌ ¹æ¹ýÀ¸·Î ¾î¶»°Ô ¸Þ¸ð¸®¸¦ °øÀ¯Çϴ°¡´Â 5Àå¿¡ ¼­ ÀÚ¼¼È÷ ¼³¸íÇÑ´Ù. ¾ÆÁ÷Àº ½Ã½ºÅÛ V °øÀ¯ ¸Þ¸ð¸®ÀÇ °¢ ¿µ¿ªÀ» shmid_ds ÀڷᱸÁ¶·Î ±â¼úÇÑ´Ù°í ¾Ë¾ÆµÎ´Â °ÍÀ¸·Î ÃæºÐÇÏ´Ù. ÀÌ ÀڷᱸÁ¶´Â ÀÌ °¡»ó ¸Þ¸ð¸® ¿µ¿ªÀ» °øÀ¯ÇÏ´Â ÇÁ·Î¼¼½º¸¶´Ù Çϳª¾¿ ´ëÀÀµÇ´Â vm_area_struct ÀڷᱸÁ¶ ¸®½ºÆ®¿¡ ´ëÇÑ Æ÷ÀÎÅ͸¦ °®°í ÀÖ´Ù. vm_area_struct ÀڷᱸÁ¶´Â °¢ ÇÁ·Î¼¼½ºÀÇ °¡»ó ¸Þ¸ð¸®ÀÇ ¾îµð¿¡ ÀÌ ½Ã½ºÅÛ V °øÀ¯ ¸Þ¸ð¸®°¡ ´ëÀÀ ÇÏ´ÂÁö ³ªÅ¸³½´Ù. ÀÌ ½Ã½ºÅÛ V °øÀ¯ ¸Þ¸ð¸®¿ë vm_area_struct ÀڷᱸÁ¶µé Àº vm_next_shared, vm_prev_shared Æ÷ÀÎÅÍ·Î ¼­·Î ¿¬°áµÇ¾î ÀÖ´Ù. °¢°¢ ÀÇ shmid_ds ÀڷᱸÁ¶´Â À̹ۿ¡ °øÀ¯ °¡»ó ÆäÀÌÁö°¡ ¸ÅÇεǾî ÀÖ´Â ½ÇÁ¦ ÆäÀÌÁö¸¦ ¼³¸íÇÏ°í ÀÖ´Â ÆäÀÌÁö Å×ÀÌºí ¿£Æ®¸®ÀÇ ¸®½ºÆ®µµ °®°í ÀÖ´Ù. Ä¿³Î ½º¿Ò µ¥¸óÀº ½Ã½ºÅÛ V °øÀ¯ ¸Þ¸ð¸® ÆäÀÌÁö¸¦ ½º¿Ò ¾Æ¿ôÇÒ ¶§¿¡µµ ½Ã°è ¾Ë°í¸®Áò(clock algorithm)À» »ç¿ëÇÑ´Ù. Ä¿³Î ½º¿Ò µ¥¸óÀº ½ÇÇàÇÒ ¶§ ¸¶´Ù ¸Ç ¸¶Áö¸·À¸·Î ½º¿Ò ¾Æ¿ôÇÑ °øÀ¯ °¡»ó ¸Þ¸ð¸® ÆäÀÌÁö°¡ ¹«¾ùÀ̾ú´ÂÁö ¸¦ ±â¾ïÇÑ´Ù. À̸¦ À§ÇØ µÎ°³ÀÇ À妽º °ªÀ» À¯Áö Çϴµ¥, Çϳª´Â shmid_ds ÀڷᱸÁ¶ ÁýÇÕ¿¡ ´ëÇÑ À妽ºÀÌ°í, ´Ù¸¥ Çϳª´Â ½Ã½ºÅÛ V °øÀ¯ ¸Þ¸ð¸® ¿µ¿ªÀ» ³ªÅ¸³»´Â ÆäÀÌÁö Å×ÀÌºí ¿£Æ®¸®ÀÇ ¸®½ºÆ®¿¡ ´ëÇÑ À妽º ÀÌ´Ù. ÀÌ ¹æ¹ýÀº ½Ã½ºÅÛ V °øÀ¯ ¸Þ¸ð¸® ¿µ¿ªÀÌ °øÁ¤ÇÏ°Ô Èñ»ýµÇ°Ô ÇÑ´Ù. ¾î¶² ½Ã½ºÅÛ V °øÀ¯ ¸Þ¸ð¸®ÀÇ °¡»ó ÆäÀÌÁö¿¡ ´ëÇÑ ¹°¸®Àû ÆäÀÌÁö ÇÁ·¹ÀÓ ¹øÈ£´Â, ÀÌ °¡»ó ¸Þ¸ð¸® ¿µ¿ªÀ» °øÀ¯ÇÏ´Â ¸ðµç ÇÁ·Î¼¼½ºÀÇ ÆäÀÌÁö Å×ÀÌºí ¿¡ µé¾îÀֱ⠶§¹®¿¡, Ä¿³Î ½º¿Ò µ¥¸óÀº À̵é ÆäÀÌÁö Å×ÀÌºí ¸ðµÎ¸¦ º¯°æ ÇÏ¿©, ÀÌ ÆäÀÌÁö°¡ ´õÀÌ»ó ¸Þ¸ð¸®¿¡ ¾ø°í ½º¿Ò ÆÄÀÏ¿¡ µé¾î ÀÖ´Ù´Â °ÍÀ» ¾Ë·ÁÁÖ¾î¾ß ÇÑ´Ù. ½º¿Ò ¾Æ¿ôµÇ´Â °¢ °øÀ¯ ÆäÀÌÁö¸¶´Ù, Ä¿³Î ½º¿Ò µ¥¸óÀº ÀÌ ÆäÀÌÁö¸¦ °øÀ¯ÇÏ°í ÀÖ´Â ÇÁ·Î¼¼½ºµéÀÇ ÆäÀÌÁö Å×À̺í·ÎºÎÅÍ ÆäÀÌÁö Å×ÀÌºí ¿£Æ®¸®¸¦ ã´Â´Ù (°¢ vm_area_struct ÀڷᱸÁ¶¿¡¼­ Æ÷ÀÎÅ͸¦ µû¶ó °¨À¸·Î½á). ÀÌ ½Ã½ºÅÛ V °øÀ¯ ¸Þ¸ð¸® ÆäÀÌÁö¿¡ ´ëÇÑ ÇÁ·Î¼¼½ºÀÇ ÆäÀÌÁö Å×ÀÌºí ¿£Æ®¸®°¡ À¯È¿Çϸé, µ¥¸óÀº ±×°ÍÀ» À¯È¿ÇÏÁö ¾Ê°í ½º¿Ò ¾Æ¿ôµÈ ÆäÀÌÁö Å×ÀÌºí ¿£Æ®¸®·Î º¯È¯ÇÏ°í, ÀÌ (°øÀ¯µÈ) ÆäÀÌÁöÀÇ »ç¿ëÀÚ ¼ö¸¦ 1 °¨¼Ò½ÃŲ´Ù. ½º¿Ò ¾Æ¿ôµÈ ½Ã½ºÅÛ V °øÀ¯ ÆäÀÌÁö Å×ÀÌºí ¿£Æ®¸®¿¡´Â, shmid_ds ÀڷᱸÁ¶ ÁýÇÕ¿¡ ´ëÇÑ À妽º¿Í, ÀÌ ½Ã½ºÅÛ V °øÀ¯ ¸Þ¸ð¸® ¿µ¿ª ¿¡ ´ëÇÑ ÆäÀÌÁö Å×ÀÌºí ¿£Æ®¸®ÀÇ À妽º°¡ µé¾î ÀÖ´Ù. °øÀ¯ÇÏ´Â ÇÁ·Î¼¼½ºµéÀÇ ÆäÀÌÁö Å×À̺íÀÌ ¸ðµÎ º¯°æµÇ¾î ±× ÆäÀÌÁöÀÇ Ä«¿î Æ®°¡ 0ÀÌ µÇ¸é, ÀÌ °øÀ¯ ÆäÀÌÁö¸¦ ½º¿Ò ÆÄÀÏ·Î ½º¿Ò ¾Æ¿ôÇÒ ¼ö ÀÖ°Ô µÈ´Ù. ÀÌ ½Ã½ºÅÛ V °øÀ¯ ¸Þ¸ð¸® ¿µ¿ª¿¡ ´ëÇÑ shmid_ds ÀڷᱸÁ¶°¡ °¡¸®Å°°í ÀÖ´Â ¸®½ºÆ®¿¡ µé¾î ÀÖ´Â ÆäÀÌÁö Å×ÀÌºí ¿£Æ®¸®µéÀº ½º¿Ò ¾Æ¿ôµÈ ÆäÀÌÁö Å×ÀÌºí ¿£Æ®¸®·Î ±³Ã¼µÈ´Ù. ½º¿Ò ¾Æ¿ôµÈ ÆäÀÌÁö Å×ÀÌºí ¿£Æ®¸®´Â À¯È¿ÇÏÁö ¾ÊÁö¸¸, ¿­¸° ½º¿Ò ÆÄÀϵé Áß Çϳª¸¦ °¡¸®Å°´Â À妽º¿Í, ±× ÆÄÀÏ ¾ÈÀÇ ¾îµð¿¡ ½º¿Ò ¾Æ¿ôµÈ ÆäÀÌÁö°¡ ÀÖ´ÂÁö¸¦ ³ªÅ¸³»´Â ¿ÀÇÁ¼ÂÀ» °®°í ÀÖ´Ù. ÀÌ Á¤º¸´Â ±× ÆäÀÌÁö¸¦ ´Ù½Ã ¹°¸®Àû ¸Þ¸ð¸®·Î °¡Á®¿Ã ¶§ »ç¿ëµÈ´Ù. 3.8.3 ÆäÀÌÁöÀÇ ½º¿Ò ¾Æ¿ô°ú Æó±â ½º¿Ò µ¥¸óÀº ½Ã½ºÅÛ¿¡ ÀÖ´Â °¢ ÇÁ·Î¼¼½º¸¦ Â÷·Ê·Î °üÂûÇϸ鼭, ±×°ÍÀÌ ½º¿ÒÇϱâ ÁÁÀº Èĺ¸ÀÎÁö ÆÇ´ÜÇÑ´Ù. ÁÁÀº È帴 ½º¿ÒµÉ ¼ö ÀÖÀ¸¸é¼­(½º¿Ò µÉ ¼ö ¾ø´Â ÇÁ·Î¼¼½ºµµ ÀÖ´Ù), ¸Þ¸ð¸®¿¡¼­ ½º¿ÒµÇ°Å³ª Æó±âµÉ ¼ö ÀÖ´Â ÆäÀÌÁö¸¦ Çϳª ÀÌ»ó °¡Áø ÇÁ·Î¼¼½ºµéÀÌ´Ù. ÆäÀÌÁöµéÀº ±× ¾È¿¡ ÀúÀåµÈ µ¥ÀÌÅ͸¦ ´Ù¸¥ ¹æ¹ýÀ¸·Î ¾ò¾î¿Ã ¼ö ÀÖ´Â ¹æ¹ýÀÌ ¾øÀ» ¶§¸¸, ¹°¸®Àû ¸Þ¸ð¸® ·ÎºÎÅÍ ½Ã½ºÅÛÀÇ ½º¿Ò ÆÄÀÏ¿¡ ½º¿Ò ¾Æ¿ôµÈ´Ù. ½ÇÇà À̹ÌÁöÀÇ »ó´ç¼ö´Â ½ÇÇà ÆÄÀÏ¿¡¼­ °¡Á®¿Â °ÍÀ̸ç, ±× ÆÄÀÏ¿¡¼­ ½±°Ô ´Ù½Ã ÀÐÀ» ¼ö ÀÖ´Ù. ¿¹¸¦ µé¾î À̹ÌÁö¿¡ µé¾îÀÖ´Â ½ÇÇà ¸í·ÉÀº º¯°æµÇÁö ¾Ê±â ¶§¹®¿¡ ½º¿Ò ÆÄÀÏ¿¡ ¾µ ÇÊ¿ä°¡ ¾ø´Ù. À̵é ÆäÀÌÁö´Â ±×³É Æó±âÇÏ°í, ÇÁ·Î¼¼½º°¡ À̵éÀ» ´Ù½Ã ÂüÁ¶ÇÒ ¶§, ½ÇÇà À̹ÌÁö¿¡¼­ ¸Þ¸ð¸®¿¡ ´Ù½Ã °¡Á® ¿À°Ô µÈ´Ù. ½º¿ÒÇÒ ÇÁ·Î¼¼½º¸¦ °áÁ¤Çϸé, ½º¿Ò µ¥¸óÀº ±× ÇÁ·Î¼¼½ºÀÇ °¡»ó¸Þ¸ð¸® ¿µ¿ª À» ÀüºÎ º¸¸é¼­ °øÀ¯µÇ°Å³ª ¶ôÀÌ °É¸®Áö ¾ÊÀº ¿µ¿ªÀ» ã´Â´Ù. ¸®´ª½º´Â ¼±ÅÃµÈ ÇÁ·Î¼¼½º¿¡ ÀÖ´Â ½º¿Ò °¡´ÉÇÑ ÆäÀÌÁö¸¦ ¸ðµÎ ½º¿Ò ¾Æ¿ôÇÏÁö´Â ¾Ê´Â ´Ù. ´ë½Å ÆäÀÌÁö ¸î °³¸¸ Á¦°ÅÇÒ »ÓÀÌ´Ù. ¸Þ¸ð¸®¿¡ ¶ôµÇ¾î ÀÖ´Â ÆäÀÌÁö´Â ½º¿ÒÇϰųª Æó±âÇÒ ¼ö ¾ø´Ù. ¸®´ª½º ½º¿Ò ¾Ë°í¸®ÁòÀº ÆäÀÌÁö ¿¡ÀÌ¡(page aging)À» »ç¿ëÇÑ´Ù. °¢ ÆäÀÌ Áö´Â Ä«¿îÅ͸¦ °¡Áö°í À־ (mem_map_t ÀڷᱸÁ¶¿¡ ÀúÀåµÇ¾î ÀÖ´Ù), Ä¿³Î ½º¿Ò µ¥¸óÀÌ ¾î¶² ÆäÀÌÁö¸¦ ½º¿ÒÇÏ´Â °ÍÀÌ ÁÁÀºÁö °áÁ¤Çϴµ¥ µµ¿ò À» ÁØ´Ù. ÆäÀÌÁö´Â »ç¿ëÇÏÁö ¾ÊÀ¸¸é ³ªÀ̸¦ ¸Ô°í, »ç¿ëÇÒ ¼ö·Ï Àþ¾îÁø´Ù; ½º¿Ò µ¥¸óÀº ³ªÀÌ°¡ ¸¹Àº ÆäÀÌÁö¸¸À» ½º¿Ò ¾Æ¿ôÇÑ´Ù. ÆäÀÌÁö¸¦ óÀ½ ÇÒ´ç ÇÒ ¶§ ÆäÀÌÁöÀÇ Ãʱ⠳ªÀÌ´Â 3ÀÌ´Ù. ÆäÀÌÁö°¡ »ç¿ëµÉ ¶§¸¶´Ù, ³ªÀÌ°ªÀº 3¾¿ Áõ°¡µÇ¾î ÃÖ´ë 20±îÁö Áõ°¡µÈ´Ù(ÀÌ °ªÀÌ ÀÛÀ»¼ö·Ï ¿À·¡µÈ ÆäÀÌÁö ÀÌ´Ù). Ä¿³Î ½º¿Ò µ¥¸óÀÌ ½ÇÇàµÉ ¶§¸¶´Ù ÆäÀÌÁöÀÇ ³ªÀÌ°ªÀ» 1¾¿ °¨¼Ò½ÃÄÑ ÆäÀÌÁö¸¦ ¿À·¡µÈ °ÍÀ¸·Î ¸¸µç´Ù. ÀÌ ±âº» µ¿ÀÛÀº º¯°æµÉ ¼ö ÀÖÀ¸¸ç, ÀÌ·± ÀÌÀ¯·Î (´Ù¸¥ ½º¿Ò °ü·Ã Á¤º¸¿Í ÇÔ²²) swap_control ÀڷᱸÁ¶¿¡ ÀúÀå µÇ¾î ÀÖ´Ù. ÆäÀÌÁö°¡ ¾ÆÁÖ ¿À·¡µÇ¸é (³ªÀÌ°¡ 0ÀÌ µÇ¸é) ½º¿Ò µ¥¸óÀº ±× ÆäÀÌÁö¸¦ Á» ´õ ó¸®ÇÏ°Ô µÈ´Ù. ´õƼ ÆäÀÌÁö´Â ½º¿Ò ¾Æ¿ôµÉ ¼ö ÀÖ´Â ÆäÀÌÁöÀÌ´Ù. ¸®´ª½º´Â PTE¿¡¼­ ¾ÆÅ° ÅØÃÄ Æ¯À¯ÀÇ ºñÆ®¸¦ »ç¿ëÇؼ­ ÆäÀÌÁö¸¦ ÀÌ¿Í °°Àº ¹æ½ÄÀ¸·Î ±â¼úÇÑ´Ù (±×¸² 3.2 ÂüÁ¶) ±×·¯³ª, ¸ðµç ´õƼ ÆäÀÌÁö°¡ ¹Ýµå½Ã ½º¿Ò ÆÄÀÏ¿¡ ±â·ÏµÇ ¾î¾ß ÇÏ´Â °ÍÀº ¾Æ´Ï´Ù. ¾î¶² ÇÁ·Î¼¼½º´Â ¸ðµç °¡»ó ¸Þ¸ð¸® ¿µ¿ª¿¡¼­ ÀڽŠÀÇ ½º¿Ò ¿¬»ê(vm_area_structÀÇ vm_ops Æ÷ÀÎÅÍ°¡ °¡¸®Å´)À» °¡Áú ¼ö ÀÖÀ¸ ¸ç, ÀÌ °æ¿ì ±× ¿¬»êÀÌ »ç¿ëµÈ´Ù. ¿¬»êÀÌ Á¤ÀǵÇÁö ¾Ê¾Ò´Ù¸é ½º¿Ò µ¥¸óÀº ½º¿Ò ÆÄÀÏ¿¡ ÆäÀÌÁö¸¦ ÇÒ´çÇÏ°í ½º¿Ò ÆäÀÌÁö¸¦ ½º¿Ò ÆÄÀÏ¿¡ ±â·ÏÇÑ´Ù. ÀÌÁ¦ ±× ÆäÀÌÁöÀÇ ÆäÀÌÁö Å×ÀÌºí ¿£Æ®¸®´Â À¯È¿ÇÏÁö ¾Ê´Ù°í Ç¥½ÃµÇ¾úÁö¸¸, ¿©±â¿¡´Â ÀÌ ÆäÀÌÁö°¡ ½º¿Ò ÆÄÀÏÀÇ ¾îµð¿¡ ÀúÀåµÇ¾ú´ÂÁö¿¡ ´ëÇÑ Á¤º¸°¡ µé¾î ÀÖ´Ù. ÀÌ Á¤º¸´Â ¾î´À ½º¿Ò ÆÄÀÏÀÌ »ç¿ëµÇ¾ú´ÂÁö, ±×¸®°í ½º¿Ò ÆÄÀÏ ³»¿¡¼­ ÆäÀÌÁö°¡ ÀúÀåµÈ À§Ä¡ÀÇ ¿ÀÇÁ¼ÂÀ¸·Î ±¸¼ºµÈ´Ù. ¾î¶² ½º¿Ò ¹æ¹ýÀ» »ç¿ëÇÏ¿´µç, ¿ø·¡ÀÇ ¹°¸®Àû ÆäÀÌÁö´Â ´Ù½Ã free_area¿¡ ³Ö¾îÁ®¼­ ÇÁ¸® »óÅ°¡ µÈ´Ù. Ŭ¸° ÆäÀÌÁö(´õƼÇÏÁö ¾ÊÀº ÆäÀÌÁö)´Â Æó±âµÇ¾î Àç»ç¿ëÇÒ ¼ö ÀÖµµ·Ï free_area¿¡ µé¾î°£´Ù. ½º¿Ò °¡´ÉÇÑ ÇÁ·Î¼¼½º ÆäÀÌÁö¸¦ ÃæºÐÈ÷ ½º¿Ò ¾Æ¿ôÇϰųª Æó±âÇϸé, ½º¿Ò µ¥¸óÀº ´Ù½Ã Àáµç´Ù. ½º¿Ò µ¥¸óÀÌ ´ÙÀ½¿¡ ±ú¾î³µÀ» ¶§´Â, ½Ã½ºÅÛÀÇ ´ÙÀ½ ÇÁ·Î¼¼½º¸¦ °ËÅäÇÏ°Ô µÈ´Ù. ÀÌ·± ¹æ½ÄÀ¸·Î ½º¿Ò µ¥¸óÀº ½Ã½ºÅÛÀÌ ´Ù½Ã ±ÕÇü¿¡ À̸¦¶§±îÁö °¢ ÇÁ·Î¼¼½ºÀÇ ¹°¸®Àû ÆäÀÌÁö¸¦ Á¶±Ý¾¿ ¾ø¾Ø´Ù. ÀÌ°ÍÀº Àüü ÇÁ·Î¼¼½º¸¦ ½º¿Ò ¾Æ¿ôÇÏ´Â °Íº¸´Ù ÈξÀ °øÁ¤ÇÏ´Ù. 3.9 ½º¿Ò ij½Ã(Swap Cache) ¸®´ª½º´Â ÆäÀÌÁö¸¦ ½º¿Ò ÆÄÀÏ¿¡ ½º¿Ò ¾Æ¿ôÇÒ ¶§, ÆäÀÌÁö¸¦ ¾µ ÇÊ¿ä°¡ ¾øÀ» ¶© ¾²Áö ¾ÊÀ¸·Á°í ÇÑ´Ù. ¾î¶² ÆäÀÌÁö°¡ ½º¿Ò ÆÄÀÏ°ú ¹°¸®Àû ¸Þ¸ð¸®¿¡ (°°Àº ³»¿ëÀ¸·Î) µ¿½Ã¿¡ Á¸ÀçÇÏ´Â °æ¿ì°¡ ÀÖ´Ù. ÀÌ·± °æ¿ì´Â ¾î¶² ÆäÀÌÁö °¡ ¸Þ¸ð¸®¿¡¼­ ½º¿Ò ¾Æ¿ôµÇ¾ú´Ù°¡, ÇÑ ÇÁ·Î¼¼½º°¡ ±× ÆäÀÌÁö¿¡ ´Ù½Ã Á¢±Ù ÇÏ¿© ¸Þ¸ð¸®·Î ´Ù½Ã µé¾î¿Â °æ¿ì¿¡ ¹ß»ýÇÑ´Ù. ÀÌ ¶§ ¸Þ¸ð¸®»óÀÇ ÆäÀÌÁö°¡ µ¤¾î ¾º¾îÁöÁö ¾Ê´Â ÇÑ ½º¿Ò ÆÄÀÏ¿¡ ÀÖ´Â ÆäÀÌÁöÀÇ º¹»çº»Àº À¯È¿ÇÏ´Ù. ¸®´ª½º´Â ÀÌ·¯ÇÑ ÆäÀÌÁöµéÀ» ÃßÀûÇϱâ À§ÇØ ½º¿Ò ij½Ã¸¦ »ç¿ëÇÑ´Ù. ½º¿Ò ij½Ã´Â ÆäÀÌÁö Å×ÀÌºí ¿£Æ®¸®ÀÇ ¸®½ºÆ®·Î, °¢ ¿£Æ®¸®´Â ½Ã½ºÅÛ¿¡ ÀÖ´Â ¹°¸®Àû ÆäÀÌÁö Çϳª¿¡ ÇØ´çÇÑ´Ù. ÀÌ ÆäÀÌÁö Å×ÀÌºí ¿£Æ®¸®´Â ÇϳªÀÇ ½º¿Ò ¾Æ¿ô ÆäÀÌÁö¿¡ ´ëÇÑ °ÍÀ¸·Î, ±× ÆäÀÌÁö°¡ ¾î´À ½º¿Ò ÆÄÀÏ¿¡, ¾î´À À§Ä¡¿¡ ÀÖ´ÂÁö¸¦ ±â¼úÇÑ´Ù. ¸¸¾à ½º¿Ò ij½Ã ¿£Æ®¸® °ªÀÌ 0ÀÌ ¾Æ´Ñ °æ¿ì, º¯°æµÇÁö ¾ÊÀº ÆäÀÌÁö°¡ ½º¿Ò ÆÄÀÏ ³»¿¡ µé¾î ÀÖ´Ù´Â °ÍÀ» ³ªÅ¸³½´Ù. ÆäÀÌÁö°¡ (µ¤¾î ¾º¾îÁ®¼­) º¯°æµÈ °æ¿ì, ±× ÆäÀÌÁöÀÇ ¿£Æ®¸®´Â ½º¿Ò ij½Ã¿¡¼­ »èÁ¦ µÈ´Ù. ¸®´ª½º°¡ ¾î¶² ¹°¸®Àû ÆäÀÌÁö¸¦ ½º¿Ò ÆÄÀÏ¿¡ ½º¿Ò ¾Æ¿ôÇÒ ÇÊ¿ä°¡ ÀÖÀ» ¶§, ¸ÕÀú ½º¿Ò ij½Ã¿¡ ¹®ÀÇÇϸç, ¸¸¾à ÀÌ ÆäÀÌÁö¿¡ ´ëÇÑ À¯È¿ÇÑ ¿£Æ®¸®°¡ ÀÖ´Â °æ¿ì, ÀÌ ÆäÀÌÁö´Â ½º¿Ò ÆÄÀÏ¿¡ ±â·ÏÇÒ ÇÊ¿ä°¡ ¾ø´Ù. ¿Ö³ÄÇÏ¸é ¸Þ¸ð¸®¿¡ ÀÖ´Â ÆäÀÌÁöÀÇ ³»¿ëÀÌ ½º¿Ò ÆÄÀϷκÎÅÍ ¸¶Áö¸·À¸·Î ÀÐÀº ´ÙÀ½ Çѹøµµ º¯°æ µÇÁö ¾Ê¾Ò±â ¶§¹®ÀÌ´Ù. ½º¿Ò ij½ÃÀÇ ¿£Æ®¸®´Â ½º¿Ò ¾Æ¿ôµÈ ÆäÀÌÁö¿¡ ´ëÇÑ ÆäÀÌÁö Å×ÀÌºí ¿£Æ®¸® ÀÌ´Ù. À̵éÀº À¯È¿ÇÏÁö ¾Ê´Ù°í Ç¥½ÃµÇ¾î ÀÖÁö¸¸, ¸®´ª½º°¡ ¿Ã¹Ù¸¥ ½º¿Ò ÆÄÀÏ°ú ±× ½º¿Ò ÆÄÀÏ ³»¿¡¼­ÀÇ ¿Ã¹Ù¸¥ ÆäÀÌÁö¸¦ ãÀ» ¼ö ÀÖµµ·Ï ÇÏ´Â Á¤º¸ ¸¦ °®°í ÀÖ´Ù. 3.10 ÆäÀÌÁö ½º¿Ò ÀÎ(Swapping Pages In) ÀÀ¿ë ÇÁ·Î±×·¥ÀÌ ÀÌ¹Ì ½º¿Ò ¾Æ¿ôµÈ ¹°¸®Àû ÆäÀÌÁö¿¡ ÀÖ´Â °¡»ó ¸Þ¸ð¸®¿¡ ¾²·Á°í ÇÏ´Â °æ¿ìó·³ ½º¿ÒÆÄÀÏ¿¡ ÀúÀåµÈ ´õƼ ÆäÀÌÁöµéÀÌ ´Ù½Ã ÇÊ¿ä·ÎÇÑ °æ¿ì°¡ ÀÖ´Ù. ¹°¸®Àû ¸Þ¸ð¸®¿¡ ÀÖÁö ¾ÊÀº ÆäÀÌÁö¿¡ Á¢±ÙÇϸé ÆäÀÌÁö ÆúÆ®°¡ ¹ß»ýÇÑ´Ù. ÆäÀÌÁö ÆúÆ®´Â ÇÁ·Î¼¼¼­°¡ °¡»ó ÁÖ¼Ò¸¦ ¹°¸®Àû ÁÖ¼Ò·Î º¯È¯ÇÒ ¼ö ¾øÀ» ¶§ ¿î¿µÃ¼Á¦¿¡ º¸³»´Â ½ÅÈ£ÀÌ´Ù. ÀÌ °æ¿ì´Â °¡»ó ¸Þ¸ð¸® ÆäÀÌÁö°¡ ½º¿Ò ¾Æ¿ô µÇ¾úÀ» ¶§¿¡´Â ÀÌ ÆäÀÌÁö¸¦ ±â¼úÇÏ´Â ÆäÀÌÁö Å×ÀÌºí ¿£Æ®¸®°¡ À¯È¿ÇÏÁö ¾Ê´Ù°í Ç¥½ÃµÇ±â ¶§¹®¿¡ ÆäÀÌÁö ÆúÆ®°¡ ¹ß»ýÇÏ´Â °ÍÀÌ´Ù. ÇÁ·Î¼¼¼­´Â °¡»ó ÁÖ¼Ò¸¦ ¹°¸®Àû ÁÖ¼Ò·Î º¯È¯ÇÒ ¼ö ¾ø±â¿¡, Á¦¾î¸¦ ¿î¿µÃ¼Á¦¿¡ ³Ñ°Ü Áָ鼭 ÆúÆ®°¡ ¹ß»ýÇÑ °¡»ó ÁÖ¼Ò¿Í ÆúÆ®ÀÇ ÀÌÀ¯¸¦ ¾Ë¸°´Ù. ÀÌ Á¤º¸ÀÇ Çü½Ä °ú ÇÁ·Î¼¼¼­°¡ ¿î¿µÃ¼Á¦¿¡ Á¦¾î¸¦ ³Ñ±â´Â ¹æ¹ýÀº ÇÁ·Î¼¼¼­¿¡ µû¶ó ´Ù¸£´Ù. ÇÁ·Î¼¼¼­¸¶´Ù ´Ù¸£°Ô ±¸ÇöµÇ¾î ÀÖ´Â ÆäÀÌÁö ÆúÆ®¸¦ ó¸®ÇÏ´Â ÄÚµå´Â ÆúÆ®°¡ ¹ß»ýÇÑ °¡»ó ÁÖ¼Ò¸¦ Æ÷ÇÔÇÏ°í ÀÖ´Â °¡»ó ÁÖ¼Ò ¿µ¿ªÀ» ³ªÅ¸³»´Â vm_area_struct ÀڷᱸÁ¶¸¦ ã¾Æ¾ß ÇÑ´Ù. ÀÌ ÄÚµå´Â ÆúÆ®°¡ ¹ß»ýÇÑ °¡»ó ÁÖ¼Ò°¡ µé¾îÀÖ´Â ÀڷᱸÁ¶¸¦ ãÀ» ¶§±îÁö, ÇØ´ç ÇÁ·Î¼¼½º°¡ »ç¿ëÇÏ´Â vm_area_struct ÀڷᱸÁ¶¸¦ °Ë»öÇÑ´Ù. ÀÌ ÀÛ¾÷Àº ¸Å¿ì ªÀº ½Ã°£ ¾È¿¡ ÀÌ·ç¾îÁ®¾ß ÇϹǷÎ, ÇÁ·Î¼¼½ºµéÀÌ °¡Áö°í ÀÖ´Â vm_area_struct ÀڷᱸÁ¶´Â ÀÌ °Ë»öÀ» °¡´ÉÇÑ »¡¸® ÇÒ ¼ö ÀÖµµ·Ï ¹èÄ¡µÇ¾î ÀÖ´Ù . ÇÁ·Î¼¼¼­¿¡ µû¶ó ÀûÀýÇÑ ÀÛ¾÷À» ¼öÇàÇÏ¿© ÆúÆ®°¡ ¹ß»ýÇÑ °¡»ó ÁÖ¼Ò°¡ °¡»ó ¸Þ¸ð¸®ÀÇ À¯È¿ ¿µ¿ªÀ̶ó°í ÆÇ´ÜÇϸé, ÆäÀÌÁö ÆúÆ® 󸮴 ÀÌÁ¦ ÀϹÝÈ­µÇ¾î ¸®´ª½º°¡ µ¿ÀÛÇÏ´Â ¸ðµç ÇÁ·Î¼¼¼­¿¡ Àû¿ëµÇ´Â ÄÚµå·Î ³Ñ¾î°¡°Ô µÈ´Ù. ÀÏ¹Ý È­µÈ ÆäÀÌÁö ÆúÆ® ó¸® ÄÚµå´Â ÆúÆ®°¡ ¹ß»ýÇÑ °¡»ó ÁÖ¼Ò¿¡ ´ëÇÑ ÆäÀÌÁö Å×ÀÌºí ¿£Æ®¸®¸¦ ã´Â´Ù. ãÀº ÆäÀÌÁö Å×ÀÌºí ¿£Æ®¸®°¡ ½º¿Ò¾Æ¿ôµÈ ÆäÀÌÁö ¸¦ °¡¸®Å°°í ÀÖÀ¸¸é, ¸®´ª½º´Â ±× ÆäÀÌÁö¸¦ ´Ù½Ã ¹°¸®Àû ¸Þ¸ð¸®·Î °¡Á® ¿Í¾ß ÇÑ´Ù. ½º¿Ò ¾Æ¿ôµÈ ÆäÀÌÁö¿¡ ´ëÇÑ ÆäÀÌÁö Å×ÀÌºí ¿£Æ®¸®ÀÇ Çü½ÄÀº ÇÁ·Î¼¼¼­¸¶´Ù ´Ù¸£Áö¸¸, ¾î·µç ¸ðµç ÇÁ·Î¼¼¼­µéÀº ÀÌ ÆäÀÌÁö°¡ À¯È¿ÇÏÁö ¾Ê´Ù°í Ç¥½ÃÇÏ°í, ½º¿Ò ÆÄÀÏ¿¡¼­ ÆäÀÌÁöÀÇ À§Ä¡¸¦ ã´Âµ¥ ÇÊ¿äÇÑ Á¤º¸¸¦ ÆäÀÌÁö Å×ÀÌºí ¿£Æ®¸®¿¡ ³Ö¾îµÎ°í ÀÖ´Ù. ¸®´ª½º´Â ÆäÀÌÁö¸¦ ´Ù½Ã ¹°¸®Àû ¸Þ¸ð¸®·Î °¡Á®¿À±â À§ÇØ ÀÌ Á¤º¸¸¦ ÇÊ¿ä·Î ÇÑ´Ù. ÀÌ ½ÃÁ¡¿¡¼­, ¸®´ª½º´Â ÆúÆ®°¡ ¹ß»ýÇÑ °¡»ó ÁÖ¼Ò¿Í, ÀÌ ÆäÀÌÁö°¡ ¾îµð¿¡ ½º¿ÒµÇ¾î ÀÖ´ÂÁö¿¡ ´ëÇÑ Á¤º¸¸¦ °®°í ÀÖ´Â ÆäÀÌÁö Å×ÀÌºí ¿£Æ®¸®¸¦ ¾Ë°í ÀÖ´Ù. vm_area_struct ÀڷᱸÁ¶´Â ÀÚ½ÅÀÌ ±â¼úÇÏ´Â °¡»ó ¸Þ¸ð¸® ¿µ¿ªÀÇ ¾î¶² ÆäÀÌÁö¸¦ ¹°¸®Àû ¸Þ¸ð¸®·Î ½º¿ÒÇÒ ¼ö ÀÖ´Â ·çƾ¿¡ ´ëÇÑ Æ÷ÀÎÅ͸¦ °¡Áö°í ÀÖÀ» ¼ö ÀÖ´Ù. ÀÌ°ÍÀÌ swapin ¿¬»êÀÌ´Ù . ÀÌ °¡»ó ¸Þ¸ð¸® ¿µ¿ª¿¡ ´ëÇØ swapin ¿¬»êÀÌ Á¤ÀǵǾî ÀÖÀ¸¸é ¸®´ª½º´Â ±×°ÍÀ» »ç¿ëÇÑ´Ù. »ç½Ç ½Ã½ºÅÛ V °øÀ¯ ¸Þ¸ð¸®ÀÇ ½º¿Ò ¾Æ¿ôÀÌ ÀÌ·¸°Ô 󸮵Ǵµ¥, ½º¿Ò ¾Æ¿ôµÈ ½Ã½ºÅÛ V °øÀ¯ ¸Þ¸ð¸®ÀÇ Çü½ÄÀÌ, ÀÏ¹Ý ½º¿Ò ¾Æ¿ôµÈ ÆäÀÌÁöÀÇ Æ÷¸Ë°ú ¾à°£ ´Ù¸£±â ¶§¹®¿¡, Ưº°ÇÑ Ã³¸®°¡ ´õ ÇÊ¿äÇϱ⠶§¹®ÀÌ´Ù. swapin ¿¬»êÀÌ ¾ø´Â °æ¿ì¿£, ¸®´ª½º´Â À̸¦ ÀÏ¹Ý ÆäÀÌÁö¿©¼­ Ưº°È÷ ó¸® °¡ ÇÊ¿ä ¾ø´Ù°í »ý°¢ÇÑ´Ù. ÀÌÁ¦ ºñ¾îÀÖ´Â ¹°¸®Àû ÆäÀÌÁö¸¦ ÇÒ´çÇÏ°í, ½º¿Ò ¾Æ¿ô µÇ¾ú´ø ÆäÀÌÁö¸¦ ½º¿Ò ÆÄÀÏ¿¡¼­ ÀоîµéÀδÙ. ¾î´À ½º¿ÒÆÄÀÏÀÇ ¾îµð¿¡ ÆäÀÌÁö°¡ ÀÖ´ÂÁö ¾Ë·ÁÁÖ´Â Á¤º¸´Â, ÇØ´çÇÏ´Â À¯È¿ÇÏÁö ¾ÊÀº ÆäÀÌÁö Å×ÀÌºí ¿£Æ®¸®¿¡¼­ ¾ò´Â´Ù. ¸¸¾à ÆäÀÌÁö ÆúÆ®¸¦ ¹ß»ýÇÑ Á¢±ÙÀÌ ¾²±â°¡ ¾Æ´Ï¶ó¸é, ÆäÀÌÁö´Â ¿©ÀüÈ÷ ½º¿Ò ij½Ã¿¡ ³²¾Æ ÀÖÀ¸¸ç, ¸Þ¸ð¸®·Î °¡Á®¿Â ÆäÀÌÁö Å×À̺íÀº ¾²±â°¡ ¾ÈµÈ ´Ù°í Ç¥½Ã°¡ µÈ´Ù. µÚ¿¡ ÀÌ ÆäÀÌÁö¿¡ ¾²±â¸¦ ½ÃµµÇϸé, ¶Ç ´Ù¸¥ ÆäÀÌÁö ÆúÆ®°¡ ¹ß»ýÇÏ°í, ÀÌ ½ÃÁ¡¿¡¼­ ±× ÆäÀÌÁö´Â ´õƼ·Î Ç¥½ÃµÇ°í, ½º¿Òij½Ã¿¡ ¼­ ¿£Æ®¸®¸¦ Á¦°ÅÇÏ°Ô µÈ´Ù. ÆäÀÌÁö¿¡ ±â·ÏÇÑ °ÍÀÌ ¾ø°í ´Ù½Ã ½º¿Ò ¾Æ¿ôµÉ ÇÊ¿ä°¡ ÀÖ´Ù¸é, ±× ÆäÀÌÁö´Â ÀÌ¹Ì ½º¿Ò ÆÄÀÏ¿¡ Àֱ⠶§¹®¿¡ ¸®´ª½º´Â ÆäÀÌ Áö¸¦ ½º¿Ò ÆÄÀÏ¿¡ ¾µ ÇÊ¿ä°¡ ¾ø°Ô µÈ´Ù . ½º¿Ò ÆÄÀϷκÎÅÍ ÆäÀÌÁö¸¦ °¡Á®¿Àµµ·Ï ÇÑ Á¢±ÙÀÌ ¾²±â ¿¬»êÀ̾ú´Ù¸é, ÀÌ ÆäÀÌÁö´Â ½º¿Ò ij½Ã¿¡¼­ Á¦°ÅµÇ°í, ÆäÀÌÁö Å×ÀÌºí ¿£Æ®¸®´Â ´õƼ, ¾²±â °¡´ÉÀ¸·Î Ç¥½ÃµÈ´Ù. ¹ø¿ª : ½É¸¶·Î, °í¾ç¿ì, Á¤Á÷ÇÑ, ±è±â¿ë, ½Å¹®¼®, ÀÌ´ëÇö Á¤¸® : ÀÌÈ£ Âü°í ÀÚ·á. ÀÎÅÚ 386 º¸È£¸ðµå ¸Þ¸ð¸® ¾ÆÅ°ÅØÃÄ ÀÌÈ£ (flyduck) Ä¿³Î¿¡¼­ ¸Þ¸ð¸® °ü¸® ½Ã½ºÅÛÀÇ ±¸ÇöÀº ÇØ´ç CPUÀÇ µµ¿òÀ» ¹Þ¾Æ¾ß ÇÑ´Ù. ¸®´ª½ºÀÇ ¸Þ¸ð¸® °ü¸® ½Ã½ºÅÛÀ» ÀÌ¿ëÇÏ·Á¸é CPU¿¡¼­ ÆäÀÌ¡°ú ¸Þ¸ð¸® º¸È£, ÆäÀÌÁö ÆúÆ® 󸮸¦ ÇÒ ¼ö ÀÖ´Â ¸ÞÄ¿´ÏÁòÀ» Á¦°øÇØ¾ß Çϸç ÀÎÅÚ x86 °è¿­ÀÇ CPU¿¡¼­´Â 80386¿¡¼­ºÎÅÍ ÀÌ·¯ÇÑ ¸Þ¸ð¸® ¾ÆÅ°ÅØÃĸ¦ Á¦°øÇÏ °í ÀÖ´Ù. ¿©±â¼­´Â x86 °è¿­ÀÇ ¸Þ¸ð¸® ¾ÆÅ°ÅØÃĸ¦ °£´ÜÈ÷ »ìÆ캸µµ·Ï ÇÑ´Ù. 8086 CPU´Â 16ºñÆ® ¼¼±×¸ÕÆ®(segment) ·¹Áö½ºÅÍ¿Í 16ºñÆ® ¿ÀÇÁ¼ÂÀ» Áßø ÇÏ¿© 20ºñÆ®, Áï 1MB Å©±âÀÇ ÁÖ¼Ò°ø°£À» Á¦°øÇÑ´Ù. 80286¿¡¼­´Â 8086°ú ¶È°°Àº ÁÖ¼Ò°ø°£À» Á¦°øÇÏ´Â ½ÇÁ¦¸ðµå(real mode)¿Í ÇÔ²², »õ·Î¿î ¹æ½ÄÀÇ ÁÖ¼Ò°ø°£À» Á¦°øÇÏ´Â º¸È£¸ðµå(protected mode)°¡ µµÀԵǾú´Ù. 80286 º¸È£¸ðµå¿¡¼­ ¼¼±×¸ÕÆ® ·¹Áö½ºÅÍ´Â ¼¿·ºÅÍ(selector)¶ó´Â À̸§À¸·Î ¹Ù²î ¾ú°í, ¼¿·ºÅ͸¦ 24ºñÆ®ÀÇ º£À̽º ÁÖ¼Ò(base address)·Î ¹Ù²Ù¾îÁÖ´Â Å×À̺í ÀÎ µð½ºÅ©¸³ÅÍ Å×À̺í(descriptor table)ÀÌ µîÀåÇß´Ù. ÀÌ ¸ðµå¿¡¼­´Â 24ºñÆ®ÀǺ£À̽º ÁÖ¼Ò¿Í 16ºñÆ®ÀÇ ¿ÀÇÁ¼ÂÀ» ´õÇÏ¿© ¸ðµÎ 24ºñÆ®ÀÇ ÁÖ¼Ò °ø°£, Áï 16MBÀÇ ÁÖ¼Ò°ø°£À» Á¦°øÇÏ¿´´Ù. ¿©±â¼­ ¼¿·ºÅÍ¿Í µð½ºÅ©¸³ÅÍ Å×À̺íÀ» ÀÌ¿ëÇÏ¿© ¼±Çü ÁÖ¼Ò°ø°£(linear address space)ÀÇ ÀϺθ¦ °¡¸®Å³ ¼ö ÀÖµµ·Ï ÇÏ´Â °ÍÀ» ¼¼±×¸àÅ×À̼Ç(segmentation)À̶ó°í ÇÑ´Ù. 80386¿¡¼­ ´Â ÀÌ·¯ÇÑ ¼¼±×¸àÅ×ÀÌ¼Ç ¿Ü¿¡ ¸Þ¸ð¸® °ü¸®¿¡ ÇʼöÀûÀÎ ÆäÀÌ¡ ¸ÞÄ¿´ÏÁòÀÌ Ãß°¡µÇ°í ¸Þ¸ð¸® °ø°£µµ 32ºñÆ®, Áï 4GB·Î È®ÀåµÇ¾ú´Ù. 80386¿¡¼­ ¸Þ¸ð¸® »óÀÇ ÁÖ¼Ò¸¦ °¡¸®Å°´Â µ¥¿¡´Â 16ºñÆ®ÀÇ ¼¿·ºÅÍ (selector) ·¹Áö½ºÅÍ¿Í 32ºñÆ®ÀÇ ¿ÀÇÁ¼Â(offset)ÀÌ »ç¿ëµÈ´Ù. À̵éÀº ¼¼±× ¸àÅ×ÀÌ¼Ç ¸ÞÄ¿´ÏÁòÀ» °ÅÃÄ ¼±Çü ÁÖ¼Ò(linear address)·Î º¯È¯µÇ°í, ´Ù½Ã ÀÌ ÁÖ¼Ò´Â ÆäÀÌÁö Å×À̺íÀ» ÀÌ¿ëÇÑ ÆäÀÌ¡ ¸ÞÄ¿´ÏÁòÀ» °ÅÃÄ ¹°¸®ÀûÀÎ ½ÇÁ¦ ÁÖ¼Ò(physical address)·Î ¹Ù²î°Ô µÈ´Ù. ¾ËÆÄ AXP¿Í °°Àº ´Ù¸¥ CPU¿¡¼­´Â ¼¼±×¸àÅ×À̼ÇÀ̶ó´Â °ÍÀ» Á¦°øÇÏÁö ¾ÊÀ¸¸ç, ÀÌ´Â ÀÎÅÚ CPUÀÇ Æ¯¼ºÀ̶ó°í ÇÒ ¼ö ÀÖ´Ù. ÀÌ´Â ¼¼±×¸ÕÆ® ·¹Áö½ºÅÍ¿¡¼­ºÎÅÍ ½ÃÀÛÇÑ ÀÜ»óÀ̶ó°í ÇÒ ¼ö ÀÖÀ¸¸ç, ¸®´ª½º ¿ª½Ã ÀÌ ±â´ÉÀ» »ç¿ëÇÏÁö ¾Ê°í ÀÖ´Ù. ´Ù¸¸ ÀÎÅÚ CPU¿¡¼­ µ¿ÀÛÇÏ´Â ´Ù¸¥ ¿î¿µÃ¼°è¿Í ¸¶Âù°¡Áö·Î ¼¼±×¸àÅ×À̼ÇÀ» °ÅÃÄ ³ª¿À´Â ¼±Çü ÁÖ¼Ò°ø°£À» »ç¿ë ÀÚ ÁÖ¼Ò°ø°£°ú Ä¿³Î ÁÖ¼Ò°ø°£À¸·Î ºÐ¸®ÇÏ¿©, »ç¿ëÀÚ ÁÖ¼Ò°ø°£¿¡ 3GB¸¦ Ä¿³Î ÁÖ¼Ò°ø°£À¸·Î 1GB¸¦ ÇÒ´çÇØ ³õ°í ÀÖ´Ù. Selector Linear Address Physical Address Offset ¼¿·ºÅÍ´Â µð½ºÅ©¸³ÅÍ Å×ÀÌºí¿¡ ´ëÇÑ À妽º¿Í, ¾î¶² µð½ºÅ©¸³ÅÍ Å×À̺íÀ» °¡¸®Å°´ÂÁö¸¦ ³ªÅ¸³»´Â TI (Table Indicator) Ç׸ñ, ±×¸®°í À̸¦ »ç¿ëÇÒ ¼ö ÀÖ´Â ·¹º§À» ³ªÅ¸³»´Â RPL(Requestor Privilege Level) ¼¼°¡Áö·Î ÀÌ·ç ¾îÁ® ÀÖ´Ù. TI Ç׸ñÀÌ 0À̸é À妽º´Â Àü¿ª µð½ºÅ©¸³ÅÍ Å×À̺í(Global Descriptor Table, GDT)¿¡ ÀÖ´Â µð½ºÅ©¸³Å͸¦ °¡¸®Å°°í, TI Ç׸ñÀÌ 1À̸é Áö¿ª µð½ºÅ©¸³ÅÍ Å×À̺í(Local Descriptor Table LDT)¸¦ ³ªÅ¸³½´Ù. ¿©±â¼­ GDT´Â Ä¿³Î ¸ðµå¿¡¼­ »ç¿ëµÇ´Â Å×À̺íÀÌ°í, LDT´Â »ç¿ëÀÚ ¸ðµå¿¡¼­ »ç¿ëµÇ´Â Å×À̺íÀÌ´Ù. º¸Åë GDT'´Â Ä¿³Î ¸ðµå¿ëÀ¸·Î Çϳª°¡ ÀÖÀ¸¸ç, LDT ´Â °¢ ÇÁ·Î¼¼½ºº°·Î Çϳª¾¿ ¸¸µé¾îÁø´Ù. À̵é Å×À̺íÀÇ ½ÃÀÛ À§Ä¡´Â °¢°¢ GDTR, LDTRÀ̶ó´Â ·¹Áö½ºÅÍ°¡ °¡¸®Å°°í ÀÖ´Ù. µð½ºÅ©¸³ÅÍ Å×À̺íÀº 64ºñÆ® Å©±â·Î, 32ºñÆ® Å©±âÀÇ º£À̽º ÁÖ¼Ò¿Í 20ºñÆ® Å©±âÀÇ ¹üÀ§(limit), ±×¸®°í ±âŸ ¿©·¯ Ç׸ñÀ¸·Î ÀÌ·ç¾îÁ® ÀÖ´Ù. ¿©±â¼­ º£À̽º ÁÖ¼Ò´Â 4GBÀÇ ¼±Çü ÁÖ¼Ò°ø°£¿¡¼­ÀÇ ½ÃÀÛ À§Ä¡¸¦ °¡¸®Å°°í, ¹üÀ§´Â º£À̽º ÁÖ¼Ò¿¡¼­ ½ÃÀÛÇÏ¿© Á¢±ÙÀÌ °¡´ÉÇÑ ¸Þ¸ð¸® ¹üÀ§¸¦ ³ªÅ¸³½´Ù. ÀÌ°ÍÀº 20ºñÆ® Å©±âÀ̱ä ÇÏÁö¸¸ ÀÔµµ ºñÆ®(granularity bit)°¡ ¼³Á¤µÇ¾î ÀÖÀ¸¸é 4KB ´ÜÀ§ÀÇ ¹üÀ§¸¦ ³ªÅ¸³»¹Ç·Î ¸ðµÎ 4GB Å©±âÀÇ ¹üÀ§¸¦ °¡Áú ¼ö ÀÖ´Ù. ÀÌ·¸°Ô ³ª¿Â º£À̽º ÁÖ¼Ò¿¡ ¿ÀÇÁ¼ÂÀ» ´õÇÏ¸é ½ÇÁ¦ ¼±Çü ÁÖ¼Ò°ø°£¿¡¼­ÀÇ ÁÖ¼Ò°¡ ³ª¿À°Ô µÈ´Ù. Áï, ¼¼±×¸àÅ×ÀÌ¼Ç ¸ÞÄ¿´ÏÁò¿¡¼­´Â ¼¿·ºÅ͸¦ ÀÌ¿ëÇÏ¿© µð½ºÅ©¸³Å͸¦ ã°í, ¿©±â ÀÖ´Â º£À̽º ÁÖ¼Ò¿¡ ¿ÀÇÁ¼ÂÀ» ´õÇÏ¿© ¼±Çü ÁÖ¼Ò °ø°£¿¡¼­ÀÇ ÁÖ¼Ò¸¦ ¾ò´Â ¿ªÇÒÀ» ÇÑ´Ù. ÀÌ·¸°Ô ¾ò¾îÁø ¼±Çü ÁÖ¼Ò´Â ½ÇÁ¦ ÁÖ¼Ò°¡ ¾Æ´Ï¸ç, ÆäÀÌ¡ ¸ÞÄ¿´ÏÁòÀ» °ÅÃÄ ¾ß ½ÇÁ¦ ÁÖ¼Ò¸¦ ¾òÀ» ¼ö ÀÖ´Ù. ÆäÀÌ¡ ¸ÞÄ¿´ÏÁò¿¡¼­´Â ÀÌ ¼±Çü ÁÖ¼Ò¸¦ ´Ù½Ã 10ºñÆ® Å©±âÀÇ ÆäÀÌÁö µð·ºÅ丮 À妽º(page directory index), 10ºñ Æ® Å©±âÀÇ ÆäÀÌÁö Å×À̺í À妽º(page table index), 12ºñÆ® Å©±âÀÇ ¿ÀÇÁ ¼ÂÀ¸·Î ÂÉ°µ´Ù. ÆäÀÌÁö µð·ºÅ丮 À妽º¸¦ °¡Áö°í ÆäÀÌÁö µð·ºÅ丮¿¡¼­ ÆäÀÌÁö Å×À̺íÀÇ ÁÖ¼Ò¸¦ ¾òÀ» ¼ö ÀÖ´Ù. ´Ù½Ã ÆäÀÌÁö Å×À̺í À妽º¸¦ °¡Áö°í ¾ÕÀÇ ÆäÀÌÁö µð·ºÅ丮°¡ °¡¸®Å°´Â ÆäÀÌÁö Å×ÀÌºí¿¡¼­ ÆäÀÌÁö ÇÁ·¹ ÀÓ(page frame)ÀÇ À§Ä¡¸¦ ¾òÀ» ¼ö ÀÖ´Ù. ÀÌ·¸°Ô ¾ò¾îÁø ÆäÀÌÁö ÇÁ·¹ÀÓ ÁÖ¼Ò¿¡ ¿ÀÇÁ¼ÂÀ» ´õÇÏ¸é ½ÇÁ¦ ¹°¸®ÀûÀÎ ÁÖ¼Ò°¡ ³ª¿À°Ô µÈ´Ù. ÀÌ´Â ¾ÕÀÇ ±×¸² 3.3¿¡¼­ ³ª¿À´Â 3´Ü°è ÆäÀÌÁö Å×ÀÌºí¿¡¼­ Çϳª¸¦ »©¼­ 2´Ü°è ÆäÀÌÁö Å×À̺íÀ» »ý°¢ÇÏ¸é µÈ´Ù. ¿©±â¼­ ¿ÀÇÁ¼ÂÀº 12ºñÆ®À̹ǷΠÇϳªÀÇ ÆäÀÌÁö ÇÁ·¹ÀÓÀº 212, Áï 4KBÀÇ Å©±â¸¦ °¡Áö¸ç, ¸®´ª½º¿¡¼­ Á¤ÀÇµÈ ÆäÀÌÁö Å©±â´Â ÀÌ °ªÀÌ´Ù. ÀÌ·¸°Ô ÆäÀÌ¡ ¸ÞÄ¿´ÏÁòÀ» ÅëÇÏ¿© ¼±Çü ÁÖ¼Ò´Â ½ÇÁ¦ ¹°¸®ÀûÀÎ ÁÖ¼Ò·Î º¯È¯µÇ¸ç, ¸®´ª½º´Â CPUÀÇ ÀÌ·± Áö¿øÀ» ÅëÇÏ¿© ÆäÀÌ¡À» ±¸ÇöÇÒ ¼ö ÀÖ´Ù. ===================================================================== 4Àå ÇÁ·Î¼¼½º (Processes) <<ÀÌ Àå¿¡¼­´Â ÇÁ·Î¼¼½º°¡ ¹«¾ùÀÌ¸ç ¸®´ª½º Ä¿³ÎÀÌ ¾î¶»°Ô ÇÁ·Î¼¼½º¸¦ ¸¸µé°í °ü¸®ÇÏ°í ¾ø¾Ö´ÂÁö¸¦ ¼³¸íÇÑ´Ù.>> ÇÁ·Î¼¼½º´Â ¿î¿µÃ¼Á¦ ¾È¿¡¼­ ÀÛ¾÷À» ¼öÇàÇÑ´Ù. ÇÁ·Î±×·¥Àº µð½ºÅ©¿¡ ½ÇÇà °¡´ÉÇÑ ÇüÅ·ΠÀúÀåµÇ¾î ÀÖ´Â ±â°è¾î ¸í·É°ú ÀÚ·áÀÇ ÁýÇÕÀε¥, ÀÌ ÀÚü´Â ¼öµ¿ÀûÀÎ Á¸ÀçÀÌ´Ù. ÇÑÆí ÇÁ·Î¼¼½º´Â µ¿ÀÛÁßÀÎ ÇÁ·Î±×·¥À¸·Î »ý°¢ÇÒ ¼ö ÀÖ´Ù. Áï ÇÁ·Î¼¼¼­°¡ ±â°è¾î ¸í·ÉµéÀ» ½ÇÇàÇÔ¿¡ µû¶ó ²÷ÀÓ¾øÀÌ º¯È­ÇÏ´Â µ¿ÀûÀÎ Á¸ÀçÀÌ´Ù. ÇÁ·Î±×·¥ÀÇ ¸í·É¾î¿Í µ¥ÀÌÅÍ »Ó¸¸ ¾Æ´Ï¶ó, ÇÁ·Î¼¼½º´Â ÇÁ·Î±×·¥ Ä«¿îÅÍ, CPU ·¹Áö½ºÅÍ, ±×¸®°í ·çƾÀÎÀÚ, º¹±Í ÁÖ¼Ò, ÀúÀåµÈ º¯¼ö°°Àº ÀϽÃÀû µ¥ÀÌÅ͸¦ Æ÷ÇÔÇÏ´Â ÇÁ·Î¼¼½º ½ºÅõµ ÇÔ²² °¡Áø´Ù. ÇöÀç ½ÇÇà ÁßÀÎ ÇÁ·Î±×·¥, Áï ÇÁ·Î¼¼½º´Â ÇöÀç ¸¶ÀÌÅ©·ÎÇÁ·Î¼¼¼­ ¾È¿¡¼­ ÀϾ ´Â ¸ðµç µ¿ÀÛÀ» Æ÷ÇÔÇÑ´Ù. ¸®´ª½º´Â ¸ÖƼÇÁ·Î¼¼½Ì ¿î¿µÃ¼Á¦ÀÌ´Ù. ÇÁ·Î¼¼½º ´Â °¢°¢ °íÀ¯ÀÇ ±ÇÇÑ¿Í Ã¥ÀÓÀ» °®´Â º°°³ÀÇ Å½ºÅ©ÀÌ´Ù. ¾î¶² ÇÁ·Î¼¼½º Çϳª°¡ ºñÁ¤»óÀûÀ¸·Î Á¾·áÇß´Ù°í Çؼ­ ÀÌ°ÍÀÌ ½Ã½ºÅÛ ³»ÀÇ ´Ù¸¥ ÇÁ·Î¼¼½º±îÁö Á×°Ô ÇÏÁö´Â ¾Ê´Â´Ù. °³º° ÇÁ·Î¼¼½º´Â ÀÚ½ÅÀÇ °¡»ó ÁÖ¼Ò°ø°£¿¡¼­ ½ÇÇàµÇ¸ç, Ä¿³ÎÀÌ Á¦°øÇÏ´Â ¾ÈÀüÇÑ ¹æ¹ýÀ» ÅëÇÏÁö ¾Ê°í¼­´Â ´Ù¸¥ ÇÁ·Î¼¼½º¿Í »óÈ£ÀÛ¿ëÇÒ ¼ö ¾ø´Ù. ÇÁ·Î¼¼½º´Â »ì¾Æ ÀÖ´Â µ¿¾È ¸¹Àº ½Ã½ºÅÛ ÀÚ¿øÀ» »ç¿ëÇÑ´Ù. ¸í·ÉÀ» ¼öÇà Çϱâ À§Çؼ­ CPU¸¦, ¸í·É¾î¿Í µ¥ÀÌÅ͸¦ ÀúÀåÇϱâ À§Çؼ­´Â ¹°¸®ÀûÀÎ ¸Þ¸ð¸®¸¦ »ç¿ëÇÑ´Ù. ÆÄÀÏ ½Ã½ºÅÛÀÇ ÆÄÀϵéÀ» ¿­°í »ç¿ëÇÒ ¼öµµ ÀÖ°í, ½Ã½ºÅÛ ³»ÀÇ ¹°¸®ÀûÀÎ ÀåÄ¡µéÀ» Á÷Á¢ ¶Ç´Â °£Á¢ÀûÀ¸·Î »ç¿ëÇÒ ¼öµµ ÀÖ´Ù. ¸®´ª½º´Â ¿©·¯ ½Ã½ºÅÛ ÀÚ¿øÀ» °ü¸®ÇÏ°í ÇÁ·Î¼¼½ºµéÀ» °øÆòÇÏ°Ô °ü¸®Çϱâ À§Çؼ­ ÇÁ·Î¼¼½º ÀڽŰú ÇÁ·Î¼¼½º°¡ °¡Áö°í ÀÖ´Â ½Ã½ºÅÛ ÀÚ¿ø¿¡ ´ëÇØ °è¼Ó ÃßÀûÇÏ°í ÀÖ¾î¾ß ÇÑ´Ù. ÇϳªÀÇ ÇÁ·Î¼¼½º°¡ ½Ã½ºÅÛÀÇ ¹°¸®ÀûÀÎ ¸Þ¸ð¸®³ª CPUÀÇ ´ëºÎºÐÀ» µ¶Á¡ÇÑ ´Ù¸é, ´Ù¸¥ ÇÁ·Î¼¼½ºµé¿¡°Ô °øÆòÇÏÁö ¾ÊÀ» °ÍÀÌ´Ù. ½Ã½ºÅÛ¿¡¼­ °¡Àå Áß¿äÇÑ ÀÚ¿øÀº CPU·Î, ´ëºÎºÐÀÇ ½Ã½ºÅÛ¿¡´Â Çϳª¹Û¿¡ ¾ø´Ù. ¸®´ª½º´Â ¸ÖƼÇÁ·Î¼¼½Ì(multiprocessing) ¿î¿µÃ¼Á¦Àε¥, ±× ¸ñÀûÀº °¢°¢ÀÇ CPU°¡ ¾ðÁ¦³ª ½ÇÇà ÁßÀÎ ÇÁ·Î¼¼½º¸¦ °®µµ·Ï ÇÏ¿© CPUÀÇ È°¿ëÀ» ±Ø´ëÈ­ÇÏ´Â °ÍÀÌ´Ù. ÇÁ·Î¼¼½ºÀÇ ¼ö°¡ CPUº¸´Ù ¸¹Àº °æ¿ì (´ëºÎºÐÀÇ °æ¿ì °¡ ÀÌ·¸´Ù), ³ª¸ÓÁö ÇÁ·Î¼¼½ºµéÀº ½ÇÇàµÇ±â À§Çؼ­ CPU°¡ »ç¿ë °¡´ÉÇÒ ¶§ ±îÁö ±â´Ù·Á¾ß ÇÑ´Ù. ¸ÖƼÇÁ·Î¼¼½ÌÀ̶õ °£´ÜÇÑ °³³äÀÌ´Ù. Áï, ÇÁ·Î¼¼½º´Â ¹«¾ð°¡ ±â´Þ·Á¾ß Çϱâ Àü±îÁö´Â (º¸ÅëÀº ½Ã½ºÅÛ ÀÚ¿øÀ» ±â´Ù¸°´Ù) °è¼Ó ½ÇÇàµÇ¸ç, ±â´Ù¸®°í ÀÖ´Ù°¡ ÀÚ¿øÀ» ¾ò°ÔµÇ¸é ÇÁ·Î¼¼½º´Â ´Ù½Ã ½ÇÇàµÉ ¼ö ÀÖ´Ù. DOS¿Í °°Àº À¯´ÏÇÁ·Î¼¼½Ì(uniprocessing) ½Ã½ºÅÛ¿¡¼­´Â CPU´Â ±×³É ¾Æ¹«°Íµµ ÇÏÁö ¾Ê°í ´ë±â ½Ã°£À» ³¶ºñÇÑ´Ù. ¸ÖƼÇÁ·Î¼¼½Ì ½Ã½ºÅÛ¿¡¼­´Â µ¿½Ã¿¡ ¸¹Àº ÇÁ·Î¼¼½ºµéÀÌ ¸Þ¸ð¸® ³»¿¡ Á¸ÀçÇÑ´Ù. ÇÁ·Î¼¼½º°¡ ¹«¾ð°¡ ±â´Ù ·Á¾ß ÇÒ ¶§¸¶´Ù ¿î¿µÃ¼Á¦´Â CPU¸¦ »©¾Ñ¾Æ ´Ù¸¥ Á» ´õ Àû´çÇÑ ÇÁ·Î¼¼½º°¡ »ç¿ëÇϵµ·Ï ÇÑ´Ù. ¾î¶² ÇÁ·Î¼¼½º°¡ ´ÙÀ½¿¡ ½ÇÇàµÉ °¡Àå Àû´çÇÑ °ÍÀÎÁö ¼±ÅÃÇÏ´Â ÀÏÀº ½ºÄÉÁì ·¯ÀÇ ¸òÀÌ°í, ¸®´ª½º´Â °øÁ¤À» ±âÇϱâ À§ÇØ ¿©·¯°¡ÁöÀÇ ½ºÄÉÁ층 Á¤Ã¥À» »ç¿ëÇÑ´Ù. ¸®´ª½º´Â ¿©·¯°¡Áö ÇüÅÂÀÇ ½ÇÇà ÆÄÀÏÀ» Áö¿øÇϴµ¥, ELF, JAVAµîÀÌ ±×Áß Çϳª´Ù. À̵éÀº ÇÁ·Î¼¼½º°¡ ½Ã½ºÅÛÀÇ °øÀ¯ ¶óÀ̺귯¸®(shared library)¸¦ »ç¿ëÇÒ ¼ö ÀÖµµ·Ï ÇÏ´Â °Í°ú °°Àº ÀÏÀ» À§ÇØ Åõ¸íÇÏ°Ô °ü¸®ÇØ¾ß ÇÑ´Ù. 4.1 ¸®´ª½º ÇÁ·Î¼¼½º ¸®´ª½º°¡ ½Ã½ºÅÛ ³»ÀÇ ÇÁ·Î¼¼½ºµéÀ» °ü¸®ÇÒ ¼ö ÀÖµµ·Ï, °¢°¢ÀÇ ÇÁ·Î¼¼½º´Â task_struct¶ó´Â ÀڷᱸÁ¶·Î Ç¥ÇöµÈ´Ù (ŽºÅ©¿Í ÇÁ·Î¼¼½º´Â ¸®´ª½º¿¡¼­ °°Àº Àǹ̷Π»ç¿ëµÈ´Ù). task º¤ÅÍ´Â ½Ã½ºÅÛ¿¡ ÀÖ´Â task_struct ±¸Á¶¸¦ °¡¸®Å°´Â Æ÷ÀÎÅ͵éÀÇ ¹è¿­ÀÌ´Ù. ÀÌ´Â ½Ã½ºÅÛÀÌ °¡Áú ¼ö ÀÖ´Â ÇÁ·Î¼¼½ºÀÇ ¼ö°¡ task º¤ÅÍÀÇ Å©±â·Î Á¦ÇѵǾî ÀÖ´Ù´Â °ÍÀ» ÀǹÌÇÑ´Ù. ÀÌ Å©±âÀÇ ±âº»°ªÀº 512°³ÀÌ´Ù. ÇÁ·Î¼¼½º°¡ ¸¸µé¾îÁö¸é ½Ã½ºÅÛ ¸Þ¸ð¸®¿¡¼­ »õ·Î¿î task_struct°¡ ÇÒ´çµÇ¾î task º¤ÅÍ¿¡ Ãß°¡µÈ´Ù. ÇöÀç ½ÇÇàµÇ°í ÀÖ´Â ÇÁ·Î ¼¼½º¸¦ ã±â ½±°Ô Çϱâ À§Çؼ­, À̸¦ current Æ÷ÀÎÅÍ°¡ °¡¸®Å°°í ÀÖ´Ù. ÀϹÝÀûÀÎ ÇÁ·Î¼¼½º »Ó ¾Æ´Ï¶ó ¸®´ª½º´Â ½Ç½Ã°£(real time) ÇÁ·Î¼¼½ºµµ Áö¿øÇÑ´Ù. ÀÌ ÇÁ·Î¼¼½ºµéÀº ¿ÜºÎ¿¡¼­ ¹ß»ýÇÏ´Â »ç°Ç(event)¿¡ ¸Å¿ì »¡¸® ¹ÝÀÀÇØ¾ß ÇϹǷΠ(´Ù½Ã ¸»ÇÏ¸é ½Ç½Ã°£À¸·Î), ½ºÄÉÁì·¯´Â À̵éÀ» ÀÏ¹Ý »ç¿ë ÀÚ ÇÁ·Î¼¼½º¿Í´Â ´Ù¸£°Ô Ãë±ÞÇÑ´Ù. task_struct ÀڷᱸÁ¶´Â ¹æ´ëÇÏ°í º¹ÀâÇÏÁö¸¸, ³»ºÎ Ç׸ñµéÀ» ¿©·¯°³ÀÇ ±â´É ¿µ¿ªÀ¸·Î ±¸ºÐÇÒ ¼ö ÀÖ´Ù. »óÅÂ(State) : ÇÁ·Î¼¼½º´Â ¼öÇàµÇ¸é¼­ ÁÖº¯ »óȲ¿¡ µû¶ó¼­ »óŸ¦ º¯°æÇÑ´Ù. ¸®´ª½º ÇÁ·Î¼¼½ºµéÀº ´ÙÀ½°ú °°Àº »óŸ¦ °¡Áø´Ù . ½ÇÇàÁß(Running) : ÇÁ·Î¼¼½º°¡ ½ÇÇàÁßÀ̰ųª(ÇöÀç ÇÁ·Î¼¼½ºÀÌ °Å³ª), ¾ðÁ¦µçÁö ½ÇÇàÇÒ ¼ö ÀÖ´Â Áغñ°¡ µÇ¾úÀ½(½Ã½ºÅÛÀÇ CPUÁß Çϳª¿¡ ÇÒ´çµÇ´Â °ÍÀ» ±â´Ù¸®°í ÀÖ´Â °Í)À» ³ªÅ¸³½´Ù. ´ë±âÁß(Waiting) : ÇÁ·Î¼¼½º°¡ À̺¥Æ®³ª ÀÚ¿øÀÌ ÇÒ´çµÇ±æ ±â´Ù¸®´Â ÁßÀÓÀ» ³ªÅ¸³½´Ù. ¸®´ª½º´Â µÎ°¡Áö Á¾·ù- ÀÎÅÍ·´Æ® Çã¿ë(interruptible)°ú ÀÎÅÍ·´Æ® ±ÝÁö(uninterruptible) - ÀÇ ÇÁ·Î¼¼½º ´ë±â»óŸ¦ °¡Áö°í ÀÖ´Ù. ÀÎÅÍ·´Æ®°¡ Çã¿ëµÇ´Â ´ë±â»óÅÂÀÇ ÇÁ·Î¼¼½º´Â ½Ã±×³Î¿¡ ÀÇÇØ ÀÎÅÍ·´Æ®µÉ ¼ö ÀÖ°í, ÀÎÅÍ·´Æ®°¡ ±ÝÁöµÈ ´ë±â»óÅÂÀÇ ÇÁ·Î¼¼½º´Â Çϵå¿þ¾î¸¦ Á÷Á¢ ±â´Ù¸®¸é¼­ ¾î¶² ȯ°æÇÏ¿¡¼­µµ ÀÎÅÍ·´Æ®µÇÁö ¾Ê´Â´Ù . ÁߴܵÊ(Stopped) : ÇÁ·Î¼¼½º°¡ Áß´ÜµÈ °æ¿ì·Î, ´ë°³ ½Ã±×³ÎÀ» ¹Þ¾ÒÀ» °æ¿ìÀÌ´Ù. ÇÁ·Î¼¼½º¸¦ µð¹ö±×ÇÒ ¶§ ÀÌ·± »óÅ¿¡ ÀÖ´Ù. Á»ºñ(Zombie) : ÀÌ°ÍÀº Á¤ÁöµÈ ÇÁ·Î¼¼½ºÀÌÁö¸¸, ¾î¶² ÀÌÀ¯ ¶§¹®¿¡ ¿©ÀüÈ÷ task_struct ÀڷᱸÁ¶¸¦ task º¤ÅÍ¿¡ °¡Áö°í ÀÖ´Â °æ¿ìÀÌ´Ù. ¿ë¾î¿¡¼­ ´À³¥ ¼ö ÀÖµíÀÌ, Á×Àº ÇÁ·Î¼¼½º ÀÌ´Ù. ½ºÄÉÁ층 Á¤º¸ : ½ºÄÉÁì·¯´Â ½Ã½ºÅÛ¿¡ ÀÖ´Â ÇÁ·Î¼¼½ºÁß ¾î´À°ÍÀÌ °¡Àå ½ÇÇàµÇ±â¿¡ Àû´çÇÑÁö¸¦ °øÁ¤ÇÏ°Ô ÆÇ´ÜÇϱâ À§ÇØ ÀÌ Á¤º¸¸¦ ÇÊ¿ä·Î ÇÑ´Ù. ½Äº°ÀÚ(Identifier) : ½Ã½ºÅÛÀÇ ¸ðµç ÇÁ·Î¼¼½º´Â ÇÁ·Î¼¼½º ½Äº°ÀÚ¸¦ °¡Áö°í ÀÖ´Ù. ÇÁ·Î¼¼½º ½Äº°ÀÚ´Â task º¤ÅÍ¿¡ ´ëÇÑ À妽º´Â ¾Æ´Ï°í, ±×³É ´Ü¼øÇÑ ¼ýÀÚÀÌ´Ù. ¸ðµç ÇÁ·Î¼¼½º´Â ¶ÇÇÑ »ç¿ëÀÚ ½Äº°ÀÚ¿Í ±×·ì ½Äº°ÀÚ¸¦ °¡Áö°í Àִµ¥, À̰͵éÀº ÀÌ ÇÁ·Î¼¼½º°¡ ½Ã½ºÅÛ¿¡ ÀÖ´Â ÆÄÀÏ°ú ÀåÄ¡¿¡ ´ëÇÑ Á¢±ÙÇÏ´Â °ÍÀ» Á¦¾îÇϴµ¥ »ç¿ëµÈ´Ù. ÇÁ·Î¼¼½º°£ Åë½Å : ¸®´ª½º´Â ÀüÅëÀûÀÎ À¯´Ð½ºÀÇ IPC ¸ÞÄ¿´ÏÁòÀÎ ½Ã±×³Î, ÆÄÀÌÇÁ, ¼¼¸¶Æ÷¾î¿Í ÇÔ²², ½Ã½ºÅÛ V IPC ¸ÞÄ¿´ÏÁòÀÎ °øÀ¯ ¸Þ¸ð¸®, ¼¼¸¶Æ÷¾î, ¸Þ½ÃÁö Å¥ µîÀ» Áö¿øÇÑ´Ù. ¸®´ª½º¿¡¼­ Áö¿øµÇ´Â IPC ¸ÞÄ¿´ÏÁò¿¡ ´ëÇؼ­´Â 5Àå¿¡¼­ ¼³¸íÇÑ´Ù. ¿¬°á(Link) : ¸®´ª½º ½Ã½ºÅÛ¿¡¼­, ´Ù¸¥ ÇÁ·Î¼¼½º¿Í ¹«°üÇÑ ÇÁ·Î¼¼½º ´Â ¾ø´Ù.½Ã½ºÅÛÀÇ ¸ðµç ÇÁ·Î¼¼½º´Â - ÃÖÃÊÀÇ ÇÁ·Î¼¼½º¸¦ Á¦¿ÜÇÏ°í - ºÎ¸ðÇÁ·Î¼¼½º¸¦ °¡Áø´Ù. »õ·Î¿î ÇÁ·Î¼¼½º´Â »ý¼ºµÇ´Â °ÍÀÌ ¾Æ´Ï¶ó ÀÌÀüÀÇ ÇÁ·Î¼¼½º·ÎºÎÅÍ º¹»ç(copy),ȤÀº º¹Á¦(clone)µÈ´Ù. ÇÁ·Î¼¼½º¸¦ ³ªÅ¸³»´Â task_struct´Â ¸ðµÎ, ºÎ¸ð ÇÁ·Î¼¼½º, ÇüÁ¦ (sibling, ºÎ¸ð°¡ °°Àº ÇÁ·Î¼¼½ºµé) ÇÁ·Î¼¼½º, ÀÚ½ÅÀÇ ÀÚ½Ä(child) ÇÁ·Î¼¼½ºµé¿¡ ´ëÇÑ Æ÷ÀÎÅ͸¦ °¡Áö°í ÀÖ´Ù. pstree ¸í·ÉÀ» ½ÇÇàÇÏ¿© ¸®´ª½º ½Ã½ºÅÛ¿¡ ½ÇÇàÁßÀÎ ÇÁ·Î¼¼½ºµé°£ÀÇ °¡Á· °ü°è¸¦ º¼ ¼ö ÀÖ´Ù. init(1)-+-crond(98) |-emacs(387) |-gpm(146) |-inetd(110) |-kerneld(18) |-kflushd(2) |-klogd(87) |-kswapd(3) |-login(160)---bash(192)---emacs(225) |-lpd(121) |-mingetty(161) |-mingetty(162) |-mingetty(163) |-mingetty(164) |-login(403)---bash(404)---pstree(594) |-sendmail(134) |-syslogd(78) `-update(166) ´õºÒ¾î, ½Ã½ºÅÛ ³»ÀÇ ¸ðµç ÇÁ·Î¼¼½ºµéÀº init ÇÁ·Î¼¼½ºÀÇ task_struct ÀڷᱸÁ¶¿¡¼­ ½ÃÀÛÇÏ´Â ÀÌÁß ¿¬°á¸®½ºÆ®·Î ¿¬°áµÇ¾î ÀÖ´Ù. ÀÌ ¸®½ºÆ®´Â ¸®´ª½º Ä¿³ÎÀÌ ½Ã½ºÅÛ ³»ÀÇ ¸ðµç ÇÁ·Î¼¼½ºµéÀ» µé¿©´Ùº¼ ¼ö ÀÖ°Ô ÇÑ´Ù. ps³ª kill µîÀÇ ¸í·ÉÀ» Áö¿øÇÏ·Á¸é ÀÌ·¸°Ô ÇÒ ÇÊ¿ä°¡ ÀÖ´Ù. ½Ã°£°ú ŸÀÌ¸Ó : Ä¿³ÎÀº ÇÁ·Î¼¼½ºÀÇ »ý¼º½Ã°£°ú »ì¾ÆÀÖ´Â µ¿¾È ¼Òºñ ÇÏ´Â CPU ½Ã°£ µîÀ» °è¼Ó ÃßÀûÇÑ´Ù. Ä¿³ÎÀº ¸Å Ŭ·° ƽ(tick) ¸¶´Ù, ÇöÀç ÇÁ·Î¼¼½º°¡ ½Ã½ºÅÛ ¸ðµå¿Í »ç¿ëÀÚ ¸ðµå¿¡¼­ »ç¿ëÇÑ ½Ã°£ÀÇ ¾çÀ» jiffies ´ÜÀ§·Î °»½ÅÇÑ´Ù. ¸®´ª½º´Â ¶ÇÇÑ °£°Ý ŸÀ̸Ó(interval timer)µµ Áö¿øÇϴµ¥, ÇÁ·Î¼¼½º´Â ½Ã½ºÅÛ ÄÝÀ» »ç¿ëÇÏ¿© ŸÀ̸Ӹ¦ ¼³Á¤ÇÏ°í ÁöÁ¤ÇÑ ½Ã°£ÀÌ Áö³ª¸é Àڽſ¡°Ô ½Ã±×³ÎÀ» º¸³¾ ¼ö ÀÖµµ·Ï ÇÑ´Ù. ÀÌ Å¸À̸Ӵ Çѹø¸¸ ¹ß»ýÇÏ´Â (single-shot) ŸÀ̸ÓÀÏ ¼öµµ, ÁÖ±âÀûÀ¸·Î ¹ß»ýÇϴ ŸÀ̸ÓÀÏ ¼öµµ ÀÖ´Ù. ÆÄÀÏ ½Ã½ºÅÛ : ÇÁ·Î¼¼½º´Â ¿øÇÒ ¶§ ÆÄÀÏÀ» ¿­°í ´ÝÀ» ¼ö ÀÖÀ¸¸ç, task_struct¿¡´Â °¢ ¿­¸° ÆÄÀÏÀÇ ±â¼úÀÚ(descriptor)¿¡ ´ëÇÑ Æ÷ÀÎÅÍ¿Í, µÎ°³ÀÇ VFS inode Æ÷ÀÎÅ͸¦ °¡Áö°í ÀÖ´Ù. VFS inode´Â °¢°¢ ÆÄÀÏ ½Ã½ºÅÛ¿¡ ÀÖ´Â ÆÄÀÏÀ̳ª µð·ºÅ丮¸¦ À¯ÀÏÇÏ°Ô ±â¼úÇÏ´Â °ÍÀ¸·Î, ÇϺΠÆÄÀÏ ½Ã½ºÅÛ¿¡ ´ëÇÑ µ¿ÀÏÇÑ ÀÎÅÍÆäÀ̽º¸¦ Á¦°øÇÏ´Â °ÍÀÌ´Ù. ¸®´ª½º°¡ ÆÄÀÏ ½Ã½ºÅÛÀ» ¾î¶»°Ô Áö¿øÇÏ´ÂÁö´Â 9Àå¿¡¼­ ¼³¸íÇÑ´Ù. ù¹ø° VFS inode´Â ÇÁ·Î¼¼½ºÀÇ ·çÆ®(Ȩ µð·ºÅ丮)¸¦ °¡¸®Å°°í, µÎ¹ø° °ÍÀº pwd µð·ºÅ丮¶ó°íµµ ºÒ¸®´Â ÇöÀç µð·ºÅ丮 ÀÌ´Ù. pwd´Â À¯´Ð½º ¸í·É¾îÀÎ pwd¿¡¼­ À¯·¡µÈ °ÍÀ¸·Î, print working directory(ÀÛ¾÷ µð·ºÅ丮¸¦ Ãâ·ÂÇ϶ó)ÀÇ ¾àÀÚÀÌ´Ù. ÀÌ µÎ VFS inode¿¡´Â count Ç׸ñÀÌ À־, ¸î °³ÀÇ ÇÁ·Î¼¼½º°¡ ±×µé À» ÂüÁ¶ÇÏ°í ÀÖ´ÂÁö¸¦ ³ªÅ¸³½´Ù. µû¶ó¼­, ¾î¶² µð·ºÅ丮³ª ±× µð·ºÅ丮ÀÇ ÇÏÀ§ µð·ºÅ丮°¡ ÇÑ ÇÁ·Î¼¼½ºÀÇ pwd µð·ºÅ丮·Î ¼³Á¤ µÇ¾î ÀÖ´Ù¸é ±× µð·ºÅ丮¸¦ »èÁ¦ÇÒ ¼ö ¾ø´Ù. °¡»ó ¸Þ¸ð¸® : ´ëºÎºÐÀÇ ÇÁ·Î¼¼½º(Ä¿³Î ½º·¹µå¿Í µ¥¸óÀ» Á¦¿ÜÇÑ)´Â °¡»ó ¸Þ¸ð¸®¸¦ °¡Áö¸ç, ¸®´ª½º Ä¿³ÎÀº ÀÌ °¡»ó ¸Þ¸ð¸®°¡ ½Ã½ºÅÛÀÇ ½ÇÁ¦ ¸Þ¸ð¸® ¾îµð¿Í ¿¬°áµÇ¾î ÀÖ´ÂÁö¸¦ ÃßÀûÇØ¾ß ÇÑ´Ù. ÇÁ·Î¼¼¼­ °íÀ¯ ÄÁÅؽºÆ®(Processor Specific Context) : ÇÁ·Î¼¼½º´Â ½Ã½ºÅÛÀÇ ÇöÀç »óÅÂÀÇ ÃÑÇÕÀ¸·Î »ý°¢ÇÒ ¼ö ÀÖ´Ù. ÇÁ·Î¼¼½º´Â ½ÇÇà µÉ ¶§¸¶´Ù, ÇÁ·Î¼¼¼­ÀÇ ·¹Áö½ºÅÍ¿Í ½ºÅà µîÀ» »ç¿ëÇÑ´Ù. ÀÌ°ÍÀÌ ÇÁ·Î¼¼½º ÄÁÅؽºÆ®À̸ç, ÇÁ·Î¼¼½º°¡ Áß´ÜµÉ ¶§ CPU °íÀ¯ÀÇ ÄÁÅØ ½ºÆ®µéÀº ¸ðµÎ ±× ÇÁ·Î¼¼½ºÀÇ task_struct¿¡ ÀúÀåµÇ¾î¾ß ÇÑ´Ù. ½ºÄÉÁì·¯°¡ ÀÌ ÇÁ·Î¼¼½º¸¦ ´Ù½Ã ½ÃÀÛÇÒ ¶§, ÀÌ ÄÁÅؽºÆ®´Â ÀÌ Á¤º¸·ÎºÎÅÍ º¹±¸µÈ´Ù. 4.2 ½Äº°ÀÚ(Identifiers) ¸®´ª½º´Â ´Ù¸¥ À¯´Ð½ºµé°ú °°ÀÌ ½Ã½ºÅÛ¿¡ ÀÖ´Â ÆÄÀÏ°ú À̹ÌÁö¿¡ ´ëÇÑ Á¢±Ù ±ÇÇÑÀ» °Ë»çÇϱâ À§Çؼ­ »ç¿ëÀÚ ½Äº°ÀÚ¿Í ±×·ì ½Äº°ÀÚ¸¦ »ç¿ëÇÑ´Ù. ¸®´ª½º ½Ã½ºÅÛÀÇ ¸ðµç ÆÄÀϵéÀº ¼ÒÀ¯±Ç°ú Á¢±Ù ±ÇÇÑÀ» °¡Áö¸ç, Á¢±Ù±ÇÇÑÀº »ç¿ëÀÚ µéÀÌ ÆÄÀÏÀ̳ª µð·ºÅ丮¿¡ ´ëÇÑ Á¢±Ù ¹æ½ÄÀ» ´Ù·é´Ù. ±âº»ÀûÀÎ ±ÇÇѵéÀº Àбâ, ¾²±â¿Í ½ÇÇàÀ¸·Î ÆÄÀÏÀÇ ¼ÒÀ¯ÀÚ, ƯÁ¤ ±×·ì¿¡ ¼ÓÇÏ´Â ÇÁ·Î¼¼½ºµé, ½Ã½ºÅÛÀÇ ¸ðµç ÇÁ·Î¼¼½ºµéÀÇ ¼¼°¡Áö Á¾·ùÀÇ »ç¿ëÀÚ¿¡ ÇÒ´çµÈ´Ù. °¢°¢ÀÇ »ç¿ëÀÚ °èÃþÀº °¢±â ´Ù¸¥ ±ÇÇÑÀ» °¡Áú ¼ö ÀÖ´Ù. ¿¹¸¦ µé¸é, ¾î¶² ÆÄÀÏ¿¡ ´ëÇؼ­ ¼ÒÀ¯ÀÚ´Â Àбâ¿Í ¾²±â¸¦ ÇÒ ¼ö ÀÖÁö¸¸, ±×·ìÀº Àб⸸ ÇÒ ¼ö ÀÖ°í, ½Ã½ºÅÛÀÇ ´Ù¸¥ ÇÁ·Î¼¼½ºµéÀº Á¢±ÙÇÏÁö ¸øÇϵµ·Ï ÇÒ ¼ö ÀÖ´Ù. REVIEW NOTE : Ãß°¡ÇÏ¿© ºñÆ®¸¦ ÇÒ´çÇÏ´Â °ÍÀ» (777) ¼³¸íÇ϶ó. ±×·ìÀº ¸®´ª½º¿¡¼­ ÇѸíÀÇ °³º° »ç¿ëÀÚ³ª ½Ã½ºÅÛÀÇ ¸ðµç ÇÁ·Î¼¼½ºµéÀÌ ¾Æ´Ñ, »ç¿ëÀÚµéÀÇ ¸ðÀÓ¿¡ ÆÄÀÏÀ̳ª µð·ºÅ丮ÀÇ ±ÇÇÑÀ» ÁÖ´Â ¹æ¹ýÀÌ´Ù. ¿¹¸¦ µé¸é, ¼ÒÇÁÆ®¿þ¾î ÇÁ·ÎÁ§Æ®¿¡ Âü°¡ÇÏ´Â »ç¶÷µéÀ» ÇϳªÀÇ ±×·ìÀ¸·Î ¸¸µé°í ÀÌ »ç¶÷µé¸¸ ÇÁ·ÎÁ§Æ®ÀÇ ¼Ò½º Äڵ带 ÀÐ°í ¾µ ¼ö ÀÖµµ·Ï ÇÒ ¼ö ÀÖ´Ù. ÇϳªÀÇ ÇÁ·Î¼¼½º´Â ¿©·¯ ±×·ì¿¡ ¼ÓÇÒ ¼ö ÀÖ°í (±âº»°ªÀº ÃÖ´ë 32°³) À̰͵éÀº °¢ ÇÁ·Î¼¼½ºÀÇ task_struct¿¡ÀÖ´Â groups º¤ÅÍ¿¡ ÀúÀåµÇ¾î ÀÖ´Ù. ÇÁ·Î¼¼½º°¡ ¼ÓÇØ ÀÖ´Â ±×·ì ÁßÀÇ Çϳª°¡ ÆÄÀÏ¿¡ Á¢±Ù ±ÇÇÑÀ» °¡Áö°í ÀÖ´Ù ¸é, ±× ÇÁ·Î¼¼½º´Â ±× ÆÄÀÏ¿¡ ´ëÇÑ ÇØ´ç ±×·ì Á¢±Ù ±ÇÇÑÀ» °¡Áö°Ô µÈ´Ù. ÇÁ·Î¼¼½ºÀÇ task_struct¿¡´Â ³× ½ÖÀÇ »ç¿ëÀÚ ½Äº°ÀÚ¿Í ±×·ì ½Äº°ÀÚ°¡ ÀÖ´Ù. uid, gid : ÇÁ·Î¼¼½º¸¦ ½ÇÇà½ÃŲ »ç¿ëÀÚÀÇ »ç¿ëÀÚ ½Äº°ÀÚ, ±×·ì ½Äº°ÀÚ È¿·Â(effective) uid, gid : ¾î¶² ÇÁ·Î±×·¥Àº uid¿Í gid¸¦ ÇÁ·Î¼¼½º ¸¦ ½ÇÇà½ÃŲ »ç¿ëÀÚÀÇ °ÍÀ¸·ÎºÎÅÍ ÀÚ½ÅÀÇ °Í(½ÇÇà À̹ÌÁö¸¦ ±â¼ú ÇÏ´Â VFS inode¿¡ ÀúÀåµÈ ¼Ó¼º)À¸·Î º¯È­½Ãų ¼ö ÀÖ´Ù. ÀÌ·¯ÇÑ ÇÁ·Î±×·¥Àº setuid ÇÁ·Î±×·¥À¸·Î ¾Ë·ÁÁ® ÀÖÀ¸¸ç, ÀÌ·± ÇÁ·Î±×·¥ Àº ƯÈ÷ ³×Æ®¿öÅ© µ¥¸ó°ú °°ÀÌ ´Ù¸¥ ÇÁ·Î¼¼½ºÀÇ ÇÑÄÒ¿¡¼­ ½ÇÇà µÇ°í ÀÖ´Â ¼­ºñ½ºÀÇ ±ÇÇÑÀ» Á¦ÇÑÇϱâ À§ÇÑ À¯¿ëÇÑ ¹æ¹ýÀÌ µÈ´Ù. È¿·Â uid¿Í gid´Â setuid ÇÁ·Î±×·¥ÀÇ uid¿Í gidÀ̸ç, ¿ø·¡ÀÇ uid ¿Í gid´Â ±×´ë·Î ³²´Â´Ù. Ä¿³ÎÀº Ư±Ç ±ÇÇÑÀ» °Ë»çÇÒ ¶§ È¿·Â uid ¿Í gid¸¦ °Ë»çÇÑ´Ù. ÆÄÀÏ ½Ã½ºÅÛ uid, gid : ÀÌ°ÍÀº È¿·Â uid, gid¿Í °ÅÀÇ °°À¸¸ç, ÆÄÀÏ ½Ã½ºÅÛÀÇ Á¢±Ù ±ÇÇÑÀ» °Ë»çÇÒ ¶§ »ç¿ëµÈ´Ù. NFS ¸¶¿îÆ®µÈ ÆÄÀÏ ½Ã½ºÅÛ¿¡¼­ »ç¿ëÀÚ ¸ðµåÀÎ NFS ¼­¹ö°¡ ÆÄÀÏÀ» Á¢±ÙÇÒ ¶§ ¼­¹ö·Î¼­ °¡ ¾Æ´Ï¶ó ƯÁ¤ ÇÁ·Î¼¼½º·Î¼­ ÆÄÀÏÀ» Á¢±ÙÇØ¾ß Çϱ⠶§¹®¿¡ ÇÊ¿ä ÇÏ´Ù. ÀÌ·¯ÇÑ °æ¿ì¿¡´Â ÆÄÀÏ ½Ã½ºÅÛ uid¿Í gid¸¸ º¯°æµÈ´Ù (È¿·Â uid, gid´Â º¯°æµÇÁö ¾Ê´Â´Ù). ÀÌ·¸°Ô ÇÔÀ¸·Î½á ¾ÇÀǸ¦ °¡Áø »ç¿ë ÀÚ°¡ NFS ¼­¹ö¿¡°Ô kill ½Ã±×³ÎÀ» º¸³¾ ¼ö ÀÖ°Ô µÇ´Â °ÍÀ» ¸·´Â´Ù. kill ½Ã±×³ÎÀº ƯÁ¤ È¿·Â uid¿Í gid¸¦ °¡Áø ÇÁ·Î¼¼½º¿¡°Ô¸¸ Àü´Þ µÈ´Ù. ÀúÀåµÈ(saved) uid¿Í gid : ÀÌ´Â POSIX Ç¥ÁØÀÇ ¿ä±¸»çÇ׿¡ µû¸¥ °ÍÀÌ¸ç ½Ã½ºÅÛ ÄÝÀ» ÀÌ¿ëÇÏ¿© ÇÁ·Î¼¼½ºÀÇ uid¿Í gid¸¦ ¹Ù²Ù´Â ÇÁ·Î±×·¥ÀÌ »ç¿ëÇÑ´Ù. ¿ø·¡ÀÇ uid¿Í gid°¡ ¹Ù²î¾î ÀÖ´Â µ¿¾È ½ÇÁ¦ uid¿Í gid¸¦ ÀúÀåÇϴµ¥ »ç¿ëµÈ´Ù. 4.3 ½ºÄÉÁ층(scheduling) ¸ðµç ÇÁ·Î¼¼½º´Â ¾î¶³ ¶§´Â »ç¿ëÀÚ ¸ðµå(user mode)·Î, ¶Ç ¾î¶³ ¶§´Â ½Ã½º ÅÛ ¸ðµå(system mode)·Î ½ÇÇàµÈ´Ù. Çϵå¿þ¾î°¡ ÀÌ·¯ÇÑ ¸ðµå¸¦ Áö¿øÇÏ´Â ¹æ¹ýÀº »ç¿ëÇÏ´Â Çϵå¿þ¾î¿¡ µû¶ó ´Ù¸£Áö¸¸, ÀϹÝÀûÀ¸·Î »ç¿ëÀÚ ¸ðµå¿¡¼­ ½Ã½ºÅÛ ¸ðµå·Î ÀüȯÇϰųª ¹Ý´ë·Î ÀüȯÇÏ´Â ¾ÈÀüÇÑ ¸ÞÄ¿´ÏÁòÀÌ ÀÖ´Ù. »ç¿ëÀÚ ¸ðµå´Â ½Ã½ºÅÛ ¸ðµå¿¡ ºñÇÏ¿© ÈξÀ ÀûÀº ±ÇÇÑÀ» °®°í ÀÖ´Ù. ÇÁ·Î ¼¼½º´Â ½Ã½ºÅÛ ÄÝÀ» ÇÒ ¶§¸¶´Ù »ç¿ëÀÚ ¸ðµå¿¡¼­ ½Ã½ºÅÛ ¸ðµå·Î ÀüȯµÇ¾î °è¼Ó ½ÇÇàµÇ°Ô µÈ´Ù. ÀÌ ½ÃÁ¡¿¡ Ä¿³ÎÀº ÇÁ·Î¼¼½ºÀÇ ´Ù¸¥ ÇÑÆí¿¡¼­ ½ÇÇàµÈ´Ù. ¸®´ª½º¿¡¼­ ÇÁ·Î¼¼ ½º´Â ÇöÀç ½ÇÇà ÁßÀÎ ÇÁ·Î¼¼½º¸¦ ¼±Á¡ÇÏÁö ¾Ê´Â´Ù (non-preemptive). Áï, ÀڱⰡ ½ÇÇàµÇ±â À§ÇÏ¿© ´Ù¸¥ ÇÁ·Î¼¼½º¸¦ ÁߴܽÃų ¼ö ¾ø´Ù. °¢ ÇÁ·Î¼¼½º ´Â ¾î¶² ½Ã½ºÅÛ À̺¥Æ®°¡ ¹ß»ýÇϱ⸦ ±â´Ù·Á¾ß¸¸ ÇÒ ¶§ CPU¸¦ ³»³õ¾Æ¾ß °Ú´Ù°í ÆÇ´ÜÇÑ´Ù. ¿¹¸¦ µé¾î, ÇÁ·Î¼¼½º´Â ÆÄÀÏ¿¡¼­ ÇÑ ±ÛÀÚ¸¦ Àоî¿À±â À§ÇÏ¿© ±â´Ù·Á¾ß ÇÒ ¶§°¡ ÀÖ´Ù. ÀÌ ±â´Ù¸²Àº ½Ã½ºÅÛ ÄÝ µµÁß¿¡ Áï, ½Ã½ºÅÛ ¸ðµå¿¡¼­ ¹ß»ýÇÑ´Ù. ÇÁ·Î¼¼½º´Â ÆÄÀÏÀ» ¿­°í Àбâ À§ÇÏ¿© ¶óÀ̺귯¸® ÇÔ¼ö ¸¦ »ç¿ëÇϸç, À̸¦ À§ÇÏ¿© Â÷·Ê·Î ¿­¸° ÆÄÀÏ¿¡¼­ ±ÛÀÚ¸¦ Àд ½Ã½ºÅÛ ÄÝÀ» È£ÃâÇÑ´Ù. ÀÌ °æ¿ì¿¡ ±â´Ù·Á¾ß ÇÏ´Â ÇÁ·Î¼¼½º´Â ÀϽà Áß´ÜÀÌ µÇ°í ´Ù¸¥ ½ÇÇàµÉ ¸¸ÇÑ ÇÁ·Î¼¼½º°¡ ¼±ÅÃµÇ¾î ½ÇÇàµÈ´Ù. ÇÁ·Î¼¼½º´Â Ç×»ó ½Ã½ºÅÛ ÄÝÀ» È£ÃâÇÏ¸ç µû¶ó¼­ Á¾Á¾ ±â´Ù¸®°Ô µÈ´Ù. ±×·³ ¿¡µµ ºÒ±¸ÇÏ°í ¾î¶² ÇÁ·Î¼¼½º´Â ±â´Ù¸®°Ô µÉ ¶§±îÁö ³Ê¹« ¸¹Àº CPU ½Ã°£ À» »ç¿ëÇÒ ¼ö ÀÖÀ¸¸ç, ÀÌ·¯ÇÑ °æ¿ì¿¡ ¸®´ª½º´Â ¼±Á¡Çü ½ºÄÉÁ층 (pre-emptive scheduling)À» »ç¿ëÇÑ´Ù. ÀÌ Á¤Ã¥¿¡¼­´Â °¢°¢ÀÇ ÇÁ·Î¼¼½º°¡ 200msÁ¤µµÀÇ ÂªÀº ½Ã°£µ¿¾È¸¸ ½ÇÇàµÇ¸ç , ÀÌ ½Ã°£ÀÌ Áö³ª¸é ´Ù¸¥ ÇÁ·Î¼¼½º °¡ ¼±ÅÃµÇ¾î ½ÇÇàµÇ¸ç, ¿ø·¡ÀÇ ÇÁ·Î¼¼½º´Â ÀÚ½ÅÀÇ Â÷·Ê°¡ ¿Ã ¶§±îÁö ±â´Ù ¸®°ÔµÈ´Ù. ÀÌ·± ÀÛÀº ½Ã°£ÀÇ ´ÜÀ§¸¦ ŸÀÓ ½½¶óÀ̽º(time-slice)¶ó°í ÇÑ´Ù. ½ÇÇàÇÒ ¼ö ÀÖ´Â ÇÁ·Î¼¼½º Áß¿¡¼­ °¡Àå ½ÇÇàÇÒ¸¸ÇÑ °¡Ä¡°¡ ÀÖ´Â ÇÁ·Î¼¼½º¸¦ °ñ¶ó¼­ ½ÇÇàÇÏ´Â °ÍÀÌ ½ºÄÉÁì·¯(scheduler)ÀÇ ÀÏÀÌ´Ù. ½ÇÇà°¡´ÉÇÑ ÇÁ·Î ¼¼½º´Â CPU°¡ ÀÚ½ÅÀ» ½ÇÇàÇÏ±æ ±â´Ù¸°´Ù. ¸®´ª½º´Â °£´ÜÇÑ ¿ì¼±±Ç¿¡ ±â¹Ý ÇÑ ½ºÄÉÁ층 ¾Ë°í¸®ÁòÀ» »ç¿ëÇÏ¿©, ÇöÀç ÇÁ·Î¼¼½º¿Í ´Ù¸¥ ÇÁ·Î¼¼½º »çÀÌ¿¡ ¼­ ½ÇÇàÇÒ ³ðÀ» °í¸¥´Ù. ¸®´ª½º°¡ »õ·Î¿î ÇÁ·Î¼¼½º¸¦ ½ÃÅ°±â·Î ÇÏ¿´´Ù¸é, ÇöÀç ÇÁ·Î¼¼½ºÀÇ »óÅÂ¿Í ÇÁ·Î¼¼½º¿Í °ü·ÃÀÖ´Â ·¹Áö½ºÅ͵é, ´Ù¸¥ ÄÁÅؽºÆ® ¸¦ task_struct ÀڷᱸÁ¶¿¡ ÀúÀåÇÑ´Ù. ±×¸®°í ³ª¼­ ½ÇÇàÇÒ »õ ÇÁ·Î¼¼½ºÀÇ »óŸ¦ º¹¿ø(À̰͵µ ¶ÇÇÑ ÇÁ·Î¼¼¼­¿¡ µû¶ó ´Ù¸£´Ù)ÇÏ°í ½Ã½ºÅÛÀÇ Á¦¾î±ÇÀ» ±× ÇÁ·Î¼¼½º¿¡°Ô ³Ñ°ÜÁØ´Ù. ½ºÄÉÁì·¯°¡ ½Ã½ºÅÛ ³»ÀÇ ½ÇÇà°¡´ÉÇÑ ÇÁ·Î¼¼½º µé¿¡°Ô °øÁ¤ÇÏ°Ô CPU ½Ã°£À» ÇÒ´çÇϱâ À§Çؼ­ °¢°¢ÀÇ ÇÁ·Î¼¼½º¿¡ ´ëÇÑ Á¤º¸¸¦ task_struct¿¡ À¯ÁöÇÑ´Ù. Á¤Ã¥(policy) : ±× ÇÁ·Î¼¼½º¿¡ Àû¿ëµÉ ½ºÄÉÁ층 Á¤Ã¥ÀÌ´Ù. ¸®´ª½º ÇÁ·Î¼¼½º´Â º¸Åë(normal) ÇÁ·Î¼¼½º¿Í ½Ç½Ã°£(real time) ÇÁ·Î¼¼½º ÀÇ µÎ Á¾·ù·Î ³ª´©¾î Áø´Ù. ½Ç½Ã°£ ÇÁ·Î¼¼½º´Â ´Ù¸¥ ¸ðµç ÇÁ·Î ¼¼½ºµéº¸´Ù ³ôÀº ¿ì¼±±ÇÀ» °®°í ÀÖ´Ù. ¸¸¾à, ½Ç½Ã°£ ÇÁ·Î¼¼½º°¡ ½ÇÇà ´ë±âÁßÀ̶ó¸é, ÀÌ ÇÁ·Î¼¼½º°¡ Ç×»ó ¸ÕÀú ½ÇÇàµÈ´Ù. ½Ç½Ã°£ ÇÁ·Î¼¼½º´Â µÎ Á¾·ùÀÇ policy¸¦ °¡Áú¼ö ÀÖ´Ù. Çϳª´Â ¶ó¿îµå ·Îºó(round robin)ÀÌ°í, ´Ù¸¥ Çϳª´Â FIFO(first in first out)ÀÌ´Ù. ¶ó¿îµå ·Îºó ½ºÄÉÁ층¿¡¼­´Â ½ÇÇà°¡´É¸¸ °¢°¢ ÀÇ ½Ç½Ã°£ ÇÁ·Î¼¼½ºµéÀÌ Â÷·Ê·Î ½ÇÇàµÇ°í, FIFO ½ºÄÉÁ층¿¡¼­´Â °¢°¢ÀÇ ½Ç½Ã°£ ÇÁ·Î¼¼½ºµéÀÌ ½ÇÇà Å¥¿¡ ÀÖ´Â ¼ø¼­¿¡ µû¶ó¼­ ½ÇÇà µÇ¸ç ±× ¼ø¼­´Â Àý´ë·Î ¹Ù²îÁö ¾Ê´Â´Ù. ¿ì¼±±Ç(priority) : ÀÌ°ªÀº ½ºÄÉÁì·¯°¡ ÇÁ·Î¼¼½º¿¡ ÁöÁ¤ÇÑ ¿ì¼±¼øÀ§ ÀÌ´Ù. ¶ÇÇÑ ÀÌ°ªÀº ÇÁ·Î¼¼½º°¡ ½ÇÇàµÉ ¶§, ÇÁ·Î¼¼½º°¡ ½ÇÇàµÉ ¼ö ÀÖ´Â ½Ã°£(jiffies´ÜÀ§·Î)ÀÌ´Ù. ÇÁ·Î¼¼½ºÀÇ ¿ì¼±¼øÀ§´Â ½Ã½ºÅÛ ÄÝ À̳ª renice ¸í·ÉÀ» »ç¿ëÇؼ­ ÇÒ ¼ö ÀÖ´Ù. ½Ç½Ã°£ ¿ì¼±±Ç(rt_priority) : ¸®´ª½º´Â ½Ç½Ã°£ ÇÁ·Î¼¼½º¸¦ Áö¿ø Çϸç, À̰͵éÀº ½Ã½ºÅÛÀÇ ½Ç½Ã°£ÀÌ ¾Æ´Ñ ÇÁ·Î¼¼½ºµéº¸´Ù ³ôÀº ¿ì¼±¼øÀ§¸¦ °®µµ·Ï ½ºÄÉÁ층 µÈ´Ù. ÀÌ Ç׸ñÀº ½ºÄÉÁì·¯°¡ °¢°¢ÀÇ ½Ç½Ã°£ ÇÁ·Î¼¼½ºµé°£ÀÇ »ó´ëÀûÀÎ ¿ì¼±¼øÀ§¸¦ ÁöÁ¤ÇÒ ¼ö ÀÖµµ·Ï ÇÑ´Ù. ½Ç½Ã°£ ÇÁ·Î¼¼½ºµéÀÇ ¿ì¼±±Ç´Â ½Ã½ºÅÛ ÄÝÀ» »ç¿ëÇؼ­ ¹Ù²ð ¼ö ÀÖ´Ù. Ä«¿îÅÍ(counter) ÀÌ °ªÀº ÇÁ·Î¼¼½º°¡ ½ÇÇàµÉ ¼ö ÀÖ´Â ½Ã°£(jiffies ´ÜÀ§·Î)ÀÌ´Ù. ÀÌ °ªÀº ÇÁ·Î¼¼½º°¡ óÀ½ ½ÇÇàµÉ ¶§ priority °ªÀ¸·Î ¼³Á¤µÇ¸ç, Ŭ·° ƽ¿¡ µû¶ó¼­ ÁÙ¾îµç´Ù. ½ºÄÉÁì·¯´Â Ä¿³Î¾È¿¡¼­ ¿©·¯ ¸î¸î °æ¿ì¿¡ ÀÛµ¿µÈ´Ù. ½ºÄÉÁì·¯´Â ÇöÀç ÇÁ·Î ¼¼½º¸¦ ´ë±âÅ¥¿¡ ³ÖÀº ´ÙÀ½À̳ª, ½Ã½ºÅÛ ÄÝÀÌ ³¡³­ Á÷ÈÄ, ÇÁ·Î¼¼½º°¡ ½Ã½º ÅÛ ¸ðµå¿¡¼­ ÇÁ·Î¼¼½º ¸ðµå·Î µ¹¾Æ¿À±â ¹Ù·Î Àü¿¡ ½ÇÇàµÈ´Ù. ¶Ç ´Ù¸¥ °æ¿ì ´Â ½Ã½ºÅÛÀÇ Å¸À̸Ӱ¡ ÇöÀç ÇÁ·Î¼¼½ºÀÇ counterÀÇ °ªÀ» 0À¸·Î ¼³Á¤ÇÑ °æ¿ì ÀÌ´Ù. ½ºÄÉÁì·¯´Â ½ÇÇàµÉ ¶§ ´ÙÀ½°ú °°Àº ÀϵéÀ» ¼öÇàÇÑ´Ù. Ä¿³Î ÀÛ¾÷(kernel work) : ½ºÄÉÁì·¯´Â ÇϹݺΠÇڵ鷯(bottom half handler)¸¦ ½ÇÇàÇÏ°í, ½ºÄÉÁì·¯ ÀÛ¾÷Å¥(task queue)¸¦ ó¸®ÇÑ´Ù. ÀÌµé °¡º­¿î Ä¿³Î ½º·¹µåµéÀº 11Àå¿¡¼­ ÀÚ¼¼ÇÏ°Ô ´Ù·ç¾î Áø´Ù. ÇöÀç ÇÁ·Î¼¼½º(current process) : ÇöÀç ÇÁ·Î¼¼½º´Â ´Ù¸¥ ÇÁ·Î¼¼½º°¡ ¼±ÅõDZâ Àü¿¡ 󸮵Ǿî¾ß ÇÑ´Ù. ÇöÀç ÇÁ·Î¼¼½ºÀÇ ½ºÄÉÁ층 Á¤Ã¥ÀÌ ¶ó¿îµå ·ÎºóÀ̸é ÇÁ·Î¼¼½º´Â ½ÇÇàÅ¥·Î µÇµ¹¾Æ°£´Ù. ¸¸¾à ŽºÅ©°¡ ÀÎÅÍ·´Æ®¸¦ Çã¿ë(INTERRUPTIBLE)ÇÏ°í ÀÌÀü¿¡ ½ºÄÉÁì µÈ ÀÌÈÄ¿¡ ½Ã±×³Î(signal)À» ¹Þ¾ÒÀ¸¸é ½ÇÇàÁß(RUNNING) »óÅ·Π¹Ù²ï´Ù. ÇöÀç ÇÁ·Î¼¼½º°¡ ŸÀӾƿôµÇ¸é, ÀÌ°ÍÀº ½ÇÇàÁß(RUNNING) »óÅ°¡ µÈ´Ù. ¸¸¾à ÇöÀç ÇÁ·Î¼¼½º°¡ ½ÇÇàÁß(RUNNING) »óÅÂÀ̸é, ±× »óÅ°¡ À¯Áö µÈ´Ù. ÇÁ·Î¼¼½ºµé Áß¿¡¼­ »óÅ°¡ ½ÇÇàÁß(RUNNING)À̰ųª ÀÎÅÍ·´Æ® Çã¿ë (INTERRUPTIBLE)ÀÌ ¾Æ´Ñ °ÍµéÀº ½ÇÇàÅ¥¿¡¼­ »èÁ¦µÈ´Ù. ÀÌ°ÍÀº ½ºÄÉ Áì·¯°¡ ¼öÇàÇÒ ÇÁ·Î¼¼½º¸¦ ã´Â °úÁ¤¿¡¼­ À̵éÀ» Á¦¿ÜÇÑ´Ù´Â ÀÇ¹Ì ÀÌ´Ù. ÇÁ·Î¼¼½º ¼±ÅÃ(process selection) : ½ºÄÉÁì·¯´Â ½ÇÇàÅ¥¿¡ ÀÖ´Â ÇÁ·Î ¼¼½ºµéÁß¿¡¼­ ¼öÇàÇÒ¸¸ÇÑ ÇÁ·Î¼¼½º¸¦ ã´Â´Ù. (½Ç½Ã°£ ½ºÄÉÁ층 Á¤Ã¥À» µû¸£´Â) ½Ç½Ã°£ ÇÁ·Î¼¼½º°¡ ÀÖÀ¸¸é, À̰͵éÀÌ º¸ÅëÀÇ ÇÁ·Î ¼¼½ºµéº¸´Ù ³ôÀº °¡ÁßÄ¡¸¦ °®´Â´Ù. º¸Åë ÇÁ·Î¼¼½ºÀÇ °¡ÁßÄ¡´Â counterÀÇ °ªÀÌÁö¸¸ ½Ç½Ã°£ ÇÁ·Î¼¼½º´Â counter¿¡ 1000À» ´õÇÑ °ªÀÌ´Ù. µû¶ó¼­, ½Ã½ºÅÛ¿¡ ½ÇÇà°¡´ÉÇÑ ½Ç½Ã°£ ÇÁ·Î¼¼½º°¡ ÀÖÀ¸¸é Ç×»ó ½ÇÇà°¡´ÉÇÑ º¸Åë ÇÁ·Î¼¼½ºº¸´Ù ¸ÕÀú ½ÇÇàµÈ´Ù. ÁÖ¾îÁø ŸÀÓ ½½¶óÀ̽º¸¦ ¾î´ÀÁ¤µµ ¼Ò¸ðÇÑ (Áï counter°ªÀÌ °¨¼ÒÇÑ) ÇöÀç ÇÁ·Î ¼¼½º´Â ½Ã½ºÅÛÀÇ °°Àº ¿ì¼±¼øÀ§¸¦ °¡Áø ´Ù¸¥ ÇÁ·Î¼¼½ºµéº¸´Ù ºÒ¸® Çѵ¥ ÀÌ°ÍÀº ´ç¿¬ÇÏ´Ù. ¿©·¯°³ÀÇ ÇÁ·Î¼¼½º°¡ ¶È°°Àº ¿ì¼±¼øÀ§¸¦ °®À¸¸é, ½ÇÇàÅ¥ÀÇ º¸´Ù ¾ÕÂÊ¿¡ ÀÖ´Â °ÍÀÌ ¼±ÅõȴÙ. ÇöÀç ÇÁ·Î¼¼½º ´Â ´Ù½Ã ½ÇÇàÅ¥·Î µÇµ¹¾Æ°£´Ù. ¸¹Àº ÇÁ·Î¼¼½ºµéÀÌ °°Àº ¿ì¼±¼øÀ§ÀÇ °®´Â ±ÕÇü ÀâÈù ½Ã½ºÅÛ¿¡¼­ ´Â, °¢ ÇÁ·Î¼¼½º°¡ Â÷·Ê·Î ½ÇÇàµÈ´Ù. ÀÌ°ÍÀÌ ¶ó¿îµå ·Îºó ½ºÄÉ Á층ÀÌ´Ù. ¹°·Ð, ÇÁ·Î¼¼½ºµéÀÌ ÀÚ¿øÀ» ÇÊ¿ä·Î ÇÏ°Ô µÇ¹Ç·Î, ½ÇÇà ¼ø¼­´Â ¹Ù²î°Ô µÈ´Ù. ÇÁ·Î¼¼½º ±³Ã¼(swap process) : °¡Àå ½ÇÇàÇÒ¸¸ÇÑ ÇÁ·Î¼¼½º°¡ ÇöÀç ÇÁ·Î¼¼½º°¡ ¾Æ´Ï¶ó¸é, ÇöÀç ÇÁ·Î¼¼½º´Â Áß´ÜµÇ°í »õ·Î¿î ÇÁ·Î¼¼½º °¡ ½ÇÇàµÇ¾î¾ß ÇÑ´Ù. ÇÁ·Î¼¼½º´Â ½ÇÇàÁß¿¡ CPU ·¹Áö½ºÅÍ¿Í, ½Ã½ºÅÛ ÀÇ ¹°¸®ÀûÀÎ ¸Þ¸ð¸®¸¦ »ç¿ëÇÏ°Ô µÈ´Ù. ÇÁ·Î¼¼½º°¡ ·çƾÀ» È£ÃâÇÒ ¶§¸¶´Ù ·¹Áö½ºÅÍ¿¡ ÀÖ´Â ÀÎÀÚµéÀ» ³Ñ°ÜÁÖ¸ç, È£ÃâÇÑ ·çƾÀ¸·Î µ¹¾Æ¿À±â À§ÇÑ ÁÖ¼Ò µîÀÇ °ªÀ» ½ºÅÿ¡ ÀúÀåÇصα⵵ ÇÑ´Ù. µû¶ó¼­ ½ºÄÉÁì·¯°¡ ½ÇÇàµÉ ¶§´Â ÇöÀç ÇÁ·Î¼¼½ºÀÇ ÄÁÅؽºÆ® ¾È¿¡¼­ ½ÇÇà µÇ´Â °ÍÀÌ´Ù. Ư±Ç ¸ðµåÀÎ Ä¿³Î ¸ðµå¿¡ ÀÖ±â´Â ÇÏÁö¸¸, ½ÇÇàÁßÀÎ °ÍÀº ¾ÆÁ÷ ÇöÀç ÇÁ·Î¼¼½ºÀÌ´Ù. ÀÌ ÇÁ·Î¼¼½º°¡ ÁßÁöµÉ ¶§´Â ÇÁ·Î ±×·¥ Ä«¿îÅÍ(PC)¿Í ÇÁ·Î¼¼¼­ÀÇ ·¹Áö½ºÅÍ ÀüºÎ¸¦ Æ÷ÇÔÇÏ¿© ¸ðµç ±â°èÀûÀÎ »óÅ°¡ ÇÁ·Î¼¼½ºÀÇ task_struct ÀڷᱸÁ¶¿¡ ÀúÀåµÇ¾î¾ß ÇÑ´Ù. ±×¸®°í ³ª¸é »õ·Î¿î ÇÁ·Î¼¼½ºÀÇ ¸ðµç ±â°èÀûÀÎ »óŸ¦ ·ÎµåÇØ¾ß ÇÑ´Ù. ÀÌ°ÍÀº ½Ã½ºÅÛ Á¾¼ÓÀûÀÎ ÀÛ¾÷À¸·Î, ¾î¶² CPUµµ Á¤È®È÷ µ¿ÀÏÇÑ ¹æ½ÄÀ¸·Î ÀÌ ÀÏÀ» ó¸®ÇÏÁö´Â ¾ÊÁö¸¸, ´ë°³´Â ÀÌ ÀÛ¾÷À» À§ÇÑ Çϵå¿þ¾îÀûÀÎ µµ¿òÀÌ ÀÖ´Ù. ÀÌ ÇÁ·Î¼¼½º ÄÁÅؽºÆ® ±³Ã¼´Â ½ºÄÉÁì·¯°¡ ¸¶Áö¸·À¸·Î ÇÏ´Â ÀÛ¾÷ ÀÌ´Ù. µû¶ó¼­, ÀÌÀü ÇÁ·Î¼¼½ºÀÇ ÀúÀåµÈ ÄÁÅؽºÆ®´Â ÀÌ ÇÁ·Î¼¼½º°¡ ½ºÄÉÁì·¯ÀÇ ¸¶Áö¸·¿¡ ÀÖ´Â Çϵå¿þ¾î ÄÁÅؽºÆ®¿¡ ´ëÇÑ ¼ø°£»çÁø ÀÌ´Ù. ¸¶Âù°¡Áö·Î, »õ·Î¿î ÇÁ·Î¼¼½ºÀÇ ÄÁÅؽºÆ®°¡ ·ÎµåµÇ¾úÀ» ¶§, ±×°ÍÀº ±× ÇÁ·Î¼¼½ºÀÇ ÇÁ·Î±×·¥ Ä«¿îÅÍ¿Í ·¹Áö½ºÅÍ ³»¿ëÀ» Æ÷ÇÔ ÇÏ¿© ½ºÄÉÁì·¯ÀÇ ¸¶Áö¸· »óŸ¦ º¸¿©ÁÖ´Â ¼ø°£»çÁøÀÏ °ÍÀÌ´Ù. ¸¸¾à, ÀÌÀü ÇÁ·Î¼¼½º³ª »õ·Î¿î ÇöÀç ÇÁ·Î¼¼½º°¡ °¡»ó ¸Þ¸ð¸®¸¦ »ç¿ëÇÑ´Ù¸é, ½Ã½ºÅÛÀÇ ÆäÀÌÁö Å×ÀÌºí ¿£Æ®¸®¸¦ °»½ÅÇÒ ÇÊ¿ä°¡ ÀÖ´Ù. ¹°·Ð ÀÌ Çൿµµ ¾ÆÅ°ÅØÃÄ¿¡ µû¶ó ´Ù¸£´Ù. ¾ËÆÄ AXP¿Í °°Àº ÇÁ·Î¼¼¼­´Â, º¯È¯ ÂüÁ¶ Å×À̺í(translation look-aside table) Áï ij½ÃµÈ ÆäÀÌÁö Å×ÀÌºí ¿£Æ®¸®¸¦ »ç¿ëÇϹǷÎ, ÀÌÀü ÇÁ·Î¼¼½º¿¡ ¼ÓÇϴ ij½ÃµÈ Å×ÀÌºí ¿£Æ®¸®¸¦ Áö¿ö¾ß¸¸ ÇÑ´Ù. 4.3.1 ¸ÖƼÇÁ·Î¼¼¼­ ½Ã½ºÅÛ¿¡¼­ÀÇ ½ºÄÉÁ층 ¿©·¯°³ÀÇ CPU¸¦ °¡Áø ½Ã½ºÅÛÀº ¸®´ª½º ¼¼°è¿¡¼­ ±×¸® ÈçÇÏÁö ¾ÊÀº°ÍÀÌ´Ù. ±×·¯³ª ¸®´ª½º¸¦ SMP(Symmetric Multi-Processing,´ëĪÇü ¸ÖƼÇÁ·Î¼¼½Ì) ¿î¿µÃ¼Á¦·Î ¸¸µå·Á´Â ÀÛ¾÷ÀÌ »ó´çÈ÷ ÁøôµÇ¾ú´Ù. ÀÌ´Â ½Ã½ºÅÛ³»ÀÇ ¿©·¯ CPU°£¿¡ ÀÛ¾÷·®À» °øÁ¤ÇÏ°Ô ºÐ¹èÇÏ´Â °ÍÀÌ´Ù. °øÁ¤ÇÑ ºÐ¹è°¡ °¡Àå ¶Ñ·ÈÀÌ ³ªÅ¸´Â °÷Àº ½ºÄÉÁì·¯ÀÌ´Ù. ¸ÖƼÇÁ·Î¼¼¼­ ½Ã½ºÅÛ¿¡¼­´Â ¸ðµç ÇÁ·Î¼¼¼­°¡ ¹Ù»Ú°Ô ¾î¶² ÇÁ·Î¼¼½ºµéÀ» ½ÇÇàÇÏ°í ÀÖ±æ ¹Ù¶õ´Ù. °¢ ÇÁ·Î¼¼¼­´Â ÇöÀç ÇÁ·Î¼¼½º°¡ ŸÀÓ ½½¶óÀ̽º¸¦ ´Ù ¼Ò¸ðÇÏ¿´°Å³ª, ¾î¶² ½Ã½ºÅÛ ÀÚ¿øÀ» ±â´Ù·Á¾ß ÇÒ ¶§¸¶´Ù, µ¶¸³ÀûÀ¸·Î ½º ÄÉÁì·¯¸¦ ½ÇÇàÇÑ´Ù. SMP ½Ã½ºÅÛ¿¡¼­ ¸Ç ¸ÕÀú ÁÖ¸ñÇÒ Á¡Àº ½Ã½ºÅÛ¿¡ ÀÖ´Â idle ÇÁ·Î¼¼½º °¡ ´Ü Çϳª°¡ ¾Æ´Ï¶ó´Â °ÍÀÌ´Ù. ÇϳªÀÇ ÇÁ·Î¼¼¼­°¡ ÀÖ´Â ½Ã½ºÅÛ¿¡¼­´Â task º¤ÅÍÀÇ Ã¹¹ø° ŽºÅ©°¡ idle ÇÁ·Î¼¼½ºÀÌ´Ù. ¹Ý¸é¿¡ SMP ½Ã½ºÅÛ¿¡¼­´Â CPU¸¶´Ù ÇϳªÀÇ idle ÇÁ·Î¼¼½º°¡ ÀÖÀ¸¸ç, µû¶ó¼­ Çϳª ÀÌ»óÀÇ idle CPU°¡ ÀÖÀ» ¼ö ÀÖ´Ù. °Ô´Ù°¡ CPU¸¶´Ù Çϳª¾¿ÀÇ ÇöÀç ÇÁ·Î¼¼ ½º°¡ ÀÖÀ¸¹Ç·Î, SMP ½Ã½ºÅÛ¿¡¼­´Â °¢ ÇÁ·Î¼¼¼­º°·Î ÇöÀç ÇÁ·Î¼¼½º¿Í idle ÇÁ·Î¼¼½º¸¦ °ü¸®ÇÏ¿©¾ß ÇÑ´Ù. SMP ½Ã½ºÅÛ¿¡¼­ °¢ ÇÁ·Î¼¼½ºÀÇ task_struct¿¡´Â ÀÚ½ÅÀÌ ÇöÀç ½ÇÇàµÇ°í ÀÖ´Â ÇÁ·Î¼¼¼­ ¹øÈ£(processor)¿Í ¸¶Áö¸·À¸·Î ½ÇÇàÇÏ¿´´ø ÇÁ·Î¼¼¼­ÀÇ ¹øÈ£ (last_processor)°¡ µé¾îÀÖ´Ù. ¾î¶² ÇÁ·Î¼¼½º¸¦ ½ÇÇàÇϵµ·Ï ¼±ÅÃÇÒ ¶§¸¶ ´Ù ´Ù¸¥ CPU¿¡¼­ ½ÇÇàÇÏÁö ¸øÇÒ ÀÌÀ¯´Â ¾øÁö¸¸, ¸®´ª½º´Â processor_mask ¸¦ ÀÌ¿ëÇÏ¿© ±× ÇÁ·Î¼¼½º°¡ ½Ã½ºÅÛÀÇ Æ¯Á¤ ÇÁ·Î¼¼¼­ ¶Ç´Â ¸î°³ÀÇ ÇÁ·Î¼¼¼­ ¿¡¼­¸¸ ½ÇÇàµÇµµ·Ï Á¦ÇÑÇÒ ¼ö ÀÖ´Ù. ¸¸¾à NºñÆ®°¡ ¼³Á¤µÇ¾î ÀÖÀ¸¸é ±× ÇÁ·Î¼¼½º´Â ÇÁ·Î¼¼¼­ N¿¡¼­¸¸ ½ÇÇàµÉ ¼ö ÀÖ´Ù. ½ºÄÉÁì·¯°¡ ½ÇÇàÇÒ »õ·Î¿î ÇÁ·Î¼¼½º¸¦ °í¸¦ ¶§ processor_mask¿¡ ÇöÀç ÇÁ·Î¼¼¼­ÀÇ ¹øÈ£°¡ ¼³Á¤µÇ¾î ÀÖÁö ¾ÊÀº ÇÁ·Î¼¼½º´Â °í·ÁÇÏÁö ¾Ê´Â´Ù. ½ºÄÉÁì·¯´Â ¸¶Áö¸·À¸·Î ÇöÀç ÇÁ·Î¼¼¼­¿¡¼­ ½ÇÇàµÇ¾ú´ø ÇÁ·Î¼¼½º¿¡°Ô ¾à°£ À¯¸®ÇÏ°Ô ÇØÁØ´Ù. ÀÌ´Â ÇÑ ÇÁ·Î¼¼½º¸¦ ´Ù¸¥ ÇÁ·Î¼¼¼­·Î ¿Å±æ ¶§ ¼º´É»óÀÇ ¿À¹öÇìµå°¡ ¹ß»ýÇÏ´Â °æ¿ì °¡ Á¾Á¾ Àֱ⠶§¹®ÀÌ´Ù. fs_struct inode +-------+ +-------+ +-->| count | +-->| | | +-------+ | | | | | umask | 0x022 | | | | +-------+ | | | task_struct | | *root |-------+ | | | | | +-------+ | | +---------+ | | *pwd |-------+ +-------+ | fs |--+ +-------+ | +---------+ | inode | files |--+ | +-------+ +---------+ | +-->| | | | | | | | | | files_struct | | | +----------+ | | +-->| | | | +----------+ | | | close_on | +-------+ | _exec | +----------+ | open_fs | +----------+ | fd[0] | file inode +----------+ +-----------+ +-------+ | fd[1] |------->| f_mode | +-->| | +----------+ +-----------+ | | | | | | f_pos | | | | | | +-----------+ | | | +----------+ | f_flags | | | | | fd[255] | +-----------+ | | | +----------+ | f_count | | +-------+ +-----------+ | | f_owner | | +-----------+ | | f_inode |---+ +-----------+ | f_op |----->file opertion +-----------+ routines | f_version | +-----------+ ±×¸² 4.1 : A Process's Files 4.4 ÆÄÀÏ ±×¸² 4.1Àº °¢ ÇÁ·Î¼¼½ºÀÇ ÆÄÀÏ ½Ã½ºÅÛ °ü·Ã Á¤º¸¸¦ ÀúÀåÇÏ´Â µÎ°¡Áö ÀÚ·á ±¸Á¶¸¦ º¸¿©ÁØ´Ù. ù¹ø°·Î, fs_struct´Â ÀÌ ÇÁ·Î¼¼½ºÀÇ VFS inode¿¡ ´ëÇÑ Æ÷ÀÎÅÍ¿Í umask ¸¦ ÀúÀåÇÏ°í ÀÖ´Ù. umask´Â »õ·Î¿î ÆÄÀÏÀÌ ¸¸µé¾îÁú ¶§ÀÇ ±âº» ¸ðµåÀÌ¸ç ½Ã½ºÅÛ ÄÝ¿¡ ÀÇÇØ ¹Ù²ð ¼ö ÀÖ´Ù. µÎ¹ø° ÀڷᱸÁ¶ÀÎ files_struct´Â ÇöÀç ÇÁ·Î¼¼½º°¡ »ç¿ëÇÏ°í ÀÖ´Â ¸ðµç ÆÄÀϵ鿡 ´ëÇÑ Á¤º¸¸¦ °¡Áö°í ÀÖ´Ù. ÇÁ·Î±×·¥Àº Ç¥ÁØ ÀÔ·Â(standard input) ¿¡¼­ Àаí, Ç¥ÁØ Ãâ·Â(standard output)À¸·Î ¾´´Ù. ¿¡·¯ ¸Þ½ÃÁö´Â ¸ðµÎ Ç¥ÁØ ¿¡·¯(standard error)·Î °¡°Ô µÈ´Ù. À̵éÀº ÆÄÀÏÀϼöµµ ÀÖ°í, ´Ü¸» ÀÔ/Ãâ·ÂÀ̳ª, ½ÇÁ¦ ÀåÄ¡Àϼöµµ ÀÖÀ¸³ª, ÇÁ·Î±×·¥¿¡ À־ ÀÌµé ¸ðµÎ´Â ÆÄÀϷΠ󸮵ȴÙ. °¢ ÆÄÀÏÀº ÀÚ½ÅÀ» ³ªÅ¸³»´Â ±â¼úÀÚ(descriptor)¸¦ °¡Áö ¸ç, files_struct´Â ÀÌ ÇÁ·Î¼¼½º°¡ »ç¿ëÇÏ´Â ÆÄÀÏÀ» ±â¼úÇÏ´Â file ÀÚ·á ±¸Á¶¿¡ ´ëÇÑ Æ÷ÀÎÅ͸¦ 256°³±îÁö °¡Áø´Ù. f_mode Ç׸ñÀº ÆÄÀÏÀÌ ¸¸µé¾îÁú ¶§ÀÇ ¸ðµå(Àбâ Àü¿ë, ÀÐ°í ¾²±â, ¾²±â Àü¿ë)¸¦ ³ªÅ¸³½´Ù. f_pos¿¡´Â ´ÙÀ½ ¹ø¿¡ Àаųª ¾µ À§Ä¡°¡ µé¾î ÀÖ´Ù. f_inode´Â ±× ÆÄÀÏ¿¡ ÇØ´çÇÏ´Â VFS inode¸¦ °¡¸®Å°°í ÀÖÀ¸¸ç, f_ops´Â ±× ÆÄÀÏ¿¡ ´ëÇÏ¿© ¹«¾ð°¡ ÇÏ·Á°í ÇÒ ¶§ »ç¿ëÇÒ ¼ö ÀÖ´Â ·çƾµéÀÇ ÁÖ¼ÒÀÇ º¤Å͸¦ °¡¸®Å²´Ù. ÀÌ·± ÇÔ¼ö·Î µ¥ÀÌÅÍ ¾²±â ÇÔ¼ö¸¦ µé ¼ö ÀÖ´Ù. ÀÌ·¸°Ô ÀÎÅÍÆäÀ̽º¸¦ Ãß»óÈ­ÇÏ´Â °ÍÀº ¸Å¿ì °­·Â ÇÏ¸ç ¸®´ª½º°¡ ¹æ´ëÇÑ Á¾·ùÀÇ ÆÄÀÏ À¯ÇüÀ» Áö¿øÇÒ ¼ö ÀÖµµ·Ï ÇØÁØ´Ù. µÚ¿¡¼­ »ìÆ캸°ÚÁö¸¸ ¸®´ª½º¿¡¼­ ÆÄÀÌÇÁ´Â ÀÌ·¯ÇÑ ¸ÞÄ¿´ÏÁòÀ» ÅëÇÏ¿© ±¸Çö µÇ¾ú´Ù. ÇϳªÀÇ ÆÄÀÏÀÌ ¿­ ¶§¸¶´Ù files_struct¿¡ ÀÖ´Â ºó file Æ÷ÀÎÅÍ Áß Çϳª°¡ »õ·Î¿î file ÀڷᱸÁ¶¸¦ °¡¸®Å°±â À§ÇØ »ç¿ëµÈ´Ù. ¸®´ª½º ÇÁ·Î¼¼½º´Â óÀ½ ½ÃÀÛÇÒ ¶§ ¼¼°³ÀÇ ÆÄÀÏ ±â¼úÀÚ°¡ ¿­·Á ÀÖ´Ù°í »ý°¢ÇÑ´Ù. Ç¥ÁØ ÀÔ·Â, Ç¥ÁØ Ãâ·Â, Ç¥ÁØ ¿¡·¯°¡ ±× ¼¼°¡Áö·Î, À̵éÀº ´ë°³ ±× ÇÁ·Î¼¼½º¸¦ ¸¸µç ºÎ¸ð ÇÁ·Î¼¼½º·ÎºÎÅÍ »ó¼ÓµÈ´Ù. ÆÄÀÏ¿¡ ´ëÇÑ ¸ðµç Á¢±ÙÀº Ç¥ÁØ ½Ã½ºÅÛ ÄÝÀ» ÅëÇϸç, ¿©±â¿¡ ÆÄÀÏ ±â¼úÀÚ¸¦ ³Ñ°ÜÁְųª µÇµ¹·Á ¹Þ°Ô µÈ´Ù. ÀÌµé ±â¼úÀÚ ´Â ÇÁ·Î¼¼½ºÀÇ fd º¤ÅÍ¿¡ ´ëÇÑ À妽º °ªÀ¸·Î, Ç¥ÁØ ÀÔ·Â, Ç¥ÁØ Ãâ·Â, Ç¥ÁØ ¿¡·¯´Â °¢°¢ 0, 1, 2 ÀÇ ±â¼úÀÚ¸¦ °®°í ÀÖ´Ù. ÆÄÀÏ¿¡ ´ëÇÑ Á¢±ÙÀº file ÀڷᱸÁ¶ÀÇ ÆÄÀÏ ¿¬»ê ·çƾ°ú VFS inode¸¦ °°ÀÌ »ç¿ëÇÑ´Ù. 4.5 °¡»ó ¸Þ¸ð¸®(Virtual Memory) ÇÁ·Î¼¼½ºÀÇ °¡»ó ¸Þ¸ð¸®¿¡´Â ¿©·¯ ¼Ò½º¿¡¼­ ³ª¿Â ½ÇÇà°¡´ÉÇÑ ÄÚµå¿Í µ¥ÀÌ ÅÍ°¡ µé¾î ÀÖ´Ù. ù¹ø°·Î, ·ÎµåµÈ ÇÁ·Î±×·¥ÀÇ À̹ÌÁö°¡ ÀÖ´Ù. ls °°Àº ¸í·ÉÀ» ¿¹·Î »ý°¢ÇØ º¸ÀÚ. ÀÌ ¸í·ÉÀº ´Ù¸¥ ½ÇÇà À̹ÌÁö¿Í ¸¶Âù°¡Áö·Î ½ÇÇà°¡´ÉÇÑ ÄÚµå¿Í µ¥ÀÌ ÅÍ·Î ±¸¼ºµÇ¾î ÀÖ´Ù. À̹ÌÁö ÆÄÀÏ¿¡´Â ½ÇÇà°¡´ÉÇÑ ÄÚµå¿Í ÇØ´çµÇ´Â ÇÁ·Î±×·¥ µ¥ÀÌÅ͸¦ ÇÁ·Î¼¼½º ÀÇ °¡»ó ¸Þ¸ð¸®¿¡ ·ÎµåÇϱâ À§ÇØ ÇÊ¿äÇÑ ¸ðµç Á¤º¸°¡ µé¾î ÀÖ´Ù. µÎ ¹ø° ·Î, ÇÁ·Î¼¼½º´Â ó¸® °úÁ¤¿¡¼­ ÇÊ¿ä¿¡ ÀÇÇÏ¿© - ¿¹¸¦ µé¾î, Àаí ÀÖ´Â ÆÄÀÏÀÇ ³»¿ëÀ» ´ã±â À§ÇÏ¿© - (°¡»ó) ¸Þ¸ð¸®¸¦ ÇÒ´ç¹ÞÀ» ¼ö ÀÖ´Ù. ÀÌ·¸°Ô »õ·Î ÇÒ´çµÈ °¡»ó ¸Þ¸ð¸®¸¦ ½ÇÁ¦·Î »ç¿ëµÇ±â À§Çؼ­´Â ÇÁ·Î¼¼½ºÀÇ °¡»ó ¸Þ¸ð¸®¿Í ¿¬°áµÇ¾î¾ß ÇÑ´Ù. ¼¼¹ø°·Î, ¸®´ª½º ÇÁ·Î¼¼½º´Â ÆÄÀÏ Ã³¸® ·çƾ °ú °°ÀÌ °øÅëÀûÀ¸·Î À¯¿ëÇÏ°Ô ¾²ÀÌ´Â ÄÚµåÀÇ ¶óÀ̺귯¸®¸¦ »ç¿ëÇÏ°í ÀÖ´Ù. ¸ðµç ÇÁ·Î¼¼½º°¡ ¶È°°Àº ¶óÀ̺귯¸®ÀÇ º¹»çÆÇÀ» ÇÑ°³¾¿ °®°í Àִ´ٴ °Í Àº ¸»ÀÌ ¾ÈµÇ¸ç, ¸®´ª½º´Â ½ÇÇàµÇ°í ÀÖ´Â ¿©·¯ ÇÁ·Î¼¼½º°¡ µ¿½Ã¿¡ »ç¿ëÇÒ ¼ö ÀÖ´Â °øÀ¯ ¶óÀ̺귯¸®¸¦ »ç¿ëÇÑ´Ù. ÀÌµé °øÀ¯ ¶óÀ̺귯¸®¿¡ ÀÖ´Â ÄÚµå ¿Í µ¥ÀÌÅÍ´Â ÀÌ ÇÁ·Î¼¼½ºÀÇ °¡»ó ÁÖ¼Ò °ø°£¿¡ ¿¬°áµÇ¾î¾ß ÇÒ »Ó¸¸ ¾Æ´Ï¶ó, ±× ¶óÀ̺귯¸®¸¦ °øÀ¯ÇÏ´Â ´Ù¸¥ ¸ðµç ÇÁ·Î¼¼½ºÀÇ °¡»ó ÁÖ¼Ò °ø°£°úµµ ¿¬°á µÇ¾î¾ß ÇÑ´Ù. ¾î¶² ÁÖ¾îÁø ½Ã°£ µ¿¾È ÇÑ ÇÁ·Î¼¼½º´Â °¡»ó ¸Þ¸ð¸®¿¡ µé¾î ÀÖ´Â ÄÚµå¿Í µ¥ÀÌÅ͸¦ ¸ðµÎ »ç¿ëÇÏÁö´Â ¾Ê´Â´Ù. ÄÚµå Áß¿¡´Â ¾î¶² ƯÁ¤ÇÑ °æ¿ì, ¿¹¸¦ µé¾î ÇÁ·Î¼¼½º°¡ ½ÃÀÛµÉ ¶§ ¶Ç´Â ¾î¶² À̺¥Æ®°¡ ¹ß»ýÇÒ ¶§¿¡¸¸ ÇÊ¿äÇÑ Äڵ尡 ÀÖ´Ù. ±×¸®°í °øÀ¯ ¶óÀ̺귯¸®ÀÇ ·çƾµµ ¸ðµÎ »ç¿ëÇÏ´Â °ÍÀÌ ¾Æ´Ï¶ó ÀϺθ¸ »ç¿ëÇÑ´Ù. µû¶ó¼­ ¾È ¾²ÀÏ ¼öµµ ÀÖ´Â Äڵ带 ½ÇÁ¦ ¸Þ¸ð¸® ¿¡ ¸ðµÎ ·ÎµåÇÏ´Â °ÍÀº ³¶ºñ°¡ µÉ ¼ö ÀÖ´Ù. ÀÌ·¯ÇÑ ³¶ºñ°¡ ½Ã½ºÅÛ³»ÀÇ ÇÁ·Î¼¼½º ¼ö¸¸Å­ ¹Ýº¹µÈ´Ù¸é ½Ã½ºÅÛÀº ¸Å¿ì ºñÈ¿À²ÀûÀ¸·Î ½ÇÇàµÉ °ÍÀÌ´Ù. ´ë½Å¿¡ ¸®´ª½º´Â ¿ä±¸ ÆäÀÌ¡(demand paging)À̶ó´Â ±â¹ýÀ» »ç¿ëÇÑ´Ù. ¿ä±¸ ÆäÀÌ¡¿¡¼­´Â ÇÁ·Î¼¼½ºÀÇ °¡»ó ¸Þ¸ð¸®¸¦ »ç¿ëÇÏ·Á°í ÇÏ´Â ¼ø°£¿¡, °¡»ó ¸Þ¸ð¸®¸¦ ½ÇÁ¦ ¸Þ¸ð¸®·Î °¡Á®¿Â´Ù. µû¶ó¼­ ¸®´ª½º Ä¿³ÎÀº ÇÁ·Î¼¼½º ÀÇ ÄÚµå¿Í µ¥ÀÌÅ͸¦ °ð¹Ù·Î ½ÇÁ¦ ¸Þ¸ð¸®¿¡ ·ÎµåÇÏ´Â ´ë½Å, ÇÁ·Î¼¼½ºÀÇ ÆäÀÌÁö Å×À̺íÀ» ¼öÁ¤ÇÏ¿© °¡»ó ¿µ¿ª¿¡´Â Á¸ÀçÇÏ°í ÀÖÁö¸¸ ½ÇÁ¦·Î´Â ¸Þ¸ð¸®¿¡ ÀÖÁö´Â ¾Ê´Ù°í Ç¥½ÃÇÑ´Ù. ¸¸¾à ÇÁ·Î¼¼½º°¡ Äڵ峪 µ¥ÀÌÅÍ¿¡ Á¢±Ù ÇÏ·Á°í Çϸé, ½Ã½ºÅÛÀº ÆäÀÌÁö ÆúÆ®¸¦ ¹ß»ýÇÏ°í, ¸®´ª½º Ä¿³Î·Î ÇÏ¿©±Ý ±× »óȲÀ» ÇØ°áÇ϶ó°í Á¦¾î±ÇÀ» ³Ñ°ÜÁØ´Ù. ÀÌ·¯ÇÑ ÆäÀÌÁö ÆúÆ®¸¦ ÇØ°á ÇÏ·Á¸é, ¸®´ª½º´Â ÇÁ·Î¼¼½ºÀÇ ÁÖ¼Ò °ø°£¿¡ ÀÖ´Â ¸ðµç °¡»ó ¸Þ¸ð¸® ¿µ¿ª¿¡ ´ëÇØ, ±× °¡»ó ¸Þ¸ð¸®°¡ ¾îµð¿¡¼­ ¿ÔÀ¸¸ç ¾î¶»°Ô ¸Þ¸ð¸®¿¡ ·ÎµåÇÒ ¼ö ÀÖ´Â Áö¸¦ ¾Ë¾Æ¾ß¸¸ ÇÑ´Ù. ¸®´ª½º Ä¿³ÎÀº ÀÌµé °¡»ó ¸Þ¸ð¸®ÀÇ ¸ðµç ¿µ¿ªÀ» °ü¸®ÇÒ ÇÊ¿ä°¡ ÀÖ´Ù. °¢ ÇÁ·Î¼¼½ºÀÇ °¡»ó ¸Þ¸ð¸®ÀÇ ³»¿ëÀº task_struct¿¡¼­ °¡¸®Å°°í ÀÖ´Â mm_struct¶ó´Â ÀڷᱸÁ¶¿¡ ¼³¸íµÇ¾î ÀÖ´Ù. ÇÁ·Î¼¼½ºÀÇ mm_struct ÀÚ·á ±¸Á¶´Â ·ÎµåµÈ ½ÇÇà À̹ÌÁö¿¡ ´ëÇÑ Á¤º¸¿Í ÇÁ·Î¼¼½ºÀÇ ÆäÀÌÁö Å×ÀÌºí¿¡ ´ëÇÑ Æ÷ÀÎÅ͵µ °®°í ÀÖ´Ù. ¿©±â¿¡´Â ±× ÇÁ·Î¼¼½ºÀÇ °¢ °¡»ó ¸Þ¸ð¸® ¿µ¿ªÀ» ³ªÅ¸³»´Â vm_area_struct ÀڷᱸÁ¶ÀÇ ¸®½ºÆ®¿¡ ´ëÇÑ Æ÷ÀÎÅ͵µ µé¾î ÀÖ´Ù. ÀÌ ¿¬°á ¸®½ºÆ®´Â °¡»ó ¸Þ¸ð¸®¿¡¼­ ¿À¸§Â÷¼øÀ¸·Î µÇ¾î ÀÖÀ¸¸ç, ±×¸² 4.2´Â °£´ÜÇÑ ÇÁ·Î¼¼½º¿¡¼­ °¡»ó ¸Þ¸ð¸®ÀÇ ¹èÄ¡»óȲ°ú ±×°ÍÀ» °ü¸®Çϱâ À§ÇÑ Ä¿³Î ÀڷᱸÁ¶¸¦ º¸¿©ÁØ´Ù. °¡»ó ¸Þ¸ð¸®ÀÇ ¿µ¿ªµéÀº ¿©·¯ ¼Ò½º·ÎºÎÅÍ ³ª¿À ¹Ç·Î, ¸®´ª½º´Â ¿©·¯°³ÀÇ °¡»ó ¸Þ¸ð¸® ó¸® ·çƾÀ» vm_area_struct¿¡ ÀÖ´Â vm_ops¸¦ ÅëÇÏ¿© °¡¸®Å°°Ô ÇÔÀ¸·Î½á ÀÎÅÍÆäÀ̽º¸¦ Ãß»óÈ­ ÇÏ¿´´Ù. ÀÌ·¸°Ô ÇÔÀ¸·Î½á ÇϺΠ¼­ºñ½º°¡ ¸Þ¸ð¸®¸¦ ¿©·¯°¡Áö ´Ù¸¥ ¹æ½ÄÀ¸·Î °ü¸®ÇÏ´Â °Í°ú »ó°ü¾øÀÌ ÇÁ·Î¼¼½ºÀÇ °¡»ó ¸Þ¸ð¸®¸¦ ÀÏ°ü¼ºÀÖ°Ô Ã³¸®ÇÒ ¼ö ÀÖ°Ô µÈ´Ù. ¿¹ ¸¦ µé¾î, ¿©±â¿¡´Â ¾î¶² ÇÁ·Î¼¼½º°¡ ¸Þ¸ð¸®¿¡ Á¢±ÙÇϴµ¥ ±× ¸Þ¸ð¸®°¡ Á¸ÀçÇÏÁö ¾ÊÀ» ¶§ ºÒ¸®´Â ·çƾÀÌ µé¾î ÀÖ´Ù. ÆäÀÌÁö ÆúÆ®´Â ÀÌ·¯ÇÑ ¹æ½ÄÀ¸·Î 󸮵ȴÙ. Processes Virtual Memory +----------+ | | | | task_struct +----------+ | | mm_struct vm_area_struct +->| | +--------+ +--------+ +----------+ | | | | mm |-->| count | +-->| vm_end |---+ | | +--------+ +--------+ | +----------+ | | | | | pgd | | | vm_start |---+ | | | | +--------+ | +----------+ | | Data | | | | | | | vm_flags | | | | | | | +----------+ | | | | | | | vm_inode | | | | | | | +----------+ | | | +--------+ | | vm_ops | | | | | mmap |-+ +----------+ +->| | 0x8059BB8 +--------+ | | +----------+ |mmap_avl| +----------+ | | +--------+ | vm_next |---+ | | |mmap_sem| +----------+ | | | +--------+ +------------------+ | | | +----------+ | vm_area_struct +>| | | +----------+ | | | +-->| vm_end |----+ | Code | +----------+ | | | vm_start |----->| | 0x8048000 +----------+ +----------+ | vm_flags | | | +----------+ | | | vm_inode | | | +----------+ | | | vm_ops | | | +----------+ | | | | | | +----------+ | | | vm_next | | | +----------+ | | | | 0x0000000 +----------+ ±×¸² 4.2 : A Process's Virtual Memory ¸®´ª½º Ä¿³ÎÀº ÀÌ ÇÁ·Î¼¼½º ¿ëÀ¸·Î °¡»ó ¸Þ¸ð¸®¿¡ »õ·Î¿î ¿µ¿ªÀ» ¸¸µé°Å ³ª, ¹°¸®Àû ¸Þ¸ð¸® »ó¿¡ ÀÖÁö ¾ÊÀº °¡»ó ¸Þ¸ð¸®¿¡ ´ëÇÑ ÂüÁ¶¸¦ ÇØ°áÇÒ ¶§, ÀÌ ÇÁ·Î¼¼½ºÀÇ vm_area_struct ÀڷᱸÁ¶ ÁýÇÕÀ» ÀÚÁÖ ¾×¼¼½ºÇÏ°Ô µÈ´Ù. µû¶ó¼­ ¿Ã¹Ù¸¥ vm_area_struct¸¦ ã´Â µ¥ °É¸®´Â ½Ã°£Àº ½Ã½ºÅÛÀÇ ¼º´É¿¡ Å« ¿µÇâÀ» ¹ÌÄ£´Ù. ÀÌ ¾×¼¼½º¸¦ ºü¸£°Ô Çϱâ À§ÇÏ¿© ¸®´ª½º´Â vm_area_structÀڷᱸÁ¶¸¦ AVL(Adelson-Velskii and Landis)Æ®¸®ÀÇ ÇüÅ ·Î Á¤¸®ÇصдÙ. ÀÌ Æ®¸®¿¡¼­´Â °¢°¢ÀÇ vm_area_struct(Áï, ³ëµå)ÀÇ ¿ÞÂÊ Æ÷ÀÎÅÍ¿Í ¿À¸¥ÂÊ Æ÷ÀÎÅÍ´Â ÀÎÁ¢ÇÏ´Â vm_area_struct¿¡ ´ëÇÑ Æ÷ÀÎÅÍÀÌ´Ù. ¿ÞÂÊ Æ÷ÀÎÅÍ°¡ °¡¸®Å°´Â ³ëµå´Â ´õ ³·Àº ½ÃÀÛ °¡»ó ÁÖ¼Ò¸¦ °®°í ÀÖÀ¸¸ç, ¿À¸¥ÂÊ Æ÷ÀÎÅÍ°¡ °¡¸®Å°´Â ³ëµå´Â ´õ ³ôÀº ½ÃÀÛ °¡»ó ÁÖ¼Ò¸¦ °®°í ÀÖ´Ù. ¸Â´Â ³ëµå¸¦ ãÀ» ¶§´Â Æ®¸®ÀÇ ·çÆ®·ÎºÎÅÍ ½ÃÀÛÇÏ¿© ãÀ¸·Á´Â vm_area_struct¸¦ ãÀ» ¶§±î Áö ¿ÞÂÊ ¶Ç´Â ¿À¸¥ÂÊ Æ÷ÀÎÅ͸¦ µû¶ó°£´Ù. ¹°·Ð ¼¼»ó¿¡´Â °øÂ¥°¡ ¾ø±â ¶§¹® ¿¡ »õ·Î¿î vm_area_struct¸¦ ÀÌ Æ®¸®¿¡ Áý¾î ³Ö´Âµ¥¿¡´Â Ãß°¡ÀûÀΠó¸® ½Ã°£ÀÌ ÇÊ¿äÇÏ´Ù. ¾î¶² ÇÁ·Î¼¼½º°¡ °¡»ó ¸Þ¸ð¸®¸¦ ÇÒ´ç¹ÞÀ» ¶§ ¸®´ª½º´Â ½ÇÁ¦ ¸Þ¸ð¸®¸¦ ÁøÂ¥ ·Î È®º¸ÇØ µÎÁö´Â ¾Ê´Â´Ù. ´ë½Å »õ·Î¿î vm_area_struct ÀڷᱸÁ¶¸¦ ¸¸µé¾î °¡»ó ¸Þ¸ð¸®¸¦ ³ªÅ¸³½´Ù. ÀÌ ÀڷᱸÁ¶´Â ÇÁ·Î¼¼½ºÀÇ °¡»ó ¸Þ¸ð¸® ¸®½ºÆ®¿¡ ¿¬°áµÈ´Ù. ÇÁ·Î¼¼½º°¡ »õ·Î¿î °¡»ó ¸Þ¸ð¸® ¿µ¿ª ¾ÈÀÇ ¾î¶² ÁÖ¼Ò¿¡ °ªÀ» ¾²·Á°í Çϸé ÆäÀÌÁö ÆúÆ®°¡ ¹ß»ýÇÏ°Ô µÈ´Ù. ÇÁ·Î¼¼¼­´Â °¡»ó ÁÖ¼Ò¸¦ Çؼ® ÇÏ·Á°í ÇÏÁö¸¸, ÀÌ ¸Þ¸ð¸®¿¡ ´ëÇؼ­ ÆäÀÌÁö Å×ÀÌºí ¿£Æ®¸®°¡ Á¸ÀçÇÏÁö ¾Ê±â ¶§¹®¿¡, ÇÁ·Î¼¼¼­´Â À̸¦ Æ÷±âÇÏ°í ÆäÀÌÁö ÆúÆ® ¿¹¿Ü¸¦ ¹ß»ýÇϸç, ¸®´ª½º Ä¿³ÎÀÌ À̸¦ ¼öÁ¤Çϵµ·Ï ÇÑ´Ù. ¸®´ª½º´Â ÂüÁ¶µÈ °¡»ó ÁÖ¼Ò°¡ ÇöÀç ÇÁ·Î¼¼½ºÀÇ °¡»ó ÁÖ¼Ò °ø°£¿¡ ÀÖ´ÂÁö ã´Â´Ù. ±×·¸´Ù¸é ¸®´ª½º´Â ÇØ´çÇÏ´Â PTE¸¦ »ý¼ºÇÏ°í, ¹°¸®Àû ¸Þ¸ð¸® ÆäÀÌÁö¸¦ ÇÒ´çÇÑ´Ù. Äڵ峪 µ¥ÀÌÅÍ´Â ÆÄÀϽýºÅÛÀ̳ª ½º¿Ò µð½ºÅ©·ÎºÎÅÍ ¹°¸®Àû ÆäÀÌÁö·Î °¡Á® ¿Í¾ß ÇÒ ¼öµµ ÀÖ´Ù. ÀÌÁ¦ ÇÁ·Î¼¼½º´Â ÆäÀÌÁö ÆúÆ®¸¦ ¹ß»ýÇÑ ¸í·É¿¡¼­ºÎÅÍ ´Ù½Ã ½ÃÀÛÇÒ ¼ö ÀÖÀ¸¸ç, ÀÌÁ¦ ¸Þ¸ð¸®°¡ ¹°¸®ÀûÀ¸·Î Á¸ÀçÇϹǷΠÀÛ¾÷À» °è¼ÓÇÒ ¼ö ÀÖ´Ù. 4.6 ÇÁ·Î¼¼½º »ý¼ºÇϱ⠽ýºÅÛÀÌ Ã³À½ ½ÃÀÛµÉ ¶§ ½Ã½ºÅÛÀº Ä¿³Î¸ðµå¿¡ ÀÖÀ¸¸ç, Ãʱâ ÇÁ·Î¼¼½º¶ó´Â ´Ü ÇϳªÀÇ ÇÁ·Î¼¼½º¸¸ Á¸ÀçÇÑ´Ù. ´Ù¸¥ ÇÁ·Î¼¼½ºµé°ú °°ÀÌ Ãʱâ ÇÁ·Î¼¼½º´Â ½ºÅðú ·¹Áö½ºÅÍ µîÀ¸·Î ´ëÇ¥µÇ´Â ±â°è »óŸ¦ °®°í ÀÖ´Ù. À̰͵éÀº ½Ã½º ÅÛÀÇ ´Ù¸¥ ÇÁ·Î¼¼½ºµéÀÌ ¸¸µé¾îÁö°í ½ÇÇàµÉ ¶§, Ãʱâ ÇÁ·Î¼¼½ºÀÇ task_struct ±¸Á¶¿¡ ÀúÀåµÈ´Ù. ½Ã½ºÅÛ ÃʱâÈ­ÀÇ ¸¶Áö¸· ´Ü°è¿¡¼­, Ãʱâ ÇÁ·Î¼¼½º´Â init¶ó°í ÇÏ´Â Ä¿³Î ¾²·¹µå¸¦ ½ÃÀÛÇÏ°í ¾Æ¹«Àϵµ ÇÏÁö¾Ê´Â ·çÇÁ·Î µé¾î°£´Ù. ¾ðÁ¦³ª ´Ù¸¥ ÇÒ ÀÏÀÌ ¾øÀ¸¸é ½ºÄÉÁì·¯´Â ÀÌ idle ÇÁ·Î ¼¼½º¸¦ ½ÇÇàÇÑ´Ù. idle ÇÁ·Î¼¼½ºÀÇ task_struct´Â À¯ÀÏÇÏ°Ô µ¿ÀûÀ¸·Î ÇÒ´ç µÈ °ÍÀÌ ¾Æ´Ï°í Ä¿³ÎÀÌ »ý¼ºµÉ ¶§ Á¤ÀûÀ¸·Î Á¤ÀÇµÈ °ÍÀ¸·Î, Á¶±Ý È¥¶õ½º·´ °ÚÁö¸¸ init_task¶ó°í ÇÑ´Ù. init Ä¿³Î ¾²·¹µå(¶Ç´Â ÇÁ·Î¼¼½º)´Â ½Ã½ºÅÛÀÇ Ã¹¹ø° ÁøÂ¥ ÇÁ·Î¼¼½º·Î, ÇÁ·Î¼¼½º ½Äº°ÀÚ·Î 1À» °®´Â´Ù. ÀÌ ÇÁ·Î¼¼½º´Â ½Ã½ºÅÛ ÃʱâÈ­ÀÇ ÀϺθ¦ ´ã´çÇÏ°í (½Ã½ºÅÛ ÄܼÖÀ» ¿­°í, ·çÆ® ÆÄÀÏ ½Ã½ºÅÛÀ» ¸¶¿îÆ®ÇÏ´Â °Í µî), ½Ã½ºÅÛ ÃʱâÈ­ ÇÁ·Î±×·¥À» ½ÇÇàÇÑ´Ù. ½Ã½ºÅÛ¿¡ µû¶ó¼­ ´Ù¸£Áö¸¸ /etc/init, /bin/init, /sbin/init ÁßÀÇ ÇϳªÀÌ´Ù. init ÇÁ·Î±×·¥Àº ½Ã½º ÅÛ¿¡¼­ »õ ÇÁ·Î¼¼½ºµéÀ» ¸¸µé±â À§Çؼ­ /etc/inittabÀ̶ó´Â ½ºÅ©¸³Æ® ÆÄÀÏ À» »ç¿ëÇÑ´Ù. ÀÌ »õ ÇÁ·Î¼¼½ºµéÀº ¶Ç ´Ù¸¥ ÇÁ·Î¼¼½ºµéÀ» ¸¸µé±âµµ ÇÑ´Ù. ¿¹¸¦ µé¸é, getty ÇÁ·Î¼¼½º´Â »ç¿ëÀÚ°¡ ·Î±×ÀÎÀ» ½ÃµµÇÒ ¶§ login ÇÁ·Î ¼¼½º¸¦ ¸¸µé±âµµ ÇÑ´Ù. ½Ã½ºÅÛ³»ÀÇ ¸ðµç ÇÁ·Î¼¼½ºµéÀº init Ä¿³Î ¾²·¹µåÀÇ ÀÚ¼ÕÀÌ´Ù. »õ ÇÁ·Î¼¼½ºµéÀº ¿¹ÀüÀÇ ÇÁ·Î¼¼½ºµéÀ» º¹Á¦Çϰųª ÇöÀçÀÇ ÇÁ·Î¼¼½º¸¦ º¹Á¦ Çϸ鼭 »ý¼ºµÈ´Ù. »õ ŽºÅ©´Â ½Ã½ºÅÛ ÄÝ(fork³ª clone)¿¡ ÀÇÇؼ­ ¸¸µé¾î Áö¸ç, º¹Á¦´Â Ä¿³ÎÀÌ Ä¿³Î ¸ðµå¿¡¼­ ÇÑ´Ù. ½Ã½ºÅÛ ÄÝÀÇ ¸¶Áö¸·¿¡´Â ½ºÄÉÁì ·¯°¡ ÀÚ½ÅÀ» ¼±ÅÃÇÏ¿© ½ÇÇàÇÏ±æ ±â´Ù¸®´Â »õ·Î¿î ÇÁ·Î¼¼½º°¡ ÀÖ°Ô µÈ´Ù. »õ task_struct ÀڷᱸÁ¶°¡ ½Ã½ºÅÛÀÇ ½ÇÁ¦ ¸Þ¸ð¸®¿¡¼­ ÇÒ´çµÇ°í, Çϳª ¶Ç´Â ¸î °³ÀÇ ÆäÀÌÁö°¡ º¹Á¦µÈ ÇÁ·Î¼¼½ºÀÇ ½ºÅÃ(»ç¿ëÀÚ¿Í Ä¿³Î) ¿ëÀ¸·Î ÇÒ´çµÈ´Ù. ½Ã½ºÅÛ¿¡ ÀÖ´Â ½Äº°ÀÚµé Áß¿¡¼­ À¯ÀÏÇÑ »õ·Î¿î ½Äº°ÀÚ°¡ ¸¸µé¾î Áø´Ù. ±×¸®°í º¹Á¦µÈ ÇÁ·Î¼¼½º´Â ´ç¿¬ÇÏ°Ôµµ ºÎ¸ð ÇÁ·Î¼¼½ºÀÇ ½Äº°ÀÚ¸¦ °¡Áö°í ÀÖ´Ù. »õ task_struct°¡ task º¤ÅÍ¿¡ ÇÒ´çµÇ°í, ¿¹Àü (current) ÇÁ·Î¼¼½ºÀÇ task_structÀÇ ³»¿ëÀÌ º¹Á¦µÈ task_struct¿¡ º¹»çµÈ´Ù. ÇÁ·Î¼¼½º¸¦ º¹Á¦ÇÒ ¶§, ¸®´ª½º´Â µÎ ÇÁ·Î¼¼½º°¡ º°µµÀÇ º¹»çº»À» »ç¿ëÇÏ´Â °Ô ¾Æ´Ï¶ó ÀÚ¿øÀ» °øÀ¯Çϵµ·Ï ÇÑ´Ù. ÇÁ·Î¼¼½ºÀÇ ÆÄÀϵé, ½Ã±×³Î Çڵ鷯¿Í °¡»ó¸Þ¸ð¸®°¡ ¿©±â¿¡ ÇØ´çµÈ´Ù. ÀÚ¿øÀ» °øÀ¯ÇÒ ¶§ À̵éÀÇ count °ªÀ» Áõ°¡ ½ÃÄÑ µÎ°³ÀÇ ÇÁ·Î¼¼½º ¸ðµÎ°¡ ÀÚ¿ø »ç¿ëÀ» ¸¶Ä¡±â Àü¿¡´Â ÇÒ´çÀ» ÇØÁ¦ÇÏÁö ¸øÇϵµ·Ï ÇÑ´Ù. ±×·¡¼­, ¿¹¸¦ µé¾î º¹Á¦µÈ ÇÁ·Î¼¼½º¿Í °¡»ó ¸Þ¸ð¸®¸¦ °øÀ¯ÇÒ ¶§, ÀÌ ÇÁ·Î¼¼½ºÀÇ task_struct´Â ¿ø·¡ ÇÁ·Î¼¼½ºÀÇ mm_struct¿¡ ´ëÇÑ Æ÷ÀÎÅ͸¦ °®°í, mm_structÀÇ count °ªÀº Áõ°¡µÇ¾î¼­ À̸¦ °øÀ¯ÇÏ°í ÀÖ´Â ÇÁ·Î¼¼½ºÀÇ °³¼ö¸¦ ³ªÅ¸³½´Ù. ÇÁ·Î¼¼½ºÀÇ °¡»ó¸Þ¸ð¸®¸¦ º¹Á¦ÇÏ´Â µ¥¿¡´Â Á» ´õ Æ®¸¯À» »ç¿ëÇÑ´Ù. »õ vm_area_structÀڷᱸÁ¶µéÀº À̵éÀ» Æ÷ÇÔÇÏ´Â mm_struct ÀڷᱸÁ¶¿Í º¹Á¦ µÈ ÇÁ·Î¼¼½ºÀÇ ÆäÀÌÁö Å×À̺í°ú ÇÔ²² ¸¸µé¾î Á®¾ß ÇÑ´Ù. ÇÁ·Î¼¼½ºÀÇ °¡»ó ¸Þ¸ð¸®´Â ÀÌ ½ÃÁ¡±îÁö´Â ÀüÇô º¹»çµÇÁö ¾Ê´Â´Ù. °¡»ó ¸Þ¸ð¸®ÀÇ ÀϺδ ½ÇÁ¦ ¸Þ¸ð¸®¿¡ ÀÖ°í, ¶Ç ´Ù¸¥ ºÎºÐÀº ÇöÀç ½ÇÇàÁßÀÎ ÇÁ·Î¼¼½ºÀÇ ½ÇÇà À̹ÌÁö¿¡ ÀÖÀ¸¸ç, ¾î¶² ºÎºÐÀº ½º¿Ò ÆÄÀÏ¿¡ ÀÖÀ» ¼ö ÀÖÀ¸¹Ç·Î, ÀÌ°ÍÀº »ó´çÈ÷ ¾î·Æ°í ½Ã°£À» ¼Ò¿äÇÏ´Â ÀÏÀÌ´Ù. ´ë½Å¿¡ ¸®´ª½º´Â "±â·Ï½Ã º¹»ç (copy on write)"¶ó´Â ±â¼úÀ» »ç¿ëÇϴµ¥, ÀÌ°ÍÀº µÎ ÇÁ·Î¼¼½º Áß Çϳª°¡ ±â·ÏÀ» ½ÃµµÇÒ ¶§¸¸ °¡»ó¸Þ¸ð¸®¸¦ º¹»çÇÏ´Â °ÍÀÌ´Ù. °¡»ó ¸Þ¸ð¸® Áß¿¡¼­ ±â·ÏµÇÁö ¾ÊÀº ºÎºÐÀº (¼³»ç ±×°ÍÀÌ ¾µ ¼ö ÀÖ´Â ¿µ¿ªÀ̶ó°í ÇÏ´õ¶óµµ) ¾Æ¹« ¹®Á¦¾øÀÌ µÎ ÇÁ·Î¼¼½º »çÀÌ¿¡¼­ °øÀ¯µÈ´Ù. ½ÇÇà ÄÚµå¿Í °°Àº Àбâ Àü¿ë ¸Þ¸ð¸®´Â Ç×»ó °øÀ¯µÈ´Ù. "±â·Ï½Ã º¹»ç"°¡ µ¿ÀÛÇϱâ À§Çؼ­, ¾µ ¼ö ÀÖ´Â ¿µ¿ªµéÀÇ ÆäÀÌÁö Å×ÀÌºí ¿£Æ®¸®´Â Àбâ Àü¿ëÀ¸·Î Ç¥½ÃµÇ°í, À̸¦ ³ªÅ¸³»´Â vm_area_structÀڷᱸÁ¶ ¿¡´Â "±â·Ï½Ã º¹»ç"¶ó°í Ç¥½ÃÇÑ´Ù. ±×·¯¸é ÇÁ·Î¼¼½º Áß Çϳª°¡ ÀÌ °¡»ó ¸Þ¸ð¸®¿¡ ¾²·Á°í Çϸé ÆäÀÌÁö ÆúÆ®°¡ ¹ß»ýÇÑ´Ù. À̶§ ¸®´ª½º´Â ¸Þ¸ð¸®ÀÇ º¹»çº»À» ¸¸µé°í µÎ ÇÁ·Î¼¼½ºÀÇ ÆäÀÌÁö ¸ñ·Ï°ú °¡»ó ¸Þ¸ð¸® ±¸Á¶¸¦ Á¶Á¤ÇÑ´Ù. 4.7 ½Ã°£°ú ŸÀÌ¸Ó Ä¿³ÎÀº °¢ ÇÁ·Î¼¼½ºÀÇ »ý¼º ½Ã°£°ú, ÇÁ·Î¼¼½º°¡ »ç¿ëÇÑ CPU ½Ã°£À» °ü¸® ÇÑ´Ù. °¢ Ŭ·° ƽ¸¶´Ù Ä¿³ÎÀº ÇöÀç ÇÁ·Î¼¼½º°¡ ½Ã½ºÅÛ ¸ðµå¿Í »ç¿ëÀÚ ¸ðµå ¿¡¼­ »ç¿ëÇÑ ½Ã°£ÀÇ ¾çÀ» jiffies ´ÜÀ§·Î °è»êÇÏ¿© °»½ÅÇÑ´Ù. ÀÌµé ¿ä±Ý°è»ê¿ë ŸÀ̸ӿ¡ ¿Ü¿¡µµ, ¸®´ª½º´Â ÇÁ·Î¼¼½º°¡ ÁöÁ¤ÇÏ¿© »ç¿ëÇÒ ¼ö ÀÖ´Â °£°Ý ŸÀ̸Ӹ¦ Áö¿øÇÑ´Ù. ÇÁ·Î¼¼½º´Â À̵é ŸÀ̸Ӹ¦ À̶² ½Ã°£ÀÌ Áö³µÀ» ¶§ Àڽſ¡¼­ ¿©·¯°¡Áö ½Ã±×³ÎÀ» º¸³»´Âµ¥ »ç¿ëÇÒ ¼ö ÀÖ´Ù. ¸®´ª½º ´Â ¼¼°¡Áö Á¾·ùÀÇ °£°Ý ŸÀ̸Ӹ¦ Áö¿øÇÑ´Ù. ½ÇÁ¦(Real) ½ÇÁ¦ ½Ã°£À¸·Î¼­ÀÇ Å¸ÀÌ¸Ó Æ½À¸·Î, ŸÀ̸Ӱ¡ ¸¸·áµÇ¸é ÇÁ·Î¼¼½º´Â SIGALRM ½Ã±×³ÎÀ» ¹Þ´Â´Ù. °¡»ó(Virtual) ÇÁ·Î¼¼½º°¡ ¼öÇàÇÑ ½Ã°£À¸·Î¼­ÀÇ Å¸ÀÌ¸Ó Æ½À¸·Î, ¸¸·áµÇ¸é SIGVTALRM ½Ã±×³ÎÀ» ¹Þ´Â´Ù. À϶÷(Profile) ÇÁ·Î¼¼½º°¡ ¼öÇàÇÑ ½Ã°£°ú ÇÁ·Î¼¼½ºÀÇ ´Ù¸¥ ÇÑÆí¿¡¼­ ½Ã½ºÅÛÀÌ ¼öÇàÇÑ ½Ã°£À» ÇÕÄ£ ŸÀÌ¸Ó Æ½À¸·Î, ¸¸·áµÇ¸é SIGPROF ½Ã±×³ÎÀ» ¹Þ´Â´Ù. Çϳª ¶Ç´Â ¸ðµç °£°Ý ŸÀ̸Ӱ¡ ½ÇÇàµÉ ¼ö ÀÖÀ¸¸ç, ¸®´ª½º´Â ÇÁ·Î¼¼½ºÀÇ task_struct ÀڷᱸÁ¶¿¡ ÇÊ¿äÇÑ ¸ðµç Á¤º¸¸¦ °£Á÷ÇÑ´Ù. ½Ã½ºÅÛ ÄÝÀ» »ç¿ë ÇÏ¿© ÀÌµé °£°Ý ŸÀ̸Ӹ¦ ¼³Á¤ÇÏ°í, ½ÃÀÛÇÏ°í, ¸ØÃß°í, ÇöÀç °ªÀ» ÀÐÀ» ¼ö ÀÖ´Ù. °¡»ó ŸÀÌ¸Ó¿Í À϶÷ ŸÀ̸Ӵ ¶È°°Àº ¹æ¹ýÀ¸·Î 󸮵ȴÙ. °¢ Ŭ·° ƽ¸¶´Ù ÇöÀç ÇÁ·Î¼¼½ºÀÇ °£°Ý ŸÀ̸Ӵ °¨¼ÒÇϸç, ¸¸·áµÇ¸é ÇØ´çÇÏ´Â ½Ã±×³ÎÀ» ¹Þ´Â´Ù. ½ÇÁ¦ ½Ã°£ °£°Ý ŸÀ̸Ӵ ´Ù¸¥ ŸÀ̸ӵé°ú´Â ¾à°£ ´Ù¸£¸ç, ¸®´ª½º´Â À̵é À» À§ÇØ 11Àå¿¡¼­ ¼³¸íÇÏ°í Àִ ŸÀÌ¸Ó ¸ÞÄ¿´ÏÁòÀ» »ç¿ëÇÑ´Ù. °¢ ÇÁ·Î ¼¼½º´Â ÀÚ½ÅÀÇ timer_list ÀڷᱸÁ¶¸¦ °¡Áö°í ÀÖÀ¸¸ç, ½ÇÁ¦ °£°Ý ŸÀ̸Ӱ¡ ½ÇÇàµÇ°í ÀÖÀ¸¸é, À̸¦ ½Ã½ºÅÛ Å¸ÀÌ¸Ó ¸®½ºÆ® Å¥¿¡ ³Ö´Â´Ù. ŸÀ̸Ӱ¡ ¸¸·á µÇ¸é ŸÀÌ¸Ó ÇϹݺΠÇڵ鷯´Â À̸¦ Å¥¿¡¼­ Á¦°ÅÇÏ°í °£°Ý ŸÀÌ¸Ó Çڵ鷯¸¦ ºÎ¸¥´Ù. ÀÌ Çڵ鷯´Â SIGALRM ½Ã±×³ÎÀ» ¹ß»ýÇÏ°í, »õ·Î °£°Ý ŸÀ̸Ӹ¦ ½ÃÀÛÇÏ¿© À̸¦ ´Ù½Ã ½Ã½ºÅÛ Å¸ÀÌ¸Ó Å¥¿¡ ³Ö´Â´Ù. 4.8 ÇÁ·Î±×·¥ ½ÇÇàÇϱâ À¯´Ð½º¿Í ¸¶Âù°¡Áö·Î ¸®´ª½º¿¡¼­´Â ÇÁ·Î±×·¥°ú ¸í·É¾îµéÀº º¸Åë ¸í·É¾î Çؼ®±â(command interpreter)¿¡ ÀÇÇØ ¼öÇàµÈ´Ù. ¸í·É¾î Çؼ®±â´Â ´Ù¸¥ ÇÁ·Î¼¼½ºÃ³·³ »ç¿ëÀÚ ÇÁ·Î¼¼½ºÀ̸ç, ½©(shell) À̶ó°í ºÒ¸°´Ù. ¸®´ª½º¿¡´Â ¿©·¯°¡Áö ½©ÀÌ Àִµ¥ °¡Àå ´ëÁßÀûÀÎ °ÍÀ¸·Î´Â sh, bash, tcsh°¡ ÀÖ´Ù. cd³ª pwd°°ÀÌ ÀûÀº ¼öÀÇ ³»ºÎ¿¡ Á÷Á¢ ±¸ÇöµÈ ¸í·É¾îµéÀ» Á¦¿ÜÇÏ°í, ¸í·É¾î µéÀº ½ÇÇàÇÒ ¼ö ÀÖ´Â ÀÌÁø ÆÄÀÏÀÌ´Ù. ¸í·É¾î°¡ ÀÔ·ÂµÇ¸é ½©Àº ȯ°æº¯¼ö PATH¿¡ ÀúÀåµÈ ÇÁ·Î¼¼½ºÀÇ Ã£±â °æ·Î(search path)¿¡¼­ °°Àº À̸§À» °¡Áø ½ÇÇà À̹ÌÁö¸¦ ã´Â´Ù. ÆÄÀÏÀ» ãÀ¸¸é À̸¦ ·ÎµåÇÏ°í ½ÇÇàÇÑ´Ù. ½©Àº ¾Õ¿¡ ¼­ ¼³¸íÇÑ fork ¸ÞÄ¿´ÏÁòÀ» ÀÌ¿ëÇÏ¿© ÀÚ±âÀÚ½ÅÀ» º¹Á¦ÇÑ ÈÄ, ÀÌ·¸°Ô ¸¸µé ¾îÁø »õ·Î ¸¸µé¾îÁø ÀÚ½Ä ÇÁ·Î¼¼½º´Â ÀÌÀü¿¡ ½ÇÇàÇÏ°í ÀÖ´ø ÀÌÁø À̹ÌÁö ¸¦ (¿©±â¼­´Â ½©) ãÀº ÆÄÀÏÀÇ ½ÇÇà À̹ÌÁö·Î ±³Ã¼ÇÑ´Ù. º¸Åë ½©Àº ¸í·ÉÀÌ ¿Ï·áµÇ±æ, Áï ÀÚ½Ä ÇÁ·Î¼¼½º°¡ Á¾·áµÇ±â¸¦ ±â´Ù¸°´Ù. ¿©±â¼­ ½©ÀÌ ÀÌ ÀÚ½Ä ÇÁ·Î¼¼½º¸¦ ¹é±×¶ó¿îµå·Î µ¹·Á ½ÇÇàµÇ°Ô ÇÒ ¼ö Àִµ¥, ¸ÕÀú control-Z¸¦ ´­·¯¼­ ÀÚ½Ä ÇÁ·Î¼¼½º¿¡°Ô SIGSTOP ½Ã±×³ÎÀ» º¸³» ¸ØÃß°Ô ÇÑ´Ù. ±×¸®°í ½© ¸í·É¾îÀÎ bg¸¦ »ç¿ëÇϸé À̸¦ ¹é±×¶ó¿îµå·Î µ¹¸®°í SIGCONT ½Ã±×³ÎÀ» º¸³» ´Ù½Ã ½ÃÀÛÇÏ°Ô ÇÑ´Ù. ÀÌ ÇÁ·Î¼¼½º´Â Á¾·áÇϰųª Å͹̳ΠÀÔÃâ·ÂÀÌ ÇÊ¿äÇÒ ¶§±îÁö ±×´ë·Î ³²¾Æ ÀÖÀ» °ÍÀÌ´Ù. linux_binfmt linux_binfmt linux_binfmt formats +---------------+ +---------------+ +---------------+ -------->| next |--->| next |--->| next | +---------------+ +---------------+ +---------------+ | use_count | | use_count | | use_count | +---------------+ +---------------+ +---------------+ | *load_binary()| | *load_binary()| | *load_binary()| +---------------+ +---------------+ +---------------+ | *load_shlib() | | *load_shlib() | | *load_shlib() | +---------------+ +---------------+ +---------------+ | *core_dump() | | *core_dump() | | *core_dump() | +---------------+ +---------------+ +---------------+ ±×¸² 4.3 : Registered Binary Formats ½ÇÇà ÆÄÀÏÀº ¿©·¯°¡Áö Æ÷¸ËÀ¸·Î µÇ¾î ÀÖÀ» ¼ö ÀÖÀ¸¸ç, ½ÉÁö¾î ½ºÅ©¸³Æ® ÆÄÀϵµ °¡´ÉÇÏ´Ù. ½ºÅ©¸³Æ® ÆÄÀÏ·Î ÀνÄÇß´Ù¸é, À̸¦ ó¸®ÇÒ ¼ö ÀÖ´Â ¿Ã¹Ù ¸¥ Çؼ®±â¸¦ ½ÇÇàÇØ¾ß ÇÑ´Ù. ¿¹¸¦ µé¾î /bin/sh´Â ½© ½ºÅ©¸³Æ®¸¦ Çؼ® ÇÑ´Ù. ½ÇÇàÇÒ ¼ö ÀÖ´Â ¿ÀºêÁ§Æ® ÆÄÀÏÀº ½ÇÇà ÄÚµå¿Í µ¥ÀÌÅÍ¿Í ÇÔ²², ¿î¿µÃ¼°è°¡ À̸¦ ¸Þ¸ð¸®¿¡ ¿Ã¸®°í ½ÇÇàÇÒ ¼ö ÀÖµµ·Ï Çϴµ¥ ÇÊ¿äÇÑ Á¤º¸¸¦ °¡Áö°í ÀÖ´Ù. ¸®´ª½º¿¡¼­ °¡Àå ÀϹÝÀûÀ¸·Î »ç¿ëÇÏ´Â ÆÄÀÏ Æ÷¸ËÀº ELFÀÌÁö¸¸, ¸®´ª ½º´Â ¾î¶² ¿ÀºêÁ§Æ® ÆÄÀÏ Æ÷¸Ëµµ ´Ù·ê ¼ö ÀÖÀ»¸¸Å­ À¯¿¬ÇÏ°Ô µÇ¾î ÀÖ´Ù. ÆÄÀÏ ½Ã½ºÅÛó·³ ¸®´ª½º´Â Ä¿³ÎÀ» ÄÄÆÄÀÏÇÒ ¶§ ÀÌÁø Æ÷¸ËÀ» Áö¿øÇÏ´Â °ÍÀ» Ä¿³Î¿¡ Æ÷ÇÔÇÒ ¼öµµ ÀÖ°í ¸ðµâ·Î ·ÎµåÇÒ ¼öµµ ÀÖ´Ù. Ä¿³ÎÀº Áö¿øÇÏ´Â ÀÌÁø Æ÷¸ËÀÇ ¸ñ·ÏÀ» °ü¸®ÇÏ°í ÀÖ´Ù°¡ (±×¸² 4.3ÂüÁ¶), ÆÄÀÏÀ» ½ÇÇàÇÏ·Á°í ÇÏ¸é µ¿ÀÛÇÏ´Â °ÍÀ» ãÀ» ¶§±îÁö Çϳª¾¿ °¢ ÀÌÁøÆ÷¸ËÀ» ½ÃµµÇغ»´Ù. ÀϹÝÀûÀ¸·Î ¸®´ª½º¿¡¼­ Áö¿øÇÏ´Â ÀÌÁø Æ÷¸ËÀº a.out°ú ELFÀÌ´Ù. ÆÄÀÏÀ» ½ÇÇàÇÒ ¶§ ÆÄÀÏÀ» ¸ðµÎ ´Ù ¸Þ¸ð¸®·Î ÀоîµéÀÏ ÇÊ¿ä´Â ¾øÀ¸¸ç, ¿ä±¸½Ã ·Îµù(demand loading) ±â¼úÀ» »ç¿ëÇÏ¿©, ÇÁ·Î¼¼½º°¡ ½ÇÇà À̹ÌÁöÀÇ °¢ ºÎºÐÀ» »ç¿ëÇÒ ¶§ ÀÌ°ÍÀ» ¸Þ¸ð¸®·Î °¡Á®¿Â´Ù. À̹ÌÁö¿¡¼­ ¾È¾²ÀÌ´Â ºÎºÐÀº ¸Þ¸ð¸®¿¡¼­ Æó±âµÈ´Ù. 4.8.1 ELF ELF (½ÇÇà°¡´ÉÇÏ°í ¸µÅ©ÇÒ ¼ö ÀÖ´Â Æ÷¸Ë : Executable and Linkable Format) ¿ÀºêÁ§Æ® ÆÄÀÏ Æ÷¸ËÀº À¯´Ð½º ½Ã½ºÅÛ ¿¬±¸¼Ò(Unix System Laboratories)¿¡¼­ µðÀÚÀÎÇÑ °ÍÀ¸·Î, ÀÌÁ¦´Â ¸®´ª½º¿¡¼­ °¡Àå ÀϹÝÀûÀ¸·Î »ç¿ëÇÏ´Â Æ÷¸ËÀÌ µÇ¾ú´Ù. ECOFF³ª a.out°°Àº ´Ù¸¥ ¿ÀºêÁ§Æ® ÆÄÀÏ Æ÷¸Ë°ú ºñ±³ÇÏ¸é ¾à°£ÀÇ ¼º´É»óÀÇ ¿À¹öÇìµå°¡ ÀÖÁö¸¸, ELF´Â Á» ´õ À¯¿¬ÇÏ´Ù. ELF ½ÇÇà ÆÄÀÏÀº ÅؽºÆ®(text)¶ó°í ºÎ¸£´Â ½ÇÇà ÄÚµå¿Í µ¥ÀÌÅÍ(data)¸¦ °¡Áö°í ÀÖ´Ù. ½ÇÇà À̹ÌÁö ¾È¿¡ÀÖ´Â Å×À̺íÀº ¾î¶»°Ô ÇÁ·Î±×·¥ÀÌ ÇÁ·Î¼¼½º ÀÇ °¡»ó ¸Þ¸ð¸®¿¡ µé¾î°¡¾ß ÇÏ´ÂÁö¸¦ ±â¼úÇÑ´Ù. Á¤ÀûÀ¸·Î ¸µÅ©µÈ À̹ÌÁö ´Â ¸µÄ¿(ld)³ª ¸µÅ© ÆíÁý±â(link editor)°°Àº °ÍÀ» ÀÌ¿ëÇÏ¿©, ÇϳªÀÇ À̹ÌÁö¿¡ ½ÇÇàÇϴµ¥ ÇÊ¿äÇÑ ¸ðµç ÄÚµå¿Í µ¥ÀÌÅ͸¦ °¡Áö°í ÀÖ´Ù. ÀÌ¿Í ÇÔ²² À̹ÌÁö´Â ÀÚ½ÅÀÇ ¸Þ¸ð¸®¿¡¼­ÀÇ ¹èÄ¡µµ¿Í óÀ½ ¼öÇàÇÒ ÄÚµåÀÇ À̹ÌÁö ³»ÀÇ ÁÖ¼Ò¸¦ ÁöÁ¤ÇÏ°í ÀÖ´Ù. ±×¸² 4.4´Â Á¤ÀûÀ¸·Î ¸µÅ©µÈ ELF ½ÇÇà À̹ÌÁöÀÇ ¹èÄ¡µµ¸¦ º¸¿©ÁØ´Ù. ÀÌ°Í Àº "hello world"¸¦ Ãâ·ÂÇÏ°í Á¾·áÇÏ´Â °£´ÜÇÑ C ÇÁ·Î±×·¥ÀÌ´Ù. Çì´õ´Â ÀÌ°ÍÀÌ µÎ°³ÀÇ ¹°¸®Àû Çì´õ(e_phnumÀÌ 2ÀÌ´Ù)°¡ À̹ÌÁö ÆÄÀÏÀÇ Ã³À½À» ±âÁØÀ¸·Î 52¹ÙÀÌÆ®(e_phoff)¿¡ À§Ä¡ÇÏ´Â ELF À̹ÌÁö¶ó´Â °ÍÀ» À̾߱â ÇÑ´Ù. ù¹ø° ¹°¸®Àû Çì´õ´Â À̹ÌÁö¿¡¼­ ½ÇÇà Äڵ带 ±â¼úÇÑ´Ù. ÀÌ´Â °¡»ó ÁÖ¼Ò 0x8048000¿¡¼­ ½ÃÀÛÇÏ°í 65532 ¹ÙÀÌÆ®¸¦ °®´Â´Ù. ÀÌ·¸°Ô Å« ÀÌÀ¯´Â ÀÌ°ÍÀÌ Á¤ÀûÀ¸·Î ¸µÅ©µÈ À̹ÌÁö¿©¼­, "hello world"¸¦ Ãâ·ÂÇÏ´Â printf() ÇÔ¼ö¿¡ ´ëÇÑ ¶óÀ̺귯¸® Äڵ带 ¸ðµÎ °¡Áö°í Àֱ⠶§¹®ÀÌ´Ù. À̹ÌÁöÀÇ ÁøÀÔÁ¡(entry point), Áï ÇÁ·Î±×·¥¿¡¼­ óÀ½ ½ÇÇàÇÏ´Â ¸í·ÉÀº À̹ÌÁöÀÇ ½ÃÀÛÁÖ¼Ò°¡ ¾Æ´Ï¶ó °¡»ó ÁÖ¼Ò 0x8048090 (e_entry)ÀÌ´Ù. ÀÌ ÄÚµå ´Â µÎ¹ø° ¹°¸®Àû Çì´õ¸¦ ·ÎµåÇÑ Á÷ÈÄ¿¡ ¹Ù·Î ½ÃÀ۵ȴÙ. ÀÌ µÎ¹ø° ¹°¸®Àû Çì´õ´Â ÇÁ·Î±×·¥¿¡¼­ÀÇ µ¥ÀÌÅ͸¦ ³ªÅ¸³»°í, °¡»ó ¸Þ¸ð¸®ÀÇ 0x8059BB8 À§Ä¡ ¿¡ ·ÎµåµÈ´Ù. ÀÌ µ¥ÀÌÅÍ´Â Àаųª ¾µ ¼ö ÀÖ´Ù. ¿©±â¼­ ÆÄÀÏ¿¡¼­ µ¥ÀÌÅÍÀÇ Å©±â´Â 2200¹ÙÀÌÆ®(p_filesz)Àε¥ ¹ÝÇØ, ¸Þ¸ð¸®¿¡¼­ÀÇ Å©±â´Â 4248¹ÙÀÌÆ® ÀÎ °ÍÀ» ´«Ä¡Ã¦ »ç¶÷µµ ÀÖÀ»°ÍÀÌ´Ù. À̴ óÀ½ 2200¹ÙÀÌÆ®´Â ¹Ì¸® ÃʱâÈ­ µÈ µ¥ÀÌÅ͸¦ °¡Áö°í ÀÖÁö¸¸, ´ÙÀ½¿¡ ÀÖ´Â 2048¹ÙÀÌÆ®´Â ½ÇÇà Äڵ尡 Ãʱâ È­ÇÒ µ¥ÀÌÅ͸¦ °¡Áö°í Àֱ⠶§¹®ÀÌ´Ù. ELF Executable Image +---------------+ | e_ident | 'E' 'L' 'F' | e_entry | 0x8048090 | e_phoff | 52 | e_phentsize | 32 | e_phnum | 2 +---------------+ | | +---------------+ | p_type | PT_LOAD | p_offset | 0 Physical Header | p_vaddr | 0x8048000 | p_filesz | 68532 | p_memsz | 68532 | p_flags | PF_R, PF_X +---------------+ | p_type | PT_LOAD | p_offset | 68526 Physical Header | p_vaddr | 0x8059BB9 | p_filesz | 2200 | p_memsz | 4248 | p_flags | PF_R, PF_W +---------------+ | | | Code | | | +---------------+ | | | Data | | | +---------------+ ±×¸² 4.4 : ELF Executable file Format ¸®´ª½º°¡ ÇÁ·Î¼¼½ºÀÇ °¡»ó ÁÖ¼Ò °ø°£¿¡ ELF ½ÇÇà À̹ÌÁö¸¦ ·ÎµåÇÒ ¶§, ½ÇÁ¦·Î À̹ÌÁö¸¦ ¿Ã¸®´Â °ÍÀº ¾Æ´Ï´Ù. ¸®´ª½º´Â ´ÜÁö °¡»ó¸Þ¸ð¸® ÀڷᱸÁ¶ ÀÎ ÇÁ·Î¼¼½ºÀÇ vm_area_struct Æ®¸®¿Í ¿©±â¿¡ ¼ÓÇÑ ÆäÀÌÁö Å×À̺íµéÀ» ¼Â¾÷ÇÏ´Â °ÍÀÌ´Ù. ±×¸®°í ÇÁ·Î±×·¥ÀÌ ½ÇÇàµÇ¸é¼­ ÆäÀÌÁö ÆúÆ®°¡ ¹ß»ýÇϸé ÇÁ·Î±×·¥ÀÇ ÄÚµå¿Í µ¥ÀÌÅ͸¦ ¹°¸®ÀûÀÎ ¸Þ¸ð¸®·Î °¡Á®¿Â´Ù. ÇÁ·Î±×·¥¿¡¼­ ¾È¾²ÀÌ´Â ºÎºÐÀº Àý´ë ¸Þ¸ð¸®¿¡ ·ÎµåµÇÁö ¾Ê´Â´Ù. ELF ÀÌÁø Æ÷¸Ë ·Î´õ´Â ÀÚ½ÅÀÌ ½ÇÇàÇÒ À̹ÌÁö°¡ ELF ½ÇÇà À̹ÌÁö°¡ ¸Â´Ù´Â °ÍÀ» È®ÀÎÇϸé, ÇÁ·Î ¼¼½ºÀÇ °¡»ó¸Þ¸ð¸®¿¡¼­ ÇöÀç ½ÇÇà À̹ÌÁö¸¦ ÂѾƳ½´Ù. ÀÌ ÇÁ·Î¼¼½º´Â º¹Á¦ µÈ À̹ÌÁöÀ̹ǷΠ(¸ðµç ÇÁ·Î¼¼½º°¡ ¸¶Âù°¡ÁöÁö¸¸), ÀÌ ¿¾³¯ À̹ÌÁö´Â ºÎ¸ð ÇÁ·Î¼¼½º°¡ ½ÇÇàÇß´ø ÇÁ·Î±×·¥ - ¿¹¸¦ µé¾î bash°°Àº ¸í·É¾î Çؼ® ½© - ÀÏ °ÍÀÌ´Ù. ÀÌ·¸°Ô ¿¾³¯ ½ÇÇà À̹ÌÁö¸¦ ÂѾƳ»´Â °ÍÀº ¿¾³¯ °¡»ó ¸Þ¸ð¸® ÀڷᱸÁ¶¸¦ ¾ø¾Ö°í ÇÁ·Î¼¼½ºÀÇ ÆäÀÌÁö Å×À̺íµéÀ» ¸®¼ÂÇÑ´Ù. ¶ÇÇÑ ¼³Á¤ µÇ¾î ÀÖ´Â ¸ðµç ½Ã±×³Î Çڵ鷯¸¦ Áö¿ì°í, ¿­·ÁÁø ÆÄÀϵéÀ» ¸ðµÎ ´Ý´Â´Ù. ÀÌ ÂѾƳ»±â°úÁ¤ÀÌ ³¡³ª¸é ÇÁ·Î¼¼½º´Â »õ·Î¿î ½ÇÇà À̹ÌÁö¸¦ ¹Þ¾ÆµéÀÏ Áغñ°¡µÈ´Ù. ½ÇÇà À̹ÌÁö°¡ ¾î¶² Æ÷¸ËÀ̳Ŀ¡ °ü°è¾øÀÌ ÇÁ·Î¼¼½ºÀÇ mm_struct´Â ¶È°°Àº Á¤º¸·Î ¼Â¾÷ÀÌ µÈ´Ù. ¿©±â¿¡´Â À̹ÌÁöÀÇ ÄÚµå¿Í µ¥ÀÌ ÅÍÀÇ ½ÃÀÛ°ú ³¡À» ³ªÅ¸³»´Â Æ÷ÀÎÅÍ°¡ ÀÖ´Ù. ÀÌ °ªµéÀº ELF ½ÇÇà À̹ÌÁö ¹°¸®Àû Çì´õ¸¦ Àд Áß¿¡ ¹ß°ßÇÏ°Ô µÇ°í, ÀÌ Çì´õ¿¡¼­ ±â¼úÇÏ´Â ÇÁ·Î±×·¥ ¼½¼ÇµéÀº ÇÁ·Î¼¼½ºÀÇ °¡»ó ÁÖ¼Ò °ø°£¿¡ ¸ÊÇÎÀÌ µÈ´Ù. ÀÌ´Â vm_area_struct ÀڷᱸÁ¶¸¦ ¼Â¾÷ÇÏ°í ÇÁ·Î¼¼½ºÀÇ ÆäÀÌÁö Å×À̺íµéÀ» ¼öÁ¤ÇÒ ¶§µµ ¸¶Âù°¡Áö ´Ù. mm_struct ÀڷᱸÁ¶ ¶ÇÇÑ ÇÁ·Î±×·¥¿¡ Àü´ÞµÉ ÀÎÀڵ鿡 ´ëÇÑ Æ÷ÀÎÅÍ¿Í ÇÁ·Î¼¼½ºÀÇ È¯°æ º¯¼ö¿¡ ´ëÇÑ Æ÷ÀÎÅ͵µ °¡Áö°í ÀÖ´Ù. ELF °øÀ¯ ¶óÀ̺귯¸® ÇÑÆí, µ¿ÀûÀ¸·Î ¸µÅ©µÇ´Â À̹ÌÁö´Â ½ÇÇàÇϴµ¥ ÇÊ¿äÇÑ ¸ðµç ÄÚµå¿Í µ¥ÀÌÅÍ ¸¦ °¡Áö°í ÀÖÁø ¾Ê´Â´Ù. À̵é Áß ÀϺδ ½ÇÇà½Ã¿¡ À̹ÌÁö¿Í ¸µÅ©µÇ´Â °øÀ¯ ¶óÀ̺귯¸®(shared library)¿¡ µé¾î ÀÖ´Ù. ELF °øÀ¯ ¶óÀ̺귯¸®ÀÇ Å×ÀÌºí µéÀº ½ÇÇà½Ã¿¡ µ¿Àû¸µÄ¿°¡ °øÀ¯ ¶óÀ̺귯¸®¸¦ À̹ÌÁö¿Í ¿¬°áÇÒ ¶§ »ç¿ë ÇÑ´Ù. ¸®´ª½º´Â ¿©·¯°³ÀÇ µ¿Àû ¸µÄ¿¸¦ »ç¿ëÇÑ´Ù. ld.so.1, libc.so.1, ld-linux.so.1. ÀÌµé ¸ðµÎ´Â /lib¿¡¼­ ãÀ» ¼ö ÀÖ´Ù. ÀÌ ¶óÀ̺귯¸®´Â ¾ð¾î ¼­ºê·çƾ °°ÀÌ °øÅëÀ¸·Î »ç¿ëÇÏ´Â Äڵ带 °¡Áø´Ù. µ¿Àû ¸µÅ©¸¦ »ç¿ë ÇÏÁö ¾Ê´Â´Ù¸é ¸ðµç ÇÁ·Î±×·¥Àº ÀÌµé ¶óÀ̺귯ÀÇ º¹»çº»À» °¡Áö°í ÀÖ¾î¾ß ÇÒ °ÍÀ̸ç, ÈξÀ ¸¹Àº µð½ºÅ© °ø°£°ú °¡»ó ¸Þ¸ð¸®¸¦ ÇÊ¿ä·Î ÇÒ °ÍÀÌ´Ù. µ¿Àû ¸µÅ©¿¡¼­ Á¤º¸µéÀº ELF À̹ÌÁö¿¡ ÀÖ´Â ÂüÁ¶ÇÏ´Â ¸ðµç ¶óÀ̺귯¸® ÇÔ¼öµéÀÇ Å×ÀÌºí¿¡ µé¾î ÀÖ´Ù. ÀÌ Á¤º¸´Â µ¿Àû ¸µÄ¿¿¡°Ô ¾î¶»°Ô ¶óÀ̺귯 ¸® ·çƾÀ» À§Ä¡½ÃÅ°°í ÇÁ·Î±×·¥ÀÇ ÁÖ¼Ò °ø°£¿¡ ¸µÅ©½ÃųÁö¸¦ ¾Ë·ÁÁØ´Ù. REVIEW NOTE : ½ÇÇà ¿¹Á¦¸¦ °¡Áö°í À̸¦ ´õ ÀÚ¼¼È÷ ¼³¸íÇÒ ÇÊ¿ä°¡ Àִ°¡? 4.8.2 ½ºÅ©¸³Æ® ÆÄÀÏ(Script File) ½ºÅ©¸³Æ® ÆÄÀÏÀº ½ÇÇàÇϴµ¥ ÀÎÅÍÇÁ¸®ÅÍ(interpreter)¸¦ ÇÊ¿ä·ÎÇÏ´Â ½ÇÇà ÆÄÀÏÀÌ´Ù. ¸®´ª½º¿¡´Â ¾ÆÁÖ ´Ù¾çÇÑ ÀÎÅÍÇÁ¸®ÅÍ°¡ ÀÖ´Ù. ¿¹¸¦ µé¾î wish, perlÀ̳ª tcsh°°Àº ¸í·É½©ÀÌ ¸ðµÎ ÀÎÅÍÇÁ¸®ÅÍÀÌ´Ù. ¸®´ª½º´Â ÀÎÅÍÇÁ¸®ÅÍÀÇ À̸§À» ½ºÅ©¸³Æ® ÆÄÀÏÀÇ Ã¹¹ø° ÁÙ¿¡ °¡Áö°í Àִ ǥÁØ À¯´Ð½º Ç¥±â¹ýÀ» µû¸¥´Ù. µû¶ó¼­, ÀüÇüÀûÀÎ ½ºÅ©¸³Æ® ÆÄÀÏÀº ´ÙÀ½°ú °°ÀÌ ½ÃÀÛÇÑ´Ù. #!/usr/bin/wish ½ºÅ©¸³Æ® ÀÌÁø ·Î´õ´Â ÀÌ ½ºÅ©¸³Æ®¸¦ ó¸®ÇÒ ÀÎÅÍÇÁ¸®Å͸¦ ãÀ¸·Á°í ÇÑ´Ù. ÀÌ°ÍÀº ½ºÅ©¸³Æ®ÀÇ Ã¹¹ø° ÁÙ¿¡¼­ ¸»ÇÑ ½ÇÇàÆÄÀÏÀ» ¿­·Á°í ÇÏ´Â °ÍÀÌ´Ù. ¸¸¾à À̸¦ ¿­ ¼ö ÀÖ´Ù¸é, ÀÌ ÇÁ·Î±×·¥ÀÇ VFS inode¿¡ ´ëÇÑ Æ÷ÀÎÅ͸¦ °¡Áö °í ½ºÅ©¸³Æ® ÆÄÀÏ Çؼ®À» ½ÃÀÛÇÒ ¼ö ÀÖÀ» °ÍÀÌ´Ù. ½ºÅ©¸³Æ® ÆÄÀÏÀÇ À̸§Àº ÀÎÀÚ 0¹ø(ÇÁ·Î±×·¥¿¡ Àü´ÞµÇ´Â ù¹ø° ÀÎÀÚ)¿¡ ¼³Á¤µÇ°í, ´Ù¸¥ ¸ðµç ÀÎÀÚ µéµµ ÇÑÄ­¾¿ À̵¿ÇÏ°Ô µÈ´Ù (¿ø·¡ ù¹ø° ÀÎÀÚ¿´´ø °ÍÀÌ µÎ¹ø° ÀÎÀÚ°¡ µÇ´Â ½ÄÀÌ´Ù). ÀÎÅÍÇÁ¸®Å͸¦ ·ÎµåÇÏ´Â °ÍÀº ¸®´ª½º°¡ ¸ðµç ½ÇÇà ÆÄÀÏÀ» ·ÎµåÇÏ´Â °Í°ú °°Àº ¹æ¹ýÀ¸·Î ÇÑ´Ù. ¸®´ª½º´Â °¢ ÀÌÁø Æ÷¸ËÀ» Â÷·Ê·Î ½ÃµµÇÏ¿© µ¿ÀÛÇÏ´Â °ÍÀ» ã´Â´Ù. ÀÌ´Â ÀÌ·ÐÀûÀ¸·Î ¿©·¯°³ÀÇ ÀÎÅÍÇÁ¸®ÅÍ¿Í ÀÌÁø Æ÷¸ËµéÀ» ½×¾Æ ¿Ã¸± ¼ö ÀÖ°Ô Çϸç, ¸®´ª½º ÀÌÁø Æ÷¸Ë Çڵ鷯¸¦ ¸Å¿ì À¯¿¬ÇÑ ¼ÒÇÁÆ®¿þ¾î·Î ¸¸µç´Ù. ¹ø¿ª : À±°æÀÏ, °í¾ç¿ì, ¼­Ã¢¹è, ÀÌÈ£, Á¤Á÷ÇÑ, ±è±â¿ë, Á¤¸® : ÀÌÈ£ ===================================================================== 5Àå ÇÁ·Î¼¼½º°£ Åë½Å ¸ÞÄ¿´ÏÁò (Interprocess Communication Mechanism) <<ÇÁ·Î¼¼½ºµéÀº »óÈ£°£ÀÇ È°µ¿À» Á¶Á¤Çϱâ À§Çؼ­ ÇÁ·Î¼¼½º°£, ±×¸®°í Ä¿³Î°ú Åë½ÅÀ» ÇÑ´Ù. ¸®´ª½º´Â ¿©·¯ Á¾·ùÀÇ ÇÁ·Î¼¼½º°£ Åë½Å ±â´É (Inter-Process Commuication, IPC)À» Á¦°øÇÑ´Ù. ¸®´ª½º´Â ½Ã±×³Î°ú ÆÄÀÌÇÁ ÀÌ¿Ü¿¡µµ ½Ã½ºÅÛ V IPC¸¦ Á¦°øÇϴµ¥ ½Ã½ºÅÛ V IPC´Â ÀÌ ±â´É ÀÌ Ã³À½À¸·Î µîÀåÇÑ À¯´Ð½º ¹öÀüÀÇ À̸§À» µû¼­ Áö¾îÁø À̸§ÀÌ´Ù.>> 5.1 ½Ã±×³Î(Signal) ½Ã±×³ÎÀº À¯´Ð½º ½Ã½ºÅÛ¿¡¼­ ÇÁ·Î¼¼½º°£ Åë½ÅÀ» ÇÏ´Â °¡Àå ¿À·¡µÈ ¹æ¹ý Áß ÀÇ ÇϳªÀÌ´Ù. À̵éÀº Çϳª ÀÌ»óÀÇ ÇÁ·Î¼¼½ºµé¿¡°Ô ºñµ¿±âÀûÀÎ À̺¥Æ®¸¦ ¾Ë¸®±â À§ÇØ »ç¿ëµÈ´Ù. ½Ã±×³ÎÀº Å°º¸µå ÀÎÅÍ·´Æ®·ÎºÎÅÍ ¹ß»ýµÇ±âµµ ÇÏ°í, ÇÁ·Î¼¼½º°¡ Á¸ÀçÇÏÁö ¾Ê´Â °¡»ó ¸Þ¸ð¸® ¿µ¿ªÀ» »ç¿ëÇÏ·Á ÇÏ´Â °æ¿ì°°Àº ¿¡·¯ »óȲ¿¡¼­µµ ¹ß»ýÇÑ´Ù. ½Ã±×³ÎÀº ½©ÀÌ ÀÚ½Ä ÇÁ·Î¼¼½º¿¡°Ô ÀÛ¾÷ °ü¸® ¸í·ÉÀ» º¸³¾ ¶§¿¡µµ »ç¿ëµÈ´Ù. Ä¿³ÎÀ̳ª ÇØ´çÇÏ´Â ±ÇÇÑÀ» °¡Áö°í ÀÖ´Â ½Ã½ºÅÛÀÇ ´Ù¸¥ ÇÁ·Î¼¼½ºµéÀÌ ¹ß»ý ÇÒ ¼ö ÀÖ´Â ÀÏ·ÃÀÇ Á¤ÀÇµÈ ½Ã±×³ÎµéÀÌ ÀÖ´Ù. ÀÌ·¯ÇÑ ½Ã±×³ÎµéÀ» º¸·Á¸é 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¹øÀ» ¹Þµç À̸¦ ±¸º°ÇÒ ¹æ¹ýÀÌ ¾ø´Ù. include/linux/sched.h ÂüÁ¶ ¸®´ª½º´Â ÇÁ·Î¼¼½ºÀÇ task_struct¿¡ ÀúÀåµÈ Á¤º¸¸¦ »ç¿ëÇؼ­ ½Ã±×³Î ±â´É À» ±¸ÇöÇÑ´Ù. Áö¿øÇÒ ¼ö ÀÖ´Â ½Ã±×³ÎÀÇ °¹¼ö´Â ÇÁ·Î¼¼¼­ÀÇ ¿öµå(word) Å©±â¿¡ Á¦ÇÑÀ» ¹Þ´Â´Ù. 32ºñÆ® ¿öµå¸¦ »ç¿ëÇÏ´Â ½Ã½ºÅÛ¿¡¼­´Â ÃÖ´ëÇÑ 32°³ ÀÇ ½Ã±×³ÎÀ» Áö¿øÇÒ ¼ö ÀÖ°í, ¾ËÆÄ AXP¿Í °°ÀÌ 64ºñÆ® ÇÁ·Î¼¼¼­¸¦ »ç¿ë ÇÏ´Â °æ¿ì¿¡´Â ÃÖ´ë 64°³ÀÇ ½Ã±×³ÎÀ» Áö¿øÇÒ ¼ö ÀÖ´Ù. ÇöÀç ó¸® ´ë±âÁß ÀÎ ½Ã±×³ÎµéÀº signal Ç׸ñ¿¡ ÀúÀåµÇ¸ç, ºí·°µÈ ½Ã±×³ÎµéÀÇ ¸¶½ºÅ©´Â blocked Ç׸ñ¿¡ ´ã±â°Ô µÈ´Ù. SIGSTOP°ú SIGKILLÀ» Á¦¿ÜÇÑ ´Ù¸¥ ¸ðµç ½Ã±× ³ÎµéÀº ºí·°Å· ÇÒ ¼ö ÀÖ´Ù. ºí·°µÈ ½Ã±×³ÎÀÌ ¹ß»ýÇÒ °æ¿ì ±× ½Ã±×³ÎÀº ºí·°Å·À» ÇØÁ¦ÇÒ ¶§±îÁö ´ë±â »óÅ·Π³²¾Æ ÀÖ°Ô µÈ´Ù. ¸®´ª½º´Â ¶ÇÇÑ ¹ß»ýÇÒ ¼ö ÀÖ´Â ¸ðµç ½Ã±×³ÎµéÀ» ÇÁ·Î¼¼½º°¡ ¾î¶»°Ô ó¸® Çϴ°¡¿¡ ´ëÇÑ Á¤º¸¸¦ °¡Áö°í Àִµ¥, ÀÌ Á¤º¸´Â ÇÁ·Î¼¼½ºÀÇ task_struct ¿¡ ÀÖ´Â sigaction ÀڷᱸÁ¶ÀÇ ¹è¿­¿¡ ÀúÀåµÈ´Ù. sigaction¿¡´Â ¿©·¯°¡Áö ´Ù¸¥ Á¤º¸µé°ú ÇÔ²², ½Ã±×³Î Çڵ鷯ÀÇ ÁÖ¼Ò, ¶Ç´Â ÇÁ·Î¼¼½º°¡ ÇØ´ç ½Ã±×³Î À» ¹«½ÃÇÒ °ÍÀÎÁö ȤÀº Ä¿³ÎÀÌ ±× ½Ã±×³ÎÀ» ´ë½Å ó¸®ÇÏ°Ô ÇÒ °ÍÀÎÁö¸¦ ³ªÅ¸³»´Â Ç÷¡±×°¡ µé¾î ÀÖ´Ù. ÇÁ·Î¼¼½º´Â ½Ã½ºÅÛ ÄÝÀ» ÅëÇؼ­ ±âº» ½Ã±× ³Î Çڵ鷯¸¦ ¹Ù²Ü ¼ö ÀÖÀ¸¸ç, ÀÌ ½Ã½ºÅÛ ÄÝÀº ÇØ´ç ½Ã±×³ÎÀÇ sigaction°ú blocked ¸¶½ºÅ©¸¦ º¯°æÇÑ´Ù. ½Ã½ºÅÛ ³»ÀÇ ÇÁ·Î¼¼½ºµéÀÌ ¸ðµÎ ´Ù¸¥ ÇÁ·Î¼¼½º·Î ½Ã±×³ÎÀ» º¸³¾ ¼ö ÀÖ´Â °ÍÀº ¾Æ´Ï´Ù. Ä¿³Î°ú °ü¸®ÀÚ´Â ¸ðµç ÇÁ·Î¼¼½º¿¡°Ô º¸³¾ ¼ö ÀÖÁö¸¸,ÀÏ¹Ý ÇÁ·Î¼¼½º´Â °°Àº uid¿Í gid¸¦ °®´Â ÇÁ·Î¼¼½º, ¶Ç´Â °°Àº ÇÁ·Î¼¼½º ±×·ì ³»ÀÇ ÇÁ·Î¼¼½º¿¡°Ô¸¸ ½Ã±×³ÎÀ» º¸³¾ ¼ö ÀÖ´Ù. ½Ã±×³ÎÀº task_struct³» signal Ç׸ñÀÇ ÇØ´çÇÏ´Â ºñÆ®¸¦ ¼³Á¤ÇÏ¿© ¹ß»ýµÈ´Ù. ÇÁ·Î¼¼½º°¡ ±× ½Ã±× ³ÎÀ» ºí·°ÇÏÁö ¾Ê¾Ò°í, ÀÎÅÍ·´Æ® °¡´ÉÇÑ »óÅ¿¡¼­(Áï INTERRUPTIBLE »óÅ¿¡¼­) ´ë±âÁß¿¡ ÀÖ´Ù¸é, ÇÁ·Î¼¼½º´Â ÇöÀç »óŸ¦ ½ÇÇàÁß(RUNNING)À¸·Î ¹Ù²Ù°í ÀÚ½ÅÀ» ½ÇÇàÅ¥¿¡ ³ÖÀ½À¸·Î½á ±ú¾î³ª°Ô µÈ´Ù. ÀÌ·± ¹æ¹ýÀ¸·Î ½Ã½º ÅÛÀÌ ´ÙÀ½¹ø ½ºÄÉÁ층À» ¼öÇàÇÒ¶§, ½ºÄÉÁì·¯°¡ ±× ÇÁ·Î¼¼½º¸¦ ½ÇÇàÇÒ È帷Π»ý°¢ÇÏ°Ô µÈ´Ù. ±âº» µ¿ÀÛÀ¸·ÎÀÇ ½Ã±×³Î 󸮸¸ÀÌ ÇÊ¿äÇÏ´Ù¸é ¸®´ª ½º´Â ½Ã±×³Î ó¸®À» ÃÖÀûÈ­ ½Ãų ¼ö ÀÖ´Ù. ¿¹¸¦ µé¾î SIGWINCH(X À©µµ¿ì °¡ Æ÷Ä¿½º¸¦ º¯°æ)°¡ ¹ß»ýÇÏ¿´°í ±âº» Çڵ鷯¸¦ »ç¿ëÇÒ °ÍÀ̶ó¸é, ÇÁ·Î ¼¼½º°¡ µû·Î ¼öÇàÇÒ ÀÏÀº ¾ø°Ô µÇ´Â °ÍÀÌ´Ù. ½Ã±×³ÎÀº ¹ß»ýÇÏ´Â ¼ø°£ ¹Ù·Î ÇÁ·Î¼¼½º·Î Àü´ÞµÇ´Â °ÍÀÌ ¾Æ´Ï¶ó ±× ÇÁ·Î ¼¼½º°¡ ´Ù½Ã ¼öÇàµÉ¶§±îÁö ±â´Ù·Á¾ß ÇÑ´Ù. Áï ÇÁ·Î¼¼½º°¡ ½Ã½ºÅÛ ÄÝÀ» ¸¶Ä¡°í µ¹¾Æ¿Ã ¶§¸¶´Ù signal°ú blocked°¡ ¸Å¹ø °Ë»çµÇ´Âµ¥, À̶§ ºí·Ï µÇÁö ¾ÊÀº ½Ã±×³ÎÀÌ Á¸ÀçÇÏ´Â °æ¿ì ºñ·Î¼­ ÇÁ·Î¼¼½º·Î Àü´ÞµÇ´Â °ÍÀÌ´Ù. ÀÌ ¹æ½ÄÀº »ó´çÈ÷ ½Å·Ú¼ºÀÌ ³·Àº ¹æ¹ýó·³ º¸ÀÌÁö¸¸, ½Ã½ºÅÛ ³»ÀÇ ÇÁ·Î ¼¼½ºµéÀº ¹«½¼ ¸ñÀû¿¡¼­µç(¿¹¸¦ µé¸é Å͹̳ο¡ ¹®ÀÚ¸¦ Âï±â À§Çؼ­) ½ÇÇà ½Ã°£ ´ëºÎºÐ¿¡ °ÉÃÄ ½Ã½ºÅÛ ÄÝÀ» °è¼Ó ¼öÇàÇϹǷΠ±×·¸Áö´Â ¾Ê´Ù.¿øÇÑ´Ù¸é ÇÁ·Î¼¼½º´Â ½Ã±×³Î ¹ß»ýÀ» ±â´Ù¸®´Â °ÍÀ» ¼±ÅÃÇÒ ¼ö Àִµ¥, ÀÌ °æ¿ì ÀÎÅÍ·´Æ® Çã¿ë »óÅ¿¡¼­ ½Ã±×³ÎÀÌ Àü´ÞµÇ¾î ¿Ã ¶§±îÁö ÇÁ·Î¼¼½º´Â ¸ØÃç ¼­ ÀÖ°Ô µÈ´Ù. ¸®´ª½º ½Ã±×³Î ó¸® ÄÚµå´Â ÇöÀç ºí·°µÇÁö ¾ÊÀº ½Ã±×³Î¿¡ ´ëÇØ ¼­ sigaction ÀڷᱸÁ¶¸¦ ÂüÁ¶ÇÑ´Ù. ½Ã±×³Î Çڵ鷯°¡ ±âº» Çڵ鷯·Î µÇ¾î ÀÖÀ¸¸é Ä¿³ÎÀÌ ±× 󸮸¦ ´ë½Å ¼öÇà ÇÏ°Ô µÈ´Ù. SIGSTOP ½Ã±×³Î¿¡ ´ëÇÑ ±âº» Çڵ鷯´Â ÇöÀç ÇÁ·Î¼¼½ºÀÇ »óÅ ¸¦ ÁßÁöµÊ(STOPPED)À¸·Î ¹Ù²Ù°í, »õ·Î ½ÇÇàÇÒ ÇÁ·Î¼¼½º¸¦ ¼±ÅÃÇϱâ À§ÇØ ½ºÄÉÁì·¯¸¦ ½ÇÇàÇÑ´Ù. SIGFPE ½Ã±×³ÎÀ» ¹ÞÀ¸¸é Ä¿³ÎÀº ÇöÀç ÇÁ·Î¼¼½º¸¦ ÄÚ¾î ´ýÇÁÇÏ°í ÇÁ·Î¼¼½º ¸¦ Á¾·áÇÑ´Ù. ÀÌ¿Í ´Þ¸® ÇÁ·Î¼¼½º°¡ Á÷Á¢ ÀÚ½ÅÀÇ ½Ã±×³Î Çڵ鷯¸¦ ÁöÁ¤Çß À»¼öµµ ÀÖ´Ù. ÀÌ°ÍÀº ½Ã±×³ÎÀÌ ¹ß»ýÇÒ ¶§¸¶´Ù È£ÃâµÇ´Â °ÍÀ¸·Î, sigaction ÀڷᱸÁ¶°¡ ÀÌ ·çƾÀÇ ÁÖ¼Ò¸¦ °¡Áö°í ÀÖ´Ù. ÀÌÁ¦ Ä¿³ÎÀº ¹Ýµå½Ã ÇÁ·Î¼¼½º ÀÇ ½Ã±×³Î Çڵ鷯¸¦ È£ÃâÇØ¾ß Çϴµ¥, ÀÌ°ÍÀÌ ¾î¶»°Ô ÀÌ·ç¾îÁö´Â°¡´Â ÇÁ·Î ¼¼¼­¿¡ µû¶ó ´Ù¸£Áö¸¸, ÇÑ°¡Áö »ç½Ç, Áï ÇöÀç ÇÁ·Î¼¼½º´Â Ä¿³Î ¸ðµå¿¡¼­ ½ÇÇàÁßÀÌ¸ç °ð »ç¿ëÀÚ ¸ðµå¿¡¼­ Ä¿³Î ȤÀº ½Ã½ºÅÛ ·çƾÀ» ºÎ¸¥ ÇÁ·Î¼¼½º·Î µ¹¾Æ°¡·Á°í ÇÑ´Ù´Â Á¡¸¸Àº ¸ðµç CPUµéÀÌ ¿°µÎ¿¡ µÎ°í ´ëóÇÏ¿©¾ß ÇÏ´Â ¹®Á¦ÀÌ´Ù . ÀÌ ¹®Á¦´Â ÇÁ·Î¼¼½ºÀÇ ½ºÅðú ·¹Áö½ºÅ͸¦ Á¶ÀÛÇÔÀ¸·Î½á ÇØ°á °¡´ÉÇÏ´Ù. ÇÁ·Î¼¼½ºÀÇ ÇÁ·Î±×·¥ Ä«¿îÅ͸¦ ±× ½Ã±×³Î ó¸® ·çƾÀ¸·Î ¼³Á¤ ÇÏ°í, Çڵ鷯·Î Àü´ÞÇÒ ÀÎÀÚ¸¦ ½ºÅà ÇÁ·¹ÀÓ¿¡ Ãß°¡Çϰųª ·¹Áö½ºÅÍ¿¡ ´ã¾Æ º¸³»´Â °ÍÀÌ´Ù. ÀÌÈÄ ÇÁ·Î¼¼½º°¡ ½ÇÇàÀ» Àç°³ÇÏ¸é ½Ã±×³Î Ã³¸® ·çƾÀº ¸¶Ä¡ Á¤»óÀûÀÎ ¹æ¹ýÀ¸·Î È£ÃâµÇ¾ú´ø °Í°°ÀÌ º¸ÀÌ°Ô µÈ´Ù. ¸®´ª½º´Â POSIX ȣȯÀ̹ǷÎ, ÇÁ·Î¼¼½º´Â ƯÁ¤ ½Ã±×³Î ó¸® ·çƾÀÌ È£Ã⠵ǾúÀ» ¶§ ¾î¶² ½Ã±×³ÎÀ» ºí·°ÇÒ °ÍÀÎÁö¸¦ ÁöÁ¤ÇÒ ÀÖ´Ù. ÀÌ°ÍÀº ÇÁ·Î¼¼½º ½Ã±×³Î Çڵ鷯°¡ ºÒ¸®´Â µ¿¾È blocked ¸¶½ºÅ©ÀÇ °ªÀ» ¹Ù²Ù°Ô µÊÀ» ¶æÇÑ´Ù. blocked ¸¶½ºÅ©´Â ½Ã±×³Î ó¸® ·çƾÀÌ Á¾·áµÉ ¶§ ¿ø·¡ °ªÀ¸·Î µ¹·Á ³õ¾Æ¾ß ÇÑ´Ù. ±×·¡¼­ ¸®´ª½º´Â Á¤¸®¿ë ·çƾÀ» Çϳª ´õ ºÒ·¯¼­, ½Ã±×³ÎÀ» ¹ÞÀº ÇÁ·Î¼¼½ºÀÇ ÄÝ ½ºÅÿ¡ ÀúÀåÇسõÀº ¿ø·¡ÀÇ blocked ¸¶½ºÅ© °ªÀ» ²¨³»¾î º¹±¸Çϵµ·Ï ÇÑ´Ù. ¶ÇÇÑ ¿©·¯ ½Ã±×³Î ó¸® ·çƾÀÌ °è¼Ó È£ÃâµÇ¾î¾ß ÇÒ ÇÊ¿ä°¡ ÀÖÀ» ¶§´Â ÀÌ ·çƾµéÀ» ½ºÅÃó·³ ½×¾Æ¼­, ÇÑ Çڵ鷯¸¦ ºüÁ®³ª¿À¸é ´ÙÀ½ Çڵ鷯°¡ È£ÃâµÇ°í, ¸¶Áö¸·À¸·Î Á¤¸®¿ë ·çƾÀÌ È£ÃâµÇµµ·Ï ½Ã±×³Î 󸮸¦ ÃÖÀûÈ­ÇÑ´Ù. 5.2 ÆÄÀÌÇÁ(Pipe) ÀϹÝÀûÀ¸·Î »ç¿ëÇÏ´Â ¸®´ª½º ½©µéÀº ¸ðµÎ ¸®´ÙÀÌ·º¼Ç(redirection)À» Áö¿ø ÇÑ´Ù. ¿¹¸¦ µé¾î $ ls | pr | lpr À̶ó´Â ¸í·ÉÀº ls ¸í·ÉÀÌ Ãâ·ÂÇÏ´Â ÆÄÀÏ À̸§µéÀ» pr ¸í·ÉÀÇ Ç¥ÁØ ÀÔ·Â À¸·Î º¸³»°í, pr ¸í·ÉÀº ÀÔ·ÂµÈ ³»¿ëÀ» ÆäÀÌÁö ´ÜÀ§·Î ³ª´«´Ù. pr ¸í·ÉÀÇ Ç¥ÁØ Ãâ·ÂÀ¸·Î ³ª¿Â °á°ú´Â ´Ù½Ã lpr ¸í·ÉÀÇ Ç¥ÁØ ÀÔ·ÂÀ¸·Î º¸³»Á®¼­ ±âº» ÇÁ¸°ÅÍ·Î Ãâ·ÂµÈ´Ù. ÆÄÀÌÇÁ´Â À§ÀÇ ¿¹¿¡¼­Ã³·³ ÇÑ ÇÁ·Î¼¼½ºÀÇ Ç¥ÁØ Ãâ·Â À» ´Ù¸¥ ÇÁ·Î¼¼½ºÀÇ Ç¥ÁØ ÀÔ·ÂÀ¸·Î º¸³»ÁÖ´Â ´Ü¹æÇâ ¹ÙÀÌÆ® ½ºÆ®¸²ÀÌ´Ù. ÆÄÀÌÇÁ·Î ¿¬°áµÇ´Â ÇÁ·Î¼¼½ºµéÀº ÀÌ·± ¸®´ÙÀÌ·º¼ÇÀÌ ÀϾ°í ÀÖ´Ù´Â °ÍÀº ¾ËÁö ¸øÇϸç, º¸Åë ¶§¿Í ¸¶Âù°¡Áö·Î µ¿ÀÛÇÑ´Ù. ¿©±â¼­ ÇÁ·Î¼¼½º°£¿¡ Àӽà ÆÄÀÌÇÁ¸¦ ¸¸µé¾î ¿¬°á½ÃÄÑÁÖ´Â °ÍÀº ½©ÀÌ´Ù. ¸®´ª½º¿¡¼­ ÆÄÀÌÇÁ´Â Àӽ÷Π¸¸µé¾îÁø VFS inode¸¦ ¶È°°ÀÌ °¡¸®Å°´Â µÎ°³ ÀÇ file ÀڷᱸÁ¶¸¦ »ç¿ëÇؼ­ ±¸ÇöµÇ¸ç, ¿©±â¼­ VFS inode´Â ¸Þ¸ð¸®»óÀÇ ¹°¸®Àû ÆäÀÌÁö¸¦ °¡¸®Å°°Ô µÈ´Ù . ±×¸² 5.1Àº °¢ file ÀڷᱸÁ¶°¡ °¢±â ´Ù¸¥ ÆÄÀÏ ¿¬»ê ·çƾ º¤Å͸¦ °¡¸®Å° ´Â Æ÷ÀÎÅ͸¦ °¡Áö°í ÀÖ´Â ¸ð½ÀÀ» º¸¿©ÁØ´Ù. ¿©±â¼­ ÇÑ file ÀڷᱸÁ¶´Â ÆÄÀÌÇÁ¿¡ ¾²´Â ÇÔ¼ö¿¡ ´ëÇÑ Æ÷ÀÎÅ͸¦, ´Ù¸¥ ÀڷᱸÁ¶´Â ÆÄÀÌÇÁ¿¡¼­ ÀÐ¾î µéÀÌ´Â ÇÔ¼ö¿¡ ´ëÇÑ Æ÷ÀÎÅ͸¦ °¡Áø´Ù. ÀÌ°ÍÀº º¸ÅëÀÇ ÆÄÀÏ¿¡ ÀÐ°í ¾²´Â ½Ã½ºÅÛ ÄÝÀÌ ¾Æ·¡ °èÃþÀÇ Â÷ÀÌ¿¡ °ü°è ¾øÀÌ µ¿ÀÛÇϵµ·Ï ÇÑ´Ù. ¾²´ÂÇÁ·Î¼¼½º°¡ ÆÄÀÌÇÁ¿¡ ¾´ µ¥ÀÌÅÍ´Â °øÀ¯ µ¥ÀÌÅÍ ÆäÀÌÁö¿¡ º¹»çµÇ°í, Àд ÇÁ·Î¼¼½º°¡ ±× ÆÄÀÌÇÁ·ÎºÎÅÍ ÀÐ¾î µéÀ϶§´Â °øÀ¯ µ¥ÀÌÅÍ ÆäÀÌÁö·ÎºÎÅÍ µ¥ÀÌÅÍ°¡ º¹»çµÇ°Ô µÈ´Ù. ¸®´ª½º´Â ÆÄÀÌÇÁ¿¡ ´ëÇÑ Á¢±ÙÀ» µ¿±âÈ­ÇØ¾ß ÇÑ´Ù. ÆÄÀÌÇÁÀÇ Àд ÇÁ·Î¼¼½º ¿Í ¾²´Â ÇÁ·Î¼¼½º°¡ ¹Ýµå½Ã Â÷·Ê¸¦ Áöų ¼ö ÀÖµµ·Ï ÇØ¾ß ÇÏ°í, ±×·¸°Ô Çϱâ À§ÇØ ¶ô(lock)°ú ´ë±âÅ¥(waiting queue), ½Ã±×³Î µîÀ» »ç¿ëÇÑ´Ù. Process 1 Process 2 file file +-----------+ +-----------+ | f_mode | | f_mode | +-----------+ +-----------+ | f_pos | | f_pos | +-----------+ +-----------+ | f_flags | | f_flags | +-----------+ +-----------+ | f_count | | f_count | +-----------+ +-----------+ | f_owner | | f_owner | +-----------+ +-----------+ | f_inode |-----+ +-------------------+ | f_inode |-----+ +-----------+ | | | +-----------+ | | f_op |--+ | | | | f_op |--+ | +-----------+ | | | inode | +-----------+ | | | f_version | | | | +---------+ | | f_version | | | +-----------+ | | +-->| | | +-----------+ | | | +----->| | +--------------------+ | | | | | | | Data Page | | | | +-----------+ | | | |------->| | | | +---------+ | | | V | | V Pipe | | Pipe Write | | Read Operations | | Operations | | | | | | | | | | | | +-----------+ ±×¸² 5.1 : Pipes ÇÁ·Î¼¼½º°¡ ÆÄÀÌÇÁ¿¡ ¾²±â¸¦ ÇÒ ¶§´Â ¾²±â¸¦ Çϴ ǥÁØ ¶óÀ̺귯¸® ÇÔ¼ö¸¦ »ç¿ëÇÑ´Ù. À̵é ÇÔ¼öµé¿¡´Â ÆÄÀÏ ±â¼úÀÚ(file descriptor)¸¦ ³Ñ±â´Âµ¥, ÀÌ´Â ÇÁ·Î¼¼½º°¡ °¡Áø ¿©·¯°³ÀÇ file ÀڷᱸÁ¶(ÀÌµé °¢°¢Àº ÇÁ·Î¼¼½º°¡ ¿­¾î ³õÀº ÆÄÀÏÀ» ³ªÅ¸³»¸ç, ÀÌ °æ¿ì¿¡´Â ¿­¾î ³õÀº ÆÄÀÌÇÁ¸¦ ³ªÅ¸³½´Ù) ¿¡ ´ëÇÑ À妽ºÀÌ´Ù . ¸®´ª½º ½Ã½ºÅÛ ÄÝÀº ÀÌ ÆÄÀÌÇÁ¸¦ ³ªÅ¸³»´Â file ÀڷᱸÁ¶¿¡¼­ °¡¸®Å°°í ÀÖ´Â ¾²±â ·çƾÀ» »ç¿ëÇÑ´Ù. ÀÌ ¾²±â ·çƾÀº ¾²±â ¿äûÀ» ó¸®Çϱâ À§ÇØ ÆÄÀÌÇÁ¸¦ ³ªÅ¸³»´Â VFS inode¿¡ ÀÖ´Â Á¤º¸µéÀ» ÀÌ¿ë ÇÑ´Ù. ÆÄÀÌÇÁ¿¡ ¿äûÇÑ ¹ÙÀÌÆ®µéÀ» ¸ðµÎ ¾µ °ø°£ÀÌ ÀÖ°í, ÆÄÀÌÇÁ¸¦ Àд ÇÁ·Î¼¼½º°¡ ¶ôÀ» °É¾îµÎÁö ¾Ê¾Ò´Ù¸é, ¸®´ª½º´Â ¸ÕÀú ÆÄÀÌÇÁ¿¡ ¶ôÀ» °É°í, ¾µ µ¥ÀÌÅÍ ¹ÙÀÌÆ®µéÀ» ÇÁ·Î¼¼½ºÀÇ ÁÖ¼Ò°ø°£¿¡¼­ °øÀ¯ µ¥ÀÌÅÍ ÆäÀÌÁö·Î º¹»çÇÑ´Ù. ¸¸¾à Àд ÇÁ·Î¼¼½º°¡ ÆÄÀÌÇÁ¿¡ ¶ôÀ» °É¾îµÎ¾ú°Å³ª µ¥ÀÌÅ͸¦ ´ãÀ» ÃæºÐÇÑ °ø°£ÀÌ ¾ø´Ù¸é, ÇöÀç ÇÁ·Î¼¼½º´Â ÇØ´ç ÆÄÀÌÇÁ inode¿¡ ÀÖ´Â ´ë±âÅ¥¿¡ µé¾î°¡ Àáµé°í, ½ÇÇàÇÒ ¼ö ÀÖ´Â ´Ù¸¥ ÇÁ·Î¼¼½º¸¦ ¼±ÅÃÇϱâ À§ÇØ ½ºÄÉÁì·¯¸¦ È£ÃâÇÑ´Ù. Àáµç ÇÁ·Î¼¼½º´Â ÀÎÅÍ·´Æ® Çã¿ë »óÅÂÀ̹ǷÎ, ½Ã±×³Î À» ¹ÞÀ» ¼ö ÀÖÀ¸¸ç, Àд ÇÁ·Î¼¼½º¿¡ ÀÇÇØ ¾µ µ¥ÀÌÅ͸¦ ´ã±â¿¡ ÃæºÐÇÑ °ø°£ÀÌ »ý±â°Å³ª ÆÄÀÌÇÁÀÇ ¶ôÀ» Ç®¸®¸é ±ú¾î³ª°Ô µÈ´Ù. µ¥ÀÌÅ͸¦ ¾²°í³ª¸é ÆÄÀÌÇÁÀÇ VFS inodeÀÇ ¶ôÀ» Ç®°í, inodeÀÇ ´ë±âÅ¥¿¡¼­ ±â´Ù¸®¸ç Àáµé¾î ÀÖ´Â Àд ÇÁ·Î¼¼½º¸¦ ±ú¿ì°Ô µÈ´Ù. ÆÄÀÌÇÁ¿¡¼­ µ¥ÀÌÅ͸¦ Àд °úÁ¤Àº ÆÄÀÌÇÁ¿¡ ¾²´Â °úÁ¤°ú ¸Å¿ì ºñ½ÁÇÏ´Ù. ÇÁ·Î¼¼½ºµéÀº ºí·°Å·À» ÇÏÁö ¾Ê°í ÀÐÀ» ¼ö Àִµ¥ (ÀÌ´Â ÆÄÀÏÀ̳ª ÆÄÀÌÇÁ ¸¦ ¿­ ¶§ ¾î¶² ¸ðµå¸¦ »ç¿ëÇÏ¿´´À³Ä¿¡ µû¶ó ´Ù¸£´Ù), ÀÌ °æ¿ì ÀÐÀ» µ¥ÀÌÅÍ °¡ ¾ø°Å³ª ÆÄÀÌÇÁ¿¡ ¶ôÀÌ °É·ÁÀÖÀ¸¸é ¿¡·¯°¡ µ¹¾Æ¿Â´Ù. ÀÌ´Â ÇÁ·Î¼¼½º°¡ ÀáµéÁö ¾Ê°í ½ÇÇàÀ» °è¼ÓÇÒ ¼ö ÀÖ´Ù´Â °ÍÀÌ´Ù. ºí·°Å· ¸ðµå¶ó¸é ÆÄÀÌÇÁ inodeÀÇ ´ë±âÅ¥¿¡¼­ ¾²±â ÇÁ·Î¼¼½º°¡ ³¡³ª±â¸¦ ±â´Ù·Á¾ß ÇÑ´Ù. ¾çÂÊ ÇÁ·Î ¼¼½º°¡ ÆÄÀÌÇÁ¸¦ ÅëÇÑ ÀÛ¾÷À» Á¾·áÇϸé, ÆÄÀÌÇÁ inode´Â °øÀ¯ µ¥ÀÌÅÍ ÆäÀÌ Áö¿Í ÇÔ²² Æó±âµÈ´Ù. ¸®´ª½º´Â ÁöÁ¤ ÆÄÀÌÇÁ(named pipe)µµ Áö¿øÇÑ´Ù. ÁöÁ¤ ÆÄÀÌÇÁ´Â FIFO¶ó°íµµ ºÒ¸®´Âµ¥ ÀÌ´Â ÆÄÀÌÇÁ°¡ ¸ÕÀú µé¾î¿Â °ÍÀÌ ¸ÕÀú ³ª°¡´Â(First In First Out, FIFO) ¿øÄ¢¿¡ µû¶ó µ¿ÀÛÇϱ⠶§¹®ÀÌ´Ù. ÆÄÀÌÇÁ¿¡ ¸ÕÀú ¾´ µ¥ÀÌÅÍ´Â ÆÄÀÌÇÁ¿¡¼­ ÀÐÀ» ¶§ ¸ÕÀú ³ª¿Â´Ù. ÆÄÀÌÇÁ¿Í ´Þ¸® FIFO´Â ÀÓ½ÃÀûÀ¸·Î »ý¼º µÈ °ÍÀÌ ¾Æ´Ï¶ó ÆÄÀÏ ½Ã½ºÅÛ¿¡ ½ÇÀç Á¸ÀçÇÏ´Â °ÍÀ̸ç, mkfifo ¸í·ÉÀ¸·Î »ý¼ºÇÒ ¼ö ÀÖ´Ù. ÇÁ·Î¼¼½º´Â ÇØ´çÇÏ´Â Á¢±Ù ±ÇÇÑÀ» °¡Áö°í ÀÖ´Ù¸é FIFO¸¦ ÀÚÀ¯·Ó°Ô »ç¿ëÇÒ ¼ö ÀÖ´Ù. FIFO¸¦ ¿©´Â ¹æ¹ýÀº ÆÄÀÌÇÁ¿Í´Â Á¶±Ý ´Ù¸£´Ù. ÆÄÀÌÇÁ(µÎ°³ÀÇ file ÀڷᱸÁ¶¿Í À̵éÀÌ °¡Áø VFS inode, °øÀ¯ µ¥ÀÌÅÍ ÆäÀÌ Áö)´Â Çѹø¿¡ ¸¸µé¾îÁö´Âµ¥ ¹ÝÇØ, FIFO´Â ÀÌ¹Ì Á¸ÀçÇÏ´Â °ÍÀ̸ç, »ç¿ëÀÚ¿¡ ÀÇÇØ ¿­°í ´ÝÇôÁö´Â °ÍÀÌ´Ù . ¸®´ª½º´Â FIFO¿¡ ¾²´Â ÇÁ·Î¼¼½º°¡ ¾øÀ» ¶§ ´Ù¸¥ ÇÁ·Î¼¼½º°¡ À̸¦ Àбâ À§ÇØ ¿­·Á°í ÇÏ´Â °ÍÀ̳ª, FIFO¿¡ ¾²´Â ÇÁ·Î ¼¼½º°¡ FIFO¿¡ ¾²±â¸¦ Çϱâ Àü¿¡ Àд ÇÁ·Î¼¼½º°¡ ÀÐÀ¸·Á°í ÇÏ´Â °Í ¸ðµÎ ó¸®ÇØ¾ß ÇÑ´Ù. À̸¦ Á¦¿ÜÇϸé, FIFO´Â °ÅÀÇ ¿ÏÀüÈ÷ ÆÄÀÌÇÁ¿Í ¶È°°Àº ¹æ¹ý À¸·Î Ãë±ÞµÇ¸ç, °°Àº ÀڷᱸÁ¶¿Í ¿¬»êÀ» »ç¿ëÇÑ´Ù . 5.3 ¼ÒÄÏ(Socket) REVIEW NOTE : ³×Æ®¿öÅ© ÀåÀ» ¾´ ´ÙÀ½¿¡ Ãß°¡ÇÑ´Ù. 5.3.1. ½Ã½ºÅÛ V IPC ¸ÞÄ¿´ÏÁò ¸®´ª½º´Â À¯´Ð½º System V (1983)¿¡¼­ óÀ½ µîÀåÇÑ ¼¼°¡Áö Á¾·ùÀÇ ÇÁ·Î ¼¼½º°£ Åë½Å ¹æ¹ýÀ» Á¦°øÇÑ´Ù. À̵éÀº ¸Þ½ÃÁö Å¥(message queue)¿Í ¼¼¸¶ Æ÷¾î(semaphore), ±×¸®°í °øÀ¯ ¸Þ¸ð¸®(shared memory)ÀÌ´Ù. ÀÌµé ½Ã½ºÅÛ V IPC ¹æ¹ýµéÀº ¸ðµÎ ¶È°°Àº ÀÎÁõ ¹æ¹ýÀ» °øÀ¯ÇÑ´Ù. ÇÁ·Î¼¼½º´Â Ä¿³Î¿¡ ½Ã½ºÅÛ ÄÝ·Î À̵é ÀÚ¿øÀ» °¡¸®Å°´Â À¯ÀÏÇÑ ÂüÁ¶ ½Äº°ÀÚ(reference identifier)¸¦ Àü´ÞÇÔÀ¸·Î½á¸¸ À̵鿡 Á¢±ÙÇÒ ¼ö ÀÖ´Ù. ÀÌµé ½Ã½ºÅÛ V IPC °´Ã¼µé¿¡ ´ëÇÑ Á¢±ÙÀº Á¢±Ù ±ÇÇÑ(access permission)À» °¡Áö°í °Ë»çÇÏ´Â µ¥, ÆÄÀÏ¿¡ ´ëÇÑ Á¢±ÙÀ» °Ë»çÇÏ´Â °Í°ú ¸¹ÀÌ ºñ½ÁÇÏ´Ù. ½Ã½ºÅÛ V IPC °´Ã¼ ¿¡ ´ëÇÑ Á¢±Ù ±ÇÇÑÀº ½Ã½ºÅÛ ÄÝÀ» ÅëÇÏ¿© °´Ã¼ÀÇ »ý¼ºÀÚ¿¡ ÀÇÇØ ÁöÁ¤µÈ´Ù. °¢ Åë½Å ¹æ¹ýµéÀº ÂüÁ¶ ½Äº°ÀÚ¸¦ ÀÚ¿ø Å×ÀÌºí¿¡ ´ëÇÑ À妽ºÃ³·³ »ç¿ëÇÏ´Â µ¥, ÂüÁ¶ ½Äº°ÀÚ´Â ¸»±×´ë·Î À妽ºÀÎ °ÍÀº ¾Æ´Ï°í, À妽º¸¦ ¸¸µé±â À§ÇØ ¼­´Â ¾à°£ÀÇ °è»êÀÌ ÇÊ¿äÇÏ´Ù. ½Ã½ºÅÛ¿¡ ÀÖ´Â ½Ã½ºÅÛ V IPC °´Ã¼¸¦ ³ªÅ¸³»´Â ¸®´ª½º ÀڷᱸÁ¶´Â ¸ðµÎ, ÇÁ·Î¼¼½ºÀÇ ¼ÒÀ¯ÀÚ¿Í »ý¼ºÀÚÀÇ uid, gid¿Í ÀÌ °´Ã¼¿¡ ´ëÇÑ Á¢±Ù ¸ðµå(¼ÒÀ¯ ÀÚ, ±×·ì, ±×¹Û¿¡ ´ëÇÑ)¿Í IPC °´Ã¼ÀÇ Å°¸¦ °¡Áø ipc_permÀ̶ó´Â ÀڷᱸÁ¶ ¸¦ Æ÷ÇÔÇÏ°í ÀÖ´Ù. Å°´Â ½Ã½ºÅÛ V IPC °´Ã¼ÀÇ ÂüÁ¶ ½Äº°ÀÚ¸¦ ã´Â ÇÑ ¹æ¹ý À¸·Î ¾²ÀδÙ. ¸ðµÎ µÎ Á¾·ùÀÇ Å°¸¦ Áö¿øÇϴµ¥, °ø¿ë(public)¿Í °³Àοë (private)ÀÌ ±×°ÍÀÌ´Ù. ¸¸¾à Å°°¡ °ø¿ë¶ó¸é ½Ã½ºÅÛ¿¡ ÀÖ´Â ¾î¶² ÇÁ·Î¼¼½º µçÁö ±ÇÇÑ °Ë»ç¸¦ Åë°úÇÑ´Ù¸é ½Ã½ºÅÛ V IPC °´Ã¼¿¡ ´ëÇÑ ÂüÁ¶ ½Äº°ÀÚ¸¦ ãÀ» ¼ö ÀÖ´Ù. ½Ã½ºÅÛ V IPC °´Ã¼´Â Å°·Î ÂüÁ¶ÇÒ ¼ö ¾øÀ¸¸ç, À̵鿡 ´ëÇÑ ÂüÁ¶ ½Äº°Àڷθ¸ ÂüÁ¶ÇÒ ¼ö ÀÖ´Ù. 5.3.2 ¸Þ½ÃÁö Å¥(Message Queue) ¸Þ½ÃÁö Å¥´Â Çϳª ÀÌ»óÀÇ ÇÁ·Î¼¼½º°¡ ¸Þ½ÃÁö¸¦ ¾µ ¼ö ÀÖ°í, À̸¦ Çϳª ÀÌ»óÀÇ ÇÁ·Î¼¼½º°¡ ÀÐÀ» ¼ö ÀÖÀ» ¼ö ÀÖµµ·Ï ÇÑ´Ù. ¸®´ª½º´Â ¸Þ½ÃÁö Å¥ÀÇ ¸®½ºÆ®¸¦ msgque º¤ÅÍ·Î °ü¸®ÇÑ´Ù. msgqueÀÇ °¢ ¿ø¼Ò´Â ¸Þ½ÃÁö Å¥¿¡ ´ëÇÑ ¸ðµç °ÍÀ» ±â¼úÇÏ´Â msqid_ds ÀÚ·á ±¸Á¶¸¦ °¡¸®Å²´Ù. ¸Þ½ÃÁö Å¥¸¦ Çϳª »ý¼ºÇϸé msqid_ds ÀڷᱸÁ¶¸¦ ½Ã½º ÅÛ ¸Þ¸ð¸®¿¡¼­ ÇÒ´ç¹Þ¾Æ ÀÌ º¤ÅÍ¿¡ »ðÀÔÇÑ´Ù. °¢ msqid_ds ÀڷᱸÁ¶´Â ipc_perm ÀڷᱸÁ¶¿Í, ÀÌ Å¥¿¡ µé¾î¿Â ¸Þ½ÃÁö¿¡ ´ëÇÑ Æ÷ÀÎÅ͵éÀ» °¡Áö°í ÀÖ´Ù. Ãß°¡·Î, ¸®´ª½º´Â Å¥¿¡ ¸¶Áö¸·À¸·Î ¾´ ½Ã°£°°Àº Å¥ ¼öÁ¤ ½Ã°£µµ À¯ÁöÇÑ´Ù. msqid_ds´Â µÎ °³ÀÇ ´ë±âÅ¥µµ °¡Áö°í ÀÖ´Ù : Çϳª´Â Å¥¿¡ ¾²·Á´Â ÇÁ·Î¼¼½º ¸¦ À§ÇØ, Çϳª´Â Å¥¿¡¼­ ÀÐÀ»·Á´Â ÇÁ·Î¼¼½º¸¦ À§Çؼ­´Ù. msqid_ds +------------+ | | | ipc | | | +------------+ | | +------------+ | *msg_last | msg msg +------------+ +-----------+ +-----------+ | *msg_first |------------->| *msg_next |------------->| *msg_next | +------------+ +-----------+ +-----------+ | | | msg_type | | msg_type | | times | +-----------+ +-----------+ | | | *msg_spot | | *msg_spot | +------------+ +-----------+ +-----------+ | *wwait | | msg_stime | | msg_stime | +------------+ +-----------+ +-----------+ | *rwait | | msg_ts | | msg_ts | +------------+ ^ +-----------+ ^ +-----------+ | | | | | | | | +------------+ | | | | | | | msg_qnum | | | | | | | +------------+ msg_ts | message | msg_ts | message | | | | | | | | | +------------+ | | | | | | | | | | | | V +-----------+ V +-----------+ <-------------- msg-qnum --------------> ±×¸² 5.2 : System V IPC Message Queues ÇÁ·Î¼¼½º°¡ Å¥¿¡ ¸Þ½ÃÁö¸¦ ¾²·Á°í ÇÒ ¶§¸¶´Ù, È¿·Â »ç¿ëÀÚ ½Äº°ÀÚ (effective user identifier)¿Í È¿·Â ±×·ì ½Äº°ÀÚ(effective group identifier)¸¦ Å¥ÀÇ ipc_perm ÀڷᱸÁ¶¿¡ ÀÖ´Â ¸ðµå¿Í ºñ±³ÇÑ´Ù. ±×·¡¼­ ÇÁ·Î¼¼½º°¡ Å¥¿¡ ¾µ ¼ö ÀÖ´Ù¸é ¸Þ½ÃÁö´Â ÇÁ·Î¼¼½ºÀÇ ÁÖ¼Ò°ø°£¿¡¼­ msg ÀڷᱸÁ¶·Î º¹»çµÇ°í ¸Þ½ÃÁö Å¥ÀÇ ¸¶Áö¸·¿¡ ³õÀδÙ. °¢ ¸Þ½ÃÁö¿¡´Â °°ÀÌ Çùµ¿ÇÏ´Â ÇÁ·Î¼¼½º°£¿¡ ¼­·Î ¾à¼ÓÇÑ Å¸ÀÔÀÎ, ÀÀ¿ëÇÁ·Î±×·¥ ÁöÁ¤ ŸÀÔÀ» ²¿¸®Ç¥·Î ´Ü´Ù. ¸®´ª½º´Â ¾µ ¼ö ÀÖ´Â ¸Þ½ÃÁöÀÇ °³¼ö¿Í ±æÀ̸¦ Á¦ÇÑÇÏ°í ÀÖÀ¸¹Ç·Î ¸Þ½ÃÁö¸¦ ¾µ °ø°£ÀÌ ¾øÀ» ¼öµµ ÀÖ´Ù. ÀÌ·± °æ¿ì ÇÁ·Î¼¼½º´Â ¸Þ½Ã Áö Å¥ÀÇ ¾²±â ´ë±âÅ¥(msqid_dsÀÇ *wwait Ç׸ñ)¿¡ Ãß°¡µÇ°í ½ÇÇàÇÒ »õ·Î¿î ÇÁ·Î¼¼½º¸¦ ¼±ÅÃÇϱâ À§ÇØ ½ºÄÉÁì·¯¸¦ È£ÃâÇÑ´Ù. ÇÁ·Î¼¼½º´Â ¸Þ½ÃÁö Å¥ ¿¡¼­ Çϳª ÀÌ»óÀÇ ¸Þ½ÃÁö°¡ ÀÐÇûÀ» ¶§ ±ú¾î³ª°Ô µÈ´Ù. +--------+ +------>| | | | | array of | +--------+ semaphores | | | semid_ds | | | +------------------+ | +--------+ | | | | | | ipc | | | | | | | +--------+ +------------------+ | | | | | | | | | time | | +--------+ sem_queue | | | | | +---------+ +------------------+ | | | +-->| next | | sem_base |----+ +--------+ | +---------+ +------------------+ | | prev | | sem_pending |------------------------+ +---------+ +------------------+ | sleeper | | sem_pending_last | sem_undo +---------+ +------------------+ +-----------+ | undo | | undo |-->| proc_next | +---------+ +------------------+ +-----------+ | pid | | sem_nsems | | id_next | +---------+ +------------------+ +-----------+ | status | | semid | +---------+ +-----------+ +----+ | sma | | semadj |-->| | +---------+ +----+ +-----------+ | | | sops |-->| | | | +---------+ | | | | | nsops | | | | | +---------+ | | | | | | +----+ | | | | +----+ ±×¸² 5.3 : System V IPC Semaphores Å¥¿¡¼­ Àд °ÍÀº ºñ½ÁÇÑ °úÁ¤À» °ÅÄ£´Ù. ¸¶Âù°¡Áö·Î ÇÁ·Î¼¼½º°¡ °¡Áø Å¥¿¡ ´ëÇÑ Á¢±Ù ±ÇÇÑÀ» °Ë»çÇÑ´Ù. Àд ÇÁ·Î¼¼½º´Â ŸÀÔ¿¡ °ü°è¾øÀÌ Å¥¿¡ Àִ ù¹ø° ¸Þ½ÃÁö¸¦ °¡Á®¿Ã Áö, ¶Ç´Â ƯÁ¤ÇÑ Å¸ÀÔÀ» °¡Áø ¸Þ½ÃÁö¸¦ ¼±Åà ÇÒ Áö °í¸¦ ¼ö ÀÖ´Ù. ÀÌ ±âÁØ¿¡ ¸Â´Â ¸Þ½ÃÁö°¡ ¾ø´Ù¸é ÀÐÀ¸·Á´Â ÇÁ·Î¼¼½º ´Â ¸Þ½ÃÁö Å¥ÀÇ Àб⠴ë±âÅ¥(msgq_idÀÇ *rwait Ç׸ñ)¿¡ Ãß°¡µÇ°í, ½ºÄÉÁì ·¯°¡ ½ÇÇàµÈ´Ù. Å¥¿¡ »õ·Î¿î ¸Þ½ÃÁö¸¦ ¾²°Ô µÇ¸é ÀÌ ÇÁ·Î¼¼½º´Â ±ú¾î³ª ´Ù½Ã ½ÇÇàÇÒ ¼ö ÀÖ°Ô µÈ´Ù. 5.3.3 ¼¼¸¶Æ÷¾î(Semaphore) ¼¼¸¶Æ÷¾îÀÇ °¡Àå ´Ü¼øÇÑ ÇüÅ´ ¸Þ¸ð¸®ÀÇ ÇÑ À§Ä¡¿¡ ÀÖ´Â º¯¼ö·Î, ±× °ªÀ» Çϳª ÀÌ»óÀÇ ÇÁ·Î¼¼½º°¡ °Ë»çÇÏ°í ¼³Á¤(test and set)ÇÒ ¼ö ÀÖ´Â °ÍÀÌ´Ù. ÀÌ °Ë»ç ¹× ¼³Á¤(test and set) ¿¬»êÀº, °¢ ÇÁ·Î¼¼½º¿¡ À־, Áß´ÜµÉ ¼ö ¾ø´Â, Áï ¿øÀÚ¼ºÀ» °¡Áø °ÍÀÌ´Ù. Áï Çѹø ½ÃÀÛµÇ¸é ¾Æ¹«°Íµµ À̸¦ Áß´ÜÇÒ ¼ö ¾ø´Ù . ÀÌ °Ë»ç ¹× ¼³Á¤ ¿¬»êÀÇ °á°ú´Â ¼¼¸¶Æ÷¾îÀÇ ÇöÀç°ª¿¡ ´õÇÏ¿© °ªÀ» ¼³Á¤ÇÏ´Â °ÍÀ̸ç, ÀÌ °ªÀº ¾ç¼öÀÏ ¼öµµ À½¼öÀÏ ¼öµµ ÀÖ´Ù. °Ë»ç ¹× ¼³Á¤ ¿¬»êÀÇ °á°ú¿¡ µû¶ó¼­ ÇÑ ÇÁ·Î¼¼½º´Â ´Ù¸¥ ÇÁ·Î¼¼½º°¡ ¼¼¸¶Æ÷¾îÀÇ °ª À» ¹Ù²Ü ¶§±îÁö ±â´Ù¸®¸ç Àáµé¾î¾ß ÇÒ ¼öµµ ÀÖ´Ù. ¼¼¸¶Æ÷¾î´Â µ¿½Ã¿¡ ÇÑ ÇÁ·Î¼¼½º¸¸ÀÌ ½ÇÇàÇØ¾ß ÇÏ´Â Áß¿äÇÑ Äڵ尡 ÀÖ´Â, ÀÓ°èÁö¿ª(critical region)À» ±¸ÇöÇϴµ¥ »ç¿ëÇÒ ¼ö ÀÖ´Ù. ¿©·¯°³ÀÇ Çùµ¿ÇÏ´Â ÇÁ·Î¼¼½º°¡ ÇϳªÀÇ µ¥ÀÌÅÍ ÆÄÀÏ¿¡¼­ ·¹Äڵ带 Àаųª ¾´´Ù°í ÇÏÀÚ. ÀÌ ¶§ ÆÄÀÏ¿¡ ´ëÇÑ Á¢±ÙÀÌ ¿ÏÀüÈ÷ Á¶È­·Ó°Ô ÀÌ·ç¾îÁö±æ ¹Ù¶ö °ÍÀÌ´Ù. ¿©±â¼­ ¼¼¸¶Æ÷¾î¸¦ »ç¿ëÇÒ ¼ö Àִµ¥, ¸ÕÀú ¼¼¸¶Æ÷¾îÀÇ Ãʱ⠰ªÀ» 1·Î ÇÏ°í, ÆÄÀÏ ¿¬»êÀ» ÇÏ´Â ÄÚµåÀÇ ÁÖÀ§¿¡ µÎ°³ÀÇ ¼¼¸¶Æ÷¾î ¿¬»êÀ» µÎ¾î¼­, ù¹ø° °ÍÀº ¼¼¸¶Æ÷¾îÀÇ °ªÀ» °Ë»çÇÏ°í °ªÀ» °¨¼Ò½ÃÅ°°í, ´ÙÀ½ °ÍÀº °ªÀ» °Ë»çÇÏ°í Áõ°¡½ÃÅ°°Ô ÇÒ ¼ö ÀÖ´Ù. ÆÄÀÏ¿¡ Á¢±ÙÇÏ·Á´Â ù¹ø° ÇÁ·Î¼¼½º´Â ¼¼¸¶Æ÷¾îÀÇ °ªÀ» °¨¼Ò½ÃÅ°·Á°í ÇÏ°í, ÀÌ°ÍÀÌ ¼º°øÇÏ¿© ¼¼¸¶ Æ÷¾îÀÇ °ªÀº 0ÀÌ µÈ´Ù. ÀÌ ÇÁ·Î¼¼½º´Â ÀÌÁ¦ °è¼Ó ÁøÇàÇÏ¿© µ¥ÀÌÅÍ ÆÄÀÏÀ» »ç¿ëÇÏÁö¸¸, À̸¦ »ç¿ë ÇÏ·Á°í ÇÏ´Â ´Ù¸¥ ÇÁ·Î¼¼½º´Â ¼¼¸¶Æ÷¾îÀÇ °ªÀ» °¨¼Ò½ÃÅ°·Á°í Çߴµ¥ °á°ú °¡ -1ÀÌ µÇ¹Ç·Î ½ÇÆÐÇÑ´Ù. ÀÌ ÇÁ·Î¼¼½º´Â ù¹ø° ÇÁ·Î¼¼½º°¡ µ¥ÀÌÅÍ ÆÄÀÏ ÀÛ¾÷À» ³¡¸¶Ä¥ ¶§°¡Áö Áß´ÜµÉ °ÍÀÌ´Ù. ù¹ø° ÇÁ·Î¼¼½º°¡ µ¥ÀÌÅÍ ÆÄÀÏ ÀÛ¾÷À» ¸¶Ä¡¸é ¼¼ÆÄÆ÷¾îÀÇ °ªÀ» ´Ù½Ã Áõ°¡½ÃÄÑ 1·Î ¸¸µç´Ù. ÀÌÁ¦ ±â´Ù¸® ´Â ÇÁ·Î¼¼½º´Â ±ú¾î³ª¼­ À̹ø¿¡´Â ¼¼¸¶Æ÷¾î¸¦ °¨¼Ò½ÃÅ°·Á´Â ½Ãµµ°¡ ¼º°ø ÇÏ°Ô µÈ´Ù . ½Ã½ºÅÛ V IPC ¼¼¸¶Æ÷¾î °´Ã¼µéÀº °¢°¢ ¼¼¸¶Æ÷¾îÀÇ ¹è¿­À» ³ªÅ¸³»°í, ¸®´ª ½º´Â À̸¦ ³ªÅ¸³»±â À§ÇØ semid_ds ÀڷᱸÁ¶¸¦ »ç¿ëÇÑ´Ù. semary´Â ½Ã½ºÅÛ ¿¡ ÀÖ´Â ¸ðµç semid_ds ÀڷᱸÁ¶¸¦ °¡¸®Å°°í ÀÖ´Â, Æ÷ÀÎÅÍÀÇ º¤ÅÍÀÌ´Ù. semid_ds ÀڷᱸÁ¶¿¡´Â sem_nsems °¹¼ö¸¸Å­ÀÇ ¼¼¸¶Æ÷¾î ¹è¿­ÀÌ ÀÖÀ¸¸ç, °¢°¢Àº sem ÀڷᱸÁ¶·Î ±â¼úµÈ´Ù. ÀÌ ¼¼¸¶Æ÷¾î ¹è¿­Àº sem_baseÀÌ °¡¸®Å° °í ÀÖ´Ù . ½Ã½ºÅÛ V IPC ¼¼¸¶Æ÷¾î °´Ã¼ÀÇ ¼¼¸¶Æ÷¾î ¹è¿­À» °ü¸®ÇÒ ¼ö ÀÖ´Â ±ÇÇÑÀ» °¡Áø ¸ðµç ÇÁ·Î¼¼½ºµéÀº À̵éÀ» ´Ù·ç´Â ½Ã½ºÅÛ ÄÝÀ» ºÎ¸¦ ¼ö ÀÖ´Ù. ½Ã½ºÅÛ ÄÝÀº Çѹø¿¡ ¿©·¯°³ÀÇ ¿¬»êÀ» ÁöÁ¤ÇÒ ¼ö ÀÖÀ¸¸ç, °¢ ¿¬»êÀº ¼¼°¡Áö ÀÔ·Â - ¼¼¸¶Æ÷¾î À妽º, ¿¬»ê °ª, Ç÷¡±×µéÀÇ ¼¼Æ® - À¸·Î ³ªÅ¸³»Áø´Ù. ¼¼¸¶Æ÷¾î À妽º´Â ¼¼¸¶Æ÷¾î ¹è¿­¿¡¼­ÀÇ À妽ºÀ̸ç, ¿¬»ê °ªÀº ¼¼¸¶Æ÷¾î ÀÇ ÇöÀç °ª¿¡ Ãß°¡µÉ ¼ýÀÚ °ªÀÌ´Ù. ¸ÕÀú ¸®´ª½º´Â ¸ðµç ¿¬»êÀÌ ¼º°øÇÒ ¼ö ÀÖ´ÂÁö Å×½ºÆ®ÇÑ´Ù. ¿¬»ê °ªÀ» ¼¼¸¶Æ÷¾îÀÇ ÇöÀç °ª¿¡ ´õÇÑ °ªÀÌ 0 ÀÌ»óÀÌ °Å³ª, ¿¬»ê °ª°ú ¼¼¸¶Æ÷¾îÀÇ ÇöÀç °ªÀÌ ¸ðµÎ 0ÀÏ ¶§, ÀÌ ¿¬»êÀº ¼º°øÇÏ°Ô µÈ´Ù. ¸¸¾à ¼¼¸¶Æ÷¾î ¿¬»êÀÇ Çϳª¶óµµ ½ÇÆÐÇÑ´Ù¸é ¸®´ª½º´Â ÇÁ·Î¼¼½º¸¦ Áß´ÜÇÒ ¼ö Àִµ¥, ÀÌ´Â ½Ã½ºÅÛ ÄÝÀ» ºÎ¸¦ ¶§ Ç÷¡±×¿¡ ºí·°Å· ¸ðµå¸¦ »ç¿ëÇÏÁö ¾ÊÀ»°Å¶ó°í ÁöÁ¤ÇÏÁö ¾ÊÀº °æ¿ìÀÌ´Ù. ÇÁ·Î¼¼½º°¡ ÁߴܵǾî¾ß ÇÑ´Ù¸é ¸®´ª½º´Â ¼öÇàÇØ¾ß ÇÒ ¼¼¸¶Æ÷¾î ¿¬»êÀÇ »óŸ¦ ÀúÀåÇÏ°í, ÇöÀç ÇÁ·Î¼¼½º¸¦ ´ë±âÅ¥¿¡ ³Ö´Â´Ù. ÀÌ ÀÛ¾÷Àº sem_queue ÀڷᱸÁ¶¸¦ ½ºÅÿ¡ ¸¸µé¾î ÀÌ°ÍÀÇ ³»¿ëÀ» ä¿òÀ¸·Î½á ÀÌ·ç¾îÁø´Ù. »õ sem_queue ÀڷᱸÁ¶´Â ¼¼¸¶Æ÷¾î °´Ã¼ÀÇ ´ë±â Å¥ÀÇ ³¡¿¡ ³õ¿©Áø´Ù (¿©±â¼­ sem_pending°ú sem_pending_last Æ÷ÀÎÅ͸¦ »ç¿ëÇÑ´Ù). ÇöÀç ÇÁ·Î ¼¼½º´Â sem_queue ÀڷᱸÁ¶¿¡ ÀÖ´Â ´ë±âÅ¥(sleeper Ç׸ñ)¿¡ ³õ¿©Áö°í, ½ÇÇàÇÒ ´Ù¸¥ ÇÁ·Î¼¼½º¸¦ °í¸£±â À§ÇØ ½ºÄÉÁì·¯°¡ È£ÃâµÈ´Ù. ¸¸¾à ¸ðµç ¼¼¸¶Æ÷¾î ¿¬»êÀÌ ¼º°øÇÏ¿© ÇÁ·Î¼¼½º°¡ Áß´ÜµÉ ÇÊ¿ä°¡ ¾ø´Ù¸é, ¸®´ª½º´Â °è¼Ó ÁøÇàÇÏ¿© ¼¼¸¶Æ÷¾î ¹è¿­ÀÇ ¿Ã¹Ù¸¥ ¸â¹ö¿¡°Ô ¿¬»êÀ» Àû¿ë ÇÑ´Ù. ¸®´ª½º´Â ÀÌÁ¦ ´ë±âÅ¥¿¡¼­ ±â´Ù¸®¸ç ÁߴܵǾî ÀÖ´Â ÇÁ·Î¼¼½ºµéÀÌ ÀÌ ¼¼¸¶Æ÷¾î ¿¬»ê¿¡ Àû¿ëµÉ ¼ö ÀÖ´ÂÁö °Ë»çÇØ¾ß ÇÑ´Ù. ¸®´ª½º´Â ¿¬»ê ¹Ì°áÅ¥ (sem_pending)ÀÇ °¢ ¸â¹ö¸¦ Â÷·Ê·Î »ìÆ캸°í, À̹ø¿£ ¼¼¸¶Æ÷¾î ¿¬»êÀÌ ¼º°øÇÒ ¼ö ÀÖ´ÂÁö ¾Ë¾Æº¸±â À§ÇÑ Å×½ºÆ®¸¦ ÇÑ´Ù. ¸¸¾à ¼º°øÇÑ´Ù¸é ¿¬»ê ¹Ì°á ¸®½ºÆ®¿¡¼­ sem_queue ÀڷᱸÁ¶¸¦ Á¦°ÅÇÏ°í ¼¼¸¶Æ÷¾î ¹è¿­¿¡ ±× ¼¼¸¶ Æ÷¾î ¿¬»êÀ» Àû¿ëÇÑ´Ù. ¸®´ª½º´Â Àáµç ÇÁ·Î¼¼½º¸¦ ±ú¿ö ´ÙÀ½¹ø ½ºÄÉÁì·¯°¡ ½ÇÇàµÉ ¶§¿¡´Â ´Ù½Ã ½ÃÀÛÇÒ ¼ö ÀÖµµ·Ï ¸¸µç´Ù. ¸®´ª½º´Â ¹Ì°á ¸®½ºÆ®¸¦ óÀ½ºÎÅÍ ½ÃÀÛÇÏ¿© ´õÀÌ»ó ¼¼¸¶Æ÷¾î ¿¬»êÀ» Àû¿ëÇÒ ¼ö ¾ø°í, ±ú¿ï ÇÁ·Î ¼¼½º°¡ ¾øÀ» ¶§±îÁö °è¼Ó »ìÆ캻´Ù. ¼¼¸¶Æ÷¾î¿¡´Â ÇÑ°¡Áö ¹®Á¦°¡ Àִµ¥ µ¥µå¶ô(deadlock)ÀÌ ¹Ù·Î ±×°ÍÀÌ´Ù. ÀÌ´Â ÇÑ ÇÁ·Î¼¼½º°¡ ÀÓ°èÁö¿ª¿¡ µé¾î°¡¸é¼­ ¼¼¸¶Æ÷¾îÀÇ °ªÀ» ¹Ù²Ù¾ú´Âµ¥ ÇÁ·Î¼¼½º°¡ À߸øµÇ°Å³ª °­Á¦·Î Á¾·áµÇ¾î¼­ ÀÌ ÀÓ°èÁö¿ªÀ» ºüÁ®³ª°¡Áö ¸øÇÑ °æ¿ì¿¡ ¹ß»ýÇÑ´Ù. ¸®´ª½º´Â ÀÌ·± ¹®Á¦¸¦ ¼¼¸¶Æ÷¾î ¹è¿­¿¡ ´ëÇÑ Á¶Á¤ ¸®½ºÆ®¸¦ °ü¸®ÇÔÀ¸·Î½á ¸·´Â´Ù. ÀÌ °³³äÀº ÀÌ·± Á¶Á¤À» Àû¿ëÇÏ¸é ¼¼¸¶Æ÷¾î °¡ ±× ÇÁ·Î¼¼½º°¡ ¼¼¸¶Æ÷¾î ¿¬»êÀ» ¼öÇàÇϱâ ÀÌÀüÀÇ »óÅ·ΠµÇµ¹¾Æ°¡°Ô ÇÏ´Â °ÍÀÌ´Ù. Á¶Á¤¿¡ ´ëÇÑ °ÍÀº 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 ÀڷᱸÁ¶¸¦ ¹«½ÃÇÑ´Ù. 5.3.4. °øÀ¯ ¸Þ¸ð¸®(Shared Memory) °øÀ¯ ¸Þ¸ð¸®´Â Çϳª ÀÌ»óÀÇ ÇÁ·Î¼¼½ºµéÀÌ ÀڽŵéÀÇ °¡»ó ÁÖ¼Ò °ø°£¿¡ °øÅë À¸·Î ³ªÅ¸³ª´Â ¸Þ¸ð¸®¸¦ ÅëÇÏ¿© Åë½ÅÇÒ ¼ö ÀÖµµ·Ï ÇÑ´Ù. À̵é ÇÁ·Î¼¼½ºÀÇ ÆäÀÌÁö Å×ÀÌºí °¢°¢¿¡´Â ÀÌ °øÀ¯ °¡»ó ¸Þ¸ð¸® ÆäÀÌÁöµéÀ» °¡¸®Å°´Â ÆäÀÌÁö Å×ÀÌºí ¿£Æ®¸®°¡ ÀÖ°Ô µÈ´Ù. À̵éÀº ¸ðµç ÇÁ·Î¼¼½ºÀÇ °¡»ó ¸Þ¸ð¸®¿¡¼­ ¶È °°Àº ÁÖ¼Ò¿¡ ÀÖÀ» ÇÊ¿ä´Â ¾ø´Ù. ´Ù¸¥ ½Ã½ºÅÛ V IPC °´Ã¼¿Í ¸¶Âù°¡Áö·Î °øÀ¯ ¸Þ¸ð¸® ¿µ¿ª·ÎÀÇ Á¢±ÙÀº Å°¿¡ ÀÇÇØ Á¦¾îµÇ°í Á¢±Ù ±ÇÇÑÀ» °Ë»çÇÏ°Ô µÈ´Ù. ÇÏÁö¸¸ Çѹø ¸Þ¸ð¸®°¡ °øÀ¯µÇ°í ³ª¸é ÇÁ·Î¼¼½ºµéÀÌ À̸¦ ¾î¶»°Ô »ç¿ëÇÏ´ÂÁö¿¡ ´ëÇؼ­ ¾Æ¹«·± °Ë»çµµ ÇÏÁö ¾Ê´Â´Ù. ÇÁ·Î¼¼½ºµéÀº ´Ù¸¥ ¹æ¹ý, ¿¹¸¦ µé¾î ½Ã½ºÅÛ V ¼¼¸¶Æ÷¾î°°Àº °ÍÀ» »ç¿ëÇÏ¿© ¸Þ¸ð¸®·ÎÀÇ Á¢±ÙÀ» µ¿±âÈ­ÇÏ¿©¾ß ÇÑ´Ù. »õ·Î ¸¸µé¾îÁø °øÀ¯ ¸Þ¸ð¸® ¿µ¿ªÀº shmid_ds ÀڷᱸÁ¶·Î ³ªÅ¸³½´Ù. À̵éÀº shm_segs º¤ÅÍ¿¡ ÀúÀåµÈ´Ù. shmid_ds ÀڷᱸÁ¶´Â °øÀ¯ ¸Þ¸ð¸® ¿µ¿ªÀÌ ¾ó¸¶ ³ª Å«Áö, ¾ó¸¶³ª ¸¹Àº ÇÁ·Î¼¼½º°¡ »ç¿ëÇÏ°í ÀÖÀ¸¸ç, °øÀ¯ ¸Þ¸ð¸®°¡ ÇÁ·Î¼¼ ½ºÀÇ ÁÖ¼Ò°ø°£¿¡ ¾î¶»°Ô ¸ÅÇεǾî ÀÖ´ÂÁö¿¡ ´ëÇÑ Á¤º¸¸¦ °¡Áø´Ù. °øÀ¯ ¸Þ¸ð¸®¸¦ ¸¸µç ÇÁ·Î¼¼½º°¡ ÀÌ ¸Þ¸ð¸®¿¡ ´ëÇÑ Á¢±Ù±ÇÇÑ°ú Å°°¡ °ø¿ëÀÎÁö °³ÀοëÀÎÁö Á¦¾îÇϸç, ÃæºÐÇÑ ±ÇÇѸ¸ ÀÖ´Ù¸é °øÀ¯ ¸Þ¸ð¸®¸¦ ¹°¸®ÀûÀÎ ¸Þ¸ð ¸®·Î ¶ô ½Ãų¼öµµ ÀÖ´Ù. shmid_ds +------------+ | ipc | | | +------------+ | shm_segsz | +------------+ +-----+ | | +->| pte | | | | +-----+ | times | | | pte | | | | +-----+ | | | | | +------------+ | | | | shm_npages | | +-----+ +------------+ | | pte | | shm_pages |-+ +-----+ vm_area_struct vm_area_struct +------------+ +----------------+ +----------------+ | attaches |------------>| | +->| | +------------+ | | | | | | | | | | +----------------+ | +----------------+ | vm_next_shared |--+ | vm_next_shared | +----------------+ +----------------+ | | | | | | | | | | | | +----------------+ +----------------+ ±×¸² 5.4 : System V IPC Shared Memory ¸Þ¸ð¸®¸¦ °øÀ¯ÇÏ±æ ¹Ù¶ó´Â °¢ ÇÁ·Î¼¼½ºµéÀº ½Ã½ºÅÛ ÄÝÀ» ÅëÇÏ¿© ÀÌ °¡»ó ¸Þ¸ð¸®¿¡ ¿¬°áÇØ¾ß ÇÑ´Ù. ÀÌ°ÍÀº ÀÌ ÇÁ·Î¼¼½º¿¡¼­ÀÇ °øÀ¯ ¸Þ¸ð¸®¸¦ ±â¼ú ÇÏ´Â »õ·Î¿î vm_area_struct ÀڷᱸÁ¶¸¦ ¸¸µé¾î³½´Ù. ÇÁ·Î¼¼½º´Â °øÀ¯ ¸Þ¸ð¸®°¡ ÀÚ½ÅÀÇ °¡»ó ÁÖ¼Ò °ø°£¿¡ À§Ä¡ÇÒ °÷À» ¼±ÅÃÇÒ ¼öµµ ÀÖ°í, ¾Æ´Ï¸é ¸®´ª½º°¡ ÃæºÐÈ÷ Å« ºó ¿µ¿ªÀ» ¼±ÅÃÇϵµ·Ï ÇÒ ¼öµµ ÀÖ´Ù. »õ·Î ¸¸µé¾îÁø vm_area_struct ÀڷᱸÁ¶´Â shmid_ds°¡ °¡¸®Å°°í ÀÖ´Â vm_area_struct ¸®½ºÆ®¿¡ Ãß°¡µÈ´Ù. vm_newxt_shared¿Í vm_prev_shared Æ÷ÀÎÅ͵éÀº À̵éÀ» ¼­·Î ¿¬°áÇϴµ¥ »ç¿ëÇÑ´Ù. °¡»ó ¸Þ¸ð¸®´Â ÀÌ·¸°Ô ¿¬°áÇÏ´Â µ¿¾È¿¡ ½ÇÁ¦·Î ¸¸µé¾îÁöÁö ¾ÊÀ¸¸ç, óÀ½À¸·Î ÇÁ·Î¼¼½º°¡ ¿©±â¿¡ Á¢±ÙÇÏ·Á°í ÇÒ ¶§ ¸¸µé¾î Áø´Ù. ÇÁ·Î¼¼½º°¡ °øÀ¯ÇÏ°í ÀÖ´Â °¡»ó ¸Þ¸ð¸®ÀÇ ÇÑ ÆäÀÌÁö¿¡ óÀ½À¸·Î Á¢±ÙÀ» ½ÃµµÇϸé ÆäÀÌÁö ÆúÆ®°¡ ¹ß»ýÇÑ´Ù. ¸®´ª½º°¡ ÀÌ ÆäÀÌÁö ÆúÆ®¸¦ ó¸®ÇÒ ¶§ À̸¦ ±â¼úÇÏ´Â vm_area_struct ÀڷᱸÁ¶¸¦ ¹ß°ßÇÏ°Ô µÈ´Ù. ¿©±â¿¡´Â ÀÌ Å¸ÀÔÀÇ °øÀ¯ °¡»ó ¸Þ¸ð¸®¿¡ ´ëÇÑ Ã³¸® ·çƾ¿¡ ´ëÇÑ Æ÷ÀÎÅÍ°¡ ÀÖ´Ù. °øÀ¯ ¸Þ¸ð¸®ÀÇ ÆäÀÌÁö ÆúÆ® ó¸® ÄÚµå´Â shmid_dsÀÇ ÆäÀÌÁö Å×ÀÌºí ¿£Æ®¸®¸¦ µÚÁ®¼­, °øÀ¯ °¡»ó ¸Þ¸ð¸®ÀÇ ÇØ´ç ÆäÀÌÁö¿¡ ´ëÇÑ ÆäÀÌÁö Å×ÀÌºí ¿£Æ®¸®°¡ ÀÖ´ÂÁö ã´Â´Ù. ¸¸¾à ¾ø´Ù¸é ¹°¸®Àû ¸Þ¸ð¸®¸¦ Çϳª ÇÒ´ç ¹Þ¾Æ À̸¦ ³ªÅ¸ ³»´Â ÆäÀÌÁö Å×ÀÌºí ¿£Æ®¸®¸¦ ¸¸µé °ÍÀÌ´Ù. À̸¦ ÇöÀç ÇÁ·Î¼¼½ºÀÇ ÆäÀÌÁö Å×ÀÌºí¿¡ ³ÖÀ¸¸é¼­ shmid_ds¿¡µµ ÀúÀåÇÑ´Ù. ±×·¡¼­ ´ÙÀ½ ÇÁ·Î¼¼½º°¡ ÀÌ ¸Þ¸ð¸®¿¡ Á¢±ÙÇÏ·Á°í ÇÏ´Ù°¡ ÆäÀÌÁö ÆúÆ®°¡ ¹ß»ýÇϸé, °øÀ¯ ¸Þ¸ð¸® ÆäÀÌÁö ÆúÆ® ó¸® Äڵ尡 À̸¦ ã¾Æ¼­, »õ·Î ¸¸µé ¾îÁø ¹°¸®ÀûÀÎ ÆäÀÌÁö¸¦ ±× ÇÁ·Î¼¼½º¿¡°Ôµµ »ç¿ëÇÏ°Ô ÇÑ´Ù. µû¶ó¼­ °øÀ¯ ¸Þ¸ð¸®ÀÇ ¾î¶² ÆäÀÌÁö¿¡ Á¢±ÙÇϴ ù¹ø° ÇÁ·Î¼¼½º´Â À̸¦ »ý¼ºÇÏ°í, ´Ù¸¥ ÇÁ·Î¼¼½ºµéÀÌ ¿©±â¿¡ Á¢±ÙÇÒ ¶§´Â À̸¦ ÀÚ½ÅÀÇ °¡»ó ¸Þ¸ð¸® °ø°£¿¡ Ãß°¡ÇÏ°Ô µÈ´Ù. ÇÁ·Î¼¼½º°¡ ´õÀÌ»ó °¡»ó ¸Þ¸ð¸®¸¦ °øÀ¯ÇÏ±æ ¹Ù¶óÁö ¾ÊÀ» ¶§´Â ¿©±â·ÎÀÇ ¿¬°áÀ» ²÷´Â´Ù. ÀÌ ¸Þ¸ð¸®¸¦ »ç¿ëÇÏ´Â ´Ù¸¥ ÇÁ·Î¼¼½º°¡ Á¸ÀçÇÏ´Â ÇÑÀº ¿¬°áÀ» ²÷´Â °ÍÀº ´ÜÁö ÇØ´ç ÇÁ·Î¼¼½º¿¡°Ô¸¸ ¿µÇâÀ» ¹ÌÄ£´Ù. ±× ¸Þ¸ð¸®ÀÇ vm_area_struct´Â shmid_ds ÀڷᱸÁ¶¿¡¼­ Á¦°ÅµÇ°í ÇØÁ¦µÉ °ÍÀ̸ç, ÇÁ·Î ¼¼½º°¡ °øÀ¯Çϴµ¥ »ç¿ëÇß´ø °¡»ó ¸Þ¸ð¸® ¿µ¿ªÀ» ¹«È¿ÇÑ °ÍÀ¸·Î ³ªÅ¸³»±â À§ÇØ ÇÁ·Î¼¼½ºÀÇ ÆäÀÌÁö Å×À̺íÀÌ °»½ÅµÈ´Ù. ¸¶Áö¸·À¸·Î ¸Þ¸ð¸®¸¦ °øÀ¯ ÇÏ°í ÀÖ´ø ÇÁ·Î¼¼½º°¡ ¿¬°áÀ» ²÷À¸¸é ¹°¸®ÀûÀÎ ¸Þ¸ð¸®¿¡ Á¸ÀçÇÏ°í ÀÖ´Â ¸ðµç °øÀ¯ ¸Þ¸ð¸® ÆäÀÌÁöµéÀº ÇØÁ¦µÇ°í, ÀÌ °øÀ¯ ¸Þ¸ð¸®¸¦ ³ªÅ¸³»´ø shmid_ds ÀڷᱸÁ¶µµ ÇØÁ¦µÈ´Ù. °øÀ¯ °¡»ó ¸Þ¸ð¸®°¡ ¹°¸®ÀûÀÎ ¸Þ¸ð¸®·Î ¶ôµÇ¾î ÀÖÁö ¾ÊÀ» ¶§ ¾à°£ º¹ÀâÇÑ ¹®Á¦°¡ ¹ß»ýÇÑ´Ù. ÀÌ´Â ¸Þ¸ð¸®ÀÇ »ç¿ë·®ÀÌ ¸¹¾Æ¼­ °øÀ¯ ¸Þ¸ð¸®°¡ ½º¿Ò µð½ºÅ©·Î ½º¿ÒµÈ °ÍÀÎ °æ¿ìµµ ÀÖ´Ù. °øÀ¯ ¸Þ¸ð¸®°¡ ¾î¶»°Ô ¹°¸®ÀûÀÎ ¸Þ¸ð¸®¿¡¼­ ½º¿ÒµÇ¾î ³ª°¡°Å ³ª µé¾î¿À´ÂÁö´Â 3Àå¿¡¼­ ¼³¸íÇÏ°í ÀÖ´Ù. ¹ø¿ª : À̽Â, ÀÌÈ£, ±èÁø¼®, ±è±â¿ë, ½É¸¶·Î Á¤¸® : ÀÌÈ£ ===================================================================== 6Àå PCI <> ±×¸² 6.1Àº ÀϹÝÀûÀÎ PCI ±â¹Ý ½Ã½ºÅÛÀÇ ³í¸® ±¸¼ºµµÀÌ´Ù. PCI ¹ö½º¿Í PCI-PCI ºê¸´Áö´Â ½Ã½ºÅÛ ÀåÄ¡µéÀ» ¼­·Î ¿¬°áÇÏ´Â Á¢ÂøÁ¦¿Í °°Àº °ÍÀÌ´Ù. CPU´Â ù¹ø° PCI ¹ö½ºÀÎ 0¹ø PCI ¹ö½º¿¡ ¿¬°áµÇ¾î ÀÖ°í, ÀÌ ±¸¼ºµµ¿¡¼­´Â ºñµð¿À ÀåÄ¡°¡ ¿©±â¿¡ ¿¬°áµÇ¾î ÀÖ´Ù. PCI-PCI ºê¸´Áö´Â Ưº°ÇÑ PCI ÀåÄ¡ ·Î¼­, 1Â÷(primary) PCI ¹ö½º¿Í 2Â÷(secondary) PCI ¹ö½ºÀÎ 1¹ø PCI ¹ö½º ¸¦ ¿¬°áÇÑ´Ù . PCI ±Ô¾à¿¡ ³ª¿À´Â Àü¹®¿ë¾î·Î´Â, 1¹ø PCI ¹ö½º¸¦ PCI-PCI ºê¸´ÁöÀÇ ´Ù¿î½ºÆ®¸²(downstream), 0¹ø ¹ö½º¸¦ ºê¸´ÁöÀÇ ¾÷½ºÆ®¸² (upstream)À̶ó°í ÇÑ´Ù. ÀÌ ±¸¼ºµµ¿¡¼­ 2Â÷ PCI ¹ö½º¿¡´Â SCSI Ä«µå³ª ÀÌ´õ³Ý Ä«µå µîÀÌ ¿¬°áµÈ´Ù. ¹°¸®ÀûÀ¸·Î ºê¸´Áö¿Í 2Â÷ PCI ¹ö½º, ¿©±â ¿¬°áµÈ µÎ ÀåÄ¡µéÀº ÇϳªÀÇ º¹ÇÕ PCI Ä«µå·Î ¸¸µé ¼ö ÀÖ´Ù. PCI-ISA ºê¸´Áö´Â ¿À·¡ÀüºÎÅÍ »ç¿ëµÇ¾î¿Â ISA ÀåÄ¡µéÀ» Áö¿øÇÏ´Â °ÍÀ¸·Î, ÀÌ ±¸¼º µµ¿¡¼­´Â Å°º¸µå¿Í ¸¶¿ì½º, Ç÷ÎÇÇ µå¶óÀ̺긦 Á¦¾îÇÏ´Â ½´ÆÛI/O ÄÜÆ®·Ñ·¯ ĨÀÌ ¿©±â¿¡ ¿¬°áµÇ¾î ÀÖ´Ù. 6.1 PCI ÁÖ¼Ò°ø°£(PCI Address Space) CPU¿Í PCI ÀåÄ¡µéÀº ±×µéÀÌ °øÀ¯ÇÏ°í ÀÖ´Â ¸Þ¸ð¸®¿¡ Á¢±ÙÇÒ ÇÊ¿ä°¡ ÀÖ´Ù. ÀÌ ¸Þ¸ð¸®´Â µð¹ÙÀ̽º µå¶óÀ̹ö°¡ PCI Ä«µå¸¦ Á¦¾îÇÏ°í ¼­·Î Á¤º¸¸¦ ±³È¯ Çϴµ¥¿¡ »ç¿ëµÇ´Â °ÍÀÌ´Ù. ÀϹÝÀûÀ¸·Î ÀÌ °øÀ¯ ¸Þ¸ð¸®¿¡´Â ÀåÄ¡¿¡ ¼ÓÇÑ Á¦¾î ·¹Áö½ºÅÍ(control register)¿Í »óÅ ·¹Áö½ºÅÍ(status register)°¡ µé¾î ÀÖ´Ù. ÀÌ ·¹Áö½ºÅ͵éÀº ÀåÄ¡¸¦ Á¦¾îÇÏ°í »óŸ¦ Àдµ¥ ¾²ÀδÙ. ¿¹¸¦ µé¾î, PCI SCSI µð¹ÙÀ̽º µå¶óÀ̹ö´Â SCSI µð½ºÅ©·Î µ¥ÀÌÅ͸¦ ¾²·Á°í ÇÒ ¶§, ÀåÄ¡ÀÇ »óÅ ·¹Áö½ºÅ͸¦ Àо ÀåÄ¡°¡ ¾µ Áغñ°¡ µÇ¾ú´ÂÁö ¾Ë¾Æ ³»°í, ÀÌ °ªÀÌ ÄÑÁ® ÀÖÀ»¶§¿¡ ÀåÄ¡°¡ ¿øÇÏ´Â µ¿ÀÛÀ» Çϵµ·Ï Á¦¾î ·¹Áö½ºÅÍ ¿¡ °ªÀ» ¾²°Ô µÈ´Ù. CPU°¡ °ü¸®ÇÏ´Â ½Ã½ºÅÛ ¸Þ¸ð¸®¸¦ ÀÌ·± °øÀ¯ ¸Þ¸ð¸®·Î »ç¿ëµÉ ¼öµµ ÀÖ°Ú Áö¸¸, ÀÌ·¸°Ô ÇÑ´Ù¸é PCI ÀåÄ¡°¡ ¸Þ¸ð¸®¿¡ Á¢±ÙÇÒ ¶§¸¶´Ù CPU°¡ ¸Þ¸ð¸®¿¡ Á¢±ÙÇÏÁö ¸øÇÑ Ã¤ PCI ÀåÄ¡°¡ ÀÛ¾÷À» ³¡¸¶Ä¡±â¸¦ ±â´Ù·Á¾ß ÇÏ´Â ¹®Á¦°¡ ¹ß»ýÇÒ °ÍÀÌ´Ù. ÀÌ´Â ÀϹÝÀûÀ¸·Î ¸Þ¸ð¸®¿¡ Á¢±ÙÇÏ´Â °ÍÀº µ¿½Ã¿¡ Çϳª·Î Á¦ÇѵǾî Àֱ⠶§¹®À̸ç, ÀÌ·¸°Ô ÇÑ´Ù¸é ½Ã½ºÅÛÀÌ ´À·ÁÁú °ÍÀÌ´Ù. ±×·¸´Ù °í ÁÖº¯ÀåÄ¡°¡ ¸ÞÀÎ ¸Þ¸ð¸®¿¡ ¾Æ¹«·± ÅëÁ¦ ¾øÀÌ Á¢±ÙÇÒ ¼ö ÀÖµµ·Ï ÇÏ´Â°Í ¿ª½Ã ÁÁÁö ¾ÊÀº »ý°¢ÀÌ´Ù. ÀÌ°ÍÀº ¸Å¿ì À§ÇèÇϸç, À߸ø ¸¸µé¾îÁø ÀåÄ¡´Â ½Ã½ºÅÛÀ» ¸Å¿ì ºÒ¾ÈÇÏ°Ô ¸¸µé ¼ö ÀÖ´Ù. +-------+ | | | CPU | | | +---+---| | | PCI Bus 0 -----+----------------+-----+----------+----------------- | | | | | | ^ +----+----+ +--+--+ +----+----+ | Upstream | PCI-ISA | | | | PCI-PCI | | | Bridge | | | | Bridge | | | | | | | | +----+----+ +-----+ +----+----+ | Downstream | Video | V |ISA Bus | PCI Bus 1 ----++------ --------+------------+---------+----------- | | | | | | +--+--+ +--+--+ +--+--+ | | | | | | | | | | | | | | | | | | +-----+ +-----+ +-----+ Super I/O Controller SCSI Ethernet ±×¸² 6.1 : Example PCI Based System ÁÖº¯ÀåÄ¡µéÀº °¢ÀÚ ÀڽŸ¸ÀÇ ¸Þ¸ð¸® °ø°£À» °¡Áö°í ÀÖ´Ù. CPU´Â ÀÌ ¿µ¿ª¿¡ ÀÚÀ¯·Ó°Ô Á¢±ÙÇÒ ¼ö ÀÖÁö¸¸, ¹Ý´ë·Î ÀÌ ÀåÄ¡°¡ ½Ã½ºÅÛ ¸Þ¸ð¸®¿¡ Á¢±ÙÇÏ´Â °ÍÀº DMA(Direct Memory Access, Á÷Á¢ ¸Þ¸ð¸® Á¢±Ù) ä³ÎÀ» ÀÌ¿ëÇÏ´Â °æ¿ì ·Î¸¸ ¾ö°ÝÈ÷ Á¦ÇѵǾî ÀÖ´Ù. ISA ÀåÄ¡´Â ISA I/O¿Í ISA ¸Þ¸ð¸®¶ó´Â µÎ°¡Áö ÁÖ¼Ò°ø°£À» °¡Áø´Ù. PCI´Â ¼¼°¡Áö ÁÖ¼Ò°ø°£À» °¡Áö´Âµ¥, PCI I/O, PCI ¸Þ¸ð¸®, ±×¸®°í PCI ¼³Á¤°ø°£(configuration space)ÀÌ ±×°ÍÀÌ´Ù. CPU´Â À̵é ÁÖ¼Ò°ø°£ ¸ðµÎ¿¡ Á¢±ÙÇÒ ¼ö Àִµ¥, µð¹ÙÀ̽º µå¶óÀ̹ö´Â PCI I/O¿Í PCI ¸Þ¸ð¸® ÁÖ¼Ò°ø°£À» »ç¿ëÇϸç, PCI ¼³Á¤°ø°£Àº ¸®´ª½º Ä¿³ÎÀÇ PCI Ãʱâ È­ Äڵ忡¼­ »ç¿ëÇÏ°í ÀÖ´Ù. 31 16 15 0 +-----------------+-----------------+ | Device Id | Vendor Id | 00h +-----------------+-----------------+ | Status | Command | 04h +-----------------+--------+--------+ | Class Code | | 08h +--------+--------+--------+--------+ | | | | | 10h +--------+--------+--------+--------+ | | | | | | | Base Address Registers | | | | | | | | | 24th +-----------------------------------+ | | | | | | | | | | | | | | | | | | +-----------------+--------+--------+ | | Line | Pin | 3Ch +-----------------+--------+--------+ ±×¸² 6.2 : The PCI Configuration Header ¾ËÆÄ AXP ÇÁ·Î¼¼¼­´Â ¿ø·¡ ½Ã½ºÅÛ ÁÖ¼Ò°ø°£À» Á¦¿ÜÇÑ ´Ù¸¥ ÁÖ¼Ò°ø°£¿¡ Á¢±ÙÇÒ ¼ö ¾øµµ·Ï µÇ¾î ÀÖ´Ù. ±×·¡¼­ ¿©±â¼­´Â PCI ¼³Á¤ ÁÖ¼Ò°ø°£°ú °°Àº ´Ù¸¥ ÁÖ¼Ò°ø°£¿¡ Á¢±ÙÇÒ ¼ö ÀÖµµ·Ï ÇØÁÖ´Â ¿©·¯ Ĩ¼ÂÀ» »ç¿ëÇÑ´Ù. ±×¸®°í °Å´ëÇÑ °¡»ó ÁÖ¼Ò°ø°£¿¡¼­ ÀϺθ¦ »©³» PCI ÁÖ¼Ò°ø°£À¸·Î ¸ÊÇÎÇÏ´Â Èñ¼Ò ÁÖ¼Ò ¸ÅÇÎ(sparse address mapping)¹æ¹ýÀ» »ç¿ëÇÑ´Ù. 6.2 PCI ¼³Á¤ Çì´õ(PCI Configuration Header) ¸ðµç PCI ÀåÄ¡´Â (PCI-PCI ºê¸´Áöµµ Æ÷ÇÔÇÏ¿©) PCI ¼³Á¤ ÁÖ¼Ò°ø°£ ¾îµò°¡ ¿¡ ¼³Á¤¿¡ °ü·ÃµÈ ÀڷᱸÁ¶¸¦ °¡Áö°í ÀÖ´Ù. PCI ¼³Á¤ Çì´õ´Â ½Ã½ºÅÛÀÌ ÀåÄ¡¸¦ ±¸º°ÇÏ°í Á¦¾îÇÒ ¼ö ÀÖ°Ô ÇÑ´Ù. ÀÌ Çì´õ°¡ ÀÖ´Â Á¤È®ÇÑ À§Ä¡´Â PCI ¹èÄ¡µµ¿¡¼­ ÀåÄ¡°¡ À§Ä¡ÇÑ °÷¿¡ µû¶ó °áÁ¤µÈ´Ù. ¿¹¸¦ µé¾î, PCI ºñµð¿À Ä«µå¸¦ PC ¸ÞÀκ¸µå¿¡ ÀÖ´Â ¿©·¯ PCI ½½·Ô Áß Çϳª¿¡ ²ÈÀ» ¶§, ¾î¶² ½½·Ô¿¡ ²È´À³Ä¿¡ µû¶ó PCI ¼³Á¤ ÁÖ¼Ò°ø°£¿¡ ¼­ °¢±â ´Ù¸¥ À§Ä¡¿¡ Çì´õ°¡ À§Ä¡ÇÏ°Ô µÈ´Ù. ÀÌ°ÍÀº ±×´ÙÁö ¹®Á¦°¡ µÇÁö ¾Ê´Âµ¥, ¿Ö³Ä¸é PCI ÀåÄ¡¿Í ºê¸´Áö°¡ ¾îµð Àֵ簣¿¡, ½Ã½ºÅÛÀº ¼³Á¤ Çì´õ ¿¡ ÀÖ´Â »óÅ ·¹Áö½ºÅÍ, ¼³Á¤ ·¹Áö½ºÅ͸¦ ÀÌ¿ëÇØ ±×µéÀ» ã¾Æ³» ¼³Á¤ÇÒ °Í À̱⠶§¹®ÀÌ´Ù. º¸Åë PCI ¼³Á¤ Çì´õÀÇ ¿ÀÇÁ¼Â´Â º¸µå¿¡¼­ÀÇ ½½·Ô ¹øÈ£¿¡ °ü·ÃÀÌ ÀÖ´Ù. ±×·¡¼­, ù¹ø° ½½·ÔÀÇ PCI ¼³Á¤ Çì´õ°¡ 0¹ø ¿ÀÇÁ¼Â¿¡ À§Ä¡ ÇÑ´Ù¸é, µÎ ¹ø ° ½½·ÔÀÇ Çì´õ´Â 256¹ø ¿ÀÇÁ¼Â¿¡ À§Ä¡ÇÏ°í (¸ðµç Çì´õ´Â ¶È°°ÀÌ 256¹ÙÀÌ Æ® Å©±âÀÌ´Ù), ´Ù¸¥ ½½·ÔÀÇ Çì´õµµ ÀÌ·± ½ÄÀ¸·Î À§Ä¡ÇÏ°Ô µÈ´Ù. ½Ã½ºÅÛº° ·Î PCI ¼³Á¤ ¿µ¿ª¿¡ Á¢±ÙÇÏ´Â Çϵå¿þ¾î ¸ÞÄ¿´ÏÁòÀÌ ´Ù¸£°Ô Á¤ÀǵǾî ÀÖÀ¸ ¸ç, À̸¦ ÀÌ¿ëÇÏ¿© PCI ¼³Á¤À» ÇÏ´Â ÄÚµå´Â ÁÖ¾îÁø PCI ¹ö½º¿¡ À־ °¡´ÉÇÑ ¸ðµç PCI ¼³Á¤ Çì´õ¸¦ °Ë»çÇÏ¿©, ¾î¶² ÀåÄ¡°¡ ÀÖ°í ¾î¶² ÀåÄ¡°¡ ¾ø´ÂÁö¸¦ Çì´õÀÇ ÇÑ Ç׸ñÀ» (º¸Åë Á¦ÀÛÀÚ ½Äº°ÀÚ(Vendor Identification) Ç׸ñ) ÀÐ°í ¿¡·¯¸¦ °ËÃâÇÔÀ¸·Î½á ÆľÇÇÑ´Ù. [3, PCI ·ÎÄà ¹ö½º ±Ô¾à] ¿¡¼­´Â ºó PCI slotÀÇ Á¦ÀÛÀÚ ½Äº°ÀÚ³ª ÀåÄ¡ ½Äº°ÀÚ(Device Identification)¸¦ ÀÐÀ¸·Á°í Çϸé 0xFFFFFFFFÀ» µ¹·ÁÁÖ´Â °ÍÀ¸·Î ¿¡·¯ °ËÃâ¹æ¹ýÀ» Á¤ÀÇÇÏ°í ÀÖ´Ù. ±×¸² 6.2´Â 256 ¹ÙÀÌÆ®ÀÇ PCI ¼³Á¤ Çì´õÀÇ ¹èÄ¡µµ¸¦ º¸¿©ÁØ´Ù. ¿©±â¿¡´Â ´ÙÀ½°ú °°Àº Ç׸ñÀÌ ÀÖ´Ù. Á¦ÀÛÀÚ ½Äº°ÀÚ(Vendor Identification) : PCI ÀåÄ¡ÀÇ Á¦ÀÛÀÚ¸¦ ³ªÅ¸ ³»´Â °íÀ¯¹øÈ£. ¿¹¸¦ µé¾î µðÁöÅÐ(Digital)Àº 0x1011, ÀÎÅÚÀº 0x8086¸¦ °íÀ¯¹øÈ£·Î °®´Â´Ù. ÀåÄ¡ ½Äº°ÀÚ(Device Identification) : ÀåÄ¡ ÀÚü¸¦ ³ªÅ¸³»´Â °íÀ¯ ¹øÈ£. ¿¹¸¦ µé¾î µðÁöÅÐÀÇ 21141 °í¼Ó ÀÌ´õ³Ý ÀåÄ¡´Â 0x0009 °ªÀ» °®´Â´Ù. »óÅÂ(Status) : ÀÌ Ç׸ñÀº ÀåÄ¡ÀÇ »óŸ¦ ³ªÅ¸³»´Âµ¥, °¢°¢ÀÇ ºñÆ® µéÀÌ °®´Â Àǹ̴ ǥÁØ¿¡¼­ Á¤ÀÇÇÏ°í ÀÖ´Ù. [3, PCI ·ÎÄà ¹ö½º ±Ô¾à] . ¸í·É(Command) : ½Ã½ºÅÛÀº ÀÌ Ç׸ñ¿¡ °ªÀ» ¾¸À¸·Î½á, ÀåÄ¡ÀÇ PCI I/O ¸Þ¸ð¸®¸¦ Á¢±ÙÀ» Çã°¡ÇÏ´Â °Í °°Àº, ÀåÄ¡¸¦ Á¦¾îÇÏ´Â ÀÏÀ» ÇÑ´Ù. ºÐ·ùÄÚµå(Class Code) : ÀÌ ÀåÄ¡°¡ ¼ÓÇÑ ÀåÄ¡ÀÇ À¯ÇüÀ» ±¸º°ÇÑ´Ù. ¸ðµç Á¾·ùÀÇ ÀåÄ¡¿¡ ´ëÇØ ºñµð¿À, SCSI °°Àº ½ÄÀÇ Ç¥ÁØ ºÐ·ù°¡ ÀÖ´Ù. SCSI¿¡ ´ëÇÑ ºÐ·ùÄÚµå´Â 0x0100ÀÌ´Ù. º£À̽º ÁÖ¼Ò ·¹Áö½ºÅÍ(Base Address Register) : ÀÌ ·¹Áö½ºÅÍ´Â ÀåÄ¡ °¡ »ç¿ëÇÏ´Â PCI I/O, PCI ¸Þ¸ð¸® °ø°£ÀÇ À¯Çü°ú Å©±â, À§Ä¡¸¦ ÁöÁ¤Çϴµ¥ »ç¿ëµÈ´Ù. ÀÎÅÍ·´Æ® ÇÉ(Interrupt Pin) : PCI Ä«µå¿¡ ÀÖ´Â ¹°¸®ÀûÀÎ ÇÉ Áß ³× °³´Â, Ä«µå·ÎºÎÅÍ PCI ¹ö½º·Î ÀÎÅÍ·´Æ®¸¦ Àü´ÞÇÏ´Â ¿ªÇÒÀ»ÇÑ´Ù. Ç¥ÁØ¿¡¼­´Â À̵éÀ» °¢°¢ A, B, C, D¶ó°í ºÎ¸¥´Ù. ÀÎÅÍ·´Æ® ÇÉ Ç׸ñÀº PCI ÀåÄ¡°¡ À̵é ÇÉ Áß ¾î¶² ÇÉÀ» »ç¿ëÇÏ°í ÀÖ´ÂÁö ³ªÅ¸³½´Ù. º¸Åë ƯÁ¤ ÀåÄ¡¿¡ À־ ÀÎÅÍ·´Æ® ÇÉÀº Á÷Á¢ ¹è¼±µÇ¾î ÀÖ´Ù. Áï, ½Ã½ºÅÛÀÌ ºÎÆÃÇÒ ¶§¸¶´Ù ±× ÀåÄ¡´Â ¶È°°Àº ÀÎÅÍ·´Æ® ÇÉÀ» »ç¿ë ÇÑ´Ù´Â °ÍÀÌ´Ù. ÀÌ Á¤º¸´Â ÀÎÅÍ·´Æ® ó¸® ½Ã½ºÅÛÀÌ ÀåÄ¡¿¡¼­ ¹ß»ý ¹ß»ýÇÏ´Â ÀÎÅÍ·´Æ®¸¦ °ü¸®ÇÒ ¼ö ÀÖµµ·Ï ÇØÁØ´Ù. ÀÎÅÍ·´Æ® ¶óÀÎ(Interrupt Line) : ÀÌ Ç׸ñÀº PCI ÃʱâÈ­ ÄÚµå¿Í µð¹ÙÀ̽º µå¶óÀ̹ö, ¸®´ª½ºÀÇ ÀÎÅÍ·´Æ® ó¸® ¼­ºê½Ã½ºÅÛ »çÀÌ¿¡ ÀÎÅÍ·´Æ® ÇÚµéÀ» Àü´ÞÇϱâ À§ÇØ »ç¿ëÇÑ´Ù. ¿©±â ÀÖ´Â °ªÀº µð¹ÙÀ̽º µå¶óÀ̹ö¿¡°Õ Àǹ̰¡ ¾ø°ÚÁö¸¸, ÀÎÅÍ·´Æ® Çڵ鷯°¡ PCI ÀåÄ¡·ÎºÎÅÍ ¿Â ÀÎÅÍ·´Æ®¸¦ ¸®´ª½º ¿î¿µÃ¼Á¦¿¡ ÀÖ´Â ¿Ã¹Ù¸¥ µð¹ÙÀ̽º µå¶óÀ̹öÀÇ ÀÎÅÍ·´Æ® ó¸® ÄÚµå·Î ÀÎÅÍ·´Æ®¸¦ Àü´ÞÇÒ ¼ö ÀÖ°Ô ÇÑ´Ù. ¸®´ª½º°¡ ÀÎÅÍ·´Æ®¸¦ ó¸®ÇÏ´Â ¹æ¹ý¿¡ ´ëÇØ ÀÚ¼¼ÇÑ °ÍÀº 7ÀåÀ» ÂüÁ¶Ç϶ó. 6.3 PCI I/O¿Í PCI ¸Þ¸ð¸® ÁÖ¼Ò ÀÌµé µÎ ÁÖ¼Ò°ø°£Àº ÀåÄ¡°¡ CPU »óÀÇ ¸®´ª½º Ä¿³Î¿¡¼­ ½ÇÇàµÇ´Â µð¹ÙÀ̽º µå¶óÀ̹ö¿Í Åë½ÅÇϱâ À§ÇØ »ç¿ëÇÏ´Â °÷ÀÌ´Ù. ¿¹¸¦ µé¾î, DECchip 21141 °í¼Ó ÀÌ´õ³Ý ÀåÄ¡´Â ÀÚ½ÅÀÇ ³»ºÎ ·¹Áö½ºÅ͸¦ PCI I/O °ø°£¿¡ ¸ÅÇÎÇÑ´Ù. ±×·¯¸é ÇØ´çÇÏ´Â ¸®´ª½º µð¹ÙÀ̽º µå¶óÀ̹ö´Â ÀåÄ¡¸¦ Á¦¾îÇϱâ À§Çؼ­ ÀÌµé ·¹Áö½ºÅ͸¦ ÀÐ°í ¾´´Ù. ºñµð¿À µå¶óÀ̹ö´Â ºñµð¿À Á¤º¸¸¦ ÀúÀåÇϱâ À§ÇØ ¹æ´ëÇÑ ¾çÀÇ PCI ¸Þ¸ð¸® °ø°£À» »ç¿ëÇÑ´Ù. À̵éÀº PCI ½Ã½ºÅÛÀÌ ¼Â¾÷ÀÌ µÇ°í, PCI ¼³Á¤ Çì´õ¿¡ ÀÖ´Â ¸í·É(Command) Ç׸ñ¿¡¼­ À̵é ÁÖ¼Ò°ø°£¿¡ ´ëÇÑ Á¢±ÙÀ» Çã¿ëÇÒ ¶§±îÁö, ¾Æ¹«µµ ÀÌ °ø°£¿¡ Á¢±ÙÇÒ ¼ö ¾ø´Ù. ¿©±â¼­ PCI¸¦ ¼³Á¤ÇÏ´Â Äڵ常ÀÌ PCI ¼³Á¤ ¿µ¿ªÀ» ÀÐ°í ¾µ ¼ö ÀÖÀ¸¸ç, ¸®´ª½º µð¹ÙÀ̽º µå¶óÀ̹ö´Â ´ÜÁö PCI I/O¿Í PCI ¸Þ¸ð¸® °ø°£¸¸ ÀÐ°í ¾µ ¼ö ÀÖ´Ù´Â »ç½ÇÀ» ±â¾ïÇϱ⠹ٶõ´Ù. 31 11 10 8 7 2 1 0 +----------------------------+------+----------+-+-+ | Device Select | Func | Register |0|0| +----------------------------+------+----------+-+-+ ±×¸² 6.3 : Type 0 PCI Configuration Cycle 31 24 23 16 15 11 10 8 7 2 1 0 +-----------+-------+--------+------+----------+-+-+ | Reserved | Bus | Device | Func | Register |0|1| +-----------+-------+--------+------+----------+-+-+ ±×¸² 6.4 : Type 1 PCI Configuration Cycle 6.4 PCI-ISA ºê¸´Áö(Bridge) ÀÌ ºê¸´Áö´Â PCI I/O, PCI ¸Þ¸ð¸® °ø°£À¸·ÎÀÇ Á¢±ÙÀ» ISA I/O, ISA ¸Þ¸ð¸® °ø°£À¸·ÎÀÇ Á¢±ÙÀ¸·Î ¹Ù²Ù¾î ÁÜÀ¸·Î½á, ¿À·¡ÀüºÎÅÍ »ç¿ëÇØ¿Â ISA ÀåÄ¡¸¦ Áö¿øÇÏ´Â ¿ªÇÒÀ» ÇÑ´Ù. Áö±Ý Æȸ®´Â ¸¹Àº ½Ã½ºÅÛµéÀº PCI ¹ö½º ½½·Ô°ú ÇÔ²² ¿©·¯°³ÀÇ ISA ¹ö½º ½½·ÔÀ» °¡Áö°í Àִµ¥, ½Ã°£ÀÌ Áö³¯¼ö·Ï ÀÌÀü °Í°ú ȣȯ¼ºÀ» À¯ÁöÇÒ ÇÊ¿ä´Â ÁÙ¾îµé°í, ¾ðÁ¨°¡´Â PCI ½½·Ô¸¸ ÀÖ´Â ½Ã½ºÅÛ ÀÌ Æȸ± °ÍÀÌ´Ù . ISA ÁÖ¼Ò°ø°£(I/O¿Í ¸Þ¸ð¸® °ø°£)¿¡¼­ ISA ÀåÄ¡ÀÇ ·¹Áö ½ºÅÍ°¡ À§Ä¡ÇØ ÀÖ´Â °÷Àº, ¾È°³°¡ ÀÚ¿íÇÑ ½ÃÀý¿¡ ³ª¿Â ÃÊâ±â 8080 ±â¹Ý PC¿¡ ÀÇÇØ °íÁ¤µÇ¾ú´Ù. 5000 ´Þ·¯°¡ ³Ñ´Â ¾ËÆÄ AXP ±â¹Ý ÄÄÇ»ÅÍÁ¶Â÷µµ ISA Ç÷ÎÇÇ ÄÜÆ®·Ñ·¯´Â óÀ½ ³ª¿Â IBM PC¿¡¼­¿Í ¶È°°Àº I/O °ø°£À» »ç¿ëÇÑ´Ù . PCI ±Ô¾à¿¡¼­´Â ÀÌ ¹®Á¦¸¦ PCI I/O¿Í ¸Þ¸ð¸® ÁÖ¼Ò°ø°£¿¡¼­ ¾Æ·¡ÂÊ ¿µ¿ªÀ» ISA ½Ã½ºÅÛÀÇ ISA ÁÖº¯ÀåÄ¡ ¿ëÀ¸·Î ¿¹¾àÀ» ÇÏ°í, ÇϳªÀÇ PCI-ISA ºê¸´Áö ¸¦ ÅëÇØ PCI ¸Þ¸ð¸®·ÎÀÇ Á¢±ÙÀ» ÀÌ ¿µ¿ªÀ¸·Î ¹Ù²Ù¾î ÁÜÀ¸·Î½á ÇØ°áÇÑ´Ù. 6.5 PCI-PCI ºê¸´Áö PCI-PCI ºê¸´Áö´Â ½Ã½ºÅÛ¿¡ ÀÖ´Â PCI ¹ö½ºµéÀ» ºÙ¿©Áִ Ưº°ÇÑ PCI ÀåÄ¡ÀÌ´Ù. °£´ÜÇÑ ½Ã½ºÅÛ¿¡´Â PCI ¹ö½º°¡ Çϳª¹Û¿¡ ¾øÁö¸¸, ÇϳªÀÇ PCI ¹ö½º°¡ Áö¿øÇÒ ¼ö ÀÖ´Â PCI ÀåÄ¡ÀÇ °³¼ö¿¡´Â Àü±âÀûÀÎ Á¦ÇÑÀÌ À־, ´õ ¸¹Àº PCI ÀåÄ¡¸¦ Áö¿øÇϱâ À§Çؼ­ PCI-PCI ºê¸´Áö¸¦ ÅëÇØ PCI ¹ö½º¸¦ Ãß°¡ÇÒ ¼ö ÀÖµµ·Ï ÇÑ´Ù. À̴ ƯÈ÷ °í¼º´É ¼­¹ö¿¡ À־ Áß¿äÇÏ´Ù. ´ç¿¬ È÷, ¸®´ª½º´Â PCI-PCI ºê¸´Áö¸¦ Áö¿øÇÑ´Ù. 6.5.1 PCI-PCI ºê¸´Áö : PCI I/O¿Í PCI ¸Þ¸ð¸® À©µµ¿ì(Memory Window) PCI-PCI ºê¸´Áö´Â ´Ù¿î½ºÆ®¸²À¸·Î °¡´Â PCI I/O³ª PCI ¸Þ¸ð¸®¿¡ Àаųª ¾²´Â ¿äû ÁßÀÇ ÀϺθ¸µé Åë°ú½ÃŲ´Ù. ¿¹¸¦ µé¾î ±×¸² 6.1¿¡¼­, 0¹ø PCI ¹ö½º¿¡¼­ 1¹ø PCI ¹ö½º·Î °¡´Â ÀÐ°í ¾²´Â ¸í·ÉÀÌ ÀÖÀ» ¶§, PCI-PCI ºê¸´Áö ´Â ±× ÁÖ¼Ò°¡ SCSI Ä«µå³ª ÀÌ´õ³Ý Ä«µåÀÇ ¸Þ¸ð¸® ÀÏ ¶§¿¡¸¸ Åë°ú½ÃÄÑÁÖ°í, ±× ¿ÜÀÇ ÁÖ¼ÒÀÏ ¶§´Â ¹«½ÃÇعö¸°´Ù. ÀÌ·± ÇÊÅ͸µÀº ÇÊ¿ä¾ø´Â ÁÖ¼Ò°¡ ½Ã½ºÅÛ Àüü·Î Àü´ÞµÇ´Â °ÍÀ» ¸·¾ÆÁØ´Ù. À̸¦ À§ÇØ PCI-PCI ºê¸´Áö°¡ 1Â÷ ¹ö½º(primary bus)¿¡¼­ 2Â÷ ¹ö½º(secondary bus)·Î Àü´ÞÇØ¾ß ÇÏ´Â PCI I/O ¿Í PCI ¸Þ¸ð¸® °ø°£ÀÇ º£À̽º ÁÖ¼Ò¿Í ¹üÀ§¸¦ ÇÁ·Î±×·¥ÇØ¾ß ÇÑ´Ù. Çѹø PCI-PCIºê¸´Áö¸¦ ¼³Á¤ÇÏ°í ³ª¸é, µð¹ÙÀ̽º µå¶óÀ̹ö°¡ ÀÌ À©µµ¿ì¸¦ ÅëÇؼ­ PCI I/O¿Í PCI ¸Þ¸ð¸® °ø°£¿¡ Á¢±ÙÇÏ´Â ÇÑ, PCI-PCI ºê¸´Áö´Â º¸ÀÌÁö ¾Ê´Â´Ù. ÀÌ´Â PCI µð¹ÙÀ̽º µå¶óÀ̹ö Á¦ÀÛÀÚµéÀ» ÆíÇÏ°Ô ÇØÁÖ´Â Áß¿äÇÑ Æ¯Â¡ÀÌ´Ù. ³ªÁß¿¡ »ìÆ캼 °ÍÀÌÁö¸¸, ÀÌ´Â ¸®´ª½º°¡ PCI-PCI ºê¸´Áö¸¦ ¼³Á¤ ÇÏ´Â °ÍÀ» Á» ±î´Ù·Ó°Ô ÇÑ´Ù. 6.5.2 PCI-PCI ºê¸´Áö : PCI ¼³Á¤ »çÀÌŬ(Configuration Cycle)°ú PCI ¹ö½º¿¡ ¹øÈ£ ºÙÀ̱â PCI ÃʱâÈ­ Äڵ尡 ¸ÞÀÎ PCI ¹ö½º(0¹ø PCI ¹ö½º)¿¡ ÀÖÁö ¾Ê´Â ÀåÄ¡µé¿¡ Á¢±ÙÇÒ ¼ö ÀÖÀ¸·Á¸é, ºê¸´Áö°¡ ÀÚ½ÅÀÇ 1Â÷ ÀÎÅÍÆäÀ̽º¿¡¼­ 2Â÷ ÀÎÅÍÆäÀ̽º ·Î ¼³Á¤ »çÀÌŬ ¸¦ ³Ñ±æ°ÇÁö ¸»°ÇÁö¸¦ °áÁ¤Çϵµ·Ï ÇÒ ¼ö ÀÖ´Â ¸ÞÄ¿´ÏÁòÀÌ ÀÖ¾î¾ß ÇÑ´Ù. »çÀÌŬÀ̶õ PCI ¹ö½º¿¡¼­ º¸ÀÌ´Â ÁÖ¼ÒÀÌ´Ù. PCI ±Ô¾à¿¡¼­´Â µÎ°¡Áö Çü½ÄÀÇ PCI ¼³Á¤ ÁÖ¼Ò¸¦ Á¤ÀÇÇÏ°í ÀÖ´Ù. ÀÌ´Â 0¹ø ŸÀÔ°ú 1¹ø ŸÀÔÀε¥ ±×¸² 6.3°ú 6.4¿¡¼­ ºñ±³Çؼ­ º¸¿©ÁÖ°í ÀÖ´Ù. 0¹ø ŸÀÔ PCI ¼³Á¤ »çÀÌŬ¿¡´Â ¹ö½º ¹øÈ£°¡ ¾ø°í, ¸ðµç ÀåÄ¡´Â À̸¦ °°Àº PCI ¹ö½º¿¡ ´ëÇÑ PCI ¼³Á¤ ÁÖ¼Ò·Î Çؼ®ÇÑ´Ù. 0¹ø ŸÀÔ ¼³Á¤ »çÀÌŬ¿¡¼­ 11-31¹ø ºñÆ®´Â ÀåÄ¡ ¼±Åà Ç׸ñÀÌ´Ù. ½Ã½ºÅÛÀ» µðÀÚÀÎÇÏ´Â ¹æ¹ýÁß Çϳª´Â °¢°¢ ´Ù¸¥ ÀåÄ¡¿¡ ´Ù¸¥ ºñÆ®¸¦ ºÎ¿©ÇÏ´Â °ÍÀε¥, ¿©±â¼­´Â ºñÆ® 11Àº 0¹ø ½½·Ô¿¡ ÀÖ´Â PCI ÀåÄ¡¸¦, ºñÆ® 12´Â 1¹ø ½½·Ô¿¡ ÀÖ´Â PCI ÀåÄ¡¸¦ ¼±ÅÃÇÑ´Ù. ´Ù¸¥ ¹æ¹ýÀº ÀåÄ¡ÀÇ ½½·Ô ¹øÈ£¸¦ ¹Ù·Î 11-31 ºñÆ®¿¡ ½á ³Ö´Â °ÍÀÌ´Ù. ÀÌ Áß ¾î¶² ¹æ¹ýÀ» »ç¿ëÇÏ´ÂÁö´Â ½Ã½ºÅÛÀÇ PCI ¸Þ¸ð¸® ÄÁÆ®·Ñ·¯¿¡ µû¶ó ´Ù¸£´Ù. 1¹ø ŸÀÔ PCI ¼³Á¤ »çÀÌŬ¿¡´Â PCI ¹ö½º ¹øÈ£°¡ ÀÖÀ¸¸ç, ÀÌ Å¸ÀÔÀÇ ¼³Á¤ »çÀÌŬÀº PCI-PCI ºê¸´Áö¸¸ »ç¿ëÇÏ°í ´Ù¸¥ ÀåÄ¡µéÀº ¸ðµÎ ¹«½ÃÇÑ´Ù. ¸ðµç PCI-PCI ºê¸´Áö´Â 1¹ø ŸÀÔ ¼³Á¤ »çÀÌŬÀ» º¸¾ÒÀ» ¶§, ±×°ÍÀ» ÀÚ½ÅÀÇ PCI ¹ö½ºÀÇ ´Ù¿î½ºÆ®¸²À¸·Î Åë°ú½ÃųÁö¸¦ °áÁ¤ÇÒ ¼ö ÀÖ´Ù. PCI-PCI ºê¸´Áö°¡ 1¹ø ŸÀÔ ¼³Á¤ »çÀÌŬÀ» ¹«½ÃÇÒ°ÇÁö, ¾Æ´Ï¸é ´Ù¿î½ºÆ® ¸² PCI ¹ö½º·Î Åë°ú½Ãų °ÍÀÎÁö´Â, PCI-PCI°¡ ¾î¶»°Ô ¼³Á¤µÇ¾ú´À³Ä¿¡ ´Þ·ÁÀÖ´Ù. ¸ðµç PCI-PCI ºê¸´Áö´Â 1Â÷ ¹ö½º ÀÎÅÍÆäÀ̽º ¹øÈ£¿Í 2Â÷ ¹ö½º ÀÎÅÍÆäÀ̽º ¹øÈ£¸¦ °¡Áö°í ÀÖ´Ù. 1Â÷ ¹ö½º ÀÎÅÍÆäÀ̽º´Â CPU¿¡ ´õ °¡±î¿î ÂÊ¿¡ ÀÖ´Â ¹ö½ºÀÌ°í, 2Â÷ ¹ö½º ÀÎÅÍÆäÀ̽º´Â ´õ ¸Ö¸® ÀÖ´Â °ÍÀÌ´Ù. ¶ÇÇÑ °¢ PCI-PCI ºê¸´Áö´Â Á¾¼Ó ¹ö½º(subordinate bus) ¹øÈ£¸¦ °¡Áö°í Àִµ¥, ÀÌ´Â 2Â÷ ¹ö½º ÀÎÅÍÆäÀ̽º ³Ê¸Ó ºê¸´Áö·Î ¿¬°áµÈ ¸ðµç PCI ¹ö½º¿¡¼­ ÃÖ´ë ¹ö½º ¹øÈ£ÀÌ´Ù. ´Ù¸£°Ô Ç¥ÇöÇϸé, Á¾¼Ó ¹ö½º ¹øÈ£´Â PCI-PCI ºê¸´ÁöÀÇ ´Ù¿î½ºÆ®¸²À¸·Î ¿¬°áµÈ PCI ¹ö½º ¹øÈ£ Áß °¡Àå Å« °ªÀÌ´Ù. PCI-PCI ºê¸´Áö°¡ 1¹ø ŸÀÔ ¼³Á¤ »çÀÌŬÀ» ¸¸³ª¸é, ºê¸´Áö´Â ´ÙÀ½ Áß¿¡¼­ ÇÑ°¡Áö ÀÏÀ» ÇÑ´Ù. o ÁöÁ¤µÈ ¹ö½º ¹øÈ£°¡ ºê¸´ÁöÀÇ 2Â÷ ¹ö½º ¹øÈ£¿Í Á¾¼Ó ¹ö½º ¹øÈ£ »çÀÌ¿¡ ÀÖÁö ¾ÊÀ¸¸é (ÀÌ µÎ ¹ö½º ¹øÈ£µµ Æ÷ÇÔÇÏ¿©) ¹«½ÃÇÑ´Ù. o ¹ö½º ¹øÈ£°¡ ºê¸´ÁöÀÇ 2Â÷ ¹ö½º ¹øÈ£¿Í ÀÏÄ¡Çϸé 0¹ø ŸÀÔ ¼³Á¤ ¸í·ÉÀ¸·Î º¯È¯ÇÑ´Ù. o ÁöÁ¤µÈ ¹ö½º ¹øÈ£°¡ 2Â÷ ¹ö½º ¹øÈ£º¸´Ù Å©°í Á¾¼Ó ¹ö½º ¹øÈ£º¸´Ù À۰ųª °°À¸¸é, ¹Ù²ÙÁö ¾Ê°í ±×´ë·Î 2Â÷ ¹ö½º ÀÎÅÍÆäÀ̽º·Î Åë°ú ½ÃŲ´Ù. µû¶ó¼­ ±×¸² 6.9¿¡ ÀÖ´Â ¹èÄ¡µµ¿¡¼­ 3¹ø ¹ö½º¿¡ ÀÖ´Â ÀåÄ¡1À» ÁöÁ¤ÇÏ°íÀÚ ÇÑ´Ù¸é, CPU·ÎºÎÅÍ 1¹ø ŸÀÔ ¼³Á¤ ¸í·ÉÀ» ¸¸µé¾î¾ß ÇÑ´Ù. ±×·¯¸é ºê¸´Áö 1Àº À̸¦ ¹Ù²ÙÁö ¾Ê°í 1¹ø ¹ö½º·Î Åë°ú½ÃÅ°°í, ºê¸´Áö2´Â À̸¦ ¹«½ÃÇϸç, ºê¸´Áö3Àº À̸¦ 0¹ø ŸÀÔ ¼³Á¤ ¸í·ÉÀ¸·Î ¹Ù²Ù°í 3¹ø ¹ö½º·Î º¸³» ÀåÄ¡1ÀÌ ÀÀ´äÇÏ°Ô µÈ´Ù. PCI ¼³Á¤À» ÇÒ ¶§ ¹ö½º¿¡ ¹øÈ£¸¦ ÇÒ´çÇÏ´Â °ÍÀº °³º° ¿î¿µÃ¼Á¦¿¡ µû¶ó ´Ù¸£°ÚÁö¸¸, ¾î¶² ¹æ½ÄÀ¸·Î ¹øÈ£¸¦ ºÙÀ̵簣¿¡ ´ÙÀ½ ¸íÁ¦´Â ½Ã½ºÅÛ¿¡ ÀÖ´Â ¸ðµç PCI-PCI ºê¸´Áö¿¡ À־ ÂüÀ̾î¾ß ÇÑ´Ù. "PCI-PCI ºê¸´Áö ³Ê¸Ó¿¡ ÀÖ´Â ¸ðµç PCI ¹ö½ºÀÇ ¹øÈ£´Â, 2Â÷ ¹ö½º ¹øÈ£¿Í Á¾¼Ó ¹ö½º ¹øÈ£ (À̵éÀ» Æ÷ÇÔÇÏ¿©) »çÀÌ¿¡ ÀÖ¾î¾ß ÇÑ´Ù." ¸¸¾à ÀÌ ±ÔÄ¢ÀÌ ±úÁø´Ù¸é, PCI-PCI ºê¸´Áö´Â 1¹ø ŸÀÔ ¼³Á¤ »çÀÌŬÀ» Åë°ú½ÃÅ°Áö ¾Ê°Å³ª Á¦´ë·Î º¯È¯ÇÏÁö ¸øÇÒ °ÍÀÌ°í, ½Ã½ºÅÛÀº Àڽſ¡ ÀÖ´Â PCI ÀåÄ¡¸¦ ãÁö ¸øÇϰųª ÃʱâÈ­ÇÏÁö ¸øÇÒ °ÍÀÌ´Ù. ¸®´ª½º´Â ¹øÈ£¸¦ ¿Ã¹Ù ·Î ºÙÀ̱â À§Çؼ­ À̵é Ưº°ÇÑ ÀåÄ¡µé(PCI-PCI ºê¸´Áö)À» ƯÁ¤ÇÑ ¼ø¼­·Î ¼³Á¤ÇÑ´Ù. ¸®´ª½º¿¡¼­ PCI ºê¸´Áö¿Í ¹ö½º¿¡ ¹øÈ£¸¦ ºÙÀÌ´Â ¹æ½ÄÀº 6.6.2Àå ¿¡¼­ ½ÇÁ¦ ¿¹Á¦¿Í ÇÔ²² ¼³¸íÇÑ´Ù. 6.6 ¸®´ª½º PCI ÃʱâÈ­ ¸®´ª½º¿¡¼­ PCI ÃʱâÈ­ ÄÚµå´Â ´ÙÀ½ ¼¼°¡Áö ³í¸®ÀûÀÎ ºÎºÐÀ¸·Î ÂÉ°¶ ¼ö ÀÖ´Ù. PCI µð¹ÙÀ̽º µå¶óÀ̹ö : ÀÌ À¯»ç µð¹ÙÀ̽º µå¶óÀ̹ö(pseudo device driver)´Â 0¹ø ¹ö½ººÎÅÍ PCI ½Ã½ºÅÛÀ» ã±â ½ÃÀÛÇÏ¿©, ½Ã½ºÅÛ¿¡ ÀÖ´Â ¸ðµç PCI ÀåÄ¡¿Í ºê¸´ÁöµéÀ» ã´Â´Ù. ±×¸®°í ÇØ´ç ÀڷᱸÁ¶ÀÇ ¿¬°á ¸®½ºÆ®¸¦ ¸¸µé¾î ½Ã½ºÅÛÀÇ ¹èÄ¡µµ¸¦ ³ªÅ¸³½´Ù. ´õºÒ¾î, ãÀº ¸ðµç ºê¸´Áö¿¡ ¹øÈ£¸¦ ºÎ¿©ÇÑ´Ù. PCI BIOS : ÀÌ ¼ÒÇÁÆ®¿þ¾î °èÃþÀº [4, PCI BIOS ROM ±Ô¾à]¿¡ ±â¼úµÈ ¼­ºñ½ºµéÀ» Á¦°øÇÑ´Ù. ¾ËÆÄ AXP¿¡¼­´Â ÀÌ·± BIOS ¼­ºñ½º°¡ ¾øÁö¸¸, ¶È°°Àº ÀÏÀ» ÇÏ´Â µ¿µîÇÑ Äڵ尡 ¸®´ª½º Ä¿³Î¿¡ Æ÷ÇԵǾî ÀÖ´Ù. PCI È®Á¤(PCI Fixup) : ½Ã½ºÅÛº°·Î ´Ù¸¥ ÀÌ ÄÚµå´Â ½Ã½ºÅÛº°·Î ´Ù¸¥ PCI ÃʱâÈ­ÀÇ Àâ´ÙÇÑ Á¾·áºÎºÐÀ» ±ú²ýÇÏ°Ô ¸¶¹«¸®ÇÑ´Ù. 6.6.1 ¸®´ª½º Ä¿³Î PCI ÀڷᱸÁ¶ ¸®´ª½º Ä¿³ÎÀº PCI ½Ã½ºÅÛÀ» ÃʱâÈ­Çϸ鼭 ½Ã½ºÅÛÀÇ ½ÇÁ¦ PCI ¹èÄ¡µµ¸¦ ±×´ë·Î ³ªÅ¸³»´Â ÀڷᱸÁ¶¸¦ ¸¸µç´Ù. ±×¸² 6.5´Â ±×¸² 6.1¿¡¼­ ¿¹·Î µç PCI ½Ã½ºÅÛ¿¡ ´ëÇØ ¸¸µé¾îÁö´Â ÀڷᱸÁ¶¸¦ º¸¿©ÁØ´Ù. °¢ PCI ÀåÄ¡´Â (PCI-PCI ºê¸´Áöµµ Æ÷ÇÔÇÏ¿©) pci_dev ÀڷᱸÁ¶·Î, PCI ¹ö½º´Â pci_bus ÀڷᱸÁ¶·Î ³ªÅ¸³½´Ù. ÃÖÁ¾°á°ú´Â ¹ö½ºµéÀÇ Æ®¸® ±¸Á¶·Î Æ®¸®ÀÇ °¢ ³ëµå´Â Àڽſ¡ ¿¬°áµÈ ¿©·¯ PCI ÀåÄ¡µéÀ» ÀÚ½ÄÀ¸·Î °¡Áø´Ù. PCI ¹ö½º´Â PCI-PCI ºê¸´Áö¸¦ ÅëÇؼ­¸¸ µµ´ÞÇÒ ¼ö ÀÖÀ¸¹Ç·Î (ù¹ø° PCI ¹ö½º ÀÎ 0¹ø ¹ö½º¸¦ Á¦¿ÜÇÏ°í), °¢ pci_bus ÀڷᱸÁ¶´Â Á¢±ÙÇÒ ¶§ °ÅÃÄ¾ß ÇÏ´Â PCI-PCI ºê¸´Áö¿¡ ´ëÇÑ Æ÷ÀÎÅ͸¦ °®´Â´Ù. ÀÌ PCI ÀåÄ¡´Â PCI ¹ö½ºÀÇ ºÎ¸ð PCI ¹ö½ºÀÇ ÀÚ½ÄÀÌ´Ù. ±×¸² 6.5¿¡´Â ³ª¿ÀÁö ¾ÊÁö¸¸ ½Ã½ºÅÛ¿¡ ÀÖ´Â ¸ðµç PCI ÀåÄ¡¿¡ ´ëÇÑ Æ÷ÀÎÅÍ ÀÎ pci_devices°¡ ÀÖ´Ù. ½Ã½ºÅÛ¿¡ ÀÖ´Â ¸ðµç PCI ÀåÄ¡´Â ÀÚ½ÅÀÇ pci_dev ÀڷᱸÁ¶¸¦ °¡Áö°í ÀÖ°í, À̵éÀº ÀÌ Å¥(pci_devices)¿¡ µé¾îÀÖ´Ù. ÀÌ Å¥´Â ¸®´ª½º Ä¿³ÎÀÌ ½Ã½ºÅÛ¿¡ ÀÖ´Â ¸ðµç PCI ÀåÄ¡¸¦ »¡¸® ã´Âµ¥ »ç¿ëÇÑ´Ù. 6.6.2 PCI µð¹ÙÀ̽º µå¶óÀ̹ö PCI µð¹ÙÀ̽º µå¶óÀ̹ö´Â ½ÇÁ¦ µð¹ÙÀ̽º µå¶óÀ̹ö°¡ ¾Æ´Ï¶ó, ½Ã½ºÅÛ Ãʱâ È­ ¶§ ºÒ¸®´Â ¿î¿µÃ¼Á¦ÀÇ ÇÑ ÇÔ¼öÀÌ´Ù. PCI ÃʱâÈ­ ÄÚµå´Â ½Ã½ºÅÛ¿¡ ÀÖ´Â ¸ðµç PCI ¹ö½º¿¡¼­ ¸ðµç PCI ÀåÄ¡µé(PCI-PCI ºê¸´Áö¸¦ Æ÷ÇÔÇÏ¿©)À» Á¶»çÇØ ¾ß ÇÑ´Ù. ÀÌ ÄÚµå´Â PCI BIOS Äڵ带 ÀÌ¿ëÇÏ¿©, ÇöÀç Á¶»çÇÏ°í ÀÖ´Â PCI ¹ö½ºÀÇ ¸ðµç °¡´ÉÇÑ ½½·ÔÀÌ Á¡À¯µÇ¾î ÀÖ´ÂÁö ¾Æ´ÑÁö È®ÀÎÇÑ´Ù. ±×¸®°í ±× PCI ½½·ÔÀÌ Á¡À¯µÇ¾î ÀÖÀ¸¸é, ±× ÀåÄ¡¸¦ ±â¼úÇÏ´Â pci_dev ÀڷᱸÁ¶¸¦ ¸¸µé°í, Á¸ÀçÇÏ´Â PCI ÀåÄ¡ÀÇ ¸®½ºÆ®(pci_devices¿¡¼­ °¡¸®Å°°í ÀÖ´Ù)¿¡ À̸¦ Ãß°¡ÇÑ´Ù. pci_bus pci_root +------------+ ------------->| Parent | | Children |-------+ | next | | | self | | | devices |---+ | | bus=0 | | | | | | | +------------+ | | | | +---------------------------+ | +--------------------+ | | | | pci_dev pci_dev pci_dev | | +---------+ +---------+ +---------+ | +--->| bus | +--->| bus | +--->| bus | | | sibling | | | sibling | | | sibling | | | next | | | next | | +->| next | | | |-+ | |-+ | | | | | | | | | | | | +---------+ +---------+ | +---------+ | PCI-ISA Bridge Video | PCI-PCI Bridge | | | pci_bus | | +------------+ | +---->| Parent | | | Children | | | next | | | self |-------------------+ | devices |--+ | bus=1 | | | | | +------------+ | pci_dev pci_dev +-->+---------+ +---------+ | bus | +--->| bus | | sibling | | | sibling | | next | | | next | | |-+ | | | | | | +---------+ +---------+ SCSI Ethernet ±×¸² 6.5 : Linux Kernel PCI Data Structures PCI ÃʱâÈ­ ÄÚµå´Â 0¹ø PCI ¹ö½ººÎÅÍ Ã£±â ½ÃÀÛÇÑ´Ù. ÀÌ ÄÚµå´Â °¡´ÉÇÑ ¸ðµç PCI ½½·Ô¿¡¼­ °¡´ÉÇÑ ¸ðµç PCI ÀåÄ¡ÀÇ Á¦ÀÛÀÚ ½Äº°ÀÚ(Vendor Identification)¿Í ÀåÄ¡ ½Äº°ÀÚ(Device Identification)¸¦ ÀÐÀ¸·Á°í ÇÑ´Ù. ±×¸®°í Á¡À¯µÇ¾î ÀÖ´Â ½½·ÔÀ» ¹ß°ßÇϸé, ±× ÀåÄ¡¸¦ ³ªÅ¸³»´Â pci_dev ÀڷᱸÁ¶¸¦ ¸¸µç´Ù. PCI ÃʱâÈ­ Äڵ忡 ÀÇÇØ ¸¸µé¾îÁø ¸ðµç pci_dev ÀÚ·á ±¸Á¶´Â PCI-PCI ºê¸´Áö¸¦ Æ÷ÇÔÇÏ¿© ¸ðµÎ pci_devices¶ó´Â ´ÜÀÏ ¿¬°á ¸®½ºÆ®¿¡ ¿¬°áµÈ´Ù. ¸¸¾à ãÀº PCI ÀåÄ¡°¡ PCI-PCI ºê¸´Áö¶ó¸é, pci_bus ÀڷᱸÁ¶¸¦ ¸¸µé¾î pci_bus Æ®¸®¿Í pci_root°¡ °¡¸®Å°°í ÀÖ´Â pci_dev ÀڷᱸÁ¶¿¡ ¿¬°áÇÑ´Ù. PCI ÃʱâÈ­ ÄÚµå´Â ÀåÄ¡ÀÇ ºÐ·ù Äڵ尡 0x060400 ¶ó´Â °ÍÀ¸·Î ±× PCI ÀåÄ¡°¡ PCI-PCI ºê¸´ÁöÀÓÀ» ¾Ë ¼ö ÀÖ´Ù. ±×¸®°í ³ª¼­ ¸®´ª½º Ä¿³ÎÀº ÀڽŠÀÌ Ã£Àº PCI-PCI ºê¸´ÁöÀÇ ´Ù¸¥ ÂÊ(´Ù¿î½ºÆ®¸²)ÀÇ PCI ¹ö½º¸¦ ¼³Á¤ÇÑ´Ù. ¶Ç ´Ù¸¥ PCI-PCI ºê¸´Áö¸¦ ¹ß°ßÇÏ´õ¶óµµ ¶È°°Àº ¹æ¹ýÀ¸·Î ¼³Á¤ÇÑ´Ù. ÀÌ °úÁ¤Àº ±íÀÌŽ»ö(depthwise) ¾Ë°í¸®ÁòÀ̶ó°í ÇÏ´Â ¹æ¹ýÀÌ´Ù. ½Ã½ºÅÛÀÇ PCI ¹èÄ¡µµ´Â ³ÐÀÌŽ»ö(breadthwise)À» Çϱâ Àü¿¡ ±íÀÌŽ»öÀ» ÅëÇÏ¿© ¿ÏÀü È÷ ±¸¼ºÀÌ µÈ´Ù. ±×¸² 6.1À» º¸¸é ¸®´ª½º°¡ 0¹ø PCI ¹ö½º¿¡ ÀÖ´Â ºñµð¿À ÀåÄ¡¸¦ ¼³Á¤Çϱâ Àü¿¡, 1¹ø PCI ¹ö½º¿¡ ÀÖ´Â ÀÌ´õ³Ý°ú SCSI ÀåÄ¡¸¦ ¼³Á¤ ÇßÀ½À» ¾Ë ¼ö ÀÖ´Ù. ¸®´ª½º°¡ ´Ù¿î½ºÆ®¸² PCI ¹ö½º¸¦ ãÀ» ¶§, Áß°£¿¡ ÀÖ´Â PCI ºê¸´ÁöÀÇ 2Â÷ ¹ö½º ¹øÈ£¿Í Á¾¼Ó ¹ö½º ¹øÈ£¸¦ ¼³Á¤ÇØ¾ß Çϴµ¥, ÀÌ´Â ´ÙÀ½¿¡ ÀÚ¼¼ÇÏ°Ô ¼³¸íÇÏ°í ÀÖ´Ù. PCI-PCI ºê¸´Áö ¼³Á¤Çϱâ - PCI ¹ö½º ¹øÈ£ ºÎ¿©Çϱâ PCI-PCI ºê¸´Áö°¡, PCI I/O, PCI ¸Þ¸ð¸®, ¶Ç´Â PCI ¼³Á¤ ÁÖ¼Ò°ø°£¿¡ ÀÐ°í ¾²·Á´Â ½Ãµµ¸¦ Åë°ú½Ãų ¼ö ÀÖÀ¸·Á¸é, ºê¸´Áö´Â ´ÙÀ½°ú °°Àº »çÇ×À» ¾Ë¾Æ ¾ß ÇÑ´Ù : 1Â÷ ¹ö½º(primary bus) ¹øÈ£ : PCI-PCI ºê¸´Áö¿¡ ¹Ù·Î ¿¬°áµÈ ¾÷½ºÆ®¸² ¹ö½º ¹øÈ£ 2Â÷ ¹ö½º(secondary bus) ¹øÈ£ : PCI-PCI ºê¸´Áö¿¡ ¹Ù·Î ¿¬°áµÈ ´Ù¿î ½ºÆ®¸² ¹ö½º ¹øÈ£ Á¾¼Ó ¹ö½º(subordinate bus) ¹øÈ£ : ºê¸´ÁöÀÇ ´Ù¿î½ºÆ®¸²À¸·Î µµ´Þ ÇÒ ¼ö ÀÖ´Â ¹ö½ºµéÀÇ °¡Àå Å« ¹øÈ£ PCI I/O¿Í PCI ¸Þ¸ð¸® À©µµ¿ì : PCI-PCI ºê¸´ÁöÀÇ ¸ðµç ´Ù¿î½ºÆ®¸² ¿¡¼­ »ç¿ëÇÏ´Â PCI I/O ÁÖ¼Ò°ø°£°ú PCI ¸Þ¸ð¸® ÁÖ¼Ò°ø°£ÀÇ À©µµ¿ì ¿¡ ´ëÇÑ º£À̽º ÁÖ¼Ò¿Í Å©±â ¹®Á¦´Â ¾î¶² ÁÖ¾îÁø PCI-PCI ºê¸´Áö¸¦ ¼³Á¤ÇÏ·Á°í ÇÒ ¶§ ±× ºê¸´ÁöÀÇ Á¾¼Ó ¹ö½º ¹øÈ£¸¦ ¾Ë ¼ö ¾ø´Ù´Â °ÍÀÌ´Ù. ´Ù¿î½ºÆ®¸²À¸·Î PCI-PCI ºê¸´Áö °¡ ´õ ÀÖ´ÂÁö ¸ð¸£°í, ¾È´Ù°í ÇÏ´õ¶óµµ ±×°ÍÀÌ ¾î¶² ¹øÈ£¸¦ °®°Ô µÉÁöµµ ¸ð¸¥´Ù. ÇØ´äÀº ±íÀÌŽ»ö Àç±Í ¾Ë°í¸®ÁòÀ» »ç¿ëÇÏ¿©, °¢ ¹ö½º¿¡ ÀÖ´Â PCI-PCI ºê¸´Áö¸¦ Á¶»çÇÏ°í, ãÀ¸¸é ¹øÈ£¸¦ ºÎ¿©ÇÏ´Â °ÍÀÌ´Ù. PCI-PCI ºê¸´Áö¸¦ ãÀ¸¸é, 2Â÷ ¹ö½º¿¡ ¹øÈ£¸¦ ºÙÀÌ°í, ÀÓ½ÃÀûÀ¸·Î Á¾¼Ó ¹ö½º ¹øÈ£¿¡ 0xFF¸¦ ÁöÁ¤ÇÑ ÈÄ, ´Ù¿î½ºÆ®¸²À¸·Î PCI-PCI ºê¸´Áö¸¦ ã¾Æ °è¼Ó ¹øÈ£¸¦ ºÙ¿©³ª°£´Ù. ÀÌ°ÍÀº º¹ÀâÇØ º¸ÀÌ°ÚÁö¸¸, ¾Æ·¡¿¡ ÀÖ´Â ½ÇÁ¦ µ¿ÀÛÇÏ´Â ¿¹Á¦¸¦ º¸¸é ÀÌ °úÁ¤ÀÌ ´õ ¸íÄèÇØÁú °ÍÀÌ´Ù. PCI-PCI ºê¸´Áö ¹øÈ£ºÙÀ̱â : 1 ´Ü°è ±×¸² 6.6ÀÇ ¹èÄ¡µµ¿¡¼­ óÀ½ ã°Ô µÇ´Â ºê¸´Áö´Â ºê¸´Áö1ÀÌ´Ù. ºê¸´Áö1ÀÇ ´Ù¿î½ºÆ®¸² PCI ¹ö½º ´Â 1¹øÀÌ µÇ¸ç, ºê¸´Áö1ÀÇ 2Â÷ ¹ö½º ¹øÈ£·Î 1¹øÀÌ, ±×¸®°í ÀÓ½ÃÀû À¸·Î Á¾¼Ó ¹ö½º ¹øÈ£·Î 0xFF°¡ ÇÒ´çµÈ´Ù. ÀÌ´Â PCI ¹ö½º ¹øÈ£·Î 1¹øÀ̳ª ÀÌ ÀÌ»óÀ» ÁöÁ¤ÇÑ 1¹ø ŸÀÔ ¼³Á¤ »çÀÌŬÀº ¸ðµÎ ºê¸´Áö1À» Åë°úÇÏ¿© PCI ¹ö½º 1¹øÀ¸·Î °¡°ÔµÈ´Ù´Â °ÍÀÌ´Ù. ¸¸¾à 1¹ø ŸÀÔ ¼³Á¤ »çÀÌŬÀÇ ¹ö½º ¹øÈ£°¡ 1¹øÀ̶ó¸é ÀÌ´Â 0¹ø ŸÀÔ ¼³Á¤ »çÀÌŬ ·Î º¯È¯ÀÌ µÇ°ÚÁö¸¸, ´Ù¸¥ ¹ö½º ¹øÈ£¶ó¸é º¯È¯µÇÁö ¾Ê°í ±×´ë·Î ÀÖÀ» °ÍÀÌ´Ù. ÀÌ °úÁ¤Àº ¸®´ª½ºÀÇ PCI ÃʱâÈ­ Äڵ尡 1¹ø PCI ¹ö½º ·Î ÁøÇàÇÏ¿© Á¶»çÇϱâ À§ÇØ ÇØ¾ß ÇÏ´Â °ÍÀÌ´Ù. PCI-PCI ºê¸´Áö ¹øÈ£ºÙÀ̱â : 2´Ü°è ¸®´ª½º´Â ±íÀÌŽ»ö ¾Ë°í¸®ÁòÀ» »ç¿ëÇϹǷÎ, ÃʱâÈ­ ÄÚµå´Â 1¹ø PCI ¹ö½º·Î ÁøÇàÇÏ¿© À̸¦ Á¶»ç ÇÑ´Ù. ¿©±â¼­ PCI-PCI ºê¸´Áö2¸¦ ¹ß°ßÇÏ°Ô µÇ°í, PCI-PCI ºê¸´Áö2 ¸¦ ³Ñ¾î¼­´Â ´õÀÌ»ó PCI-PCI ºê¸´Áö°¡ ¾øÀ¸¹Ç·Î Á¾¼Ó ¹ö½º ¹øÈ£¿Í 2Â÷ ÀÎÅÍÆäÀ̽º ¹øÈ£·Î ¶È°°ÀÌ 2¸¦ °®°Ô µÈ´Ù. ±×¸² 6.7Àº ÀÌ ½ÃÁ¡ ¿¡¼­ ¹ö½º¿Í PCI-PCI ºê¸´Áö°¡ ¾î¶² °ªÀ» °®°Ô µÇ´ÂÁö º¸¿©ÁØ´Ù. PCI-PCI ºê¸´Áö ¹øÈ£ºÙÀ̱â : 3´Ü°è PCI ÃʱâÈ­ ÄÚµå´Â 1¹ø PCI ¹ö½º¸¦ Á¶»çÇÏ´Â °÷À¸·Î µÇµ¹¾Æ¿Í ´Ù¸¥ PCI-PCI ºê¸´ÁöÀÎ ºê¸´Áö 3À» ã°Ô µÈ´Ù. ÀÌ´Â 1Â÷ ¹ö½º ¹øÈ£·Î 1À», 2Â÷ ¹ö½º ¹øÈ£·Î 3À», ±×¸®°í Á¾¼Ó ¹ö½º ¹øÈ£·Î 0xFF¸¦ °®°Ô µÈ´Ù. ±×¸² 6.8¿¡´Â ÀÌ ¶§ ½Ã½ºÅÛÀÌ ¾î¶»°Ô ¼³Á¤µÇ´ÂÁö º¸¿©ÁØ´Ù. ÀÌÁ¦ ¹ö½º ¹øÈ£·Î 1, ¶Ç´Â 2³ª 3ÀÌ ÁöÁ¤µÈ 1¹ø ŸÀÔ PCI ¼³Á¤ »çÀÌŬÀº ÇØ´çÇÏ´Â PCI ¹ö½º·Î ¿Ã¹Ù¸£°Ô ¹è´ÞµÉ °ÍÀÌ´Ù. +-------+ | | +-----+ | | +-----+ | | | CPU | | | | DI | | | | D2 | | | | | | | +--+--+ +---+---+ +--+--+ Bus 0 | | | -------------+------------+----------------------+------------------ | +-----+ +-----+ +---+---+ | | | | | Bridge| Primary Bus=0 | DI | | D2 | | | Secondary Bus=1 | | | | | 1 | Subordinate=0xFF +--+--+ +--+--+ +---+---+ | | | Bus 1 ---+--------+----+--------+------------------+---------------------- | | +-----+ +---+---+ +---+---+ | | | Bridge| | Bridge| | DI | | | | | | | | 3 | | 2 | +--+--+ +---+---+ +---+---+ | | Bus ? | Bus ? -----+-----+-----+----------- --------+--------------------- | +---+---+ +-----+ +-----+ | Bridge| | | | | | | | DI | | D2 | | 4 | | | | | +---+---+ +--+--+ +--+--+ | | | Bus ? -----------+-------------------------+--------+--------------------- ±×¸² 6.6 : Configuring a PCI System : Part 1 +-------+ | | +-----+ | | +-----+ | | | CPU | | | | DI | | | | D2 | | | | | | | +--+--+ +---+---+ +--+--+ Bus 0 | | | -------------+------------+----------------------+------------------ | +-----+ +-----+ +---+---+ | | | | | Bridge| Primary Bus=0 | DI | | D2 | | | Secondary Bus=1 | | | | | 1 | Subordinate=0xFF +--+--+ +--+--+ +---+---+ | | | Bus 1 ---+--------+----+--------+------------------+---------------------- | | +-----+ +---+---+ +---+---+ | | | Bridge| | Bridge| Primary Bus=1 | DI | | | | | Secondary Bus=2 | | | 3 | | 2 | Subordinate=2 +--+--+ +---+---+ +---+---+ | | Bus ? | Bus 2 -----+-----+-----+----------- --------+--------------------- | +---+---+ +-----+ +-----+ | Bridge| | | | | | | | DI | | D2 | | 4 | | | | | +---+---+ +--+--+ +--+--+ | | | Bus ? -----------+-------------------------+--------+--------------------- ±×¸² 6.7 : Configuring a PCI System : Part 2 +-------+ | | +-----+ | | +-----+ | | | CPU | | | | DI | | | | D2 | | | | | | | +--+--+ +---+---+ +--+--+ Bus 0 | | | -------------+------------+----------------------+------------------ | +-----+ +-----+ +---+---+ | | | | | Bridge| Primary Bus=0 | DI | | D2 | | | Secondary Bus=2 | | | | | 1 | Subordinate=0xFF +--+--+ +--+--+ +---+---+ | | | Bus 1 ---+--------+----+--------+------------------+---------------------- | | +-----+ +---+---+ +---+---+ | | | Bridge| Primary Bus=1 | Bridge| Primary Bus=1 | DI | | | Secondary Bus=3 | | Secondary Bus=2 | | | 3 | Subordinate=0xFF | 2 | Subordinate=2 +--+--+ +---+---+ +---+---+ | | Bus 3 | Bus 2 -----+-----+-----+----------- --------+--------------------- | +---+---+ +-----+ +-----+ | Bridge| | | | | | | | DI | | D2 | | 4 | | | | | +---+---+ +--+--+ +--+--+ | | | Bus ? -----------+-------------------------+--------+--------------------- ±×¸² 6.8 : Configuring a PCI System : Part 3 +-------+ | | +-----+ | | +-----+ | | | CPU | | | | DI | | | | D2 | | | | | | | +--+--+ +---+---+ +--+--+ Bus 0 | | | -------------+------------+----------------------+------------------ | +-----+ +-----+ +---+---+ | | | | | Bridge| Primary Bus=0 | DI | | D2 | | | Secondary Bus=1 | | | | | 1 | Subordinate=4 +--+--+ +--+--+ +---+---+ | | | Bus 1 ---+-+------+----+--------+------------------+---------------------- | | | +--+--+ +---+---+ +---+---+ | | | Bridge| Primary Bus=1 | Bridge| Primary Bus=1 | DI | | | Secondary Bus=3 | | Secondary Bus=2 | | | 3 | Subordinate=4 | 2 | Subordinate=2 +--+--+ +---+---+ +---+---+ | | Bus 3 | Bus 2 -----+-----+-----+----------- --------+--------------------- | +---+---+ +-----+ +-----+ | Bridge| Primary Bus=3 | | | | | | Secondary Bus=4 | DI | | D2 | | 4 | Subordinate=4 | | | | +---+---+ +--+--+ +--+--+ | | | Bus 4 -----------+-------------------------+--------+--------------------- ±×¸² 6.9 : Configuring a PCI System : Part 4 PCI-PCI ºê¸´Áö ¹øÈ£ºÙÀ̱â : 4´Ü°è ¸®´ª½º´Â ºê¸´Áö3ÀÇ ´Ù¿î½ºÆ®¸² ÀÎ 3¹ø ¹ö½º¸¦ Á¶»çÇϱ⠽ÃÀÛÇÑ´Ù. 3¹ø PCI ¹ö½º´Â ´Ù¸¥ PCI-PCI ºê¸´Áö(ºê¸´Áö4)¸¦ °®°í ÀÖ°í, ÀÌ´Â 1Â÷ ¹ö½º ¹øÈ£·Î 3À», 2Â÷ ¹ö½º ¹øÈ£·Î 4¸¦ ºÎ¿©¹Þ´Â´Ù. ÀÌ°ÍÀº ÀÌ Áٱ⿡¼­ °¡Àå ³¡¿¡ ÀÖ´Â ºê¸´ÁöÀ̹ǷÎ, Á¾¼Ó ¹ö½º ¹øÈ£·Î 4¸¦ ºÎ¿©¹Þ´Â´Ù. ÃʱâÈ­ ÄÚµå´Â PCI-PCI ºê¸´Áö3À¸·Î µ¹¾Æ¿Í Á¾¼Ó ¹ö½º ¹øÈ£·Î 4¸¦ ÁöÁ¤ÇÑ´Ù. ¸¶Áö¸·À¸·Î PCI ÃʱâÈ­ ÄÚµå´Â PCI-PCI ºê¸´Áö1ÀÇ Á¾¼Ó ¹ö½º ¹øÈ£ ·Î 4¸¦ ÇÒ´çÇÒ ¼ö ÀÖ°Ô µÈ´Ù. ±×¸² 6.9´Â ÃÖÁ¾ÀûÀÎ ¹ö½º ¹øÈ£¸¦ º¸¿©ÁØ´Ù. 6.6.3 PCI BIOS ÇÔ¼ö PCI BIOS ÇÔ¼öµéÀº ¸ðµç Ç÷§Æûµé¿¡¼­ °øÅëÀûÀΠǥÁØ ÇÔ¼öµé ½Ã¸®Áî ÁßÀÇ ÇϳªÀÌ´Ù. ¿¹¸¦ µé¾î, À̵éÀº ÀÎÅÚ ±â¹Ý ½Ã½ºÅÛ°ú ¾ËÆÄ AXP ±â¹Ý ½Ã½ºÅÛ ¿¡ ÀÖ¾î µ¿ÀÏÇÏ´Ù. À̵éÀº CPU°¡ ¸ðµç PCI ÁÖ¼Ò°ø°£¿¡ Á¦¾î¸¦ À§ÇØ Á¢±ÙÇÒ ¼ö ÀÖ°Ô ÇÑ´Ù. ¸®´ª½º Ä¿³Î ÄÚµå¿Í µð¹ÙÀ̽º µå¶óÀ̹ö¸¸ÀÌ À̸¦ »ç¿ëÇÒ ¼ö ÀÖ´Ù. 31 4 3 2 1 0 +--------------------------------------------------+-+---+-+ | | | | | | Base Address | | |0| | ||| | | | +--------------------------------------------------+|+-|-+-+ | | Perfetchable----+ Type Base Address for PCI Memory Space 31 2 1 0 +------------------------------------------------------+-+-+ | | | | | Base Address | |1| | ||| | +------------------------------------------------------+|+-+ | Reserved Base Address for PCI I/O Space ±×¸² 6.10 : PCI Configuration Header : Base Address Registers 6.6.4 PCI È®Á¤(PCI Fixup) ¾ËÆÄ AXP¿ë PCI È®Á¤ ÄÚµå´Â ÀÎÅÚ¿ë(±âº»ÀûÀ¸·Î ¾Æ¹«°Íµµ ÇÏÁö ¾Ê´Â ÄÚµå ÀÌ´Ù)º¸´Ù ÈξÀ ¸¹´Ù. ÀÎÅÚ ±â¹Ý ½Ã½ºÅÛÀº ºÎÆýÿ¡ ½ÇÇàµÇ´Â ½Ã½ºÅÛ BIOS ¸¦ °¡Áö°í ÀÖÀ¸¸ç, ÀÌ°ÍÀÌ PCI½Ã½ºÅÛÀÇ ¼³Á¤À» ÀÌ¹Ì ³¡³»¹ö·È±â ¶§¹®ÀÌ´Ù. ±×·¡¼­ ¸®´ª½º´Â ÀÌ¹Ì ¼³Á¤µÇ¾î ÀÖ´Â °ÍÀ» ¸ÅÇÎÇÏ´Â °Í ¿Ü¿¡´Â ÇÒ ÀÏÀÌ °ÅÀÇ ¾ø´Ù. ±×·¯³ª ÀÎÅÚ ±â¹ÝÀÌ ¾Æ´Ñ ½Ã½ºÅÛ¿¡¼­´Â ´ÙÀ½°ú °°Àº ¼³Á¤ÀÌ ÇÊ¿äÇÏ´Ù . o °¢ ÀåÄ¡¿¡ PCI I/O¿Í PCI ¸Þ¸ð¸® °ø°£À» ÇÒ´çÇÑ´Ù. o ½Ã½ºÅÛ¿¡ ÀÖ´Â °¢ PCI-PCI ºê¸´ÁöÀÇ PCI I/O¿Í PCI ¸Þ¸ð¸® ÁÖ¼Ò À©µµ¿ì¸¦ ¼³Á¤ÇÑ´Ù. o ÀåÄ¡¿¡ ÀÎÅÍ·´Æ® ¶óÀÎ °ªÀ» ¸¸µç´Ù. ÀÌ°ÍÀº ±× ÀåÄ¡ÀÇ ÀÎÅÍ·´Æ® 󸮸¦ Á¦¾îÇÑ´Ù. ´ÙÀ½ ÀÛÀº Àý¿¡¼­´Â À̵é Äڵ尡 ¾î¶»°Ô µ¿ÀÛÇÏ´ÂÁö À̾߱âÇÑ´Ù. <ÀåÄ¡°¡ ¾ó¸¶³ª ¸¹Àº PCI I/O¿Í PCI ¸Þ¸ð¸® °ø°£À» ÇÊ¿ä·Î ÇÏ´ÂÁö ¾Ë¾Æ ³»±â> ãÀº PCI ÀåÄ¡µéÀÌ ¾ó¸¶³ª ¸¹Àº PCI I/O¿Í ¸Þ¸ð¸® ÁÖ¼Ò°ø°£À» ÇÊ¿ä·Î ÇÏ´ÂÁö ¾Ë¾Æ³»±â À§Çؼ­ À̸¦ °¢ ÀåÄ¡¿¡°Ô ¹°¾î¾ß ÇÑ´Ù. ÀÌ´Â °¢ ÀåÄ¡ÀÇ º£À̽º ÁÖ¼Ò ·¹Áö½ºÅÍ¿¡ ÀüºÎ 1À» ½á³Ö°í ³ª¼­ À̸¦ ´Ù½Ã ÀоÀ¸·Î½á ÀÌ·ç¾îÁø´Ù. ÀåÄ¡´Â Àڽſ¡°Ô ¹«°üÇÑ ÁÖ¼Ò ºñÆ®¸¦ 0À¸·Î ¼³Á¤ÇÏ°í, ÀÌ´Â ÀÚ½ÅÀÌ ÇÊ¿ä·Î ÇÏ´Â ÁÖ¼Ò°ø°£ÀÇ Å©±â¸¦ ³ªÅ¸³»´Â È¿°ú¸¦ °¡Áö°Ô µÈ´Ù. º£À̽º ÁÖ¼Ò ·¹Áö½ºÅÍ¿¡´Â µÎ°¡Áö ±âº» À¯ÇüÀÌ Àִµ¥, ¸ÕÀú ¾î¶² ÁÖ¼Ò °ø°£¿¡ ÀåÄ¡ÀÇ ·¹Áö½ºÅÍ°¡ ÀÖ¾î¾ß ÇÏ´ÂÁö¸¦ - PCI I/O °ø°£ÀÎÁö PCI ¸Þ¸ð ¸® °ø°£ÀÎÁö - Áö½ÃÇÑ´Ù. ÀÌ°ÍÀº ·¹Áö½ºÅÍÀÇ ºñÆ® 0À¸·Î¼­ ¾Ë ¼ö ÀÖ´Ù. ±×¸² 6.10¿¡¼­´Â PCI ¸Þ¸ð¸®¿Í PCI I/O¸¦ À§ÇÑ º£À̽º ÁÖ¼Ò ·¹Áö½ºÅÍÀÇ µÎ°¡Áö À¯ÇüÀ» º¸¿©ÁØ´Ù. ÁÖ¾îÁø º£À̽º ÁÖ¼Ò ·¹Áö½ºÅÍ°¡ ¾ó¸¶³ª ¸¹Àº ÁÖ¼Ò°ø°£À» ¿ä±¸ÇÏ´ÂÁö ¾Ë¾Æ ³»±â À§ÇØ, ·¹Áö½ºÅÍ¿¡ ¸ðµÎ 1À» ½á³Ö°í À̸¦ ´Ù½Ã Àд´Ù. ±×·¯¸é ÀåÄ¡ ´Â Àڽſ¡°Ô ¹«°üÇÑ ÁÖ¼Ò ºñÆ®¸¦ 0À¸·Î ¼³Á¤ÇÏ¿©, ÇÊ¿äÇÑ ÁÖ¼Ò°ø°£ÀÇ Å©±â ¸¦ ÁöÁ¤ÇÏ°Ô µÈ´Ù. ÀÌ·± µðÀÚÀÎÀº ¸ðµç ÁÖ¼Ò°ø°£ÀÇ Å©±â´Â 2ÀÇ ¹è¼öÀÌ°í ÀÌ¿¡ ¸ÂÃç ÀÚ¿¬½º·´°Ô Á¤·ÄµÇ¾î ÀÖ´Ù´Â °ÍÀ» ¾Ë·ÁÁØ´Ù. ¿¹¸¦ µé¾î DECChip 21142 PCI ÀÌ´õ³Ý ÀåÄ¡¸¦ ÃʱâÈ­ÇÒ ¶§ ÀåÄ¡´Â, PCI I/O³ª PCI ¸Þ¸ð¸®·Î 0x100 ¹ÙÀÌÆ®ÀÇ °ø°£À» ÇÊ¿ä·Î ÇÑ´Ù°í ¾Ë·ÁÁØ´Ù. Ãʱâ È­ ÄÚµå´Â ±×¸¸Å­ÀÇ °ø°£À» ÇÒ´çÇÏ°í, ÀÌ ¼ø°£ 21142ÀÇ Á¦¾î ·¹Áö½ºÅÍ¿Í »óÅ ·¹Áö½ºÅ͸¦ ÀÌ ÁÖ¼Ò¿¡¼­ º¼ ¼ö ÀÖ°Ô µÈ´Ù. ´Ù¸¥ ¸Þ¸ð¸®Ã³·³ PCI I/O¿Í PCI ¸Þ¸ð¸® °ø°£µµ À¯ÇÑÇϸç, ¾î´ÀÁ¤µµ Èñ¼ÒÇÑ °ÍÀÌ´Ù. ÀÎÅÚ±â¹ÝÀÌ ¾Æ´Ñ ½Ã½ºÅÛ¿¡¼­ÀÇ PCI È®Á¤ ÄÚµå´Â (±×¸®°í ÀÎÅÚ ½Ã½ºÅÛ¿¡¼­ÀÇ BIOS ÄÚµå´Â) °¢ ÀåÄ¡°¡ ¿ä±¸ÇÏ´Â Å©±âÀÇ ¸Þ¸ð¸®¸¦ È¿°úÀû ÀÎ ¹æ¹ýÀ¸·Î ÀåÄ¡¿¡°Ô ÇÒ´çÇØ¾ß ÇÑ´Ù. PCI I/O¿Í PCI ¸Þ¸ð¸®´Â ÀÚ¿¬½º·´°Ô Á¤·ÄÀÌ µÇµµ·Ï ÀåÄ¡¿¡ ÇÒ´çµÇ¾î¾ß ÇÑ´Ù. ¿¹¸¦ µé¾î, ÀåÄ¡°¡ PCI I/O °ø°£ 0xB0À» ¿ä±¸ÇÑ´Ù¸é ÀÌ°ÍÀº 0xB0ÀÇ ¿©·¯¹è°¡ µÇ´Â ÁÖ¼Ò¿¡¼­ Á¤·ÄµÇ¾î¾ß ÇÑ´Ù´Â °ÍÀÌ´Ù. ¿©±â¿¡ ´õÇØ, ¾î¶² ºê¸´ÁöµçÁö PCI I/O¿Í PCI ¸Þ¸ð¸® º£À̽º´Â 4K ´ÜÀ§·Î Á¤·ÄµÇ¾î¾ß ÇÏ¸ç °¢ÀÚ 1MByteÀÇ °æ°è¸¦ °¡Áö°í ÀÖ¾î¾ß ÇÑ´Ù. ´Ù¿î½ºÆ®¸² ÀåÄ¡µéÀÇ ÁÖ¼Ò°ø°£ ÀÌ ¸ðµç ¾÷½ºÆ®¸² PCI-PCI ºê¸´ÁöÀÇ ¸Þ¸ð¸® °ø°£¿¡ À§Ä¡ÇØ ÀÖ¾î¾ß Çϱ⠶§¹®¿¡, °ø°£À» È¿À²ÀûÀ¸·Î ÇÒ´çÇÏ´Â °ÍÀº Á¶±Ý ¾î·Á¿î ¹®Á¦ÀÌ´Ù. ¸®´ª½º´Â PCI µð¹ÙÀ̽º µå¶óÀ̹ö°¡ ¸¸µé¾î³½ ¹ö½º/ÀåÄ¡ Æ®¸®¿¡¼­ ±â¼úµÈ °¢ ÀåÄ¡µéÀ» ÁÖ¼Ò°ø°£¿¡¼­ PCI I/O ¸Þ¸ð¸®°¡ Áõ°¡ÇÏ´Â ÂÊÀ¸·Î ÇÒ´çÇÏ´Â ¾Ë°í¸®ÁòÀ» »ç¿ëÇÑ´Ù. ¿©±â¼­µµ Àç±ÍÀûÀÎ ¾Ë°í¸®ÁòÀ» »ç¿ëÇÏ¿© PCI ÃʱâÈ­ Äڵ忡¼­ ¸¸µé¾î³½ pci_bus¿Í pci_dev ÀڷᱸÁ¶¸¦ µû¶ó°£´Ù. PCI ¹ö½ºÀÇ ·çÆ®ºÎÅÍ(pci_root°¡ °¡¸®Å°°í ÀÖ´Â) ½ÃÀÛÇÏ¿© BIOS È®Á¤ ÄÚµå´Â ´ÙÀ½°ú °°ÀÌ ÇÏ°Ô µÈ´Ù. o ÇöÀç ÀÖ´Â Àü¿ª PCI I/O¿Í ¸Þ¸ð¸® º£À̽º¸¦ 4K ´ÜÀ§·Î »ó´ëÀû À¸·Î 1Mbyte °æ°è¸¦ °¡Áöµµ·Ï Á¤·ÄÇÑ´Ù. o ÇöÀç ¹ö½ºÀÇ ¸ðµç ÀåÄ¡¿¡ ´ëÇØ (Áõ°¡ÇÏ´Â ÂÊÀ¸·Î PCI I/O ¸Þ¸ð¸®¸¦ ÇÊ¿ä·Î ÇÑ´Ù) - ÀåÄ¡¿¡°Ô PCI I/O¿Í PCI ¸Þ¸ð¸® °ø°£À» ÇÒ´çÇÏ°í - Çà´ÙÇÏ´Â Å©±â¸¸Å­ Àü¿ª PCI I/O¿Í ¸Þ¸ð¸® º£À̽º¸¦ À̵¿ÇÏ°í - ÀåÄ¡ÀÇ PCI I/O¿Í PCI ¸Þ¸ð¸®¸¦ »ç¿ëÇϴ°ÍÀ» °¡´ÉÇÏ°Ô ÇÑ´Ù. o ÇöÀç ¹ö½ºÀÇ ¸ðµç ´Ù¿î½ºÆ®¸² ¹ö½ºµéÀ» Àç±ÍÀûÀ¸·Î ã¾Æ °ø°£À» ÇÒ´çÇÑ´Ù. ÀÌ´Â Àü¿ª PCI I/O¿Í ¸Þ¸ð¸® º£À̽º¸¦ ¹Ù²Û´Ù´Â °Í¿¡ ÁÖÀÇÇÑ´Ù. o ÇöÀç ÀÖ´Â Àü¿ª PCI I/O¿Í PCI ¸Þ¸ð¸® º£À̽º¸¦ 4K ´ÜÀ§·Î »ó´ëÀû À¸·Î 1Mbyte °æ°è·Î Á¤·ÄÇÏ°í, ÀÌ·¸°Ô ÇÏ´Â Áß¿¡ ÇöÀç PCI-PCI ºê¸´Áö°¡ ÇÊ¿ä·Î ÇÏ´Â PCI I/O¿Í PCI ¸Þ¸ð¸® À©µµ¿ìÀÇ º£À̽º¿Í Å©±â¸¦ ¾Ë¾Æ³½´Ù. o ÀÌ ¹ö½º¿¡ ¿¬°áµÈ PCI-PCI ºê¸´Áö¸¦ ÇÁ·Î±×·¥ÇÏ¿© PCI I/O¿Í PCI ¸Þ¸ð¸® º£À̽º¿Í Å©±â¸¦ ÁöÁ¤ÇÑ´Ù. o PCI-PCI ºê¸´Áö¿¡ ÀÖ´Â PCI I/O¿Í PCI ¸Þ¸ð¸®¿¡ Á¢±ÙÇϵµ·Ï ÇÏ´Â ºê¸´Áö ±â´ÉÀ» ÄÒ´Ù. ÀÌ´Â ºê¸´ÁöÀÇ 1Â÷ PCI ¹ö½º¿¡¼­ º¸ÀÌ´Â PCI I/O¿Í PCI ¸Þ¸ð¸® ÁÖ¼Ò Áß¿¡¼­ À©µµ¿ì ¾È¿¡ ÀÖ´Â PCI I/O¿Í PCI ¸Þ¸ð¸® ÁÖ¼Ò´Â 2Â÷ ¹ö½º·Î °Ç³Ê°¡°Ô µÈ´Ù´Â °ÍÀÌ´Ù. ¿¹·Î µé¾ú´ø ±×¸² 6.1À» »ý°¢Çϸé, PCI È®Á¤ ÄÚµå´Â ´ÙÀ½°ú °°ÀÌ ½Ã½ºÅÛÀ» ¼³Á¤ÇÒ °ÍÀÌ´Ù : PCI º£À̽ºµéÀÇ Á¤·Ä(Align the PCI bases) : PCI I/O´Â 0x4000, PCI ¸Þ¸ð¸®´Â 0x100000ÀÌ´Ù. ÀÌ°ÍÀº PCI-ISA ºê¸´Áö°¡ ¸ðµç ÁÖ¼Ò¸¦ ISA ÁÖ¼Ò »çÀÌŬ·Î º¯È¯ÇÒ ¼ö ÀÖ°Ô ÇÑ´Ù. ºñµð¿À ÀåÄ¡ : ÀÌ ÀåÄ¡´Â 0x200000¸¸Å­ÀÇ PCI ¸Þ¸ð¸®¸¦ ÇÊ¿ä·Î ÇÏ¿©, ÇöÀç PCI ¸Þ¸ð¸® º£À̽º 0x200000¿¡¼­ ½ÃÀÛÇÏ´Â Å©±â¸¦ ÇÒ´çÇØÁÖ´Â µ¥, ¿ä±¸ÇÑ Å©±â´ë·Î ÀÚ¿¬È÷ Á¤·ÄÀÌ µÇ¾î¾ß ÇÑ´Ù. PCI ¸Þ¸ð¸® º£À̽º´Â 0x400000À¸·Î À̵¿ÇÏ°í, PCI I/O º£À̽º´Â ±×´ë·Î 0x4000¿¡ ³²¾ÆÀÖ´Ù. PCI-PCI ºê¸´Áö : ÀÌÁ¦ PCI-PCI ºê¸´Áö¸¦ °Ç³Ê°¡ °Å±â¿¡¼­ PCI ¸Þ¸ð¸®¸¦ ÇÒ´çÇÑ´Ù. ¿©±â¼­ º£À̽ºµéÀÌ ÀÌ¹Ì ¿Ã¹Ù·Î Á¤·ÄÀÌ µÇ¾î Àֱ⠶§¹®¿¡ Á¤·ÄÀ» ÇÒ ÇÊ¿ä°¡ ¾ø´Ù. ÀÌ´õ³Ý ÀåÄ¡ : ÀÌ°ÍÀº 0xB0 ¹ÙÀÌÆ®ÀÇ PCI I/O¿Í PCI ¸Þ¸ð¸® °ø°£À» ¿ä±¸ÇÑ´Ù. ÀÌ ÀåÄ¡´Â 0x4000¿¡¼­ ½ÃÀÛÇÏ´Â PCI I/O °ø°£°ú 0x400000¿¡¼­ ½ÃÀÛÇÏ´Â PCI ¸Þ¸ð¸®¸¦ °®°Ô µÈ´Ù. PCI ¸Þ¸ð¸® º£À̽º´Â 0x4000B0À¸·Î À̵¿ÇÏ°í PCI I/O º£À̽º´Â 0x40B0ÀÌ µÈ´Ù. SCSI ÀåÄ¡ : ÀÌ°ÍÀº 0x1000 Å©±âÀÇ PCI ¸Þ¸ð¸®¸¦ ¿ä±¸ÇÏ°í, ÀÚ¿¬ Á¤·ÄÀÌ µÈ ÈÄ 0x401000¿¡¼­ ½ÃÀÛÇÏ´Â ¸Þ¸ð¸®¸¦ ÇÒ´ç ¹Þ´Â´Ù. PCI I/O º£À̽º´Â ±×´ë·Î 0x40B0, PCI ¸Þ¸ð¸® º£À̽º ´Â 0x402000À¸·Î À̵¿ÇÑ´Ù. PCI-PCI ºê¸´ÁöÀÇ PCI I/O, PCI ¸Þ¸ð¸® À©µµ¿ì : ÀÌÁ¦ ºê¸´Áö·Î µ¹¾Æ ¿Í 0x4000°ú 0x40B0 »çÀÌ¿¡ À§Ä¡ÇÏ´Â PCI I/O À©µµ¿ì¿Í, 0x400000 °ú 0x402000 »çÀÌ¿¡ À§Ä¡ÇÏ´Â PCI ¸Þ¸ð¸® À©µµ¿ì¸¦ ¼³Á¤ÇÑ´Ù ÀÌ°Í Àº PCI-PCI ºê¸´Áö°¡ ºñµð¿À ÀåÄ¡¿¡ ´ëÇÑ Á¢±ÙÀº ¹«½ÃÇÏ°í, ÀÌ´õ³Ý À̳ª SCSI ÀåÄ¡·Î Á¢±ÙÇÒ ¶§¿¡¸¸ À̸¦ Åë°ú½ÃÅ°µµ·Ï ÇÑ´Ù. ¹ø¿ª : ÀÌÈ£ Á¤¸® : ÀÌÈ£ ===================================================================== 7Àå ÀÎÅÍ·´Æ®¿Í ÀÎÅÍ·´Æ® ó¸® (Interrupt and Interrupt Handling) <<ÀÌ Àå¿¡¼­´Â ¸®´ª½º Ä¿³ÎÀÌ ÀÎÅÍ·´Æ®¸¦ ¾î¶»°Ô ó¸®ÇÏ´ÂÁö »ìÆ캻´Ù. Ä¿³ÎÀÌ ÀÎÅÍ·´Æ®¸¦ ó¸®ÇÏ´Â µ¥´Â ÀϹÝÀûÀÎ ¸ÞÄ¿´ÏÁò°ú ÀÎÅÍÆäÀ̽º°¡ ÀÖÁö¸¸, ÀÎÅÍ·´Æ®¸¦ ó¸®ÇÏ´Â ¼¼¼¼ÇÑ ³»¿ëÀº ¾ÆÅ°ÅØ󸶴٠´Ù¸£´Ù.>> ¸®´ª½º´Â ¼­·Î ´Ù¸¥ ÀÏÀ» ÇÏ´Â ¼ö¸¹Àº Çϵå¿þ¾î¸¦ »ç¿ëÇÑ´Ù. ºñµð¿À ÀåÄ¡ ´Â ¸ð´ÏÅ͸¦ ±¸µ¿Çϸç, IDE ÀåÄ¡´Â µð½ºÅ©¸¦ ±¸µ¿ÇÏ´Â ½ÄÀÌ´Ù. ÀÌ·± Àå Ä¡µéÀº µ¿±âÀûÀ¸·Î ±¸µ¿ÇÒ ¼ö ÀÖ´Ù, Áï ¾î¶² µ¿ÀÛÀ» ¿äûÇÏ°í (¿¹¸¦ µé¸é ¸Þ¸ð¸® ºí·°À» µð½ºÅ©¿¡ ÀúÀåÇÏ´Â °Í°ú °°Àº) ±×°ÍÀÌ ¿Ï·áµÉ ¶§±îÁö ±â´Ù ¸®´Â °ÍÀÌ´Ù. ÇÏÁö¸¸ ÀÌ ¹æ¹ýÀº µ¿ÀÛÇϱâ´Â ÇÏÁö¸¸ ¸Å¿ì ºñÈ¿À²ÀûÀ̾ ¿î¿µÃ¼Á¦´Â °¢°¢ÀÇ µ¿ÀÛÀÌ ¿Ï·áµÉ ¶§±îÁö ±â´Ù·Á¾ß ÇϹǷΠ"¾Æ¹«°Íµµ ÇÏÁö ¾ÊÀ¸¸é¼­ ¹Ù»Û »óÅÂ(busy doing nothing)"·Î ¸¹Àº ½Ã°£À» ¼ÒºñÇÒ °ÍÀÌ´Ù. À̺¸´Ù ´õ ÁÁ°í ´õ¿í È¿À²ÀûÀÎ ¹æ¹ýÀº ¿äûÀ» ÇÑ µÚ ´Ù¸¥ ´õ À¯¿ëÇÑ ÀÛ¾÷ À» ÇÏ°í ¿äûÇÑ ÀÛ¾÷ÀÌ ³¡³ª¸é ÀåÄ¡·ÎºÎÅÍ ÀÎÅÍ·´Æ®¸¦ ¹Þ´Â °ÍÀÌ´Ù. ÀÌ·± ¼³°è¸¦ »ç¿ëÇÏ¸é ¿©·¯ ÀåÄ¡¿¡ µ¿½Ã¿¡ ÀÛ¾÷À» ¿äûÇÏ´Â °ÍÀÌ °¡´ÉÇÏ´Ù. CPU°¡ ¹«¾ùÀ» ÇÏ°íÀÖ°Ç °£¿¡ ÀåÄ¡°¡ ÀÎÅÍ·´Æ®¸¦ °É ¼ö ÀÖÀ¸·Á¸é Çϵå¿þ¾î ¿¡¼­ Áö¿øÇØ¾ß ÇÑ´Ù. ¸ðµÎ´Â ¾Æ´Ï´õ¶óµµ ¾ËÆÄ AXP¿Í °°Àº ´ëºÎºÐÀÇ ¹ü¿ë ÇÁ·Î¼¼¼­µéÀº ´ë°³ ºñ½ÁÇÑ ¹æ¹ýÀ» »ç¿ëÇÑ´Ù. CPUÀÇ Æ¯Á¤ÇÑ ÇÉÀÇ Àü¾ÐÀÌ ¹Ù²î¸é (¿¹¸¦ µé¾î +5º¼Æ®¿¡¼­ -5º¼Æ®·Î), CPU´Â ÇÏ´ø ÀÏÀ» ¸ØÃß°í ÀÎÅÍ ·´Æ® ó¸® ÄÚµå¶ó´Â ÀÎÅÍ·´Æ®¸¦ ´Ù·ç´Â Ưº°ÇÑ Äڵ带 ¼öÇàÇϱ⠽ÃÀÛÇÑ´Ù. À̵é ÇÉ Áß ¾î¶² ÇÉÀº °£°Ý ŸÀ̸ӿ¡ ¿¬°áµÇ¾î ÀÖ¾î 1000ºÐÀÇ 1Ãʸ¶´Ù ÀÎÅÍ·´Æ®¸¦ ¹ÞÀ¸¸ç, SCSI ÄÁÆ®·Ñ·¯¿Í °°Àº ´Ù¸¥ ÀåÄ¡¿¡ ¿¬°áµÈ Çɵ鵵 ÀÖÀ» °ÍÀÌ´Ù. ´ëü·Î ½Ã½ºÅÛÀº ÀÎÅÍ·´Æ® ÄÁÆ®·Ñ·¯¸¦ »ç¿ëÇÏ¿© CPUÀÇ ÀÎÅÍ·´Æ® ÇÉÀ¸·Î ÀÎÅÍ·´Æ®¸¦ 1:1·Î Àü´ÞÇÏÁö ¾Ê°í, ÀåÄ¡ ÀÎÅÍ·´Æ®¸¦ ±×·ìÀ¸·Î ¹­¾îÁØ´Ù. ÀÌ·¸°Ô Çϸé CPU¿¡ ÀÖ´Â ÀÎÅÍ·´Æ® ÇÉÀ» ÁÙÀÏ ¼ö ÀÖÀ» »Ó ¾Æ´Ï¶ó ½Ã½ºÅÛÀ» À¯¿¬ÇÏ°Ô µðÀÚÀÎÇÒ ¼ö ÀÖ´Ù. ÀÎÅÍ·´Æ® ÄÁÆ®·Ñ·¯¿¡´Â ÀÎÅÍ·´Æ®¸¦ Á¶Á¤ÇÏ´Â ¸¶½ºÅ© ·¹Áö½ºÅÍ¿Í »óÅ ·¹Áö½ºÅÍ°¡ ÀÖ´Ù. ¸¶½ºÅ© ·¹Áö½ºÅÍÀÇ ºñÆ®µéÀ» ÄѰųª ²¸¼­ ÀÎÅÍ·´Æ®¸¦ °¡´ÉÇÏ°Ô Çϰųª ºÒ°¡´ÉÇÏ°Ô ¸¸µé ¼ö ÀÖÀ¸¸ç, »óÅ ·¹Áö½ºÅÍ´Â ½Ã½ºÅÛ¿¡ ÇöÀç ¹ß»ýÇÑ ÀÎÅÍ·´Æ®¸¦ µ¹·ÁÁØ´Ù. ½Ã½ºÅÛÀÇ ÀϺΠÀÎÅÍ·´Æ®´Â Çϵå¿þ¾îÀûÀ¸·Î ¿¬°áµÇ¾î ÀÖ´Ù. ¿¹¸¦ µé¾î ½Ç½Ã °£ Ŭ·°ÀÇ °£°Ý ŸÀ̸Ӵ ¿µ±¸ÀûÀ¸·Î ÀÎÅÍ·´Æ® ÄÁÆ®·Ñ·¯ÀÇ 3¹ø ÇÉ¿¡ ¿¬°á µÇ¾î ÀÖ´Ù. ±×·¯³ª ¾î¶² ÇɵéÀº ƯÁ¤ÇÑ ISA ¶Ç´Â PCI ½½·Ô¿¡ ¾î¶² ÄÁÆ®·Ñ ·¯ Ä«µå°¡ ²ÈÇô ÀÖ´ÂÁö¿¡ µû¶ó ¾î¶² ÀåÄ¡¿¡ ¿¬°áµÇ´ÂÁö °áÁ¤µÈ´Ù. ¿¹¸¦ µé¾î ÀÎÅÍ·´Æ® ÄÁÆ®·Ñ·¯ÀÇ 4¹ø ÇÉÀÌ PCI ½½·Ô 0¹ø¿¡ ¿¬°áµÇ¾î, ¿©±â¿¡ ÀÌ´õ³Ý Ä«µå¸¦ ²ÈÀ» ¼öµµ ÀÖÁö¸¸ µÚ¿¡ SCSI ÄÁÆ®·Ñ·¯·Î ¹Ù²ã ³¢¿ï ¼öµµ ÀÖ´Ù´Â °ÍÀÌ´Ù. ÀÎÅÍ·´Æ® 󸮿¡ À־ ±âº»ÀûÀÎ »çÇ×Àº, °¢ ½Ã½ºÅÛÀº µ¶ÀÚÀûÀÎ ÀÎÅÍ·´Æ® Àü´Þ ¹æ½ÄÀ» °¡Áö°í ÀÖÀ¸¸ç, ¿î¿µÃ¼Á¦´Â ÀÌ¿¡ ´ëóÇÒ ¼ö ÀÖµµ·Ï À¯¿¬ÇÏ°Ô ¸¸µé¾îÁ®¾ß ÇÑ´Ù´Â °ÍÀÌ´Ù. ´ëºÎºÐÀÇ Çö´ë ¹ü¿ë ¸¶ÀÌÅ©·ÎÇÁ·Î¼¼¼­µéÀº ÀÎÅÍ·´Æ®¸¦ ¶È°°Àº ¹æ½ÄÀ¸·Î ó¸®ÇÑ´Ù. Çϵå¿þ¾î ÀÎÅÍ·´Æ®°¡ ¹ß»ýÇϸé CPU´Â Áö±Ý ¼öÇàÇÏ°í ÀÖ´ø ¸í·É ¾îÀÇ ½ÇÇàÀ» Áß´ÜÇÏ°í ÀÎÅÍ·´Æ® ó¸® Äڵ尡 Àְųª ÀÎÅÍ·´Æ® ó¸® ÄÚµå·Î ºÐ±âÇÏ´Â ¸í·É¾î°¡ ÀÖ´Â ¸Þ¸ð¸® ¹øÁö·Î Á¡ÇÁÇÑ´Ù. ÀÌ ÄÚµåµéÀº ÀϹÝÀûÀ¸·Î ÀÎÅÍ·´Æ® ¸ðµå(interrupt mode)¶ó°í ÇÏ´Â CPUÀÇ Æ¯º°ÇÑ ¸ðµå¿¡¼­ ¼öÇà µÇ´Âµ¥, º¸Åë ÀÌ ¸ðµå¿¡¼­´Â ´Ù¸¥ ÀÎÅÍ·´Æ®°¡ ¹ß»ýÇÒ ¼ö ¾ø´Ù. ¹°·Ð ¿¹¿Ü °¡ ÀÖ´Ù. ¾î¶² CPU¿¡¼­´Â ÀÎÅÍ·´Æ®¿¡ ¿ì¼±¼øÀ§¸¦ ¸Å°Ü ´õ ³ôÀº ¿ì¼±¼øÀ§ÀÇ ÀÎÅÍ·´Æ®°¡ ¹ß»ýÇÒ ¼ö ÀÖ°Ô ÇÑ´Ù. ÀÌ·± °æ¿ì °¡Àå ³ôÀº ¼øÀ§ÀÇ ÀÎÅÍ·´Æ® ó¸®ÄÚµå´Â ¾ÆÁÖ ÁÖÀÇÇؼ­ ÀÛ¼ºÇØ¾ß Çϸç, Á¾Á¾ ÀÚ½ÅÀÇ ½ºÅÃÀ» °¡Áö°í ÀÖ¾î ÀÎÅÍ·´Æ®¸¦ ó¸®Çϱâ Àü¿¡ ¿©±â¿¡ CPUÀÇ ¼öÇà»óÅÂ(Áï, CPUÀÇ ÀÏ¹Ý ·¹Áö½ºÅÍ¿Í ÄÁÅؽºÆ® ¸ðµÎ)¸¦ ÀúÀåÇϴµ¥ »ç¿ëÇÑ´Ù. ¾î¶² CPU¿¡´Â ÀÎÅÍ·´Æ® ¸ðµå¿¡¼­¸¸ Á¸ÀçÇϴ Ưº°ÇÑ ·¹Áö½ºÅÍ ¼¼Æ®°¡ ÀÖ¾î, ÀÎÅÍ·´Æ® ÄÚµå´Â ÇÊ¿äÇÑ ÄÁÅؽºÆ®¸¦ ÀúÀåÇϴµ¥ ÀÌ ·¹Áö½ºÅÍ µéÀ» »ç¿ëÇÒ ¼ö ÀÖ´Ù. +-----------------+ /-------\ | | Real Time Clock | | | | |<----------------------------- | |__ | | | | | | C P U | \-------/ | | +-----+ 0 | |<------------| | 1 <-------- keyboard | | +-->| P | 2 +-----------------+ | | I | | | C | 4 <-------- Serial | | 1 | 5 <-------- Sound | | | 6 <-------- Floppy | +-----+ 7 | | +-----+ 0 +---| | | P | | I | 3 <-------- SCSI | C | | 2 | | | 6 <-------- ide0 +-----+ 7 <-------- ide1 ±×¸² 7.1 : A Logical of Interrupt Routing ÀÎÅÍ·´Æ®°¡ ó¸®µÇ°í ³ª¸é CPUÀÇ »óÅ´ ÀÎÅÍ·´Æ® ÀÌÀüÀ¸·Î º¹±¸µÇ°í ÀÎÅÍ·´Æ®´Â ÇØÁ¦µÈ´Ù. ±×·¯¸é CPU´Â ÀÎÅÍ·´Æ®°¡ ¹ß»ýÇϱâ Àü¿¡ ¼öÇàÇÏ´ø °ÍÀ» °è¼Ó ½ÇÇàÇÏ°Ô µÈ´Ù. Áß¿äÇÑ °ÍÀº ÀÎÅÍ·´Æ®¸¦ ó¸®ÇÏ´Â ÄÚµå´Â °¡´É ÇÑ È¿À²ÀûÀ̾î¾ß ÇÏ¸ç ¿î¿µÃ¼Á¦´Â ÀÎÅÍ·´Æ®¸¦ ³Ê¹« ÀÚÁÖ ¶Ç´Â ³Ê¹« ¿À·¡ ¸·°í ÀÖÁö ¾Ê¾Æ¾ß ÇÑ´Ù´Â Á¡ÀÌ´Ù. 7.1 ÇÁ·Î±×·¥ °¡´É ÀÎÅÍ·´Æ® ÄÁÆ®·Ñ·¯(Programmable Interrupt Controller, PIC) ½Ã½ºÅÛ µðÀÚÀ̳ʴ ÀÚ½ÅÀÌ ¿øÇÏ´Â ¾î¶² ÀÎÅÍ·´Æ® ±¸Á¶¶óµµ »ç¿ëÇÒ ¼ö ÀÖÁö ¸¸, IBM PC´Â ÀÎÅÚ 82C59A-2 CMOS PIC [6, ÀÎÅÚ ÁÖº¯ ÀåÄ¡]³ª ±× À¯»çÇüÀ» »ç¿ëÇÑ´Ù. ÀÌ ÄÁÆ®·Ñ·¯´Â PCÀÇ ÃÊâ±â¶§ºÎÅÍ ³Î¸® »ç¿ëµÈ °ÍÀ¸·Î, ISA ÁÖ¼Ò°ø°£¿¡ ÀÖ´Â ÄÁÆ®·Ñ·¯ÀÇ ·¹Áö½ºÅ͸¦ ÀÌ¿ëÇØ (ÀÌ ·¹Áö½ºÅÍÀÇ À§Ä¡´Â °íÁ¤µÇ¾î ÀÌ¹Ì ¾Ë·ÁÁ® ÀÖ´Ù) ÇÁ·Î±×·¡¹ÖÀ» ÇÒ ¼ö ÀÖ´Ù. °¡Àå ÃÖ±ÙÀÇ ·ÎÁ÷ Ĩ ¼¼Æ®µµ ISA ¸Þ¸ð¸®ÀÇ °°Àº À§Ä¡¿¡ µ¿µîÇÑ ·¹Áö½ºÅ͸¦ °¡Áö°í ÀÖ´Ù. ¾ËÆÄ AXP ±â¹Ý PC¿Í °°ÀÌ ÀÎÅÚ¿¡ ±â¹ÝÇÏÁö ¾ÊÀº ½Ã½ºÅÛµéÀº ÀÌ·¯ÇÑ ±¸Á¶Àû Á¦¾àÀ¸·ÎºÎÅÍ ÀÚÀ¯·Î¿ì¸ç, ´ë°³ ´Ù¸¥ ÀÎÅÍ·´Æ® ÄÁÆ®·Ñ·¯¸¦ »ç¿ëÇÑ´Ù. ±×¸² 7.1¿¡¼­ 8ºñÆ® ÄÁÆ®·Ñ·¯ PIC1°ú PIC2°¡ °°ÀÌ ¿¬°áµÇ¾î ÀÖÀ¸¸ç, °¢°¢ ¸¶½ºÅ© ·¹Áö½ºÅÍ¿Í ÀÎÅÍ·´Æ® »óÅ ·¹Áö½ºÅÍ Çϳª¾¿À» °¡Áö°í ÀÖ´Â °ÍÀ» º¼ ¼ö ÀÖ´Ù. ¸¶½ºÅ© ·¹Áö½ºÅÍ´Â ÁÖ¼Ò 0x21°ú 0xA1¿¡ ÀÖÀ¸¸ç »óÅ ·¹Áö½ºÅÍ´Â 0x20°ú 0xA0¿¡ ÀÖ´Ù. ¸¶½ºÅ© ·¹Áö½ºÅÍÀÇ Æ¯Á¤ÇÑ ºñÆ®¿¡ 1À» ¾²¸é ÇØ´ç ÀÎÅÍ·´Æ®¸¦ °¡´ÉÇÏ°Ô Çϸç, 0À» ¾²¸é ÀÎÅÍ·´Æ®¸¦ ºÒ°¡´ÉÇÏ°Ô ÇÑ´Ù. Áï, ¼¼¹ø° ºñÆ®¿¡ 1À» ¾²¸é ÀÎÅÍ·´Æ® 3¹øÀ» °¡´ÉÇÏ°Ô ÇÏ´Â °ÍÀ̸ç, 0À» ¾²¸é ºÒ°¡´ÉÇÏ°Ô ÇÏ´Â °ÍÀÌ´Ù. ºÒÇàÇÏ°Ôµµ (¶ÇÇÑ ±ÍÂú°Ôµµ), ÀÎÅÍ·´Æ® ¸¶½ºÅ© ·¹Áö½ºÅÍ´Â ¾µ ¼ö¸¸ ÀÖÀ¸¸ç, °Å±â¿¡ ½á ³õÀº °ªÀ» Àоî¿Ã ¼ö´Â ¾ø´Ù. µû¶ó¼­ ¸®´ª½º´Â ¸¶½ºÅ© ·¹Áö½ºÅÍ¿¡ ¾î¶² °ÍÀ» ¼³Á¤ÇÏ¿´´ÂÁö¸¦ µû·Î º¹»ç ÇÏ¿© º¸°üÇÏ¿©¾ß¸¸ ÇÑ´Ù. ¸®´ª½º´Â ÀÎÅÍ·´Æ® Çã¿ë ·çƾ°ú ÀÎÅÍ·´Æ® ±ÝÁö ·çƾ¿¡¼­, ÀÌ º¸°üµÈ ¸¶½ºÅ©¸¦ º¯°æÇÏ°í ¸Å¹ø ·¹Áö½ºÅÍ¿¡ Àüü ¸¶½ºÅ©¸¦ ¾´´Ù. ÀÎÅÍ·´Æ®°¡ ¹ß»ýÇϸé, ÀÎÅÍ·´Æ® ó¸® ÄÚµå´Â µÎ ÀÎÅÍ·´Æ® »óÅ ·¹Áö½ºÅÍ (Interrupt Status Register, ISR)¸¦ Àд´Ù. ÀÎÅÍ·´Æ® ó¸® ·çƾÀº 0x20 ¿¡ ÀÖ´Â ISRÀ» 16ºñÆ® ÀÎÅÍ·´Æ® ·¹Áö½ºÅÍÀÇ ÇÏÀ§ ¿©´ü ºñÆ®·Î, 0xA0¿¡ ÀÖ´Â ISRÀ» »óÀ§ ¿©´ü ºñÆ®·Î ó¸®ÇÑ´Ù. µû¶ó¼­ 0xA0¿¡ ÀÖ´Â ISRÀÇ Ã¹¹ø° ºñÆ®¿¡ ÇØ´çÇÏ´Â ÀÎÅÍ·´Æ®´Â ½Ã½ºÅÛ ÀÎÅÍ·´Æ® 9·Î Ãë±ÞÇÏ°Ô µÈ´Ù. PIC1¿¡ ÀÖ´Â µÎ¹ø° ºñÆ®´Â PIC2¿¡¼­ ¹ß»ýÇÏ´Â ÀÎÅÍ·´Æ®¸¦ ¿¬°áÇϴµ¥ »ç¿ëÇϱ⠶§¹®¿¡ »ç¿ëÇÒ ¼ö ¾ø´Ù. PIC2¿¡ ¹ß»ýÇÏ´Â ¾î¶² ÀÎÅÍ·´Æ®µçÁö PIC1ÀÇ µÎ ¹ø ° ºñÆ®¸¦ ¼³Á¤ÇÏ°Ô µÈ´Ù. 7.2 ÀÎÅÍ·´Æ® 󸮿ë ÀڷᱸÁ¶ÀÇ ÃʱâÈ­ Ä¿³ÎÀÇ ÀÎÅÍ·´Æ® 󸮿ë ÀڷᱸÁ¶´Â µð¹ÙÀ̽º µå¶óÀ̹öµéÀÌ ½Ã½ºÅÛÀÇ ÀÎÅÍ ·´Æ®¿¡ ´ëÇÑ Á¦¾î±ÇÀ» ¿äûÇϸ鼭 ¼Â¾÷µÈ´Ù. À̸¦ À§ÇØ µð¹ÙÀ̽º µå¶óÀ̹ö ´Â ÀÏ·ÃÀÇ ¸®´ª½º Ä¿³Î ¼­ºñ½º¸¦ »ç¿ëÇÔÀ¸·Î½á, ÀÎÅÍ·´Æ®¸¦ ¿äûÇÏ°í, ÀÎÅÍ·´Æ®¸¦ °¡´ÉÇÏ°Ô Çϰųª, ºÒ°¡´ÉÇÏ°Ô ¸¸µç´Ù. °³º° µð¹ÙÀ̽º µå¶óÀ̹ö ´Â ÀÌ·± ·çƾµéÀ» ºÒ·¯ ÀÚ½ÅÀÇ ÀÎÅÍ·´Æ® ó¸® ·çƾÀÇ ÁÖ¼Ò¸¦ µî·ÏÇÑ´Ù. PC ¾ÆÅ°ÅØóÀÇ °ü·Ê»ó ¸î¸î ÀÎÅÍ·´Æ®µéÀº (ƯÁ¤ÇÑ ÀåÄ¡°¡ »ç¿ëÇϵµ·Ï) ÁöÁ¤µÇ¾î Àִµ¥, ÀÌ °æ¿ì¿¡ ÇØ´ç µð¹ÙÀ̽º µå¶óÀ̹ö´Â ÃʱâÈ­µÉ ¶§ °£´Ü ÇÏ°Ô ±× ÁöÁ¤µÈ ÀÎÅÍ·´Æ®¸¦ ¿äûÇÏ¸é µÈ´Ù. Ç÷ÎÇÇ µð½ºÅ© µð¹ÙÀ̽º µå¶ó À̹ö°¡ ÀÌ¿Í °°ÀÌ µ¿ÀÛÇϴµ¥, Ç×»ó IRQ 6¹øÀ» ¿äûÇÑ´Ù. ÇÏÁö¸¸ ÀåÄ¡°¡ ¾î¶² ÀÎÅÍ·´Æ®¸¦ »ç¿ëÇÏ°Ô µÉ °ÍÀÎÁö µð¹ÙÀ̽º µå¶óÀ̹ö°¡ ¸ð¸£´Â °æ¿ìµµ ÀÖ´Ù. PCI µð¹ÙÀ̽º µå¶óÀ̹öÀÇ °æ¿ì¿¡´Â ÀåÄ¡°¡ ¾î¶² ÀÎÅÍ ·´Æ®¸¦ »ç¿ëÇÏ´ÂÁö Ç×»ó ¾Ë°í Àֱ⠶§¹®¿¡ ¹®Á¦°¡ µÇÁö ¾ÊÁö¸¸, ºÒÇàÇÏ°Ô µµ ISA µð¹ÙÀ̽º µå¶óÀ̹öÀÇ °æ¿ì¿¡´Â ÀÚ½ÅÀÌ »ç¿ëÇÒ ÀÎÅÍ·´Æ® ¹øÈ£¸¦ ½±°Ô ãÀ»¼ö ÀÖ´Â ¹æ¹ýÀÌ ¾ø´Ù . ¸®´ª½º¿¡¼­´Â ÀÌ·± ¹®Á¦¸¦ ÇØ°áÇϱâ À§ÇØ µð¹ÙÀ̽º µå¶óÀ̹ö°¡ ÀÚ½ÅÀÌ »ç¿ëÇÒ ÀÎÅÍ·´Æ®¸¦ Ž»ç(probe)ÇÒ ¼ö ÀÖµµ·Ï Çã¿ëÇÏ°í ÀÖ´Ù. ¸ÕÀú µð¹ÙÀ̽º µå¶óÀ̹ö´Â ÀåÄ¡¿¡ ¹«¾ùÀΰ¡¸¦ Çؼ­ ÀÎÅÍ·´Æ®°¡ ¹ß»ýÇϵµ·Ï ÇÑ´Ù. ±×·± ÈÄ ´Ù¸¥ ÀåÄ¡¿¡ ÇÒ´çµÇÁö ¾ÊÀº ½Ã½ºÅÛÀÇ ¸ðµç ÀÎÅÍ·´Æ®µéÀ» °¡´ÉÇÏ°Ô ÇÑ´Ù. ÀÌ·¸°Ô Çϸé óÀ½¿¡ ¹ß»ý½ÃÄ×´ø ÀåÄ¡ÀÇ ÀÎÅÍ·´Æ®°¡ PIC¸¦ ÅëÇØ Àü´ÞµÉ °ÍÀÌ´Ù. ¸®´ª½º´Â ÀÎÅÍ·´Æ® »óÅ ·¹Áö½ºÅ͸¦ ÀÐ¾î ±× ³»¿ëÀ» µð¹ÙÀ̽º µå¶óÀ̹ö¿¡°Ô µ¹·ÁÁØ´Ù. ÀÌ °ªÀÌ 0ÀÌ ¾Æ´Ï¶ó¸é Ž»ç Áß¿¡ Çϳª ÀÌ»óÀÇ ÀÎÅÍ·´Æ®°¡ ¹ß»ýÇÑ °ÍÀÌ´Ù. µå¶óÀ̹ö´Â Ž»ç¸¦ Á¾·áÇÏ°í ´Ù¸¥ ÀåÄ¡ ¿¡ ÇÒ´çµÇÁö ¾ÊÀº ÀÎÅÍ·´Æ®¸¦ ¸ðµÎ ºÒ°¡´ÉÇÏ°Ô ÇÑ´Ù . Ž»ç¸¦ ÅëÇØ ISA µð¹ÙÀ̽º µå¶óÀ̹ö°¡ ÀÚ½ÅÀÌ »ç¿ëÇÒ IRQ ¹øÈ£¸¦ ã¾Ò´Ù¸é, Á¤»óÀûÀ¸·Î ÀÌ ¿¡ ´ëÇÑ ÅëÁ¦±ÇÀ» ¿äûÇÒ ¼ö ÀÖ´Ù. ISA ±â¹Ý ½Ã½ºÅÛ¿¡ ºñÇØ PCI ±â¹Ý ½Ã½ºÅÛÀº ÈξÀ ´õ µ¿ÀûÀÌ´Ù. ISA ÀåÄ¡ °¡ »ç¿ëÇÏ´Â ÀÎÅÍ·´Æ® ÇÉÀº ´ë°³ Çϵå¿þ¾î ÀåÄ¡ À§¿¡ ÀÖ´Â Á¡ÆÛ¸¦ »ç¿ëÇØ ¼³Á¤ÇÏ°í, µð¹ÙÀ̽º µå¶óÀ̹ö¿¡ ÀÌ °ªÀÌ ÁöÁ¤µÇ¾î ÀÖ´Ù. ¹Ý¸é¿¡, PCI ÀåÄ¡ °¡ »ç¿ëÇÒ ÀÎÅÍ·´Æ®´Â ½Ã½ºÅÛÀÌ ºÎÆÃÇϸ鼭 PCI¸¦ ÃʱâÈ­ ÇÒ ¶§ PCI BIOS ³ª PCI ¼­ºê½Ã½ºÅÛÀÌ ÇÒ´çÇØ ÁØ´Ù. °¢°¢ÀÇ PCI ÀåÄ¡´Â A, B, C, DÀÇ 4°³ ÀÇ ÀÎÅÍ·´Æ® ÇÉÀ» »ç¿ëÇÒ ¼ö ÀÖ´Ù. ¾î¶² ÇÉÀ» »ç¿ëÇÒ Áö´Â ÀåÄ¡¸¦ ¸¸µé ¶§ °áÁ¤µÇ´Âµ¥, ´ëºÎºÐÀº ±âº»ÀûÀ¸·Î A ÇÉ¿¡ ÀÖ´Â ÀÎÅÍ·´Æ®·Î ¼³Á¤ÇÑ´Ù. °¢ PCI ½½·Ô¿¡ ÀÖ´Â PCI ÀÎÅÍ·´Æ® ¶óÀÎ A, B, C, D´Â ÀÎÅÍ·´Æ® ÄÁÆ®·Ñ·¯¿¡ ¿¬°áµÇ¾î ÀÖ´Ù. ¿¹¸¦ µé¾î PCI ½½·Ô 4ÀÇ A ÇÉÀº ÀÎÅÍ·´Æ® ÄÁÆ®·Ñ·¯ÀÇ 6¹ø ÇÉ¿¡ ¿¬°áÇÏ°í, PCI ½½·Ô 4ÀÇ B ÇÉÀº ÀÎÅÍ·´Æ® ÄÁÆ®·Ñ·¯ÀÇ 7¹ø ÇÉ¿¡ ¿¬°á ÇÏ´Â ½ÄÀ¸·Î µÇ¾î ÀÖ´Ù. PCI ÀÎÅÍ·´Æ®°¡ ¾î¶»°Ô Àü´ÞµÇ´ÂÁö´Â ½Ã½ºÅÛ¸¶´Ù ´Ù¸£¹Ç·Î, PCI ÀÎÅÍ·´Æ® Àü´Þ ±¸Á¶¸¦ ÀÌÇØÇÒ ¼ö ÀÖ´Â ¼Â¾÷ Äڵ尡 ÇÊ¿äÇÏ´Ù. ÀÎÅÚ Ä¨À» »ç¿ëÇÏ´Â PC¿¡¼­´Â ½Ã½ºÅÛÀÌ ºÎÆÃÇÒ ¶§ ½ÇÇàµÇ´Â ½Ã½ºÅÛ BIOS°¡ ÀÌ ¿ªÇÒÀ» Çϴµ¥, ¾ËÆÄ AXP¸¦ »ç¿ëÇÏ´Â ½Ã½ºÅÛ°ú °°ÀÌ BIOS°¡ ¾ø´Â ½Ã½ºÅÛÀÇ °æ¿ì¿¡´Â ¸®´ª ½º Ä¿³ÎÀÌ ÀÌ·¯ÇÑ ¼³Á¤À» ÇÑ´Ù. PCI ¼Â¾÷ ÄÚµå´Â °¢ ÀåÄ¡º°·Î ÀÎÅÍ·´Æ® ÄÁÆ®·Ñ·¯ÀÇ ÇÉ ¹øÈ£¸¦ PCI ¼³Á¤ Çì´õ¿¡ ¾´´Ù. ±×¸®°í ÀåÄ¡°¡ »ç¿ëÇÏ´Â PCI ½½·Ô ¹øÈ£¿Í PCI ÀÎÅÍ·´Æ® ÇÉ ¹øÈ£ ¹× PCI ÀÎÅÍ·´Æ® Àü´Þ ±¸Á¶¸¦ ÀÌ¿ë ÇÏ¿© ÀÎÅÍ·´Æ® ÇÉ (¶Ç´Â IRQ) ¹øÈ£¸¦ °áÁ¤ÇÑ´Ù. ÀÌ·¯ÇÑ ¹æ¹ýÀ¸·Î ÀåÄ¡°¡ »ç¿ëÇÒ ÀÎÅÍ·´Æ® ÇÉ ¹øÈ£°¡ °íÁ¤µÇ°í, ÀÎÅÍ·´Æ® ÇÉ ¹øÈ£´Â ÀÌ ÀåÄ¡¸¦ °ü¸® ÇÏ´Â PCI ¼³Á¤ Çì´õ¿¡ ÀÖ´Â Ç׸ñ¿¡ ÀúÀåµÈ´Ù. ¼Â¾÷ ÄÚµå´Â ÀÌ Á¤º¸¸¦ ÀÌ·¯ ÇÑ ¸ñÀûÀ¸·Î ¸¶·ÃµÈ ÀÎÅÍ·´Æ® ¶óÀÎ Ç׸ñ¿¡ Àû¾î ³Ö´Â´Ù. µð¹ÙÀ̽º µå¶óÀÌ ¹ö´Â ÀÌ Á¤º¸¸¦ Àоî´Ù ¸®´ª½º Ä¿³Î¿¡°Ô ÀÎÅÍ·´Æ®¿¡ ´ëÇÑ Á¦¾î±ÇÀ» ¿äûÇÒ ¶§ »ç¿ëÇÑ´Ù. PCI-PCI ºê¸´Áö¸¦ »ç¿ëÇÒ ¶§¿Í °°ÀÌ ½Ã½ºÅÛ¿¡ PCI ÀÎÅÍ·´Æ®¸¦ ÀÏÀ¸Å°´Â ÀåÄ¡°¡ ¸¹Àº °æ¿ì°¡ ÀÖ´Ù. ÀÎÅÍ·´Æ®¸¦ ÀÏÀ¸Å°´Â ÀåÄ¡°¡ ½Ã½ºÅÛÀÇ PIC¿¡ ÀÖ ´Â ÇÉ ¼öº¸´Ù ¸¹À» ¼ö ÀÖ´Ù. ÀÌ °æ¿ì PCI ÀåÄ¡¶ó¸é, ÀÎÅÍ·´Æ®¸¦ °øÀ¯ÇÏ¿© ¿©·¯ PCI ÀåÄ¡ÀÇ ÀÎÅÍ·´Æ®°¡ ÀÎÅÍ·´Æ® ÄÁÆ®·Ñ·¯ÀÇ ÇÉ Çϳª¿¡ ¹ß»ýÇÏ°Ô ÇÒ ¼ö ÀÖ´Ù . ÀÌ·± ÀÎÅÍ·´Æ® °øÀ¯¸¦ Áö¿øÇϱâ À§ÇØ ¸®´ª½º´Â ÇØ´ç ÀÎÅÍ·´Æ® ÀÇ Á¦¾î±ÇÀ» óÀ½À¸·Î ¿äûÇÏ´Â µð¹ÙÀ̽º µå¶óÀ̹ö°¡ ÀÎÅÍ·´Æ®¸¦ °øÀ¯ÇÒ ¼ö ÀÖ´ÂÁö¸¦ ¹àÈ÷µµ·Ï ÇÏ°í ÀÖ´Ù . ÀÎÅÍ·´Æ®¸¦ °øÀ¯Çϱâ À§ÇØ irq_action º¤ÅÍ¿¡ irqaction ÀڷᱸÁ¶¸¦ ¿©·¯ °³ ´ã°Ô µÈ´Ù. °øÀ¯ ÀÎÅÍ·´Æ®°¡ ¹ß»ý Çϸé, ¸®´ª½º´Â ±× ÀÎÅÍ·´Æ®¸¦ »ç¿ëÇÏ´Â ÀåÄ¡ÀÇ ÀÎÅÍ·´Æ® Çڵ鷯¸¦ ¸ðµÎ ºÒ·¯ÁØ´Ù. ÀÎÅÍ·´Æ®¸¦ °øÀ¯ÇÒ ¼ö ÀÖ´Â ¸ðµç µð¹ÙÀ̽º µå¶óÀ̹ö(¸ðµç PCI µð¹ÙÀ̽º µå¶óÀ̹ö°ÚÁö¸¸)´Â ¼­ºñ½ºÇÒ ÀÎÅÍ·´Æ®°¡ ¾ø´Â °æ¿ì¶ó ÇÏ´õ¶óµµ ÀÎÅÍ·´Æ® Çڵ鷯°¡ ºÒ¸± ¼ö ÀÖÀ¸¹Ç·Î ÀÌ¿¡ ´ëºñÇØ¾ß ÇÑ´Ù . 7.3 ÀÎÅÍ·´Æ® ó¸® ¸®´ª½ºÀÇ ÀÎÅÍ·´Æ® ó¸® ¼­ºê½Ã½ºÅÛÀÇ ÁÖ¿äÇÑ ÀÓ¹«Áß Çϳª´Â ÀÎÅÍ·´Æ®¸¦ ¿Ã¹Ù¸¥ ÀÎÅÍ·´Æ® ó¸® ÄÚµå·Î Àü´ÞÇÏ´Â °ÍÀÌ´Ù. µû¶ó¼­ ÀÎÅÍ·´Æ® ó¸® ¼­ºê½Ã½ºÅÛÀº ½Ã½ºÅÛÀÇ ÀÎÅÍ·´Æ® Àü´Þ ±¸Á¶¸¦ ÆľÇÇÏ°í ÀÖ¾î¾ß¸¸ ÇÑ´Ù. ¿¹¸¦ µé¾î Ç÷ÎÇÇ ÄÁÆ®·Ñ·¯°¡ ÀÎÅÍ·´Æ® ÄÁÆ®·Ñ·¯ÀÇ 6¹ø ÇÉ¿¡ ÀÎÅÍ·´Æ®¸¦ ÀÏÀ¸Å²´Ù¸é, ¸®´ª½º Ä¿³ÎÀÇ ÀÎÅÍ·´Æ® ó¸® ¼­ºê½Ã½ºÅÛÀº ÀÌ ÀÎÅÍ·´Æ®°¡ Ç÷ÎÇÇ¿¡¼­ ¹ß»ýÇÒ °ÍÀÓÀ» ÀÎÁöÇÏ°í ÀÌ°ÍÀ» Ç÷ÎÇÇ µð¹ÙÀ̽º µå¶óÀ̹öÀÇ ÀÎÅÍ·´Æ® ó¸® ÄÚµå·Î Àü´ÞÇØ¾ß ÇÑ´Ù. À̸¦ À§ÇØ ¸®´ª½º´Â ½Ã½ºÅÛÀÇ ÀÎÅÍ ·´Æ®¸¦ ó¸®ÇÏ´Â ·çƾµéÀÇ ÁÖ¼Ò¸¦ °¡Áö°í ÀÖ´Â ÀڷᱸÁ¶¿¡ ´ëÇÑ ÀÏ·ÃÀÇ Æ÷ÀÎÅ͸¦ »ç¿ëÇÑ´Ù. ÀÌ ·çƾµéÀº ÇØ´ç µð¹ÙÀ̽º µå¶óÀ̹ö¿¡ ÀÖ´Â °ÍÀ̸ç, µå¶óÀ̹ö°¡ ÃʱâÈ­µÉ ¶§ ÀÚ½ÅÀÌ »ç¿ëÇÒ ÀÎÅÍ·´Æ®¸¦ ¿äûÇÏ´Â °ÍÀº °¢ µå¹ÙÀ̽º µå¶óÀ̹öÀÇ Ã¥ÀÓÀÌ´Ù. ±×¸² 7.2´Â irqaction ÀÚ·á ±¸Á¶¸¦ °¡¸® Å°°í ÀÖ´Â Æ÷ÀÎÅ͵éÀÇ º¤ÅÍÀÎ irq_actionÀ» º¸¿©ÁÖ°í ÀÖ´Ù. °¢ irqaction ÀڷᱸÁ¶´Â ÀÎÅÍ·´Æ® ó¸® ·çƾÀÇ ÁÖ¼Ò¸¦ Æ÷ÇÔÇØ ÇØ´ç ÀÎÅÍ·´Æ®¿¡ ´ëÇÑ Çڵ鷯 Á¤º¸¸¦ ´ã°í ÀÖ´Ù. ÀÎÅÍ·´Æ®ÀÇ ¼ö¿Í À̵éÀÌ ¾î¶»°Ô 󸮵ǴÂÁö´Â ¾ÆÅ°ÅØ󸶴Ù, ¶§¶§·Î ½Ã½ºÅÛ¸¶´Ù ´Ù¸£±â ¶§¹®¿¡ ¸®´ª½ºÀÇ ÀÎÅÍ·´Æ® ó¸® ÄÚµå´Â ¾ÆÅ°ÅØó Á¾¼ÓÀûÀÌ´Ù. Áï, irq_action º¤ÅÍÀÇ Å©±â´Â ½Ã½ºÅÛ¿¡ ÀÖÀ» ¼ö ÀÖ´Â ÀÎÅÍ·´Æ®¸¦ ÀÏÀ¸Å°´Â ÀåÄ¡ÀÇ ¼ýÀÚ¿¡ µû¶ó ´Þ¶óÁø´Ù. irq_action +------------+ irqaction | | +---------+ +------------+ +----->| handler | Interrupt | | | | flags |------> handing +------------+ | | name | routine | |------+ | next | for this +------------+ +---------+ device | | +------------+ | | +------------+ | | +------------+ irqaction irqaction 3 | | +---------+ +---------+ +------------+ +----->| handler |----->| handler | 2 | | | | flags | | flags | +------------+ | | name | | name | 1 | --------+ | next | | next | +------------+ +---------+ +---------+ 0 | | +------------+ ±×¸² 7.2 : Linux Interrupt Handling Data Structres ÀÎÅÍ·´Æ®°¡ ¹ß»ýÇϸé, ¸®´ª½º´Â ¸ÕÀú ½Ã½ºÅÛ¿¡ ÀÖ´Â PICÀÇ ÀÎÅÍ·´Æ® »óÅ ·¹Áö½ºÅÍ(ISR)¸¦ ÀÐ¾î ¾î´À ÀåÄ¡°¡ ÀÎÅÍ·´Æ®°¡ ÀÏÀ¸Ä×´ÂÁö ¾Ë¾Æ³½´Ù. ±×·± ÈÄ ¸®´ª½º´Â ±× ÀåÄ¡¸¦ irq_action º¤ÅÍÀÇ ¿ÀÇÁ¼ÂÀ¸·Î º¯È¯ÇÑ´Ù. ¿¹¸¦ µé¾î, Ç÷ÎÇÇ ÄÁÆ®·Ñ·¯°¡ ÀÏÀ¸Å°´Â ÀÎÅÍ·´Æ® ÄÁÆ®·Ñ·¯ 6¹ø ÇÉ¿¡ ¹ß»ýÇÑ ÀÎÅÍ·´Æ®´Â ÀÎÅÍ·´Æ® Çڵ鷯 º¤ÅÍÀÇ ÀÏ°ö¹ø° Æ÷ÀÎÅÍ·Î º¯È¯µÈ´Ù. ÀÎÅÍ ·´Æ®°¡ ¹ß»ýÇÏ¿´´Âµ¥ À̸¦ ó¸®ÇÒ ÀÎÅÍ·´Æ® Çڵ鷯°¡ ¾ø´Ù¸é ¸®´ª½º Ä¿³Î Àº ¿À·ù¸¦ ±â·ÏÇÒ °ÍÀÌ´Ù. Çڵ鷯°¡ ÀÖ´Ù¸é ÀÌ ÀÎÅÍ·´Æ®¸¦ ÀÏÀ¸Å°´Â ¸ðµç ÀåÄ¡¿¡ ´ëÇØ irqaction ÀڷᱸÁ¶¿¡ ÀÖ´Â ÀÎÅÍ·´Æ® ó¸® ·çƾÀ» ºÎ¸¦ °Í ÀÌ´Ù. ¸®´ª½º Ä¿³ÎÀÌ µð¹ÙÀ̽º µå¶óÀ̹öÀÇ ÀÎÅÍ·´Æ® ó¸® ·çƾÀ» ºÎ¸£¸é, ÀÌ ·çƾÀº ¿Ö ÀÎÅÍ·´Æ®°¡ ¹ß»ýÇÏ¿´Áö¸¦ ÆľÇÇÏ¿© ÀÌ¿¡ È¿À²ÀûÀ¸·Î ¹ÝÀÀÇØ¾ß ÇÑ´Ù. ¿Ö ÀÎÅÍ·´Æ®°¡ ¹ß»ýÇÏ¿´Áö¸¦ ÆľÇÇϱâ À§ÇØ µð¹ÙÀ̽º µå¶óÀ̹ö´Â ÀÎÅÍ·´Æ®°¡ ¹ß»ýÇÑ ÀåÄ¡ÀÇ »óÅ ·¹Áö½ºÅ͸¦ ÀÐÀ» ¼ö ÀÖÀ» °ÍÀÌ´Ù. ±× ÀÌÀ¯´Â ¿À·ù¿´À» ¼öµµ ÀÖ°í ¿äûÇÑ ÀÛ¾÷ÀÌ ¿Ï·áµÆ´Ù°í º¸°íÇÑ °ÍÀÏ ¼öµµ ÀÖ´Ù. ¿¹¸¦ µé¾î Ç÷ÎÇÇ ÄÁÆ®·Ñ·¯´Â Ç÷ÎÇÇ µð½ºÅ©ÀÇ Á¤È®ÇÑ ¼½ÅÍ À§¿¡ Ç÷ÎÇÇÀÇ Çìµå¸¦ ¿Ã·Á ³õ¾Ò´Ù°í º¸°íÇÒ ¼ö ÀÖ´Ù. ÀÎÅÍ·´Æ®°¡ ¹ß»ýÇÑ ÀÌÀ¯ ¸¦ ¾Ë¾Æ ³Â´Ù¸é, µð¹ÙÀ̽º µå¶óÀ̹ö´Â ÀÎÅÍ·´Æ®¸¦ ó¸®Çϱâ À§ÇØ ´õ ¸¹Àº ÀÛ¾÷À» ÇØ¾ß ÇÒ ÇÊ¿ä°¡ ÀÖÀ» ÀÖ´Ù. ±×·± °æ¿ì ¸®´ª½º Ä¿³Î¿¡´Â µð¹ÙÀ̽º µå¶óÀ̹ö°¡ ±× ÀÛ¾÷À» µÚ·Î ¿¬±âÇÒ ¼ö ÀÖ´Â ¸ÞÄ¿´ÏÁòÀÌ ÀÖ´Ù. ÀÌ°ÍÀº CPU °¡ ³Ê¹« ¿À·¡µ¿¾È ÀÎÅÍ·´Æ® ¸ðµå¿¡ ÀÖ´Â °ÍÀ» ÇÇÇÏ·Á´Â °ÍÀÌ´Ù. ´õ¿í ÀÚ¼¼ ÇÑ ³»¿ëÀº µð¹ÙÀ̽º µå¶óÀ̹ö Àå(8Àå)À» º¸¶ó. REVIEW NOTE : Fast interrupt¿Í slow interrupt´Â ÀÎÅÚ¿¡ ÀÖ´Â °³³äÀΰ¡? ¹ø¿ª : ±è¼º·æ, È«°æ¼± Á¤¸® : ÀÌÈ£ ===================================================================== 8Àå µð¹ÙÀ̽º µå¶óÀ̹ö (Device Drivers) <<¿î¿µÃ¼Á¦ÀÇ ¸ñÀûÁß Çϳª´Â ½Ã½ºÅÛÀÇ Çϵå¿þ¾î ÀåÄ¡º°·Î ´Ù¸¥ Ư¡À» »ç¿ëÀڷκÎÅÍ °¨Ãß´Â °ÍÀÌ´Ù. ¿¹¸¦ µé¾î °¡»ó ÆÄÀÏ ½Ã½ºÅÛ(Virtual File System)Àº ÆÄÀÏ ½Ã½ºÅÛÀÌ ¾î¶² ¹°¸®Àû ÀåÄ¡¿¡ µé¾úÀÖµç »ó°ü¾øÀÌ, ¸¶¿î Æ®µÈ ÆÄÀÏ ½Ã½ºÅÛµéÀ» ÀÏ°üµÈ ¸ð½ÀÀ¸·Î º¸¿©ÁØ´Ù. ÀÌ Àå¿¡¼­´Â ¸®´ª½º Ä¿³ÎÀÌ ½Ã½ºÅÛ¿¡ ÀÖ´Â ¹°¸®ÀûÀÎ ÀåÄ¡¸¦ ¾î¶»°Ô °ü¸®ÇÏ´ÂÁö »ìÆ캸±â·Î ÇÑ´Ù.>> CPU°¡ ½Ã½ºÅÛ¿¡ ÀÖ´Â Áö´ÉÀ» °¡Áø À¯ÀÏÇÑ ÀåÄ¡´Â ¾Æ´Ï´Ù. CPU ¸»°íµµ ¸ðµç ¹°¸®Àû ÀåÄ¡µéÀº Áö´ÉÀÌ ÀÖ´Â ÀڽŸ¸ÀÇ Çϵå¿þ¾î ÄÁÆ®·Ñ·¯¸¦ °¡Áö°í ÀÖ´Ù. Å°º¸µå, ¸¶¿ì½º, Á÷·ÄÆ÷Æ®´Â SuperIO ĨÀÌ Á¦¾îÇÏ°í, IDE Çϵåµð½º Å©´Â IDE ÄÁÆ®·Ñ·¯°¡, SCSI µð½ºÅ©´Â SCSI ÄÁÆ®·Ñ·¯°¡ Á¦¾îÇÑ´Ù. ¸ðµç Çϵå¿þ¾î ÄÁÆ®·Ñ·¯´Â °¢ÀÚÀÇ °íÀ¯ÇÑ Á¦¾î/»óÅ ·¹Áö½ºÅÍ(Control and Status Registers, CSRs)¸¦ °¡Áö¸ç, ÀÌ°ÍÀº ÀåÄ¡µé¸¶´Ù ´Ù¸£´Ù. Adaptec 2940 SCSI ÄÁÆ®·Ñ·¯ÀÇ CSRs°ú NCR 810 SCSI ÄÁÆ®·Ñ·¯ÀÇ CSRs´Â ¿ÏÀüÈ÷ ´Ù¸£´Ù. CSRs´Â ÀåÄ¡¸¦ ½ÃÀÛÇÏ°í ¸ØÃß°í, ÃʱâÈ­ÇÏ¸ç ¹®Á¦°¡ ¹ß»ýÇßÀ» ¶§ À̸¦ Áø´ÜÇϴµ¥ ÀÌ¿ëµÈ´Ù. ¸ðµç ÀÀ¿ëÇÁ·Î±×·¥¿¡ Çϵå¿þ¾î¸¦ °ü¸®ÇÏ´Â Äڵ带 ³ÖÁö ¾ÊÀ¸¸ç, ¸®´ª½º Ä¿³Î¸¸ ±× Äڵ带 °¡Áö°í ÀÖ´Ù. Çϵå¿þ¾î ÄÁÆ®·Ñ·¯¸¦ ´Ù·ç°í °ü¸®ÇÏ´Â ¼ÒÇÁÆ®¿þ¾î¸¦ µð¹ÙÀ̽º µå¶óÀ̹ö¶ó°í ÇÑ´Ù. ¸®´ª½º Ä¿³Î µð¹ÙÀ̽º µå¶óÀ̹ö´Â ±Ùº»ÀûÀ¸·Î Ư±ÇÃþ¿¡¼­ ½ÇÇàµÇ°í, ¸Þ¸ð¸®¿¡ »óÁÖÇϸç, Àú±Þ Çϵå¿þ¾î ó¸® ·çƾÀ» °¡Áø °øÀ¯ ¶óÀ̺귯¸® ÀÌ´Ù. ¸®´ª½º¿¡ ÀÖ´Â µð¹ÙÀ̽º µå¶óÀ̹ö´Â ÀÚ½ÅÀÌ °ü¸®ÇÏ´Â ÀåÄ¡µéÀÇ Æ¯¼º µéÀ» ó¸®ÇÑ´Ù. À¯´Ð½ºÀÇ ±âº»ÀûÀΠƯ¡ ÁßÀÇ Çϳª´Â ÀåÄ¡¸¦ ´Ù·ç´Â °ÍÀ» Ãß»óÈ­ÇÑ´Ù´Â °Í ÀÌ´Ù. ¸ðµç Çϵå¿þ¾î ÀåÄ¡µéÀº º¸Åë ÆÄÀÏó·³ º¸À̸ç, ÆÄÀÏÀ» ´Ù·ç´Â µ¥ ¾²À̴ ǥÁØ ½Ã½ºÅÛ ÄÝ°ú ¶È°°Àº ÇÔ¼ö¸¦ ÀÌ¿ëÇÏ¿© ¿­°í, ´Ý°í, Àаí, ¾µ ¼ö ÀÖ´Ù . ½Ã½ºÅÛÀÇ ¸ðµç ÀåÄ¡´Â ÀåÄ¡ Ư¼ö ÆÄÀÏ(device special file)·Î Ç¥½Ã°¡ µÈ´Ù. ¿¹¸¦ µé¾î, ½Ã½ºÅÛ¿¡ Àִ ù¹ø° IDE µð½ºÅ©´Â /dev/hda·Î ³ªÅ¸³½´Ù. ºí·° (µð½ºÅ©) ÀåÄ¡(block device)³ª ¹®ÀÚ ÀåÄ¡ (character device)¸¦ ³ªÅ¸³»´Â ÀåÄ¡ Ư¼ö ÆÄÀÏÀº mknod ¸í·ÉÀ¸·Î ¸¸µé¾î Áö¸ç, ¸ÞÀÌÀú¿Í ¸¶ÀÌ³Ê ÀåÄ¡ ¹øÈ£·Î ÀåÄ¡¸¦ ³ªÅ¸³½´Ù. ³×Æ®¿÷ ÀåÄ¡µéµµ ÀåÄ¡ Ư¼ö ÆÄÀϷΠǥ½Ã°¡ µÇÁö¸¸, À̵éÀº ¸®´ª½º°¡ ½Ã½ºÅÛ¿¡¼­ ³×Æ®¿÷ ÄÁÆ®·Ñ·¯¸¦ ã¾Æ¼­ ÃʱâÈ­ÇÒ ¶§ (¸®´ª½º¿¡ ÀÇÇØ) ¸¸µé¾îÁø´Ù. ¶È°°Àº µð¹Ù À̽º µå¶óÀ̹ö·Î Á¦¾îµÇ´Â ¸ðµç ÀåÄ¡´Â ¶È°°Àº ¸ÞÀÌÀú ÀåÄ¡¹øÈ£¸¦ °®´Â´Ù. ¸¶ÀÌ³Ê ÀåÄ¡ ¹øÈ£´Â ´Ù¸¥ ÀåÄ¡³ª ÄÁÆ®·Ñ·¯¸¦ ±¸ºÐÇϴµ¥ »ç¿ëÇÑ´Ù. ¿¹¸¦ µé¾î ù¹ø° IDE µð½ºÅ©ÀÇ °¢ ÆÄƼ¼ÇµéÀº ´Ù¸¥ ¸¶ÀÌ³Ê ÀåÄ¡¹øÈ£¸¦ °®´Â´Ù. ±×·¡¼­ ù¹ø° IDE µð½ºÅ© µÎ¹ø° ÆÄƼ¼ÇÀº (/dev/hda2) ¸ÞÀÌÀú ¹øÈ£·Î 3, ¸¶ÀÌ³Ê ¹øÈ£·Î 2¸¦ °®´Â´Ù. ºí·° ÀåÄ¡¿¡ ÀÖ´Â ÆÄÀÏ ½Ã½ºÅÛÀ» ¸¶¿îÆ®ÇÏ´Â °æ¿ìó·³ ½Ã½ºÅÛ ÄÝ¿¡ ÀåÄ¡ Ư¼ö ÆÄÀÏÀ» Àü´ÞÇϸé, ¸®´ª½º´Â ¸ÞÀÌÀú ÀåÄ¡ ¹øÈ£¿Í ¿©·¯ ½Ã½ºÅÛ Å×À̺íÀ» ÀÌ¿ëÇÏ¿©(ÀÌ·± °Í ÁßÀÇ Çϳª·Î ¹®ÀÚ ÀåÄ¡ Å×À̺íÀÎ chrdevs°¡ ÀÖ´Ù), ÀåÄ¡ Ư¼ö ÆÄÀÏÀ» ÀåÄ¡ÀÇ µð¹ÙÀ̽º µå¶óÀ̹ö·Î ¿¬°áÇÑ´Ù. ¸®´ª½º´Â ¹®ÀÚ, ºí·°, ³×Æ®¿÷, ÀÌ ¼¼°¡Áö Á¾·ùÀÇ Çϵå¿þ¾î ÀåÄ¡¸¦ Áö¿ø ÇÑ´Ù. ¹®ÀÚ ÀåÄ¡´Â ¹öÆÛ¸¦ ÅëÇÏÁö ÇÏ°í ¹Ù·Î ÀÐ°í ¾µ ¼ö ÀÖ´Â ÀåÄ¡·Î, /dev/cua0 °ú /dev/cua1 °°Àº Á÷·Ä Æ÷Æ®°¡ ¿©±â¿¡ ¼ÓÇÑ´Ù. ºí·° ÀåÄ¡´Â ÀÏÁ¤ÇÑ ºí·° Å©±â(º¸Åë 512 ¶Ç´Â 1024 ¹ÙÀÌÆ®ÀÌ´Ù)ÀÇ ¹è¼ö·Î¸¸ ÀÐ°í ¾µ ¼ö ÀÖ´Ù. ºí·° ÀåÄ¡´Â ¹öÆÛ Ä³½Ã(buffer cache)¸¦ ÅëÇؼ­ ÀÐ°í ¾²¸ç, ¾Æ¹« °÷À̳ª Á¢±Ù ÇÒ ¼ö ÀÖ´Ù. Áï ¾î¶² ºí·°ÀÌµç ±×°ÍÀÌ ÀåÄ¡ÀÇ ¾îµð¿¡ ÀÖµçÁö °£¿¡ ÀÐ°í ¾µ ¼ö ÀÖ´Ù´Â °ÍÀÌ´Ù. ºí·° ÀåÄ¡´Â ÀåÄ¡ Ư¼ö ÆÄÀÏÀ» ÅëÇؼ­ Á¢±ÙÇÒ ¼öµµ ÀÖÁö¸¸, º¸ÅëÀº ÆÄÀÏ ½Ã½ºÅÛÀ» ÅëÇؼ­ Á¢±ÙÇÑ´Ù. ºí·° ÀåÄ¡¸¸ÀÌ ¸¶¿îÆ® µÇ´Â ÆÄÀÏ ½Ã½ºÅÛÀ» Áö¿øÇÒ ¼ö ÀÖ´Ù. ³×Æ®¿÷ ÀåÄ¡´Â BSD ¼ÒÄÏ ÀÎÅÍÆäÀ̽º ·Î Á¢±ÙÇϸç, ÀÌ´Â 10Àå¿¡ ÀÖ´Â ³×Æ®¿öÅ· ¼­ºê½Ã½ºÅÛ ºÎºÐ¿¡¼­ ÀÚ¼¼È÷ À̾߱âÇÑ´Ù. ¸®´ª½º Ä¿³Î¿¡´Â ¸¹Àº ¼­·Î ´Ù¸¥ µð¹ÙÀ̽º µå¶óÀ̹ö°¡ ÀÖÁö¸¸ (ÀÌ°ÍÀÌ ¸®´ª½ºÀÇ Èû ÁßÀÇ ÇϳªÀÌ´Ù), ±×µéÀº ¸ðµÎ ¾î¶² °øÅëÀûÀΠƯ¼ºÀ» °¡Áö°í ÀÖ´Ù : Ä¿³Î ÄÚµå : µð¹ÙÀ̽º µå¶óÀ̹ö´Â Ä¿³ÎÀÇ ÇÑ ºÎºÐÀ̹ǷÎ, Ä¿³ÎÀÇ ´Ù¸¥ ÄÚµå¿Í ¸¶Âù°¡Áö·Î À߸øµÇ¸é ½Ã½ºÅÛ¿¡ Ä¡¸íÀûÀÎ ÇÇÇظ¦ ÁÙ ¼ö ÀÖ´Ù. À߸ø ¸¸µç µå¶óÀ̹ö´Â ½Ã½ºÅÛÀ» Æı«ÇÒ ¼ö ÀÖÀ¸¸ç, ÆÄÀÏ ½Ã½ºÅÛÀ» ¸Á°¡Æ®¸®°Å³ª µ¥ÀÌÅ͸¦ ³¯¸± ¼öµµ ÀÖ´Ù. Ä¿³Î ÀÎÅÍÆäÀ̽º : µð¹ÙÀ̽º µå¶óÀ̹ö´Â ¸®´ª½º Ä¿³ÎÀ̳ª ÀÚ½ÅÀÌ ¼ÓÇÑ ¼­ºê½Ã½ºÅÛ¿¡ Ç¥ÁØ ÀÎÅÍÆäÀ̽º¸¦ Á¦°øÇØ¾ß ÇÑ´Ù. ¿¹¸¦ µé¾î, Å͹̳Πµå¶óÀ̹ö´Â ¸®´ª½º Ä¿³Î¿¡ ÆÄÀÏ I/O ÀÎÅÍÆäÀ̽º¸¦ Á¦°øÇØ¾ß Çϸç, SCSI µð¹ÙÀ̽º µå¶óÀ̹ö´Â Ä¿³Î¿¡ ÆÄÀÏ I/O¿Í ¹öÆÛ Ä³½Ã ÀÎÅÍÆäÀ̽º¸¦ Á¦°øÇÏ´Â SCSI ¼­ºê½Ã½ºÅÛ¿¡ SCSI ÀåÄ¡ ÀÎÅÍÆäÀ̽º¸¦ Á¦°øÇØ¾ß ÇÑ´Ù. Ä¿³Î ¸ÞÄ¿´ÏÁò°ú ¼­ºñ½º : µð¹ÙÀ̽º µå¶óÀ̹ö´Â ¸Þ¸ð¸® ÇÒ´ç,ÀÎÅÍ ·´Æ® Àü´Þ, ´ë±âÅ¥°°Àº Ç¥ÁØ Ä¿³Î ¼­ºñ½º¸¦ »ç¿ëÇÒ ¼ö ÀÖ´Ù. ·Î´õºí(Loadable) : ´ëºÎºÐÀÇ ¸®´ª½º µð¹ÙÀ̽º µå¶óÀ̹ö´Â Ä¿³Î ¸ðµâ ·Î¼­, ÇÊ¿äÇÒ ¶§ ·ÎµåÇÏ°í ´õÀÌ»ó ÇÊ¿äÇÏÁö ¾ÊÀ» ¶§ ¾ð·ÎµåÇÒ ¼ö ÀÖ´Ù. ÀÌ´Â Ä¿³ÎÀ» ¸Å¿ì À¶Å뼺 ÀÖ°Ô ¸¸µé°í ½Ã½ºÅÛÀÇ ÀÚ¿øÀ» È¿À² ÀûÀ¸·Î ÀÌ¿ëÇÒ ¼ö ÀÖ°Ô ÇÑ´Ù. ¼³Á¤°¡´É(Configurable) : ¸®´ª½º µð¹ÙÀ̽º µå¶óÀ̹ö¸¦ Ä¿³Î¿¡ Æ÷ÇÔ ÇÏ¿© ÄÄÆÄÀÏ ÇÒ ¼ö ÀÖ´Ù. ¾î¶² ÀåÄ¡¸¦ ³ÖÀ» °ÍÀÎÁö´Â Ä¿³ÎÀ» ÄÄÆÄÀÏÇÒ ¶§ ¼³Á¤ÇÒ ¼ö ÀÖ´Ù . µ¿Àû(Dynamic) : ½Ã½ºÅÛÀÌ ºÎÆÃÇÏ°í µð¹ÙÀ̽º µå¶óÀ̹ö°¡ ÃʱâÈ­ µÉ ¶§, ½Ã½ºÅÛÀº ÀÚ½ÅÀÌ Á¦¾îÇÒ ¼ö ÀÖ´Â Çϵå¿þ¾î ÀåÄ¡¸¦ ã´Â´Ù. ¸¸¾à ¾î¶² µð¹ÙÀ̽º µå¶óÀ̹ö°¡ Á¦¾îÇÒ ¼ö ÀÖ´Â ÀåÄ¡°¡ ¾ø´Ù°í ÇÏ´õ¶óµµ ¹®Á¦°¡ ¾ÈµÈ´Ù. ÀÌ °æ¿ì µð¹ÙÀ̽º µå¶óÀ̹ö´Â ´ÜÁö ¿©ºÐ À¸·Î ÀÖ´Â °ÍÀÌ°í, ½Ã½ºÅÛ ¸Þ¸ð¸®¸¦ Á¶±Ý Àâ¾Æ ¸Ô´Â´Ù´Â °Í ¸»°í ´Â ¾Æ¹«·± Çصµ ³¢Ä¡Áö ¾Ê´Â´Ù. 8.1 Æú¸µ(Polling)°ú ÀÎÅÍ·´Æ®(Interrupt) ÀåÄ¡¿¡ ¸í·ÉÀ» ÇÒ ¶§ (¿¹¸¦ µé¾î "Çìµå¸¦ ¿Å°Ü Ç÷ÎÇÇ µð½ºÅ©ÀÇ 42¹ø ¼½ÅÍ ¸¦ Àоî¶ó"), µð¹ÙÀ̽º µå¶óÀ̹ö´Â ±× ¸í·ÉÀÌ ¾ðÁ¦ ³¡³µ´ÂÁö ¾Æ´Â ¹æ¹ýÀ» ¼±ÅÃÇÒ ¼ö ÀÖ´Ù. µð¹ÙÀ̽º µå¶óÀ̹ö´Â ÀåÄ¡¸¦ Æú¸µÇÒ ¼öµµ ÀÎÅÍ·´Æ®¸¦ »ç¿ëÇÒ ¼öµµ ÀÖ´Ù. ÀåÄ¡¸¦ Æú¸µÇÑ´Ù´Â °ÍÀº ÀϹÝÀûÀ¸·Î ¿äûÇÑ ÀÛ¾÷ÀÌ ³¡³µ´Â Áö¸¦ ¾Ë±â À§ÇØ ÀåÄ¡ÀÇ »óÅ°¡ º¯ÇÒ ¶§±îÁö ÀåÄ¡ÀÇ »óÅ ·¹Áö½ºÅ͸¦ °è¼ÓÇؼ­ ÀÚÁÖ Àд °ÍÀ» ¸»ÇÑ´Ù. µð¹ÙÀ̽º µå¶óÀ̹ö´Â Ä¿³ÎÀÇ ÇÑ ºÎºÐÀ̱⠶§¹®¿¡, ¸¸¾à µå¶ó À̹ö°¡ Æú¸µ¸¸ ÇÏ·Á°í ÇÑ´Ù¸é ÀåÄ¡°¡ ÀÛ¾÷À» ³¡¸¶Ä¥ ¶§±îÁö Ä¿³ÎÀÇ ´Ù¸¥ ºÎºÐÀÌ ¼öÇàµÉ ¼ö ¾øÀ¸¹Ç·Î ²ûÂïÇÑ ÀÏÀÌ ¹ú¾îÁú °ÍÀÌ´Ù. ±×·¡¼­ Æú¸µÀ» ÇÏ´Â µð¹ÙÀ̽º µå¶óÀ̹ö´Â ½Ã½ºÅÛ Å¸À̸Ӹ¦ ÀÌ¿ëÇÏ¿© ¾î´ÀÁ¤µµ ½Ã°£ÀÌ Áö³ª¸é Ä¿³ÎÀÌ µð¹ÙÀ̽º µå¶óÀ̹ö¿¡ ÀÖ´Â ÇÑ ·çƾÀ» ºÎ¸£µµ·Ï ÇÑ´Ù. ±×·¯¸é ÀÌ Å¸ÀÌ¸Ó ·çƾÀº ¸í·ÉÀÌ ¼öÇàµÇ¾ú´ÂÁö »óŸ¦ °Ë»çÇÑ´Ù. ÀÌ´Â ¸®´ª½ºÀÇ Ç÷ÎÇÇ µå¶óÀ̹ö¿¡¼­ »ç¿ëÇÏ´Â ¹æ¹ýÀÌ´Ù. ŸÀ̸Ӹ¦ ÀÌ¿ëÇÏ´Â Æú¸µÀº ÁÁÀº ¹æ¹ýÀÌÁö¸¸, À̺¸´Ù ´õ È¿°úÀûÀÎ ¹æ¹ýÀ¸·Î ÀÎÅÍ·´Æ®¸¦ »ç¿ë ÇÏ´Â °ÍÀÌ ÀÖ´Ù. Á¦¾îÇÏ´Â Çϵå¿þ¾î ÀåÄ¡°¡ ¼­ºñ½º¸¦ ¹Þ¾Æ¾ß ÇÒ ¶§ Çϵå¿þ¾î ÀÎÅÍ·´Æ®¸¦ ¹ß»ýÇÏ´Â °ÍÀÌ ÀÎÅÍ·´Æ®¸¦ ÀÌ¿ëÇÑ µð¹ÙÀ̽º µå¶óÀ̹öÀÌ´Ù. ¿¹¸¦ µé¾î, ÀÌ´õ³Ý µð¹ÙÀ̽º µå¶óÀ̹ö´Â ³×Æ®¿÷¿¡¼­ ÀÌ´õ³Ý ÆÐŶÀ» ¹ÞÀ» ¶§¸¶´Ù ÀÎÅÍ·´Æ®¸¦ ¹ß»ýÇÑ´Ù. ¸®´ª½º Ä¿³ÎÀº ÀÌ ÀÎÅÍ·´Æ®¸¦ Çϵå¿þ¾î ÀåÄ¡¿¡¼­ ¿Ã¹Ù¸¥ µð¹ÙÀ̽º µå¶óÀ̹ö·Î Àü´ÞÇÒ ¼ö ÀÖ¾î¾ß ÇÑ´Ù. ÀÌ´Â µð¹ÙÀ̽º µå¶óÀ̹ö°¡ Ä¿³Î¿¡ ÀÎÅÍ·´Æ®¸¦ »ç¿ëÇÏ°Ú´Ù°í µî·ÏÇÔÀ¸·Î½á ÀÌ·ç¾îÁø´Ù. µå¶óÀ̹ö´Â ÀÎÅÍ·´Æ® ó¸® ·çƾÀÇ ÁÖ¼Ò¿Í ÀÚ½ÅÀÌ »ç¿ëÇÏ°í ½ÍÀº ÀÎÅÍ·´Æ® ¹øÈ£¸¦ Ä¿³Î¿¡ µî·ÏÇÑ´Ù. ÇöÀç µð¹ÙÀ̽º µå¶óÀ̹ö°¡ ¾î¶² ÀÎÅÍ·´Æ®¸¦ »ç¿ë ÇÏ°í ÀÖÀ¸¸ç, ±× ÀÎÅÍ·´Æ®°¡ ¾ó¸¶³ª ¸¹ÀÌ ¹ß»ýÇß´ÂÁö ¾Ë·Á¸é, /proc/interrupts ÆÄÀÏÀ» º¸¸é µÈ´Ù. 0: 727432 timer 1: 20534 keyboard 2: 0 cascade 3: 79691 + serial 4: 28258 + serial 5: 1 sound blaster 11: 20868 + aic7xxx 13: 1 math error 14: 247 + ide0 15: 170 + ide1 ÀÎÅÍ·´Æ® ÀÚ¿øÀ» ¿äûÇÏ´Â °ÍÀº µå¶óÀ̹ö°¡ ÃʱâÈ­ µÉ ¶§ ÇÑ´Ù. ½Ã½ºÅÛÀÇ ¾î¶² ÀÎÅÍ·´Æ®µéÀº óÀ½ºÎÅÍ °íÁ¤µÇ¾î Àִµ¥, ÀÌ´Â IBM PC ±¸Á¶ÀÇ ¿À·£ À¯¹°ÀÌ´Ù. ±×·¡¼­ Ç÷ÎÇÇ ÄÁÆ®·Ñ·¯´Â ¾ðÁ¦³ª ÀÎÅÍ·´Æ® 6À» »ç¿ëÇÑ´Ù. ´Ù¸¥ ÀÎÅÍ·´Æ®µé, ¿¹¸¦ µé¾î PCI ÀåÄ¡¿¡¼­ ¹ß»ýÇÏ´Â ÀÎÅÍ·´Æ®µéÀº ºÎÆýÿ¡ µ¿ÀûÀ¸·Î ÇÒ´çµÈ´Ù. ÀÌ°æ¿ì µð¹ÙÀ̽º µå¶óÀ̹ö´Â ÀÎÅÍ·´Æ®ÀÇ ¼ÒÀ¯±ÇÀ» ¿äûÇϱâ ÀÌÀü¿¡ ÀÚ½ÅÀÌ Á¦¾îÇÒ ÀåÄ¡ÀÇ ÀÎÅÍ·´Æ® ¹øÈ£ (IRQ)¸¦ ¸ÕÀú ¾Ë¾Æ ³»¾ß ÇÑ´Ù. ¸®´ª½º´Â PCI¿¡¼­ »ç¿ëÇÏ´Â ÀÎÅÍ·´Æ®¿¡ ´ëÇØ, IRQ ¹øÈ£¸¦ Æ÷ÇÔ ÇÏ¿© ½Ã½ºÅÛ¿¡ ÀÖ´Â ÀåÄ¡ Á¤º¸¸¦ ¾Ë ¼ö Àִ ǥÁØ PCI BIOS ÄݹéÀ» Áö¿ø ÇÑ´Ù. ÀÎÅÍ·´Æ®°¡ CPU¿¡ ¾î¶»°Ô Àü´ÞµÇ´ÂÁö´Â Çϵå¿þ¾î ±¸Á¶¿¡ µû¶ó ´Ù¸£Áö¸¸, ´ëºÎºÐ ±¸Á¶¿¡¼­´Â ½Ã½ºÅÛ¿¡¼­ ´Ù¸¥ ÀÎÅÍ·´Æ®°¡ ¹ß»ýÇÏ´Â °ÍÀ» ¸·´Â Ưº° ÇÑ ¸ðµå¿¡¼­ ÀÎÅÍ·´Æ®¸¦ Àü´ÞÇÑ´Ù. ±×·¡¼­ µð¹ÙÀ̽º µå¶óÀ̹ö´Â ÀÎÅÍ·´Æ® ó¸® ·çƾ ¾È¿¡¼­´Â µÇµµ·Ï ÀûÀºÀÏ À» ÇÏ¿©, ¸®´ª½º Ä¿³ÎÀÌ ÀÎÅÍ·´Æ® 󸮿¡¼­ ºüÁ®³ª¿Í ÀÎÅÍ·´Æ®µÇ±â Àü¿¡ ÇÏ´ø ÀÏ·Î µÇµ¹¾Æ°¥ ¼ö ÀÖµµ·Ï ÇØ¾ß ÇÑ´Ù. ÀÎÅÍ·´Æ®¸¦ ¹Þ¾ÒÀ» ¶§ ¸¹Àº ÀÏÀ» ÇØ¾ß ÇÏ´Â µð¹ÙÀ̽º µå¶óÀ̹ö´Â, ³ªÁß¿¡ ºÒ·Áµµ µÇ´Â ÀÛ¾÷À» Ä¿³ÎÀÇ ÇϹݺΠÇڵ鷯³ª ÀÛ¾÷Å¥¿¡ ³Ö¾î ó¸®ÇÒ ¼ö ÀÖ´Ù. 8.2 Á÷Á¢ ¸Þ¸ð¸® Á¢±Ù (Direct Memory Access, DMA) µ¥ÀÌÅ͸¦ Çϵå¿þ¾î¿¡¼­ Çϵå¿þ¾î ÀåÄ¡·Î º¸³»°Å³ª ¹ÞÀ» ¶§ ÀÎÅÍ·´Æ®¸¦ »ç¿ëÇÏ´Â µð¹ÙÀ̽º µå¶óÀ̹ö´Â ¿Ô´Ù°¬´ÙÇÏ´Â µ¥ÀÌÅÍÀÇ ¾çÀÌ ÀÛÀ» ¶§´Â Àß µ¿ÀÛÇÑ´Ù. 1 ¹Ð¸®ÃÊ (1/1000 ÃÊ)¿¡ ÇÑ ±ÛÀÚ¾¿ Àü¼ÛÇÏ´Â 9600 bps ¸ðµ©À» ¿¹·Î µé¾îº¸ÀÚ. ¸¸¾à ÀÎÅÍ·´Æ® 󸮽ð£ - Çϵå¿þ¾î ÀåÄ¡¿¡¼­ ÀÎÅÍ·´Æ®°¡ ¹ß»ýÇÏ°í, µð¹ÙÀ̽º µå¶óÀ̹öÀÇ ÀÎÅÍ·´Æ® ó¸® ·çƾÀÌ ºÒ¸®±â±îÁö °É¸®´Â ½Ã°£ - ÀÌ ÀÛ´Ù¸é (2 ¹Ð¸®Ãʶó°í ÇÏÀÚ), µ¥ÀÌÅÍ Àü¼ÛÀ¸·Î Àüü ½Ã½ºÅÛ¿¡ ÁÖ´Â ¿µÇâÀº ¸Å¿ì ÀÛÀ» °ÍÀÌ´Ù. 9600 bps ¸ðµ©ÀÇ µ¥ÀÌÅÍ Àü¼ÛÀº °Ü¿ì CPU ÇÁ·Î¼¼¼­ ½Ã°£ÀÇ 0.002% ¸¸À» ÀÌ¿ëÇÒ »ÓÀÌ´Ù. ±×·¯³ª Çϵåµð½ºÅ© ÄÁÆ®·Ñ·¯ ³ª ÀÌ´õ³Ý ÀåÄ¡°°ÀÌ °í¼Óµµ ÀåÄ¡µéÀÇ µ¥ÀÌÅÍ Àü¼Û·üÀº ¸Å¿ì ³ô´Ù. SCSI ÀåÄ¡´Â 1ÃÊ¿¡ 40MB±îÁö µ¥ÀÌÅ͸¦ Àü¼ÛÇÒ ¼ö ÀÖ´Ù. DMA´Â ÀÌ·± ¹®Á¦¸¦ ÇØ°áÇϱâ À§ÇØ °³¹ßµÇ¾ú´Ù. DMA ÄÁÆ®·Ñ·¯´Â CPU°¡ °³ÀÔ ÇÏÁö ¾Ê°í ÀåÄ¡¿Í ½Ã½ºÅÛÀÇ ¸Þ¸ð¸® »çÀÌ¿¡ µ¥ÀÌÅ͸¦ Àü¼ÛÇÒ ¼ö ÀÖµµ·Ï ÇÑ´Ù. PCÀÇ ISA DMA ÄÁÆ®·Ñ·¯´Â ¿©´ü°³ÀÇ DMAÀÇ Ã¤³ÎÀ» °¡Áö°í ÀÖÀ¸¸ç, ÀÌ Áß 7°³¸¦ µð¹ÙÀ̽º µå¶óÀ̹ö°¡ »ç¿ëÇÒ ¼öÀÖ´Ù. °¢ DMA ä³ÎÀº 16 ºñÆ® ÁÖ¼Ò ·¹Áö½ºÅÍ¿Í 16 ºñÆ® Ä«¿îÅÍ ·¹Áö½ºÅÍ¿¡ ¿¬°á µÇ¾î ÀÖ´Ù. µ¥ÀÌÅÍ Àü¼ÛÀ» ÃʱâÈ­Çϱâ À§ÇØ µð¹ÙÀ̽º µå¶óÀ̹ö´Â DMA ä³Î ÀÇ ÁÖ¼Ò·¹Áö½ºÅÍ¿Í Ä«¿îÅÍ ·¹Áö½ºÅÍ, µ¥ÀÌÅÍ Àü¼Û ¹æÇâ(ÀÐÀ» °ÍÀÎÁö, ¾µ °ÍÀÎÁö)À» ÇÔ²² ¼³Á¤ÇÑ´Ù. ±×¸®°í ÀÚ½ÅÀÌ ¿øÇÒ¶§ ÀåÄ¡¿¡°Ô DMA¸¦ ½ÃÀÛÇصµ ÁÁ´Ù°í ¸í·ÉÇÑ´Ù. µ¥ÀÌÅÍ Àü¼ÛÀÌ ¿Ï·áµÇ¸é ÀåÄ¡´Â PC¿¡ ÀÎÅÍ·´Æ®¸¦ ¹ß»ý ÇÑ´Ù. Àü¼ÛÀÌ ÀÌ·ç¾îÁö´Â µ¿¾È¿¡ CPU´Â ´Ù¸¥ÀÏÀ» ¸¾´ë·Î ÇÒ ¼ö ÀÖ´Ù. µð¹ÙÀ̽º µå¶óÀ̹ö´Â DMA¸¦ ¸Å¿ì Á¶½ÉÇؼ­ »ç¿ëÇØ¾ß ÇÑ´Ù. ¹«¾ùº¸´Ùµµ DMA ÄÁÆ®·Ñ·¯´Â °¡»ó ¸Þ¸ð¸®¿¡ ´ëÇؼ­ ¾Æ¹«°Íµµ ¸ð¸£°í ÀÖÀ¸¸ç, ±×Àú ½Ã½ºÅÛÀÇ ¹°¸®Àû ¸Þ¸ð¸®¿¡ Á¢±ÙÇÒ »ÓÀÌ´Ù. µû¶ó¼­ DMA¿¡¼­ »ç¿ëÇÏ´Â ¸Þ¸ð ¸®´Â ¹°¸®ÀûÀÎ ¸Þ¸ð¸®¿¡¼­ ¿¬¼ÓµÈ ºí·°À¸·Î µÇ¾î ÀÖ¾î¾ß ÇÑ´Ù. ÀÌ´Â ÇÁ·Î ¼¼½ºÀÇ °¡»ó ¸Þ¸ð¸® ÁÖ¼Ò°ø°£À¸·Î DMA¸¦ ¹Ù·Î »ç¿ëÇÒ ¼ö ¾ø´Ù´Â ¸»ÀÌ´Ù . ¾î·µç »ç¿ëÀÚ´Â ÇÁ·Î¼¼½ºÀÇ ¹°¸®Àû ÆäÀÌÁö¸¦ ¸Þ¸ð¸®¿¡ ¶ô(lock)À» °É¾î , DMA ÀÛ¾÷Áß¿¡ ¸Þ¸ð¸®°¡ ½º¿Ò ÀåÄ¡·Î ½º¿Ò ¾Æ¿ôµÇ´Â °ÍÀ» ¹æÁöÇÏ°Ô ¸¸µé ¼ö ÀÖ´Ù. µÑ°·Î, DMA ÄÁÆ®·Ñ·¯´Â ¹°¸®Àû ¸Þ¸ð¸® Àüü¿¡ Á¢±ÙÇÒ ¼ö ¾ø´Ù. DMA ä³ÎÀÇ ÁÖ¼Ò ·¹Áö½ºÅÍ´Â DMA ¾îµå·¹½ºÀÇ Ã³À½ 16 bit¸¦ ³ªÅ¸³»°í, ÆäÀÌÁö ·¹Áö½ºÅÍ¿¡ ´ÙÀ½ 8 ºñÆ®°¡ ÀÖ´Ù. Áï DMA °¡ »ç¿ëÇÒ ¼ö ÀÖ´Â ¸Þ¸ð¸® ´Â ÇϺΠ16MB·Î Á¦ÇѵǾî ÀÖ´Ù´Â °ÍÀÌ´Ù. DMA ä³ÎÀº ¿ÀÁ÷ 7°³ ¹Û¿¡ »ç¿ëÇÒ ¼ö ¾ø°í, µð¹ÙÀ̽º µå¶óÀ̹öµéÀÌ °°ÀÌ °øÀ¯ÇÒ ¼ö ¾ø´Â µå¹® ÀÚ¿øÀÌ´Ù. ÀÎÅÍ·´Æ®¿Í ¸¶Âù°¡Áö·Î µð¹ÙÀ̽º µå¶óÀÌ ¹ö´Â ¾î¶² DMA ä³ÎÀ» »ç¿ëÇÒ Áö¸¦ ¾Ë¾Æ¾ß ÇÑ´Ù. ¿ª½Ã ÀÎÅÍ·´Æ®¿¡¼­Ã³·³ ¾î¶² ÀåÄ¡°¡ »ç¿ëÇÏ´Â DMA ä³ÎÀº °íÁ¤µÇ¾î ÀÖ´Ù. ¿¹¸¦ µé¾î, Ç÷ÎÇÇ ÀåÄ¡´Â Ç×»ó DMA ä³Î 2¹øÀ» »ç¿ëÇÑ´Ù. °¡²ûÀº ÀåÄ¡°¡ »ç¿ëÇÏ´Â DMA ä³ÎÀº Á¡ÆÛ·Î ¼³Á¤ÇÒ ¼ö ÀÖ´Ù. ¸¹Àº ÀÌ´õ³Ý ÀåÄ¡µéÀº ÀÌ·± ±â¼úÀ» »ç¿ëÇÑ´Ù. À̺¸´Ù ´õ À¶Å뼺 ÀÖ´Â ÀåÄ¡µéÀº ¾î¶² DMA¸¦ ä³ÎÀ» »ç¿ëÇÒ °ÍÀÎÁö ¾Ë·ÁÁÙ ¼ö À־ (ÀÚ½ÅÀÇ CSRsÀ» ÅëÇÏ¿©), µð¹ÙÀ̽º µå¶ó À̹ö´Â ´ÜÁö ºñ¾îÀÖ´Â DMA ä³ÎÀ» »ç¿ëÇÏ¸é µÈ´Ù. ¸®´ª½º´Â DMA ä³Î Çϳª´ç ÀÖ´Â dma_chan ÀڷᱸÁ¶ÀÇ º¤Å͸¦ ÀÌ¿ëÇÏ¿© DMA ä³ÎÀÇ »ç¿ë¿©ºÎ¸¦ ÃßÀûÇÒ ¼ö ÀÖ´Ù. dma_chan ÀڷᱸÁ¶´Â µÎ°³ÀÇ Ç׸ñ À¸·Î µÇ¾îÀִµ¥, Çϳª´Â DMA ä³ÎÀÇ ¼ÒÀ¯ÀÚ¸¦ ³ªÅ¸³»´Â ¹®ÀÚ¿­ÀÌ°í, ´Ù¸¥ Çϳª´Â DMA ä³ÎÀÌ ÇÒ´çµÇ¾î ÀÖ´ÂÁö ºñ¾î ÀÖ´ÂÁö¸¦ ³ªÅ¸³»´Â Ç÷¡±×ÀÌ´Ù. cat /proc/dma¶ó´Â ¸í·ÉÀ» ³»¸®¸é ³ª¿À´Â °ÍÀÌ ÀÌ dma_chan ÀڷᱸÁ¶ÀÇ º¤ÅÍÀÌ´Ù. 8.3 ¸Þ¸ð¸® µð¹ÙÀ̽º µå¶óÀ̹ö´Â ¸Þ¸ð¸®¸¦ »ç¿ëÇÒ ¶§ ÁÖÀÇÇØ¾ß ÇÑ´Ù. µð¹ÙÀ̽º µå¶óÀÌ ¹ö´Â ¸®´ª½º Ä¿³ÎÀÇ ÀϺκÐÀ̹ǷΠ°¡»ó ¸Þ¸ð¸®¸¦ »ç¿ëÇÒ ¼ö ¾ø´Ù. µð¹ÙÀÌ ½º µå¶óÀ̹ö°¡ ½ÇÇàµÉ ¶§, Áï ÀÎÅÍ·´Æ®¸¦ ¹Þ¾Ò´Ù´øÁö ÇϹݺΠÇڵ鷯 (bottom half handler)³ª ÀÛ¾÷Å¥ Çڵ鷯(task queue handler)°¡ ½ºÄÉÁì µÇ¾úÀ» ¶§, current ÇÁ·Î¼¼½º´Â ¹Ù²ð ¼ö ÀÖ´Ù. µð¹ÙÀ̽º µå¶óÀ̹ö´Â ƯÁ¤ ÇÑ ÇÁ·Î¼¼½º°¡ ½ÇÇàµÇ°í ÀÖÀ» ¶§, ºñ·Ï ±× ÇÁ·Î¼¼½ºÀÇ ÇÑÄÒ¿¡¼­ µ¹¾Æ°¡°í ÀÖ´õ¶óµµ, ±× ƯÁ¤ ÇÁ·Î¼¼½º¿¡ ÀÇÁ¸ÇÒ ¼ö ¾ø´Ù. Ä¿³ÎÀÇ ³ª¸ÓÁö ºÎºÐó·³ µð¹ÙÀ̽º µå¶óÀ̹öµµ ÀڷᱸÁ¶¸¦ ¸¸µé¾î ÀÚ½ÅÀÌ Á¦¾îÇÏ´Â ÀåÄ¡¸¦ °ü¸®ÇØ¾ß ÇÑ´Ù. ÀÌ·¯ÇÑ ÀڷᱸÁ¶´Â Á¤ÀûÀ¸·Î ÇÒ´çÇÏ¿© µð¹ÙÀ̽º µå¶óÀ̹öÀÇ ÄÚµåÀÇ ÀϺηΠÆ÷Ç﵃ ¼öµµ ÀÖÁö¸¸, ÀÌ´Â Ä¿³ÎÀ» ÇÊ¿äÀÌ»óÀ¸·Î Å©°Ô ¸¸µé¾î ³¶ºñ ÀûÀÌ´Ù. ´ëºÎºÐÀÇ µð¹ÙÀ̽º µå¶óÀ̹ö´Â Ä¿³ÎÀÇ ÆäÀÌÁöµÇÁö ¾Ê´Â ¸Þ¸ð¸®(non-paged) ¸¦ ÇÒ´ç¹Þ¾Æ ÀÚ½ÅÀÇ ÀڷḦ ³Ö´Â´Ù. ¸®´ª½º´Â Ä¿³Î ¸Þ¸ð¸®¸¦ ÇÒ´çÇÏ°í ÇØÁ¦ÇÏ´Â ·çƾÀ» Á¦°øÇϴµ¥, µð¹ÙÀ̽º µå¶óÀ̹ö´Â À̸¦ »ç¿ëÇÑ´Ù. Ä¿³Î ¸Þ¸ð¸®´Â 2ÀÇ Á¦°ö½Â ´ÜÀ§·Î ÇÒ´çµÈ´Ù. ¿¹¸¦ µé¸é 128À̳ª 512 Å©±â·Î ÇÒ´çµÇ´Âµ¥, µð¹ÙÀ̽º µå¶óÀ̹ö°¡ ´õ ÀÛÀº Å©±â¸¦ ¿äûÇصµ ÀÌ·¸°Ô ÇÒ´çµÈ´Ù. µð¹ÙÀ̽º µå¶óÀ̹ö°¡ ¿äûÇÏ´Â Å©±â´Â ´ÙÀ½ ºí·°ÀÇ Å©±â¿¡ ¸ÂÃç ¿Ã¸²ÇÏ¿© ÇÒ´çµÈ´Ù. ÀÌ·¸°Ô Çϸé ÇÁ¸® ºí·°µéÀ» ÇÕÃÄ ´õ Å« ºí·°À» ¸¸µé ¼ö ÀÖÀ¸ ¹Ç·Î, Ä¿³Î ¸Þ¸ð¸® ÇØÁ¦°¡ ½¬¿öÁø´Ù . Ä¿³Î ¸Þ¸ð¸®¸¦ ¿äû¹Þ¾ÒÀ» ¶§ ¸®´ª½º´Â ¸î°¡Áö ¿©ºÐÀÇ ÀÏÀ» ÇؾߵȴÙ. ¸¸¾à ÇÁ¸® ¸Þ¸ð¸®°¡ ÀûÀ¸¸é, ¹°¸®Àû ÆäÀÌÁö¸¦ Æó±âÇϰųª ½º¿Ò ÀåÄ¡·Î ½º¿Ò ¾Æ¿ôÇØ¾ß ÇÑ´Ù. ÀϹÝÀûÀ¸·Î ¸®´ª½º´Â ¸Þ¸ð¸®¸¦ ¿äûÇÑ ÇÁ·Î¼¼½º¸¦ Àá½Ã º¸·ù½ÃÅ°°í, ÃæºÐÇÑ ¹°¸®Àû ¸Þ¸ð¸®°¡ »ý±æ ¶§±îÁö ÀÛ¾÷À» ´ë±âÅ¥¿¡ ³Ö¾îµÐ´Ù. ¾î¶² µð¹ÙÀ̽º µå¶óÀ̹ö(¶Ç´Â ½ÇÁ¦ ¸®´ª½º Ä¿³Î ÄÚµå)´Â ÀÌ·± ÀÛ¾÷ÀÌ ¹ß»ýÇÏ´Â °ÍÀº ¿øÇÏÁö ¾ÊÀ¸¸ç, ÀÌ °æ¿ì °ð¹Ù·Î ¸Þ¸ð¸®¸¦ ÇÒ´çÇÒ ¼ö ¾ø´Ù¸é Ä¿³Î ¸Þ¸ð¸® ÇÒ´ç ·çƾÀº ½ÇÆÐÇÒ ¼öµµ ÀÖ´Ù. ¸¸¾à µð¹ÙÀ̽º µå¶ó À̹ö°¡ ÇÒ´ç¹ÞÀº ¸Þ¸ð¸®¸¦ DMA·Î ÀÔÃâ·ÂÀ» Çϱ⸦ ¿øÇÑ´Ù¸é, ±× ¸Þ¸ð¸®¸¦ ¿ä±¸ÇÒ ¶§ DMA°¡´ÉÀ̶ó°í ÁöÁ¤ÇÒ ¼ö ÀÖ´Ù. ÀÌ·¸°Ô ÇÑ ½Ã½ºÅÛ¿¡ DMA°¡´É ¸Þ¸ð¸®¸¦ ±¸¼ºÇÏ´Â °ÍÀ» ¾Ë¾Æ¾ß ÇÏ´Â °ÍÀº ¸®´ª½º Ä¿³ÎÀÌÁö µð¹ÙÀ̽º µå¶óÀ̹ö°¡ ¾Æ´Ï´Ù. chrdevs +----------+ | name | | fops |-----------> file operations +----------+ | | lseek | | read | | write | | readdir | | select | | ioclt | | mmap | | open | | release | | fsyn | | fasync | | check_media_change | | revalidate +----------+ ±×¸² 8.1 : Character Devices 8.4 Ä¿³Î°ú µð¹ÙÀ̽º µå¶óÀ̹ö¿ÍÀÇ ÀÎÅÍÆäÀ̽º ¸®´ª½º Ä¿³ÎÀº µð¹ÙÀ̽º µå¶óÀ̹öµé°ú Ç¥ÁØÀûÀÎ ¹æ¹ýÀ» ÅëÇÏ¿© »óÈ£ÀÛ¿ëÇÒ ¼ö ÀÖ¾î¾ß ÇÑ´Ù. ¸ðµç Á¾·ùÀÇ µð¹ÙÀ̽º µå¶óÀ̹ö - ¹®ÀÚ, ºí·°, ³×Æ®¿÷ µð¹ÙÀ̽º µå¶óÀ̹ö - ´Â Ä¿³ÎÀÌ À̵é·Î¿¡°Ô ¼­ºñ½º¸¦ ¿äûÇÒ ¶§ »ç¿ëÇÒ ¼ö ÀÖ´Â °øÅëÀûÀÎ ÀÎÅÍÆäÀ̽º¸¦ Á¦°øÇÑ´Ù. ÀÌ °øÅëÀûÀÎ ÀÎÅÍÆäÀ̽º´Â Ä¿³ÎÀÌ ¼­·Î ¸¹ÀÌ ´Ù¸¥ ÀåÄ¡µé°ú µð¹ÙÀ̽º µå¶óÀ̹ö¸¦ ¿ÏÀüÈ÷ ¶È°°ÀÌ ´Ù·ê ¼ö ÀÖ°Ô ÇÑ´Ù. ¿¹¸¦ µé¾î SCSI¿Í IDE µð½ºÅ©´Â ¸Å¿ì ´Ù¸£°Ô µ¿ÀÛÇÏÁö¸¸, ¸®´ª½º Ä¿³ÎÀº ¶È°°Àº ÀÎÅÍÆäÀ̽º¸¦ ÅëÇØ À̵éÀ» »ç¿ëÇÑ´Ù. ¸®´ª½º´Â ¸Å¿ì µ¿ÀûÀÌ´Ù. ¸®´ª½º Ä¿³ÎÀº ºÎÆÃÇÒ ¶§¸¶´Ù ´Ù¸¥ ¹°¸®Àû ÀåÄ¡ µéÀ» ¾Ë°Ô µÇ°í, ´Ù¸¥ µð¹ÙÀ̽º µå¶óÀ̹ö¸¦ ÇÊ¿ä·Î ÇÏ°Ô µÈ´Ù. ¸®´ª½º´Â Ä¿³ÎÀ» ºôµåÇÒ ¶§ ¼³Á¤ ½ºÅ©¸³Æ®¸¦ ÅëÇÏ¿© ¿©·¯ µð¹ÙÀ̽º µå¶óÀ̹ö¸¦ Æ÷ÇÔ ÇÒ ¼ö ÀÖ°Ô ÇÑ´Ù. ÀÌ·¸°Ô µé¾î°£ µð¹ÙÀ̽º µå¶óÀ̹ö´Â ºÎÆÃÇÒ ¶§ ÃʱâÈ­°¡ µÇ´Âµ¥, À̵éÀÌ Á¦¾îÇÒ Çϵå¿þ¾î°¡ ¾øÀ» ¼öµµ ÀÖ´Ù. ¾î¶² µå¶óÀ̹öµéÀº Ä¿³Î ¸ðµâ·Î ¸¸µé¾îÁ®¼­ ÀÚ½ÅÀÌ ÇÊ¿ä·Î ÇÒ ¶§¿¡¸¸ ·ÎµåµÉ ¼ö ÀÖ´Ù. ÀÌ·¯ÇÑ µð¹ÙÀ̽º µå¶óÀ̹öÀÇ µ¿ÀûÀÎ ¼º°ÝÀ» ¿øÇÒÇÏ°Ô Çϱâ À§ÇØ, µð¹ÙÀ̽º µå¶ó À̹ö´Â ÀÚ½ÅÀÌ ÃʱâÈ­µÉ ¶§ Ä¿³Î¿¡ ÀÚ±â ÀÚ½ÅÀ» µî·ÏÇÑ´Ù. ¸®´ª½º´Â µð¹Ù À̽º µå¶óÀ̹ö¿ÍÀÇ ÀÎÅÍÆäÀ̽ºÀÇ ÇѺκÐÀ¸·Î¼­, µî·ÏµÈ µð¹ÙÀ̽º µå¶óÀ̹ö ÀÇ Å×À̺íÀ» °ü¸®ÇÑ´Ù. À̵é Å×À̺íÀº ÇØ´çÇÏ´Â Á¾·ùÀÇ ÀåÄ¡¿Í ÀÎÅÍÆäÀ̽º ¸¦ Á¦°øÇÏ´Â ÇÔ¼öµéÀÇ Æ÷ÀÎÅÍ¿Í Á¤º¸¸¦ °¡Áö°í ÀÖ´Ù. 8.4.1 ¹®ÀÚ ÀåÄ¡(Character Device) ¹®ÀÚ ÀåÄ¡´Â ¸®´ª½ºÀÇ ÀåÄ¡µé Áß¿¡¼­ °¡Àå ´Ü¼øÇÑ °ÍÀÌ´Ù. ÇÁ·Î±×·¥Àº ±× ÀåÄ¡°¡ ¸¶Ä¡ ÆÄÀÏÀÎ °Íó·³ Ç¥ÁØ ½Ã½ºÅÛ ÄÝÀ» »ç¿ëÇÏ¿© ¿­°í, Àаí, ¾²°í, ´ÝÀ» ¼ö ÀÖ´Ù. ÀÌ·¯ÇÑ »ç½ÇÀº ±× ÀåÄ¡°¡ PPP µ¥¸óÀÌ ¸®´ª½º ½Ã½ºÅÛÀ» ÀÎÅÍ ³Ý¿¡ ¿¬°áÇϱâ À§ÇØ »ç¿ëÇÏ´Â ¸ðµ©À̶ó ÇÒ Áö¶óµµ ¸¶Âù°¡Áö´Ù. ¹®ÀÚ ÀåÄ¡ °¡ ÃʱâÈ­ µÉ ¶§ ÀÌ°ÍÀÇ µð¹ÙÀ̽º µå¶óÀ̹ö´Â, device_struct ÀÚ·á ±¸Á¶ÀÇ º¤ÅÍÀÎ chrdevs¿¡ ÀÚ½ÅÀÇ ¿£Æ®¸®¸¦ Ãß°¡ÇÔÀ¸·Î½á ¸®´ª½º Ä¿³Î¿¡ ÀÚ½ÅÀ» µî·ÏÇÑ´Ù . ÀåÄ¡ÀÇ ¸ÞÀÌÀú ÀåÄ¡ ¹øÈ£´Â (¿¹¸¦ µé¾î tty ÀåÄ¡¿¡ ÇÒ´çµÇ´Â 4¹ø) ÀÌµé ¹è¿­ÀÇ À妽º·Î¼­ »ç¿ëµÈ´Ù. ÀåÄ¡¿¡ ´ëÇÑ ¸ÞÀÌÀú ÀåÄ¡ ¹øÈ£´Â °íÁ¤µÇ¾î ÀÖ´Ù. chrdevs º¤ÅÍÀÇ °¢ ¿ø¼ÒÀÎ device_struct ÀڷᱸÁ¶´Â µÎ°¡Áö Ç׸ñ À» °¡Áö°í ÀÖ´Ù. Çϳª´Â µð¹ÙÀ̽º µå¶óÀ̹öÀÇ µî·ÏÀ̸§¿¡ ´ëÇÑ Æ÷ÀÎÅÍ ÀÌ°í, ´Ù¸¥ Çϳª´Â ÆÄÀÏ ¿¬»ê ºí·°¿¡ ´ëÇÑ Æ÷ÀÎÅÍÀÌ´Ù. ÀÌ ÆÄÀÏ ¿¬»êºí·° Àº, ÆÄÀÏÀ» ¿­°í, ¾²°í, Àаí, ´Ý´Â ÀÌ·± ÆÄÀÏ ¿¬»êÀ» ¼öÇàÇÏ´Â ¹®ÀÚ µð¹Ù À̽º µå¶óÀ̹ö¿¡ ÀÖ´Â ·çƾÀÇ ÁÖ¼ÒµéÀÌ´Ù . /proc/devices¿¡ ÀÖ´Â ¹®ÀÚ ÀåÄ¡¿¡ ´ëÇÑ ³»¿ëµéÀº ¸ðµÎ chrdevs º¤ÅÍ¿¡¼­ °¡Á®¿Â °ÍÀÌ´Ù. ¹®ÀÚ ÀåÄ¡ (¿¹¸¦ µé¾î /dev/cua0)¸¦ ³ªÅ¸³»´Â ¹®ÀÚ Æ¯¼ö ÆÄÀÏÀ» ¿­¸é, Ä¿³ÎÀº ¿Ã¹Ù¸¥ ¹®ÀÚ µð¹ÙÀ̽º µå¶óÀ̹öÀÇ ÆÄÀÏ Ã³¸® ·çƾÀÌ ºÒ¸±¼ö ÀÖµµ·Ï ¼Â¾÷À» ÇØÁÖ¾î¾ß ÇÑ´Ù. º¸ÅëÀÇ ÆÄÀÏÀ̳ª µð·ºÅ丮ó·³ °¢ ÀåÄ¡ Ư¼ö ÆÄÀÏ Àº VFS inode·Î Ç¥ÇöµÈ´Ù. ¹®ÀÚ Æ¯¼ö ÆÄÀÏ¿¡ ´ëÇÑ VFS inode´Â ÀåÄ¡ÀÇ ¸ÞÀÌÀú ½Äº°ÀÚ¿Í ¸¶ÀÌ³Ê ½Äº°ÀÚ¸¦ °¡Áö°í ÀÖ´Ù (ÀÌ´Â ¸ðµç ÀåÄ¡ Ư¼ö ÆÄÀÏ ¿¡¼­ µ¿ÀÏÇÏ´Ù). ÀÌ VFS inode´Â ÀåÄ¡ Ư¼ö ÆÄÀÏÀ» Á¶È¸ÇÑ °æ¿ì¿¡, ½ÇÁ¦ ±â¹ÝÇÏ´Â ÆÄÀÏ ½Ã½ºÅÛÀÌ (EXT2°°Àº) ÆÄÀÏ ½Ã½ºÅÛ¿¡ ½ÇÁ¦·Î ÀÖ´Â Á¤º¸¸¦ °¡Áö°í ¸¸µç´Ù. °¢ VFS inode´Â ÇÑ ¼ÂÆ®ÀÇ ÆÄÀÏ ¿¬»êµé°ú ¿¬°áµÇ¾î Àִµ¥, ÀÌµé ¿¬»êÀº ±× inode°¡ °¡¸®Å°´Â ÆÄÀÏ ½Ã½ºÅÛ °´Ã¼¿¡ µû¶ó ´Ù¸£´Ù. ¹®ÀÚ Æ¯¼ö ÆÄÀÏÀ» ³ªÅ¸³»´Â VFS inode°¡ ¸¸µé¾îÁú ¶§¸¶´Ù, ÀÌ inodeÀÇ ÆÄÀÏ ¿¬»ê ÇÔ¼öµéÀº ±âº» ¹®ÀÚ ÀåÄ¡ ¿¬»êÀ¸·Î ¼³Á¤µÈ´Ù. ÀÌ´Â ´Ü ÇϳªÀÇ ÆÄÀÏ ¿¬»ê - ÆÄÀÏ ¿­±â ¿¬»ê¸¸ °¡Áö°í ÀÖ´Ù. ÀÀ¿ëÇÁ·Î±×·¥ ÀÌ ¹®ÀÚ Æ¯¼ö ÆÄÀÏÀ» ¿­¸é, ÀÌ Æ÷°ýÀûÀÎ ¿­±â ÆÄÀÏ ¿¬»ê ÇÔ¼ö´Â, ÀåÄ¡ÀÇ ¸ÞÀÌÀú ½Äº°ÀÚ¸¦ chrdevs º¤ÅÍ¿¡ ´ëÇÑ À妽º·Î »ç¿ëÇÏ¿©, ÀÌ ÀåÄ¡¿¡ ´ëÇÑ ÆÄÀÏ ¿¬»ê ºí·°À» °¡Á®¿Â´Ù. ¶ÇÇÑ ÀÌ ¹®ÀÚ Æ¯¼ö ÆÄÀÏÀ» ¼³¸íÇÏ´Â fileÀÚ·á ±¸Á¶ÀÇ ÆÄÀÏ ¿¬»ê Æ÷ÀÎÅÍ°¡ µð¹ÙÀ̽º µå¶óÀ̹öÀÇ °ÍÀ» °¡¸®Å°µµ·Ï ÀÌ ÀÚ·á ±¸Á¶¸¦ ¼Â¾÷ÇÑ´Ù. ÀÌÈÄ, ÀÀ¿ëÇÁ·Î±×·¥¿¡¼­ ºÎ¸£´Â ¸ðµç ÆÄÀÏ ¿¬»êÀº ¹®ÀÚ ÀåÄ¡ÀÇ ÆÄÀÏ ¿¬»êÀ¸·Î ¸ÅÇÎµÇ¾î ºÒ¸®°Ô µÈ´Ù. 8.4.2 ºí·° ÀåÄ¡(Block Device) ºí·° ÀåÄ¡µéµµ ÆÄÀÏó·³ Á¢±ÙÇÏ´Â °ÍÀ» Áö¿øÇÑ´Ù. ¿­¸° ºí·° Ư¼ö ÆÄÀÏ¿¡ ¿Ã¹Ù¸¥ ÆÄÀÏ ¿¬»ê ¼¼Æ®¸¦ Á¦°øÇϴµ¥ »ç¿ëµÇ´Â ¹æ¹ýÀº ¹®ÀÚ ÀåÄ¡¿¡ »ç¿ë Çß´ø ¹æ¹ý°ú ¸Å¿ì Èí»çÇÏ´Ù. ¸®´ª½º´Â blkdevs º¤ÅÍ·Î µî·ÏµÈ ºí·° ÀåÄ¡µé À» °ü¸®ÇÑ´Ù. blkdevs´Â chrdevs º¤ÅÍ¿¡¼­¿Í ¸¶Âù°¡Áö·Î ÀåÄ¡ÀÇ ¸ÞÀÌÀú ÀåÄ¡¹øÈ£·Î À妽ºµÇ¾î ÀÖ´Ù. ¶ÇÇÑ ±× ¿£Æ®¸® ¿ª½Ã device_struct ÀÚ·á ±¸Á¶ÀÌ´Ù. ¹®ÀÚ ÀåÄ¡¿Í ´Ù¸¥ Á¡Àº, ºí·° ÀåÄ¡µéÀÇ Å¬·¡½º¶ó´Â°Ô ÀÖ´Ù´Â °Í ÀÌ´Ù. SCSI ÀåÄ¡³ª IDE ÀåÄ¡ °°Àº °ÍÀÌ ±×·± Ŭ·¡½ºÀÌ´Ù. Ŭ·¡½º´Â ¸®´ª½º Ä¿³Î¿¡ ÀÚ½ÅÀ» µî·ÏÇÏ°í Ä¿³Î¿¡ ÆÄÀÏ ÇÔ¼öµéÀ» Á¦°øÇÑ´Ù. ¾î¶² Ŭ·¡½ºÀÇ ºí·° ÀåÄ¡µé¿¡ »ç¿ëÇÏ´Â µð¹ÙÀ̽º µå¶óÀ̹ö´Â Ŭ·¡½º °íÀ¯ÀÇ Æ¯º°ÇÑ Å¬·¡ ½º ÀÎÅÍÆäÀ̽º¸¦ Á¦°øÇÑ´Ù. ±×·¡¼­ ¿¹¸¦ µé¾î SCSI µð¹ÙÀ̽º µå¶óÀ̹ö´Â, SCSI ¼­ºê½Ã½ºÅÛÀÌ Ä¿³Î¿¡ ÇØ´ç ÀåÄ¡¿¡ ´ëÇÑ ÆÄÀÏ ÇÔ¼ö¸¦ Á¦°øÇϴµ¥ »ç¿ë ÇÒ ¼ö ÀÖ´Â ÀÎÅÍÆäÀ̽º¸¦ SCSI ¼­ºê½Ã½ºÅÛ¿¡ Á¦°øÇØ¾ß ÇÑ´Ù. ¸ðµç ºí·° µð¹ÙÀ̽º µå¶óÀ̹ö´Â º¸ÅëÀÇ ÆÄÀÏ ¿¬»ê°ú ÇÔ²² ¹öÆÛ Ä³½Ã¿¡ ´ëÇÑ ÀÎÅÍÆäÀ̽º¸¦ Á¦°øÇØ¾ß ÇÑ´Ù. °¢ ºí·° µð¹ÙÀ̽º µå¶óÀ̹ö´Â blk_dev º¤ÅÍ¿¡ ÀÖ´Â blk_dev_struct ÀڷᱸÁ¶ÀÇ ³»¿ëÀ» ä¿î´Ù. ¿©±â¿¡¼­µµ, ÀÌ º¤ÅÍ¿¡ ´ëÇÑ À妽º´Â ÀåÄ¡ÀÇ ¸ÞÀÌÀú ¹øÈ£ÀÌ´Ù. blk_dev_struct ÀڷᱸÁ¶´Â ¿äû(request) ·çƾÀÇ ÁÖ¼Ò¿Í, ¹öÆÛ Ä³½Ã°¡ ÇÑ ºí·°ÀÇ µ¥ÀÌÅ͸¦ Àаųª ¾²±âÀ§ÇØ µå¶óÀ̹ö¿¡°Ô ÇÏ´Â ¿äûÀ» ³ªÅ¸³»´Â request ÀڷᱸÁ¶ ¸®½ºÆ®¿¡ ´ëÇÑ Æ÷ÀÎÅÍ·Î ±¸¼ºµÇ¾î ÀÖ´Ù. blk_dev +-----------------+ | | | | | | +-----------------+ | request_fn() | request request blk_dev_struct | current_request |-->+---------+ +-->+---------+ | | |rq_status| | |rq_status| +-----------------+ +---------+ | +---------+ | | |rq-dev | | |rq-dev | | | +---------+ | +---------+ | : | |mcd + | |mcd + | : | +---------+ | +---------+ | | | | | | | | | | | | | | +-----------------+ +---------+ | +---------+ |sem | | |sem | buffer_head +---------+ | +---------+ +-----------+ |bh | | |bh |--+ 0x0301 | b_dev |<--+ +---------+ | +---------+ | +-----------+ | |tail | | |tail | | 39 | b_blocknr | | +---------+ | +---------+ | +-----------+ | |next |--+ |next | | | b_state | | +---------+ +---------+ | +-----------+ | | | b_count | +--------------------------------+ +-----------+ 1024 | b_size | +-----------+ | | | | +-----------+ | b_next | +-----------+ | b_prev | +-----------+ | | | | +-----------+ | b_data | +-----------+ ±×¸² 8.2 : Buffer Cache Block Device Requests ¹öÆÛ Ä³½Ã´Â µî·ÏµÈ ÀåÄ¡¿¡¼­ µ¥ÀÌÅ͸¦ Àаųª ¾²·Á°í ÇÒ ¶§, requestÀÚ·á ±¸Á¶¸¦ blk_dev_struct¿¡ Ãß°¡ÇÑ´Ù. ±×¸² 8.2´Â °¢request°¡ Çϳª ÀÌ»óÀÇ buffer_head ÀڷᱸÁ¶¿¡ ´ëÇÑ Æ÷ÀÎÅ͸¦ °¡Áö°í ÀÖ°í, °¢ request´Â ÇÑ ºí·°ÀÇ µ¥ÀÌÅ͸¦ Àаųª ¾²¶ó´Â ¿äûÀ̶ó´Â °ÍÀ» º¸¿©ÁØ´Ù. buffer_head ÀڷᱸÁ¶´Â ¹öÆÛ Ä³½Ã¿¡ ÀÇÇØ ¶ôÀÌ µÇ¸ç, ÀÌ ¹öÆÛ·ÎÀÇ ºí·° ¿¬»êÀÌ ³¡³ª±æ ±â´Ù¸®´Â ÇÁ·Î¼¼½º°¡ ÀÖÀ» °ÍÀÌ´Ù. °¢ request ±¸Á¶Ã¼´Â Á¤Àû ¸®½ºÆ®ÀÎ all_requests ¸®½ºÆ®¿¡¼­ ÇÒ´çµÈ´Ù. ¿äûÀÌ ÅÖºó ¿äû ¸®½ºÆ®¿¡ Ãß°¡µÇ¸é, ÀÌ ¿äû Å¥¸¦ ó¸®Çϱâ À§ÇØ µå¶óÀ̹öÀÇ ¿äû ÇÔ¼ö°¡ ºÒ¸®°Ô µÈ´Ù. ±×·¯ ¸é µå¶óÀ̹ö´Â ±×Àú ´Ü¼øÈ÷ ¸®½ºÆ®¿¡ ÀÖ´Â ¸ðµç request¸¦ ó¸®ÇÒ °ÍÀÌ´Ù. ÀÏ´Ü µð¹ÙÀ̽º µå¶óÀ̹ö°¡ ¿äûÀ» ó¸®ÇÏ°í ³ª¸é, µå¶óÀ̹ö´Â request±¸Á¶ ü¿¡¼­ °¢°¢ÀÇ buffer_head ±¸Á¶Ã¼¸¦ ¾ø¾Ö°í, ÀÌ°ÍÀÌ °»½ÅµÇ¾úÀ½À» Ç¥½Ã ÇÏ°í À̵éÀÇ ¶ôÀ» ÇØÁ¦ÇØ¾ß ÇÑ´Ù. ÀÌ·¸°Ô buffer_headÀÇ ¶ôÀ» ÇØÁ¦Çϸé, ±× ºí·° ¿¬»êÀÌ ³¡³ª±æ ±â´Ù¸®¸ç Àáµé¾îÀÖ´Â ÇÁ·Î¼¼½º°¡ ÀÖÀ» ¶§ À̸¦ ±ú¿ì°Ô µÈ´Ù. ÀÌ·± ¿¹·Î ÆÄÀÏ À̸§ À» ÇØ°áÇÏ´Â °úÁ¤¿¡¼­ EXT2 ÆÄÀÏ ½Ã½ºÅÛÀÌ ÆÄÀÏ ½Ã½ºÅÛÀ» ´ã°í ÀÖ´Â ºí·° ÀåÄ¡·ÎºÎÅÍ ´ÙÀ½ EXT2 µð·ºÅ丮 ¿£Æ®¸®¸¦ Æ÷ÇÔÇÏ°í ÀÖ´Â µ¥ÀÌÅÍ ºí·°À» Àоî¾ß ÇÏ´Â °æ¿ì°¡ ÀÖ´Ù. ÇÁ·Î¼¼½º´Â µð¹ÙÀ̽º µå¶óÀ̹ö°¡ ÀÚ½ÅÀ» ±ú¿ï ¶§±îÁö Àáµé°Ô µÇ¸ç, ±ú¾î³µÀ» ¶§¿¡´Â buffer_head¿¡ µð·ºÅ丮 ¿£Æ®¸®°¡ µé¾îÀÖÀ» °ÍÀÌ´Ù. ÀÌÁ¦ request ÀڷᱸÁ¶´Â ºñ¾ú´Ù°í Ç¥½ÃµÇ°í, ÀÌ ÀÚ·á ±¸Á¶´Â ÀÌÁ¦ ´Ù¸¥ ºí·° ¿äûÀ» À§ÇØ »ç¿ëµÉ ¼ö ÀÖ°Ô µÈ´Ù. 8.5 ÇÏµå µð½ºÅ©(Hard Disk) µð½ºÅ© µå¶óÀ̺ê´Â ÀڷḦ ȸÀüÇÏ´Â µð½ºÅ© ¿ø¹Ý(platter)¿¡ ÀúÀåÇÔÀ¸·Î½á ÀڷḦ Á»´õ ¿µ¼ÓÀûÀ¸·Î ÀúÀåÇÒ¼ö ÀÖ°Ô ÇÑ´Ù. ÀڷḦ ±â·ÏÇϱâ À§ÇØ ¾ÆÁÖ Á¶±×¸¸ Çìµå°¡ ¿ø¹ÝÀÇ Ç¥¸é¿¡ ÀÖ´Â ¹Ì¼¼ÇÑ ¾Ë°»À̸¦ ÀÚ¼ºÀ» ¶ç°Ô ÇÑ´Ù. Çìµå´Â ƯÁ¤ ¹Ì¼¼ÇÑ ¾Ë°»ÀÌÀÇ ÀÚ¼ºÀ» °¨ÁöÇÏ¿© ÀڷḦ Àд´Ù. µð½ºÅ© µå¶óÀ̺ê´Â Çϳª ÀÌ»óÀÇ ¿ø¹Ý(platter)À¸·Î ±¸¼ºµÇ¾î ÀÖ°í,°¢ ¿ø¹Ý Àº ¹Ì¼¼ÇÏ°Ô °£ À¯¸®³ª ¼¼¶ó¹Í º¹ÇÕ¹°Áú¿¡ ¹Ì¼¼ÇÑ »êȭöÀÌ ¾ãÀºÃþÀ¸·Î ÄÚÆõǾî ÀÖ´Ù. ¿ø¹ÝµéÀº °¡¿îµ¥ Ãà(spindle)¿¡ ¿¬°áµÇ¾î ÀÏÁ¤ÇÑ ¼Óµµ·Î ȸÀüÀ» Çϴµ¥, ÀÌ È¸Àü ¼Óµµ´Â ¸ðµ¨¿¡ µû¶ó¼­ 3000RPMºÎÅÍ 10000RPM±îÁö ´Ù¸£´Ù. À̸¦ ´ÜÁö 360RPMÀ¸·Î ȸÀüÇÏ´Â Ç÷ÎÇÇ µð½ºÅ©¿Í ºñ±³Çغ¸¸é ±× Â÷À̸¦ ´À³¥ ¼ö ÀÖÀ» °ÍÀÌ´Ù. µð½ºÅ©ÀÇ Àбâ/¾²±â Çìµå´Â ÀڷḦ ÀÐ°í ¾²´Â ¿ªÇÒÀ» Çϸç, °¢ Ç¥¸é¸¶´Ù ÇϳªÀÇ Çìµå°¡ ÀÖ¾î °¢ ¿ø¹Ý¿¡ Çìµå°¡ ½ÖÀ¸·Î Á¸ÀçÇÑ´Ù. Àбâ/¾²±â Çìµå´Â ¹°¸®ÀûÀ¸·Î ¿ø¹ÝÀÇ Ç¥¸éÀ» °Çµå¸®Áö ¾ÊÀ¸¸ç, ´ë½Å ¾ÆÁÖ ¾ãÀº(¹é¸¸ºÐÀÇ 10ÀÎÄ¡ Á¤µµ) °ø±â Äí¼Ç À§¿¡ ¶°ÀÖ´Ù. Àбâ/¾²±â Çìµå´Â. Çìµå¸¦ ¿òÁ÷ÀÌ´Â ÀåÄ¡(actuator)¿¡ ÀÇÇØ ¿ø¹ÝÀÇ Ç¥¸éÀ» °¡·ÎÁú·¯ ¿òÁ÷ÀδÙ. ¸ðµç Àбâ/¾²±â Çìµå´Â ¼­·Î ºÙ¾î À־ ¿ø¹ÝÀÇ Ç¥¸é ¿¡¼­ ¶È°°ÀÌ ¿òÁ÷ÀÌ°Ô µÈ´Ù. ¿ø¹ÝÀÇ °¢ Ç¥¸éÀº Æ®·¢(track)À̶ó°í ÇÏ´Â ¾ÆÁÖ °¡´Â µ¿½É¿øÀ¸·Î ³ª´©¾î Áø´Ù. Æ®·¢0Àº °¡Àå ¹Ù±ù¿¡ ÀÖ´Â Æ®·¢ÀÌ°í, °¡Àå ³ôÀº ¹øÈ£¸¦ °®´Â Æ®·¢Àº Á᫐ Ãà¿¡ °¡Àå °¡±î¿î Æ®·¢ÀÌ´Ù. ½Ç¸°´õ(cylinder)´Â ¶È°°Àº ¹øÈ£¸¦ °¡Áö ´Â Æ®·¢ÀÇ ÁýÇÕÀÌ´Ù. µû¶ó¼­ µð½ºÅ©¿¡ ÀÖ´Â ¸ðµç ¿ø¹ÝÀÇ ¾çÂÊ¿¡ ÀÖ´Â 5¹ø ° Æ®·¢Àº ¸ðµÎ 5¹ø ½Ç¸°´õÀÌ´Ù. ½Ç¸°´õÀÇ °³¼ö´Â Æ®·¢ÀÇ °³¼ö¿Í °°À¸¹Ç·Î Á¾Á¾ µð½ºÅ©ÀÇ ±âÇÏÀû ±¸Á¶¸¦ ¼³¸íÇÒ ¶§ ½Ç¸°´õ¶ó´Â ¿ë¾î¸¦ ¾²´Â °ÍÀ» º¼ ¼ö ÀÖÀ» °ÍÀÌ´Ù. °¢ Æ®·¢Àº ¼½ÅÍ(sector)·Î ³ª´¶´Ù. ¼½ÅÍ´Â ÀڷḦ Çϵåµð½ºÅ©¿¡ ÀúÀå ÇÏ°í ÀоîµéÀÏ ¼ö ÀÖ´Â ÃÖ¼Ò´ÜÀ§·Î µð½ºÅ©ÀÇ ºí·° Å©±â¿Í °°´Ù. ÀϹÝÀûÀÎ ¼½ÅÍÅ©±â´Â 512¹ÙÀÌÆ®ÀÌ°í, µð½ºÅ©¸¦ Á¦ÀÛÇÑ ÈÄ Æ÷¸ËÀ» ÇÒ ¶§ ÀÌ Å©±â°¡ ÁöÁ¤µÈ´Ù. µð½ºÅ©´Â º¸Åë ±âÇÏÀû ±¸Á¶ - ½Ç¸°´õ¿Í Çìµå, ±×¸®°í ¼½ÅÍÀÇ °³¼ö - ·Î À̾߱âÇÑ´Ù. ¿¹¸¦ µé¾î ºÎÆÃÇÒ ¶§ ¸®´ª½º¿¡¼­ ÇÊÀÚÀÇ IDE µð½ºÅ© ÁßÀÇ Çϳª¸¦ ´ÙÀ½°ú °°ÀÌ ³ªÅ¸³­´Ù. hdb : Conner Peripherals 540MB-CFS540A, 516MB w/64kB Cache, CHS=1050/16/63 ÀÌ°ÍÀº µð½ºÅ©°¡ 1050°³ÀÇ ½Ç¸°´õ (Æ®·¢), 16°³ÀÇ Çìµå (8°³ÀÇ ¿ø¹Ý), ±×¸®°í Æ®·¢¸¶´Ù 63°³ÀÇ ¼½Å͸¦ °¡Áö°í ÀÖ´Ù´Â °ÍÀ» ¸»ÇÑ´Ù. °¢ ¼½ÅÍ Áï ºí·°¸¶´Ù 512¹ÙÀÌÆ®ÀÇ Å©±â¸¦ °¡Áö¹Ç·Î, µð½ºÅ©ÀÇ ÀúÀå¿ë·®Àº 529200 ¹ÙÀÌÆ®°¡ µÈ´Ù. ÀÌ´Â À§¿¡¼­ º¸¿©ÁÖ´Â µð½ºÅ©ÀÇ ¿ë·® 516MBÇÏ°í´Â Â÷ÀÌ°¡ Àִµ¥, ÀÌ´Â ¼½ÅÍ ÁßÀÇ ÀϺδ µð½ºÅ© ÆÄƼ¼Ç Á¤º¸¸¦ °£Á÷Çϴµ¥ »ç¿ë µÇ±â ¶§¹®ÀÌ´Ù. ¾î¶² µð½ºÅ©µéÀº ÀÚµ¿À¸·Î ¹èµå ¼½ÅÍ(bad sector)¸¦ ã¾Æ ³»¼­ µð½ºÅ©°¡ Á¦´ë·Î ÀÛµ¿Çϵµ·Ï À妽º¸¦ ´Ù½Ã ºÙÀ̱⵵ ÇÑ´Ù. ÇÏµå µð½ºÅ©´Â ÆÄƼ¼Ç(partition)À¸·Î ÂÉ°³Áú ¼ö ÀÖ´Ù. ÆÄƼ¼ÇÀº Ưº°ÇÑ ¸ñÀûÀ» À§ÇØ ÇÒ´çÇÑ ¼½Å͵éÀÇ °Å´ëÇÑ ±×·ìÀÌ´Ù. µð½ºÅ©ÀÇ ÆÄƼ¼ÇÀ» ³ª´©´Â °ÍÀº µð½ºÅ©¸¦ ¿©·¯ ¿î¿µÃ¼Á¦·Î ¾²°Å³ª, ´Ù¸¥ ¸ñÀûÀ¸·Î »ç¿ëÇÒ ¼ö ÀÖµµ·Ï ÇØÁØ´Ù. ¸¹Àº ¸®´ª½º ½Ã½ºÅÛÀº ÇϳªÀÇ µð½ºÅ©¿¡ ¼¼°³ÀÇ ÆÄƼ¼ÇÀ» °¡Áø´Ù - Çϳª´Â DOS ÆÄÀÏ ½Ã½ºÅÛÀÌ°í, ´Ù¸¥ Çϳª´Â EXT2 ÆÄÀÏ ½Ã½ºÅÛÀ», ¸¶Áö¸· Àº ½º¿Ò ÆÄƼ¼ÇÀÌ´Ù. Çϵåµð½ºÅ©ÀÇ ÆÄƼ¼Ç Á¤º¸´Â ÆÄƼ¼Ç Å×ÀÌºí¿¡ ÀûÇô ÀÖ´Ù. ÆÄƼ¼Ç Å×À̺íÀÇ °¢ ¿£Æ®¸®´Â ÆÄƼ¼ÇÀÌ ¾îµð¼­ ½ÃÀÛÇÏ°í ¾îµð¼­ ³¡³ª´ÂÁö¸¦ Çìµå¿Í ¼½ÅÍ, ½Ç¸°´õ ¹øÈ£¸¦ °¡Áö°í ±â¼úÇÑ´Ù. fdisk·Î DOS·Î Æ÷¸ËµÈ µð½ºÅ©´Â 4°³ÀÇ 1Â÷ µð½ºÅ© ÆÄƼ¼Ç(primary disk partition)À» °¡Áú ¼ö ÀÖ´Ù. ÆÄƼ¼Ç Å×À̺íÀÇ 4°³ ¿£Æ®¸® ¸ðµÎ°¡ ¾²¿©¾ß ÇÏ´Â °ÍÀº ¾Æ´Ï´Ù. fdisk´Â ¼¼°¡Áö À¯ÇüÀÇ ÆÄƼ¼ÇÀ» Áö¿øÇϴµ¥, °¢°¢ 1Â÷(primary), È®Àå(extended), ³í¸®(logical) ÆÄƼ¼ÇÀÌ´Ù. È®Àå ÆÄƼ¼ÇÀº ÁøÂ¥ ÆÄƼ¼ÇÀÌ ¾Æ´Ï¶ó, ¿©·¯ °³ÀÇ ³í¸® ÆÄƼ¼ÇÀ» °¡Áö°í ÀÖ´Â °ÍÀÌ´Ù. È®ÀåÆÄƼ¼Ç°ú ³í¸® ÆÄƼ¼ÇÀº 1Â÷ ÆÄƼ¼ÇÀ» ³×°³¹Û¿¡ °¡Áú ¼ö ÀÖ´Â Á¦ÇÑÀ» ¿ìȸÇϱâ À§ÇÑ ¹æ¹ýÀ¸·Î °³¹ßµÇ¾ú´Ù. ´ÙÀ½Àº µÎ°³ÀÇ 1Â÷ ÆÄƼ¼ÇÀ» °¡Áö°í ÀÖ´Â µð½ºÅ©¿¡ ´ëÇØ fdisk¸¦ ½ÇÇàÇßÀ» ¶§ÀÇ Ãâ·Â °á°úÀÌ´Ù : Disk /dev/sda: 64 heads, 32 sectors, 510 cylinders Units = cylinders of 2048 * 512 bytes Device Boot Begin Start End Blocks Id System /dev/sda1 1 1 478 489456 83 Linux native /dev/sda2 479 479 510 32768 82 Linux swap Expert command (m for help) : p gendisk_head | gendisk gendisk | +------------+ +------------+ +-->|major | 8 +-->|major | 3 +------------+ | +------------+ |major_name |"sd" | |major_name | "ide0" +------------+ | +------------+ |minor_shift | | |minor_shift | +------------+ | +------------+ |max_p | | |max_p | +------------+ | +------------+ |max_nr | | |max_nr | +------------+ | +------------+ |init() | | |init() | hd_struct[] +------------+ | +------------+ +------------+ ^ |part | | |part |-->| start_sect | | +------------+ | +------------+ | nr_sects | | |sizes | | |sizes | +------------+ | +------------+ | +------------+ | | | |nr_real | | |nr_real | | : | | +------------+ | +------------+ | : | max_p |real_devices| | |real_devices| | : | | +------------+ | +------------+ | | | |next |-----+ |next | +------------+ | +------------+ +------------+ | start_sect | | | nr_sects | | +------------+ v ±×¸² 8.3 : Linked list of disks Disk /dev/sda: 64 heads, 32 sectors, 510 cylinders Nr AF Hd Sec Cyl Hd Sec Cyl Start Size ID 1 00 1 1 0 63 32 477 32 978912 83 2 00 0 1 478 63 32 509 978944 65536 82 3 00 0 0 0 0 0 0 0 0 00 4 00 0 0 0 0 0 0 0 0 00 À̴ ù¹ø° ÆÄƼ¼ÇÀÌ ½Ç¸°´õ 0 (Áï Æ®·¢ 0), Çìµå 1, ¼½ÅÍ 1¿¡¼­ ½ÃÀÛ Çϸç, 477¹ø ½Ç¸°´õ, 32°³ÀÇ ¼½ÅÍ, 63°³ÀÇ Çìµå±îÁö ÀÖ´Ù´Â °ÍÀ» º¸¿© ÁØ´Ù. ¿©±â¿£ Æ®·¢´ç 32°³ÀÇ ¼½ÅÍ¿Í 64°³ÀÇ Àбâ/¾²±â Çìµå°¡ ÀÖÀ¸¹Ç·Î, ÀÌ ÆÄƼ¼ÇÀÇ Å©±â´Â À־ ½Ç¸°´õ °³¼ö¿Í °°´Ù. fdisk´Â ±âº»ÀûÀ¸·Î ÆÄƼ¼ÇÀ» ½Ç¸°´õ¸¦ °æ°è·Î ¹è¿­ÇÑ´Ù. ÀÌ´Â ¸Ç ¹Ù±ù ½Ç¸°´õ 0¿¡¼­ ½ÃÀÛ ÇÏ¿© ÃàÀÌ ÀÖ´Â ¹æÇâÀ¸·Î ¾ÈÂÊÀ¸·Î µé¾î°¡ 478°³ÀÇ ½Ç¸°´õ¸¦ °®´Â´Ù. µÎ¹ø° ÆÄƼ¼ÇÀº ½º¿Ò ÆÄƼ¼ÇÀ¸·Î¼­ ´ÙÀ½ ½Ç¸°´õ (478)¿¡¼­ ½ÃÀÛÇÏ¿© µð½ºÅ©ÀÇ °¡Àå ¾ÈÂÊ ½Ç¸°´õ±îÁö »¸ÃÄÀÖ´Ù. ¸®´ª½º´Â ÃʱâÈ­ÇÏ´Â µ¿¾È ½Ã½ºÅÛ¿¡ ÀÖ´Â Çϵåµð½ºÅ©ÀÇ ¹èÄ¡µµ¸¦ ±×·Á À̸¦ ¸ÅÇÎÇÑ´Ù. ¸ÕÀú ½Ã½ºÅÛ¿¡ Çϵåµð½ºÅ©°¡ ¸î °³°¡ ÀÖ°í ¾î¶² Á¾·ùÀÎÁö ¾Ë¾Æ³½´Ù. ³ª¾Æ°¡ °³º° µð½ºÅ©ÀÇ ÆÄƼ¼ÇÀÌ ¾î¶»°Ô ³ª´©¾îÁ³´ÂÁöµµ ã¾Æ ³½´Ù. À̵éÀº gendisk ÀÚ·á ±¸Á¶·Î Ç¥½ÃµÇ¸ç, À̵éÀÇ ¸®½ºÆ®´Â gendisk_head ¸®½ºÆ® Æ÷ÀÎÅÍ°¡ °¡¸®Å°°í ÀÖ´Ù. IDE°°Àº °³º° µð½ºÅ© ¼­ºê ½Ã½ºÅÛÀº ÃʱâÈ­µÉ ¶§ ÀÚ½ÅÀÌ Ã£Àº µð½ºÅ©¸¦ gendisk ÀڷᱸÁ¶·Î ¸¸µé¾î ³½´Ù. µð½ºÅ© ¼­ºê½Ã½ºÅÛÀº À̸¦ ÆÄÀÏ¿¬»êÀ» µî·ÏÇÏ°í ¿£Æ®¸®¸¦ blk_dev ÀڷᱸÁ¶¿¡ ³ÖÀ» ¶§¿Í µ¿½Ã¿¡ ÇÑ´Ù. °¢ gendisk ÀڷᱸÁ¶´Â °íÀ¯ÇÑ ¸ÞÀÌÀú ÀåÄ¡ ¹øÈ£¸¦ °¡Áö¸ç, ÀÌ´Â ºí·° Ư¼ö ÀåÄ¡ÀÇ ¸ÞÀÌÀú ¹øÈ£¿Í ÀÏÄ¡ÇÑ´Ù. ¿¹¸¦ µé¾î, SCSI µð½ºÅ© ¼­ºê½Ã½ºÅÛÀº ¸ðµç SCSI µð½ºÅ© ÀåÄ¡¿¡ Àû¿ëµÇ´Â ¸ÞÀÌÀú¹øÈ£ 8À» °¡Áö´Â ÇϳªÀÇ gendisk ¿£Æ®¸® ("sd")¸¦ ¸¸µç´Ù. ±×¸² 8.3Àº µÎ°³ÀÇ gendisk ¿£Æ®¸®¸¦ º¸¿©ÁØ´Ù. ¾ÕÀÇ °ÍÀº SCSI µð½ºÅ© ¼­ºê ½Ã½ºÅÛÀÇ °ÍÀÌ°í, ´ÙÀ½ °ÍÀº IDE µð½ºÅ© ÄÁÆ®·Ñ·¯ °ÍÀÌ´Ù. ÀÌ°ÍÀº ù¹ø° IDE ÄÁÆ®·Ñ·¯ÀÎ ide0ÀÌ´Ù. µð½ºÅ© ¼­ºê½Ã½ºÅÛÀÌ ÃʱâÈ­ÇÒ ¶§ ¸¸µå´Â gendisk ¿£Æ®¸®´Â, ´ÜÁö ¸®´ª½º °¡ ÆÄƼ¼ÇÀ» °Ë»çÇÒ ¶§¿¡¸¸ ¾²ÀδÙ. ´ë½Å, °¢ µð½ºÅ© ¼­ºê½Ã½ºÅÛÀº ÀåÄ¡ÀÇ ¸ÞÀÌÀú¿Í ¸¶ÀÌ³Ê ÀåÄ¡ ¹øÈ£¸¦ ¹°¸®ÀûÀÎ µð½ºÅ©¿¡ ÀÖ´Â ÆÄƼ¼Ç°ú ¸ÅÇνÃų ¼ö ÀÖµµ·Ï ÀڽŸ¸ÀÇ ÀڷᱸÁ¶¸¦ ±¸ÃàÇÑ´Ù. ºí·° ÀåÄ¡°¡ ¹öÆÛ Ä³½Ã³ª ÆÄÀÏ ¿¬»êÀ» ÅëÇØ ÀÐÇôÁö°Å³ª ¾²ÀÏ ¶§, Ä¿³ÎÀº ÀÌ ¿¬»êÀ» ºí·° ÀåÄ¡ Ư¼ö ÆÄÀÏ (¿¹¸¦ µé¾î /dev/sda2)¿¡¼­ ¹ß°ßÇÑ ¸ÞÀÌÀú ÀåÄ¡¹øÈ£¸¦ ÀÌ¿ëÇÏ¿© ¿Ã¹Ù¸¥ ÀåÄ¡·Î º¸³»°Ô µÈ´Ù. ¸¶ÀÌ³Ê ÀåÄ¡ ¹øÈ£¸¦ ½ÇÁ¦ ¹°¸®Àû ÀåÄ¡¿¡ ¿¬°áÇÏ´Â °ÍÀº °³º° µð¹ÙÀ̽º µå¶óÀ̹ö³ª ¼­ºê½Ã½ºÅÛÀÇ ¿ªÇÒÀÌ´Ù. 8.5.1 IDE µð½ºÅ© Áö±Ý ¸®´ª½º ½Ã½ºÅÛ¿¡¼­ °¡Àå ÀϹÝÀûÀ¸·Î »ç¿ëÇÏ´Â µð½ºÅ©´Â IDE(Integrated Disk Electronics) µð½ºÅ©ÀÌ´Ù. IDE´Â SCSI°°Àº I/O ¹ö½º °¡ ¾Æ´Ï¶ó µð½ºÅ© ÀÎÅÍÆäÀ̽ºÀÌ´Ù . °¢ IDE ÄÁÆ®·Ñ·¯´Â µÎ°³±îÁö µð½ºÅ©¸¦ Áö¿øÇÒ ¼ö ÀÖ´Ù. Çϳª´Â ÁÖ(master) µð½ºÅ©ÀÌ°í ´Ù¸¥ Çϳª´Â Á¾¼Ó(slave) µð½ºÅ©ÀÌ´Ù. ÁÖÀÌ³Ä ¾Æ´Ï¸é Á¾¼ÓÀÌ³Ä ´Â º¸Åë µð½ºÅ©¿¡ ÀÖ´Â Á¡ÆÛ·Î ¼³Á¤ÇÑ´Ù. ½Ã½ºÅÛ¿¡ Àִ ù¹ø° IDE ÄÁÆ® ·Ñ·¯´Â 1Â÷(primary) IDE ÄÁÆ®·Ñ·¯¶ó°í ÇÏ°í ´ÙÀ½ °ÍÀº 2Â÷(secondary) ÄÁÆ®·Ñ·¯¶ó°í ÇÑ´Ù. IDE´Â 1ÃÊ¿¡ 3.3 MbyteÀÇ µ¥ÀÌÅ͸¦ Àü¼ÛÇÒ ¼ö ÀÖÀ¸¸ç, IDE µð½ºÅ©ÀÇ ÃÖ´ë Å©±â´Â 538 MBÀÌ´Ù. È®Àå IDE (Extended IDE, EIDE) ´Â µð½ºÅ©ÀÇ Å©±â¸¦ ÃÖ´ë 8.6 GB, Àü¼Û¼Óµµ¸¦ ÃÊ´ç 16.6 MB±îÁö ¿Ã¸° °Í ÀÌ´Ù. IDE¿Í EIDE µð½ºÅ©´Â SCSI µð½ºÅ©º¸´Ù ½Î¼­ ±Ù·¡ÀÇ ´ëºÎºÐÀÇ PC´Â º¸µå»ó¿¡ Çϳª ÀÌ»óÀÇ IDE ÄÁÆ®·Ñ·¯¸¦ °¡Áö°í ÀÖ´Ù. ¸®´ª½º´Â IDE µð½ºÅ©ÀÇ À̸§À» µð½ºÅ© ÄÁÆ®·Ñ·¯¸¦ ¹ß°ßÇÑ ¼ø¼­¿¡ µû¶ó ºÙÀδÙ. 1Â÷ ÄÁÆ®·Ñ·¯ÀÇ ÁÖ µð½ºÅ©´Â /dev/hda, Á¾¼Ó µð½ºÅ©´Â /dev/hdb ÀÌ´Ù. /dev/hdc´Â 2Â÷ IDE ÄÁÆ®·Ñ·¯¿¡ ÀÖ´Â ÁÖ µð½ºÅ©ÀÌ´Ù. IDE ¼­ºê ½Ã½ºÅÛÀº ¸®´ª½º Ä¿³Î¿¡ IDE ÄÁÆ®·Ñ·¯¸¦ µî·ÏÇÏÁö¸¸ µð½ºÅ©¸¦ µî·ÏÇÏ´Â °Í Àº ¾Ê´Â´Ù. 1Â÷ IDE ÄÁÆ®·Ñ·¯¿¡ ´ëÇÑ ¸ÞÀÌÀú ½Äº°ÀÚ(¶Ç´Â ÀåÄ¡ ¹øÈ£)´Â 3ÀÌ°í, 2Â÷ IDE ÄÁÆ®·Ñ·¯´Â 22ÀÌ´Ù. ±×·¡¼­ ½Ã½ºÅÛÀÌ µÎ°³ÀÇ IDE ÄÁÆ®·Ñ ·¯¸¦ °¡Áö°í ÀÖ´Ù¸é, blk_dev¿Í blkdevs º¤ÅÍÀÇ 3¹ø°ú 22¹ø À妽º¿¡ IDE ¼­ºê½Ã½ºÅÛÀÇ ¿£Æ®¸®°¡ ÀÖÀ» °ÍÀÌ´Ù. IDE µð½ºÅ©ÀÇ ºí·° Ư¼ö ÆÄÀÏÀº ÀÌ·± ¹øÈ£ ºÙÀÌ´Â ¹æ¹ýÀ» ¹Ý¿µÇÏ¿©, 1Â÷ IDE ÄÁÆ®·Ñ·¯¿¡ ¿¬°áµÇ¾î ÀÖ´Â /dev/hda¿Í /dev/hdb µÎ °³´Â ¸ÞÀÌÀú ½Äº°ÀÚ·Î 3À» °¡Áø´Ù. Ä¿³ÎÀº ÀÌµé ºí·° Ư¼ö ÆÄÀÏÀ» °ü¸®ÇÏ´Â IDE ¼­ºê½Ã½ºÅÛ¿¡ ´ëÇÑ ÆÄÀÏ ¿¬»êÀ̳ª ¹öÆÛ Ä³½Ã ¿¬»êÀ», ¸ÞÀÌÀú ½Äº°ÀÚ¸¦ À妽º·Î »ç¿ëÇÏ¿© ¾Ë¾Æ³½ IDE ¼­ºê½Ã½ºÅÛ À¸·Î Àü´ÞÇÑ´Ù. ¾î¶² ¿äûÀÌ µé¾î¿ÔÀ» ¶§ ¾î¶² IDE µð½ºÅ©¿¡°Ô ¿äûÀÌ µé¾î¿Ô´ÂÁö ¾Ë¾Æ³»´Â °ÍÀº IDE ¼­ºê½Ã½ºÅÛÀÇ ¸òÀÌ´Ù. À̸¦ À§ÇØ IDE ¼­ºê ½Ã½ºÅÛÀº ÀåÄ¡ Ư¼ö ½Äº°ÀÚ¿¡ ÀÖ´Â ¸¶ÀÌ³Ê ÀåÄ¡ ¹øÈ£¸¦ »ç¿ëÇϴµ¥, ÀÌ°Í Àº ¿Ã¹Ù¸¥ µð½ºÅ©ÀÇ ÇØ´çÇÏ´Â ÆÄƼ¼ÇÀ¸·Î ¿äûÀ» º¸³¾ ¼ö ÀÖµµ·Ï ÇÏ´Â Á¤º¸¸¦ °¡Áö°í ÀÖ´Ù. 1Â÷ IDE ÄÁÆ®·Ñ·¯¿¡ ÀÖ´Â Á¾¼Ó IDE µå¶óÀ̺êÀÎ /dev/hdbÀÇ ÀåÄ¡ ½Äº°ÀÚ´Â (3,64)ÀÌ°í, ÀÌ µð½ºÅ©ÀÇ Ã¹¹ø° ÆÄƼ¼Ç (/dev/hdb1)¿¡ ´ëÇÑ ÀåÄ¡ ½Äº°ÀÚ´Â (3,65)ÀÌ´Ù. 8.5.2 IDE ¼­ºê½Ã½ºÅÛÀÇ ÃʱâÈ­ IDE µð½ºÅ©´Â IBM PCÀÇ ¿ª»çÀÇ ¸¹Àº ºÎºÐÀ» ÇÔ²² ÇØ¿Ô´Ù. ÀÌ ½Ã°£À» ÅëÇØ À̵é ÀåÄ¡·ÎÀÇ ÀÎÅÍÆäÀ̽ºµµ º¯ÇØ ¿ÔÀ¸¸ç, ÀÌ´Â IDE ¼­ºê½Ã½ºÅÛÀÇ ÃʱâÈ­ ¸¦ óÀ½ »ý°¢Çß´ø °Íº¸´Ù ´õ º¹ÀâÇÏ°Ô ¸¸µç´Ù. ¸®´ª½º°¡ Áö¿øÇÒ ¼ö ÀÖ´Â ÃÖ´ë IDE ÄÁÆ®·Ñ·¯ÀÇ °¹¼ö´Â 4°³ÀÌ´Ù. °¢ ÄÁÆ®·Ñ ·¯´Â ide_hwifs º¤ÅÍ¿¡ ÀÖ´Â ide_hwif_t ÀڷᱸÁ¶·Î Ç¥ÇöÇÑ´Ù. °¢ ide_hwif_t ÀڷᱸÁ¶´Â µÎ°³ÀÇ ide_drive_t ÀڷᱸÁ¶¸¦ °¡Áö°í ÀÖÀ¸¸ç, ÀÌ Áß Çϳª´Â ÁÖ IDE µå¶óÀ̺ê, ´Ù¸¥ Çϳª´Â Á¾¼Ó IDE µå¶óÀ̺긦 À§ÇÑ °ÍÀÌ´Ù. IDE ¼­ºê½Ã½ºÅÛ¸¦ ÃʱâÈ­ÇÒ ¶§ ¸®´ª½º´Â ¸ÕÀú ½Ã½ºÅÛÀÇ CMOS ¸Þ¸ð ¸®¿¡ µð½ºÅ© Á¤º¸°¡ ÀÖ´ÂÁö »ìÆ캻´Ù. CMOS ¸Þ¸ð¸®´Â ¹åµ¥¸®¿¡¼­ Àü¿øÀ» °ø±Þ¹Þ±â ¶§¹®¿¡ PCÀÇ Àü¿øÀ» ²ô´õ¶óµµ ³»¿ë¹°À» ÀÒ¾î¹ö¸®Áö ¾Ê´Â ¸Þ¸ð¸® ´Ù. ÀÌ CMOS ¸Þ¸ð¸®´Â, PCÀÇ Àü¿øÀÌ ÄÑÁ® ÀÖ´ÂÁö ²¨Á® ÀÖ´ÂÁö¿¡ ¹«°üÇÏ°Ô µ¹¾Æ°¡´Â ½Ç½Ã°£ ½Ã°è(real time clock, RTC) ÀåÄ¡¿¡ µé¾îÀÖ´Â °ÍÀÌ´Ù. CMOS ¸Þ¸ð¸®ÀÇ À§Ä¡´Â ½Ã½ºÅÛÀÇ BIOS¿¡¼­ ¼³Á¤Çϸç, ÀÌ´Â ¾î¶² IDE ÄÁÆ®·Ñ ·¯¿Í µå¶óÀ̺갡 ÀÖ´ÂÁö ¸®´ª½º¿¡°Ô ¾Ë·ÁÁØ´Ù. ¸®´ª½º´Â ¹ß°ßÇÑ µð½ºÅ© ÀÇ ±âÇÏÀû Á¤º¸¸¦ BIOS·ÎºÎÅÍ ¾òÀ¸¸ç, ÀÌ Á¤º¸¸¦ ÀÌ µå¶óÀ̺꿡 ´ëÇÑ ide_hwif_t ÀڷᱸÁ¶¸¦ ¼³Á¤Çϴµ¥ »ç¿ëÇÑ´Ù. ÃÖ±Ù¿¡ ³ª¿Â PCµéÀº PCI EIDE ÄÁÆ®·Ñ·¯¸¦ Æ÷ÇÔÇÏ°í ÀÖ´Â Intel 82430 VX Ĩ¼Â°°Àº PCI Ĩ¼ÂÀ» »ç¿ë ÇÑ´Ù. ÀÌ °æ¿ì IDE ¼­ºê½Ã½ºÅÛÀº PCI BIOS ÄݹéÀ» ÀÌ¿ëÇÏ¿© ½Ã½ºÅÛ¿¡ ÀÖ´Â PCI (E)IDE ÄÁÆ®·Ñ·¯¸¦ ã´Â´Ù. ±×¸®°í ÇöÀç ÀÖ´Â À̵é Ĩ¼Â¿¡ PCI °íÀ¯ÀÇ ÁúÀÇ ·çƾÀ» È£ÃâÇÑ´Ù. IDE ÀÎÅÍÆäÀ̽º, Áï ÄÁÆ®·Ñ·¯°¡ ¹ß°ßµÇ¸é, ÄÁÆ®·Ñ·¯¿Í ÀÌ¿¡ ¿¬°áµÈ µð½ºÅ© ¸¦ ¹Ý¿µÇÏ¿© ide_hwif_t°¡ ¼³Á¤µÈ´Ù. IDE µå¶óÀ̹ö°¡ I/O ¸Þ¸ð¸® °ø°£¿¡ ÀÖ´Â IDE ¸í·É ·¹Áö½ºÅÍ¿¡ ¸í·ÉÀ» ¾¸À¸·Î½á µ¿ÀÛÀÌ ÀÌ·ç¾îÁø´Ù. 1Â÷IDE ÄÁÆ®·Ñ·¯ÀÇ ¸í·É ·¹Áö½ºÅÍ¿Í Á¦¾î ·¹Áö½ºÅÍÀÇ ±âº» I/O ÁÖ¼Ò´Â 0x1F0 - 0x1F7ÀÌ´Ù. À̵é ÁÖ¼Ò´Â IBM PC ÃÊâ±â¿¡¼­ºÎÅÍ °üÇàÀ¸·Î ¼³Á¤µÈ °ÍÀÌ´Ù. IDE µå¶óÀ̹ö´Â °¢ ÄÁÆ®·Ñ·¯¸¦ ¸®´ª½º ºí·° ¹öÆÛ Ä³½Ã¿Í VFS¿¡ µî·ÏÇÏ´Â µ¥, ÀÌ´Â blk_dev¿Í blkdevs º¤ÅÍ¿¡ Ãß°¡ÇÏ´Â °ÍÀÌ´Ù. IDE µå¶óÀ̹ö´Â ¶ÇÇÑ ÇØ´çÇÏ´Â ÀÎÅÍ·´Æ®¿¡ ´ëÇÑ Á¦¾î±ÇÀ» ¿äûÇÑ´Ù. À̵é ÀÎÅÍ·´Æ® ¿ª½Ã °üÇàó·³ 1Â÷ IDE ÄÁÆ®·Ñ·¯¿¡ 14, 2Â÷ IDE ÄÁÆ®·Ñ·¯´Â 15·Î ¼³Á¤µÈ´Ù. ±×·¸Áö¸¸, ÀÌµé ¼³Á¤Àº IDEÀÇ ´Ù¸¥ »ó¼¼ÇÑ ¼³Á¤°ú ¸¶Âù°¡Áö·Î Ä¿³Î¿¡ ¸í·É Çà(command line) ¿É¼ÇÀ» Á־ µ¤¾î ¾µ ¼ö ÀÖ´Ù. IDE µå¶óÀ̹ö´Â ¶ÇÇÑ ºÎÆýà ¹ß°ßµÈ IDE ÄÁÆ®·Ñ·¯¸¶´Ù gendisk¸¦ ¸¸µé¾î gendiskÀÇ ¸®½ºÆ®¿¡ Ãß°¡ÇÑ´Ù ÀÌ ¸®½ºÆ®´Â ³ªÁß¿¡ ºÎÆýà ¹ß°ßµÈ ¸ðµç ÇÏµå µð½ºÆ®ÀÇ ÆÄƼ¼Ç Å×À̺íÀ» ã´Âµ¥ »ç¿ëÇÑ´Ù. ÆÄƼ¼ÇÀ» °Ë»çÇÏ´Â ÄÚµå´Â IDE ÄÁÆ®·Ñ·¯°¡ µÎ°³ÀÇ IDE µð½ºÆ®¸¦ Á¦¾îÇÒ ¼öµµ ÀÖ´Ù´Â °ÍÀ» ¾Ë°í ÀÖ´Ù. 8.5.3 SCSI µð½ºÅ© SCSI (Small Computer System Interface) ¹ö½º´Â, Çϳª ÀÌ»óÀÇ È£½ºÆ®¸¦ Æ÷ÇÔÇÏ¿© ¹ö½º¸¶´Ù 8°³±îÁöÀÇ ÀåÄ¡¸¦ Áö¿øÇÒ ¼ö ÀÖ´Â È¿À²ÀûÀÎ 1´ë 1 µ¥ÀÌÅÍ ¹ö½ºÀÌ´Ù. °¢ ÀåÄ¡´Â °íÀ¯ÇÑ ½Äº°ÀÚ¸¦ °¡Á®¾ß Çϴµ¥, ÀÌ´Â ´ë°³ µð½ºÅ©¿¡ ÀÖ´Â Á¡ÆÛ·Î ¼³Á¤ÇÑ´Ù. ¹ö½º¿¡ ÀÖ´Â ¾î¶² µÎ ÀåÄ¡ »çÀÌÀ̵簣¿¡ µ¿±âÀûÀ¸·Î ¶Ç´Â ºñµ¿±âÀûÀ¸·Î µ¥ÀÌÅ͸¦ Àü¼ÛÇÒ ¼ö ÀÖÀ¸¸ç, 32ºñÆ® Å©±â·Î ÃÊ´ç 40 MB±îÁö Àü¼ÛÇÒ ¼ö ÀÖ´Ù. SCSI ¹ö½º´Â ÀåÄ¡°£¿¡ µ¥ÀÌÅÍ¿Í »óÅ Á¤º¸¸¦ ÇÔ²² Àü¼ÛÇϸç, Àü¼Û ½ÃÀÛÀÚ(initiator)¿Í Àü¼Û ´ë»ó(target) »çÀÌ ÀÇ ÇϳªÀÇ Æ®·£Àè¼ÇÀº ¿©´ü°³ÀÇ ¼­·Î ´Ù¸¥ »óŸ¦ °¡Áú ¼ö ÀÖ´Ù. SCSI¹ö½º ÀÇ ÇöÀç »óÅ´ ¹ö½º¿¡ ÀÖ´Â ´Ù¼¸°³ÀÇ ½ÅÈ£·ÎºÎÅÍ ¾Ë ¼ö ÀÖ´Ù. ¿©´ü°³ »óÅ´ ´ÙÀ½°ú °°´Ù. ¹ö½º°¡ ºñ¾îÀÖÀ½(BUS FREE) : ¹ö½º¿¡ ´ëÇÑ Á¦¾î±ÇÀ» °¡Áø ÀåÄ¡µµ, ÇöÀç ¹ß»ýÇÏ´Â Æ®·£Àè¼Çµµ ¾ø´Ù. ÁßÀç (Arbitration) : ÇÑ SCSI ÀåÄ¡°¡ ÁÖ¼Ò ÇÉ¿¡ ÀÚ½ÅÀÇ SCSI ½Äº°ÀÚ ¸¦ ³»º¸³»¼­ SCSI ¹ö½º¿¡ ´ëÇÑ Á¦¾î±ÇÀ» ¾ò¾î·Á°í ÇÏ¿´´Ù. °¡Àå ³ôÀº SCSI ½Äº°ÀÚ ¹øÈ£°¡ À̱ä´Ù. ¼±ÅÃ(SELECTION) : ÀåÄ¡°¡ ÁßÀ縦 ÅëÇØ SCSI ¹ö½ºÀÇ Á¦¾î±ÇÀ» ¾òÀ¸ ¸é, ÀÌÁ¦ SCSI ¿äûÀ» ¹ÞÀ» ´ë»ó¿¡°Ô ÀÚ½ÅÀÌ ¸í·ÉÀ» º¸³»·Á°í ÇÑ´Ù °í ½ÅÈ£ÇØ¾ß ÇÑ´Ù. ÀÌ´Â ÁÖ¼Ò ÇÉ¿¡ ´ë»óÀÇ SCSI ½Äº°ÀÚ¸¦ ³»º¸³¿ À¸·Î½á ÀÌ·ç¾îÁø´Ù. Àç¼±ÅÃ(RESELECTION) : SCSI ÀåÄ¡´Â ¿äûÀ» ó¸®ÇÏ´Â µµÁß¿¡ ¿¬°áÀ» ²÷À» ¼ö ÀÖ´Ù. ±×·¯¸é ´ë»óÀº Àü¼Û ½ÃÀÛÀÚ¸¦ ´Ù½Ã ¼±ÅÃÇÒ ¼ö ÀÖ´Ù. ¸ðµç SCSI ÀåÄ¡°¡ ÀÌ »óŸ¦ Áö¿øÇÏ´Â °ÍÀº ¾Æ´Ï´Ù. ¸í·É(COMMAND) : 6, 10, ¶Ç´Â 12 ¹ÙÀÌÆ®ÀÇ ¸í·ÉÀ» Àü¼Û ½ÃÀÛÀÚ¿¡¼­ Àü¼Û´ë»óÀ¸·Î Àü¼ÛÇÒ ¼ö ÀÖ´Ù. µ¥ÀÌÅÍ ÀÔ·Â, µ¥ÀÌÅÍ Ãâ·Â(DATA IN, DATA OUT) : ÀÌ »óÅ¿¡ ÀÖÀ» ¶§ ¿¡ µ¥ÀÌÅÍ°¡ Àü¼Û ½ÃÀÛÀÚ¿Í Àü¼Û ´ë»ó »çÀÌ¿¡ Àü´ÞµÈ´Ù. »óÅÂ(STATUS) : ¸ðµç ¸í·ÉÀ» ¿Ï·áÇÑ ÈÄ¿¡ ÀÌ »óÅ·Πµé¾î°¡¸ç, ´ë»ó ÀÌ Àü¼Û ½ÃÀÛÀÚ¿¡°Ô ¼º°øÀ̳ª ½ÇÆи¦ ³ªÅ¸³»´Â »óÅ ¹ÙÀÌÆ®¸¦ Àü¼Û ÇÒ ¼ö ÀÖ°Ô ÇÑ´Ù. ¸Þ½ÃÁö ÀÔ·Â, ¸Þ½ÃÁö Ãâ·Â(MESSAGE IN, MESSAGE OUT) : Àü¼Û ½ÃÀÛÀÚ ¿Í Àü¼Û ´ë»ó »çÀÌ¿¡ Ãß°¡ÀûÀÎ Á¤º¸°¡ Àü¼ÛµÈ´Ù. ¸®´ª½º SCSI ¼­ºê½Ã½ºÅÛÀº µÎ°¡Áö ±âº»ÀûÀÎ ¿ä¼Ò·Î µÇ¾î ÀÖ´Ù. °¢°¢Àº ÀڷᱸÁ¶·Î Ç¥ÇöÀÌ µÇ´Âµ¥ À̵éÀº ´ÙÀ½°ú °°´Ù. È£½ºÆ®(host) : SCSI È£½ºÆ®´Â Çϵå¿þ¾îÀÇ ¹°¸®ÀûÀÎ ºÎºÐÀ¸·Î, SCSI ÄÁÆ®·Ñ·¯ÀÌ´Ù. NCR810 PCI SCSI ÄÁÆ®·Ñ·¯´Â SCSI È£½ºÆ®ÀÇ ÇÑ ¿¹´Ù. ¸®´ª½º ½Ã½ºÅÛÀÌ °°Àº Á¾·ùÀÇ SCSI ÄÁÆ®·Ñ·¯¸¦ Çϳª ÀÌ»ó °¡Áö°í ÀÖ´Ù¸é, °¢°¢Àº º°µµÀÇ SCSI È£½ºÆ®·Î Ç¥ÇöµÈ´Ù. À̸»Àº SCSI µð¹ÙÀ̽º µå¶óÀ̹ö°¡ ÀÚ½ÅÀÇ ÄÁÆ®·Ñ·¯¸¦ Çϳª ÀÌ»ó Á¦¾îÇÒ ¼ö ÀÖ´Ù´Â °ÍÀÌ´Ù. SCSI È£½ºÆ®´Â °ÅÀÇ Ç×»ó SCSI ¸í·ÉÀÇ Àü¼Û ½ÃÀÛÀÚÀÌ´Ù. Scsi_Host_Template scsi_hosts +----------+ -------------------------------->| next | +----------+ +-->| name | "Buslogic" | +----------+ | | | | | Device | | | Driver | | | Routines | | | | | +----------+ | +------------------+ | Scsi_Host | scsi_hostlist +----------+ | -------------------------------->| next | | +-->+----------+ | | | | | | +----------+ | | | this_id | | | +----------+ | | | max_id | | | +----------+ | | | | | | +----------+ | | | hostt |---+ | +----------+ | | | | +----------+ | +------------------+ | Scsi_Device Scsi_Device | scsi_devices +-----------+ +-----------+ | -------------->| next |--->| next | | +-----------+ +-----------+ | | | | | | +-----------+ +-----------+ | | id | | id | | +-----------+ +-----------+ | | type | | type | | +-----------+ +-----------+ | | | | | | +-----------+ +-----------+ | | host | | host |---+ +-----------+ +-----------+ | | | | | | | | +-----------+ +-----------+ ±×¸² 8.4 : SCSI Data Structure ÀåÄ¡(Device) : °¡Àå ÀϹÝÀûÀÎ SCSI ÀåÄ¡ Á¾·ù·Î´Â SCSI µð½ºÅ©°¡ ÀÖÁö¸¸, SCSI Ç¥ÁØÀº Å×ÀÌÇÁ, CD-ROM, ±×¸®°í ÀÏ¹Ý SCSI ÀåÄ¡°°Àº ¿©·¯ Á¾·ù¸¦ ´õ Áö¿øÇÑ´Ù. SCSI ÀåÄ¡´Â °ÅÀÇ Ç×»ó SCSI ¸í·ÉÀÇ ´ë»óÀÌ µÈ´Ù. À̵é ÀåÄ¡´Â ¼­·Î ´Ù¸£°Ô Ãë±ÞµÇ¾î¾ß Çϴµ¥, ¿¹¸¦ µé¾î, CD-ROMÀ̳ª Å×ÀÌÇÁ°°Àº Á¦°Å°¡´ÉÇÑ ¸Åü¸¦ °¡Áø °æ¿ì ¸®´ª½º ´Â ±× ¸Åü°¡ Á¦°ÅµÇ¾ú´ÂÁö ÀνÄÇÒ ¼ö ÀÖ¾î¾ß ÇÑ´Ù. ´Ù¸¥ µð½ºÅ© Á¾·ù´Â ´Ù¸¥ ¸ÞÀÌÀú ÀåÄ¡ ¹øÈ£¸¦ °¡Áö¸ç, ÀÌ´Â ¸®´ª½º°¡ ºí·ÏÀåÄ¡ ¿¡ ´ëÇÑ ¿äûÀ» ¿Ã¹Ù¸¥ SCSI Á¾·ù·Î º¸³¾ ¼ö ÀÖ°Ô ÇÑ´Ù. SCSI ¼­ºê½Ã½ºÅÛÀÇ ÃʱâÈ­ SCSI ¼­ºê½Ã½ºÅÛÀ» ÃʱâÈ­ÇÏ´Â °ÍÀº SCSI ¹ö½º¿Í ÀåÄ¡µéÀÇ µ¿ÀûÀΠƯ¼º ¶§¹®¿¡ ¸Å¿ì º¹ÀâÇÏ´Ù. ¸®´ª½º´Â ºÎÆýÿ¡ SCSI ¼­ºê½Ã½ºÅÛÀ» ÃʱâÈ­ÇÑ´Ù - ½Ã½ºÅÛ¿¡ ÀÖ´Â SCSI ÄÁÆ®·Ñ·¯(SCSI È£½ºÆ®¶ó°í ÇÏ´Â)¸¦ ã°í, °¢ SCSI ¹ö½º¸¦ °Ë»çÇÏ¿© ¸ðµç ÀåÄ¡µéÀ» ã¾Æ³½´Ù. ±×¸®°í À̵é ÀåÄ¡¸¦ ÃʱâÈ­ÇÏ¿© ¸®´ª½º Ä¿³ÎÀÇ ´Ù¸¥ ºÎºÐ¿¡¼­ ÀÏ¹Ý ÆÄÀÏ ¿¬»ê°ú ¹öÆÛ Ä³½Ã ºí·° ÀåÄ¡ ¿¬»êÀ» °¡Áö°í À̵éÀ» »ç¿ëÇÒ ¼ö ÀÖ°Ô ÇÑ´Ù. ÃʱâÈ­´Â ³×°¡Áö »óÅ¿¡¼­ ÀÌ·ç¾îÁø´Ù. ù°, ¸®´ª½º´Â Ä¿³ÎÀ» ºôµåÇÒ ¶§ µé¾î°¡ ÀÖ´Â SCSI È£½ºÆ® ¾î´ðÅÍ, Áï ÄÁÆ®·Ñ·¯ Áß ¾î¶² °ÍÀÌ ÀÚ½ÅÀÌ Á¦¾îÇÒ Çϵå¿þ¾î¸¦ °¡Áö°í ÀÖ´ÂÁö ã´Â´Ù. Ä¿³Î¿¡ Æ÷ÇÔµÈ °¢ SCSI È£½ºÆ®´Â builtin_scsi_hosts º¤ÅÍ¿¡ Scsi_Host_Template ¿£Æ®¸®¸¦ °¡Áö°í ÀÖ´Ù. Scsi_Host_Template ÀڷᱸÁ¶´Â ¾î¶² SCSI ÀåÄ¡°¡ SCSI È£½ºÆ®¿¡ ¿¬°á µÇ¾î ÀÖ´ÂÁö °¨ÁöÇÏ´Â °Í °°Àº ÀÏÀ» ¼öÇàÇÏ´Â SCSI È£½ºÆ® º°·Î °íÀ¯ÇÑ ·çƾµé¿¡ ´ëÇÑ Æ÷ÀÎÅ͸¦ °¡Áö°í ÀÖ´Ù. SCSI ¼­ºê½Ã½ºÅÛÀº ÀÚ½ÅÀ» ¼³Á¤ÇÏ´Â µ¿¾È ÀÌµé ·çƾÀ» ºÎ¸£¸ç, ÀÌµé ·çƾÀº ÀÌ·± È£½ºÆ® À¯ÇüÀ» Áö¿øÇÏ´Â SCSI µð¹ÙÀ̽º µå¶óÀ̹öÀÇ ÇÑ ºÎºÐÀÌ´Ù. ½ÇÁ¦ SCSI ÀåÄ¡°¡ ¿¬°áµÇ¾îÀÖ´Â °¨ÁöµÈ SCSI È£½ºÆ®´Â, ÀÚ½ÅÀÇ Scsi_Host_Template ÀڷᱸÁ¶¸¦ È°¼ºÈ­µÈ SCSI È£½ºÆ®µéÀÇ scsi_hosts ¸®½ºÆ®¿¡ Ãß°¡ÇÑ´Ù. °¨ÁöµÈ È£½ºÆ® À¯ÇüÀÇ °¢ È£½ºÆ®´Âscsi_hostlist ¸®½ºÆ®¿¡ ÀÖ´Â Scsi_Host ÀڷᱸÁ¶·Î Ç¥ÇöµÈ´Ù. ¿¹¸¦ µé¾î, µÎ°³ÀÇ NCR810 PCI SCSI ÄÁÆ®·Ñ·¯¸¦ °¡Áø ½Ã½ºÅÛÀº °¢ ÄÁÆ®·Ñ ·¯º°·Î Çϳª¾¿Çؼ­, ¸®½ºÆ®¿¡ µÎ°³ÀÇ Scsi_Host ¿£Æ®¸®¸¦ °¡Áö°Ô µÈ´Ù. °¢ Scsi_Host´Â ÀÚ½ÅÀÇ µð¹ÙÀ̽º µå¶óÀ̹ö¸¦ ³ªÅ¸³»´Â Scsi_Host_Template ¸¦ °¡¸®Å²´Ù. ÀÌÁ¦ ¸ðµç SCSI È£½ºÆ®¸¦ ¹ß°ßÇßÀ¸¹Ç·Î, SCSI ¼­ºê½Ã½ºÅÛÀº ¾î¶² SCSI ÀåÄ¡°¡ È£½ºÆ®ÀÇ ¹ö½º¿¡ ¿¬°áµÇ¾ú´ÂÁö ã¾Æ¾ß ÇÑ´Ù. SCSI ÀåÄ¡´Â 0¿¡¼­ 7±îÁöÀÇ ÀåÄ¡ ¹øÈ£¸¦ °¡Áö´Âµ¥, ÀÌ ¹øÈ£´Â ÀÚ½ÅÀÌ ¿¬°áµÈ SCSI ¹ö½º¿¡¼­ À¯ÀÏÇØ¾ß ÇÑ´Ù. SCSI ½Äº°ÀÚ´Â ´ë°³ ÀåÄ¡¿¡ ÀÖ´Â Á¡ÆÛ·Î ¼³Á¤ÇÑ´Ù. SCSI ÃʱâÈ­ ÄÚµå´Â SCSI ¹ö½º¿¡ ÀÖ´Â ÀåÄ¡·Î TEST_UNIT_READY ¸í·ÉÀ» º¸³»¼­ ÀåÄ¡¸¦ ã´Â´Ù. ÀåÄ¡°¡ ´ë´äÀ» ÇÑ´Ù¸é, ENQUIRY ¸í·ÉÀ» º¸³»¼­ ½Å¿øÈ®ÀÎÀ» ÇÑ´Ù. ÀÌ´Â ¸®´ª½º¿¡°Ô Á¦ÀÛÀÚ(vendor)ÀÇ À̸§°ú ÀåÄ¡ÀÇ ¸ðµ¨ ¸í°ú °³Á¤(revision) À̸§À» Àü´ÞÇÑ´Ù. SCSI ¸í·ÉÀº Scsi_Cmnd ÀڷᱸÁ¶ ·Î Ç¥ÇöµÇ°í, µð¹ÙÀ̽º µå¶óÀ̹öÀÇ Scsi_Host_Template ÀڷᱸÁ¶¿¡ ÀÖ´Â µð¹ÙÀ̽º µå¶óÀ̹ö ·çƾ¿¡ ºÎ¸¦ ´ë À̸¦ Àü´ÞÇÑ´Ù. ¹ß°ßÇÑ ¸ðµç SCSI ÀåÄ¡ ´Â Scsi_Device ÀڷᱸÁ¶·Î Ç¥ÇöÇϸç, °¢°¢Àº ÀÚ½ÅÀÇ ºÎ¸ð Scsi_Host¸¦ °¡¸®Å²´Ù. ¸ðµç Scsi_Device ÀڷᱸÁ¶´Â scsi_devices ¸®½ºÆ®¿¡ Ãß°¡µÈ´Ù. ±×¸² 8.4´Â ¾î¶»°Ô À̵é ÁÖµÈ ÀڷᱸÁ¶µéÀÌ ¼­·Î ¿¬°üµÇ¾î ÀÖ´ÂÁö º¸¿© ÁØ´Ù. SCSI ÀåÄ¡ À¯ÇüÀ¸·Î´Â ³×°¡Áö°¡ ÀÖ´Ù - µð½ºÅ©, Å×ÀÌÇÁ, CD, ±×¸®°í ÀϹÝ. À̵é SCSI À¯ÇüÀÇ °¢°¢Àº ´Ù¸¥ ¸ÞÀÌÀú ºí·° ÀåÄ¡ À¯ÇüÀ¸·Î Ä¿³Î¿¡ °³º°Àû À¸·Î µî·ÏµÈ´Ù. ±×·¸Áö¸¸ À̵éÀº ÁÖ¾îÁø SCSI ÀåÄ¡ À¯ÇüÀ» °®´Â ÀåÄ¡°¡ Çϳª ÀÌ»ó ÀÖ¾î¾ß Ä¿³Î¿¡ µî·ÏµÈ´Ù. °¢ SCSI À¯ÇüÀº - ¿¹¸¦ µé¾î SCSI µð½ºÅ© - ÀڽŸ¸ÀÇ ÀåÄ¡ Å×À̺íÀ» °ü¸®ÇÑ´Ù. À̵éÀº ÀÌ Å×À̺íÀ» Ä¿³ÎÀÇ ºí·° ¿¬»ê(ÆÄÀÏÀ̳ª ¹öÆÛij½Ã)À» ¿Ã¹Ù¸¥ µð¹ÙÀ̽º µå¶óÀ̹ö³ª SCSI È£½ºÆ® ·Î º¸³»´Âµ¥ »ç¿ëÇÑ´Ù. °¢ SCSI À¯ÇüÀº Scsi_Device_Template ÀڷᱸÁ¶·Î Ç¥ÇöÇÑ´Ù. ÀÌ ÀڷᱸÁ¶´Â ÀÌ À¯ÇüÀÇ SCSI ÀåÄ¡¿¡ ´ëÇÑ Á¤º¸¿Í ´Ù¾çÇÑ ÀÛ¾÷ À» ¼öÇàÇÏ´Â ·çƾµéÀÇ ÁÖ¼Ò¸¦ °¡Áö°í ÀÖ´Ù. SCSI¼­ºê½Ã½ºÅÛÀº À̵é ÅÛÇø´ À» »ç¿ëÇÏ¿© °¢ À¯ÇüÀÇ SCSI ÀåÄ¡¿¡ ´ëÇØ SCSI À¯Çü¿¡ µû¸¥ ·çƾÀ» ºÎ¸£´Â µ¥ »ç¿ëÇÑ´Ù. ´Ù¸£°Ô ¸»Çϸé, SCSI ¼­ºê½Ã½ºÅÛÀÌ SCSI µð½ºÅ© ÀåÄ¡¸¦ ¿¬°á ÇÏ·Á°í ÇÒ ¶§, SCSI µð½ºÅ© À¯Çü¿¡ µû¸¥ ¿¬°á ·çƾÀ» ºÎ¸¥´Ù´Â °ÍÀÌ´Ù. ¾î¶² À¯ÇüÀ» °®´Â SCSI ÀåÄ¡°¡ Çϳª ÀÌ»ó ¹ß°ßµÇ¸é Scsi_Type_Template ÀڷᱸÁ¶°¡ scsi_Devicelist ¸®½ºÆ®¿¡ Ãß°¡µÈ´Ù. SCSI ¼­ºê½Ã½ºÅÛ ÃʱâÈ­ÀÇ ¸¶Áö¸· »óÅ´ µî·ÏµÈ °¢ Scsi_Device_Template ÀÇ Á¾·á(finish) ÇÔ¼ö¸¦ ºÎ¸£´Â °ÍÀÌ´Ù. SCSI µð½ºÅ© À¯ÇüÀ̶ó¸é, ÀÌ´Â ¹ß°ßÇÑ ¸ðµç SCSI µð½ºÅ©¸¦ ȸÀü½ÃÄÑ ±×µéÀÇ µð½ºÅ© ±¸Á¶¸¦ ±â·ÏÇÏ´Â ÀÏÀ» ÇÑ´Ù. ¶ÇÇÑ ±×¸² 8.3¿¡ º¸ÀÌ´Â °Íó·³, ¸ðµç SCSI µð½ºÅ©¸¦ ³ªÅ¸³»´Â gendisk ÀڷᱸÁ¶¸¦ µð½ºÅ©ÀÇ ¿¬°á ¸®½ºÅ©¿¡ Ãß°¡ÇÑ´Ù. ºí·° ÀåÄ¡ ¿äûÀ» Àü´ÞÇϱâ ÀÏ´Ü ¸®´ª½º°¡ SCSI ¼­ºê½Ã½ºÅÛÀ» ÃʱâÈ­ÇÏ°í ³ª¸é SCSI ÀåÄ¡µéÀ» »ç¿ë ÇÒ ¼ö ÀÖ°Ô µÈ´Ù. Á¤»óÀûÀ¸·Î µ¿ÀÛÇÏ´Â °¢ SCSI ÀåÄ¡ À¯ÇüÀº ÀÚ½ÅÀ» Ä¿³Î ¿¡ µî·ÏÇÏ¿©, ¸®´ª½º°¡ ºí·° ÀåÄ¡ ¿äûÀ» Àڽſ¡°Ô º¸³¾ ¼ö ÀÖ°Ô ÇÑ´Ù. ¿©±â¿¡´Â blk_dev¸¦ ÅëÇÑ ¹öÆÛ Ä³½Ã ¿äûÀ̳ª, blkdevs¸¦ ÅëÇÏ´Â ÆÄÀÏ ¿¬»êÀÌ ÀÖÀ» ¼ö ÀÖ´Ù. ¿©±â¼­´Â Çϳª ÀÌ»óÀÇ EXT2 ÆÄÀÏ ½Ã½ºÅÛ ÆÄƼ¼ÇÀ» °¡Áö°í ÀÖ´Â SCSI µð½ºÅ© µå¶óÀ̹ö¸¦ ¿¹·Î µé¾î, ÀÌ EXT2 ÆÄƼ¼Ç Áß Çϳª ¸¦ ¸¶¿îÆ®ÇÒ ¶§ Ä¿³Î ¹öÆÛ ¿äûÀ» ¾î¶»°Ô ¿Ã¹Ù¸¥ SCSI µð½ºÅ©·Î Àü´ÞÇÏ´Â Áö »ìÆ캸µµ·Ï ÇÏÀÚ. SCSI µð½ºÅ© ÆÄƼ¼Ç¿¡¼­ ÇÑ ºí·°ÀÇ µ¥ÀÌÅ͸¦ Àаųª ¾²´Â ¿äûÀº, blk_dev º¤ÅÍ¿¡ ÀÖ´Â SCSI µð½ºÅ©ÀÇ current_request ¸®½ºÆ®¿¡ »õ·Î¿î request ±¸Á¶Ã¼¸¦ Ãß°¡ÇÏ°Ô µÈ´Ù. request ¸®½ºÆ®°¡ ó¸®ÁßÀ̶ó¸é, ¹öÆÛ Ä³½Ã´Â ´Ù¸¥ ÀÏÀ» ÇÒ ÇÊ¿ä°¡ ¾ø´Ù. ±×·¸Áö ¾Ê´Ù¸é SCSI µð½ºÅ© ¼­ºê½Ã½ºÅÛ¿¡°Ô °è¼ÓÇؼ­ request Å¥¸¦ ó¸®ÇÏ ¶ó°í ÇÑ´Ù. ½Ã½ºÅÛ¿¡ ÀÖ´Â SCSI µð½ºÅ©´Â Scsi_Disk ÀڷᱸÁ¶·Î ³ªÅ¸³½´Ù. À̵éÀº rscsi_disks º¤ÅÍ¿¡ µé¾î ÀÖÀ¸¸ç, ÀÌ º¤ÅÍ´Â SCSI µð½ºÅ© ÆÄƼ¼ÇÀÇ ¸¶ÀÌ³Ê ÀåÄ¡ ¹øÈ£ Áß ÀϺθ¦ »ç¿ëÇÏ¿© À妽º°¡ µÇ¾î ÀÖ´Ù. ¿¹¸¦ µé¾î /dev/sdb1Àº 8¹øÀÇ ¸ÞÀÌÀú ¹øÈ£¿Í 17¹øÀÇ ¸¶ÀÌ³Ê ¹øÈ£¸¦ °¡Áö¸ç, ÀÌ´Â À妽º 1À» »ý¼ºÇÑ´Ù. °¢ Scsi_Disk ÀڷᱸÁ¶´Â ÀÌ ÀåÄ¡¸¦ ³ªÅ¸³»´Â Scsi_Device ÀڷᱸÁ¶¿¡ ´ëÇÑ Æ÷ÀÎÅ͸¦ °®°í ÀÖ´Ù. Scsi_Device ÀڷᱸÁ¶ ´Â Â÷·Ê·Î ÀÚ½ÅÀ» "¼ÒÀ¯"ÇÏ°í ÀÖ´Â Scsi_Host ÀڷᱸÁ¶¸¦ °¡¸®Å°°í ÀÖ´Ù. ¹öÆÛ Ä³½Ã·ÎºÎÅÍ ¿Â request ÀڷᱸÁ¶´Â SCSI ÀåÄ¡·Î º¸³»¾ß ÇÏ´Â SCSI ¸í·ÉÀ» ±â¼úÇÏ´Â Scsi_Cmnd ±¸Á¶Ã¼·Î ¹Ù²î°í, ÀÌ´Â ÀÌ ÀåÄ¡¸¦ ³ªÅ¸³»´Â Scsi_Host ±¸Á¶Ã¼ÀÇ Å¥¿¡ ½×ÀδÙ. Çѹø ÀûÀýÇÑ µ¥ÀÌÅÍ ºí·°À» Àаųª ¾²°í ³ª¸é, À̵éÀº °³º° SCSI µð¹ÙÀ̽º µå¶óÀ̹ö¿¡ ÀÇÇØ Ã³¸®µÈ´Ù. 8.6 ³×Æ®¿÷ ÀåÄ¡(Network Device) ¸®´ª½ºÀÇ ³×Æ®¿÷ ¼­ºê½Ã½ºÅÛÀº ³×Æ®¿÷ ÀåÄ¡¸¦ µ¥ÀÌÅÍ ÆÐŶÀ» º¸³»°í ¹Þ´Â ÇÑ °³Ã¼·Î »ý°¢ÇÑ´Ù. ÀÌ´Â ´ë°³ÀÇ °æ¿ì ÀÌ´õ³Ý Ä«µå°°Àº ¹°¸®ÀûÀÎ ÀåÄ¡ ÀÌ´Ù. ¾î¶² ³×Æ®¿÷ ÀåÄ¡´Â ¼ÒÇÁÆ®¿þ¾î·Î¸¸ µÇ¾î ÀÖ´Â °ÍÀÌ Àִµ¥, µ¥ÀÌÅÍ ¸¦ ÀÚ±â Àڽſ¡°Ô º¸³»´Âµ¥ »ç¿ëµÇ´Â ·çÇÁ¹é(loopback) ÀåÄ¡°°Àº °ÍÀÌ ±×°ÍÀÌ´Ù. °¢ ³×Æ®¿÷ ÀåÄ¡´Â device ÀڷᱸÁ¶·Î Ç¥ÇöµÈ´Ù. ³×Æ®¿÷ µð¹ÙÀ̽º µå¶óÀ̹ö´Â Ä¿³ÎÀÌ ºÎÆÃÇϸ鼭 ³×Æ®¿÷À» ÃʱâÈ­ÇÏ´Â µ¿¾È ÀÚ½ÅÀÌ Á¦¾îÇÏ´Â ÀåÄ¡¸¦ ¸®´ª½º¿¡ µî·ÏÇÑ´Ù . ÀÌ device ÀڷᱸÁ¶´Â ÀåÄ¡ ¿¡ ´ëÇÑ Á¤º¸¿Í, ¸®´ª½º¿¡¼­ Áö¿øÇÏ´Â ´Ù¾çÇÑ Á¾·ùÀÇ ³×Æ®¿÷ ÇÁ·ÎÅäÄÝÀÌ ÀåÄ¡ÀÇ ¼­ºñ½º¸¦ ÀÌ¿ëÇÒ ¼ö ÀÖµµ·Ï ÇÏ´Â ÇÔ¼öµéÀÇ ÁÖ¼Ò¸¦ °¡Áö°í ÀÖ´Ù. ÀÌ ÇÔ¼öµéÀº ´ëºÎºÐ ³×Æ®¿÷ ÀåÄ¡¸¦ ÅëÇÑ µ¥ÀÌÅÍ Àü¼Û°ú °ü°è°¡ ÀÖ´Ù. ÀåÄ¡´Â Ç¥ÁØ ³×Æ®¿÷ Áö¿ø ¸ÅÄ¿´ÏÁòÀ» »ç¿ëÇÏ¿© Àü¼Û¹ÞÀº µ¥ÀÌÅ͸¦ ¿Ã¹Ù¸¥ ÇÁ·Î·ÎÄÝ °èÃþÀ¸·Î Àü´ÞÇÑ´Ù. º¸³»°í ¹Þ´Â ¸ðµç ³×Æ®¿÷ µ¥ÀÌÅÍ(ÆÐŶ)Àº sk_buff ÀڷᱸÁ¶·Î Ç¥ÇöµÇ´Âµ¥, ÀÌ´Â ³×Æ®¿÷ ÇÁ·ÎÅäÄÝ Çì´õ¸¦ ½±°Ô ÷°¡ Çϰųª Á¦°ÅÇÒ ¼ö ÀÖµµ·Ï ¸¸µé¾îÁø À¯¿¬ÇÑ ÀڷᱸÁ¶ÀÌ´Ù. ³×Æ®¿÷ ÇÁ·ÎÅäÄÝ °èÃþÀÌ ¾î¶»°Ô ³×Æ®¿÷ ÀåÄ¡¸¦ »ç¿ëÇÏ´ÂÁö, ¾î¶»°Ô sk_buff ÀڷᱸÁ¶¸¦ °¡Áö°í µ¥ÀÌÅ͸¦ ¾ÕµÚ·Î Àü´ÞÇÏ´Â Áö´Â ³×Æ®¿÷ Àå(10Àå)¿¡¼­ »ó¼¼ÇÏ°Ô ´Ù·é´Ù. ¿©±â¼­´Â device ÀÚ·á ±¸Á¶¿Í ³×Æ®¿÷ ÀåÄ¡¸¦ ¾î¶»°Ô ¹ß°ßÇÏ°í ÃʱâÈ­ÇÏ´ÂÁö¿¡ Áß½ÉÀ» µÐ´Ù. device ÀڷᱸÁ¶´Â ´ÙÀ½°ú °°Àº ³×Æ®¿÷ ÀåÄ¡¿¡ ´ëÇÑ Á¤º¸¸¦ °¡Áø´Ù. À̸§ : Ư¼ö ÀåÄ¡ ÆÄÀÏÀÌ mknod ¸í·ÉÀ¸·Î ¸¸µé¾îÁö´Â ºí·° ÀåÄ¡³ª ¹®ÀÚ ÀåÄ¡¿Í´Â ´Þ¸®, ³×Æ®¿÷ ÀåÄ¡ Ư¼ö ÆÄÀÏÀº ½Ã½ºÅÛ¿¡ ÀÖ´Â ³×Æ® ¿÷ ÀåÄ¡¸¦ ¹ß°ßÇÏ°í ÃʱâÈ­ÇÏ´Â °úÁ¤¿¡¼­ Â÷·Ê·Î ³ªÅ¸³­´Ù. À̵éÀÇ À̸§Àº ÀåÄ¡ÀÇ À¯ÇüÀ» ³ªÅ¸³»´Â ±×·± Ç¥ÁØÀûÀÎ À̸§ÀÌ´Ù. °°Àº À¯ÇüÀÇ ÀåÄ¡µé¿¡´Â, 0ºÎÅÍ ½ÃÀÛÇÏ´Â ¹øÈ£°¡ ºÙ´Â´Ù. µû¶ó¼­ ÀÌ´õ³Ý ÀåÄ¡´Â /dev/eth0, /dev/eth1, /dev/eth2 ÀÌ·± ½ÄÀ¸·Î ³ªÅ¸³­´Ù. ÀϹÝÀûÀÎ ³×Æ®¿÷ ÀåÄ¡·Î´Â : /dev/ethN ÀÌ´õ³Ý ÀåÄ¡ /dev/slN SLIP ÀåÄ¡ /dev/pppN PPP ÀåÄ¡ /dev/lo ·çÇÁ¹é ÀåÄ¡ ¹ö½ºÁ¤º¸ : ÀÌ Á¤º¸´Â µð¹ÙÀ̽º µå¶óÀ̹ö°¡ ÀåÄ¡¸¦ Á¦¾îÇϱâ À§ÇØ ÇÊ¿ä·Î ÇÏ´Â °ÍÀÌ´Ù. IRQ ¹øÈ£´Â ÀåÄ¡°¡ »ç¿ëÇÏ´Â ÀÎÅÍ·´Æ® ¹øÈ£ ÀÌ°í. º£À̽º ÁÖ¼Ò(base address)´Â ÀåÄ¡ÀÇ Á¦¾î ·¹Áö½ºÅÍ¿Í »óÅ ·¹Áö½ºÅÍ°¡ ÀÖ´Â I/O ¸Þ¸ð¸® »óÀÇ ÁÖ¼ÒÀÌ´Ù. DMA ä³Î(DMA channel)Àº ³×Æ®¿÷ ÀåÄ¡°¡ »ç¿ëÇÏ´Â DMA ä³Î ¹øÈ£ÀÌ´Ù. ÀÌ ¸ðµç Á¤º¸´Â ºÎÆýÿ¡ ÀåÄ¡¸¦ ÃʱâÈ­ÇÒ ¶§ ¼³Á¤µÈ´Ù. ÀÎÅÍÆäÀ̽º Ç÷¡±×(Interface Flag) : ÀÌ´Â ³×Æ®¿÷ ÀåÄ¡ÀÇ Æ¯Â¡°ú ´É·ÂÀ» ¼³¸íÇÑ´Ù. IFF_UP ÀÎÅÍÆäÀ̽º°¡ À§¿¡ ÀÖ°í(up) ½ÇÇàÁßÀÌ´Ù. IFF_BROADCAST deviceÀÇ ºê·Îµåij½ºÆ® ÁÖ¼Ò°¡ À¯È¿ÇÏ´Ù. IFF_DEBUG ÀåÄ¡ µð¹ö±ë ¿É¼ÇÀÌ ÄÑÁ® ÀÖ´Ù. IFF_LOOPBAK ·çÇÁ¹é ÀåÄ¡ÀÌ´Ù. IFF_POINTTOPOINT SLIPÀ̳ª PPP°°Àº ÁöÁ¡ ´ë ÁöÁ¡(point to point) ¿¬°á ÀåÄ¡ÀÌ´Ù. IFF_NOTRAILERS ³×Æ®¿÷ ÃßÀûÀÚ(trailer)°¡ ¾ø´Ù. IFF_RUNNING ÀÚ¿øÀÌ ÇÒ´çµÇ¾ú´Ù. IFF_NOARP ARP ÇÁ·ÎÅäÄÝÀ» Áö¿øÇÏÁö ¾Ê´Â´Ù. IFF_PROMISC ÀåÄ¡°¡ ¸¶±¸ÀâÀÌ·Î ¼ö½ÅÇÏ´Â ¸ðµåÀÌ´Ù. ÆÐŶ ÀÇ ¼ö½Å ÁÖ¼Ò°¡ ¾îµðµç °£¿¡ °ü°è¾øÀÌ ¸ðµç ÆÐŶÀ» ¹Þ¾Æ µéÀδÙ. IFF_ALLMULTI ¸ðµç IP ¸ÖƼij½ºÆ®(multicast) ÇÁ·¹ÀÓµéÀ» ¼ö½ÅÇÑ´Ù. IFF_MULTICAST IP ¸ÖƼij½ºÆ® ÇÁ·¹ÀÓ ¼ö½Å °¡´É ÇÁ·ÎÅäÄÝ Á¤º¸ : ³×Æ®¿÷ ÇÁ·ÎÅäÄÝ °èÃþÀÌ ÀåÄ¡¸¦ ¾î¶»°Ô »ç¿ëÇÒ ¼ö ÀÖ´ÂÁö ³ªÅ¸³½´Ù. mtu : ¸µÅ© °èÃþ(link layer)¿¡¼­ ºÙÀÌ´Â Çì´õ¸¦ Á¦¿ÜÇÏ°í ÀÌ ³×Æ®¿÷ ÀåÄ¡°¡ Àü¼ÛÇÒ ¼ö ÀÖ´Â °¡Àå Å« ÆÐŶ Å©±â. ÀÌ ÃÖ´ë°ª Àº IP°°Àº ÇÁ·ÎÅäÄÝ °èÃþÀÌ Àü¼Û¿¡ »ç¿ëÇÒ Àû´çÇÑ ÆÐŶÀÇ Å©±â¸¦ ¼±ÅÃÇϱâ À§ÇØ »ç¿ëÇÑ´Ù. °è¿­(Family) : ÀÌ°ÍÀº ÀåÄ¡°¡ Áö¿øÇÒ ¼ö ÀÖ´Â ÇÁ·ÎÅäÄÝ °è¿­ À» ³ªÅ¸³½´Ù. ¸ðµç ¸®´ª½º ³×Æ®¿÷ ÀåÄ¡°¡ Áö¿øÇÏ´Â °è¿­Àº AF_INET, ÀÎÅÍ³Ý ÁÖ¼Ò °è¿­ÀÌ´Ù. À¯Çü(Type) : Çϵå¿þ¾î ÀÎÅÍÆäÀ̽º À¯ÇüÀº ÀÌ ³×Æ®¿÷ ÀåÄ¡¿¡ ¿¬°áµÈ ¸Åü¸¦ ³ªÅ¸³½´Ù. ¸®´ª½º ³×Æ®¿÷ ÀåÄ¡´Â ¸¹Àº ¼­·Î ´Ù¸¥ Á¾·ùÀÇ ¸Åü¸¦ Áö¿øÇÑ´Ù. ¿©±â¿¡´Â ÀÌ´õ³Ý(ethernet), X.25, ÅäÅ«¸µ(token ring), SLIP, PPP,±×¸®°í Appletalk µîÀÌ Æ÷ÇԵȴÙ. ÁÖ¼Ò(Address) : device ÀڷᱸÁ¶´Â IP ÁÖ¼Ò¸¦ Æ÷ÇÔÇÏ¿© ÀÌ ³×Æ®¿÷ ÀåÄ¡¿¡ ÇØ´çÇÏ´Â ¿©·¯ °³ÀÇ ÁÖ¼Ò¸¦ °¡Áö°í ÀÖ´Ù. ÆÐŶť(Packet Queue) : ³×Æ®¿÷ ÀåÄ¡°¡ Àü¼ÛÇϱ⸦ ±â´Ù¸®°í ÀÖ´Â sk_buff ÆÐŶÀÇ Å¥ Áö¿øÇÏ´Â ÇÔ¼öµé : °¢ ÀåÄ¡´Â ÀåÄ¡ÀÇ ¸µÅ© °èÃþ°úÀÇ ÀÎÅÍÆäÀ̽ºÀÇ ÀϺημ­ ÇÁ·ÎÅäÄÝ °èÃþ¿¡¼­ È£ÃâÇÒ ¼ö Àִ ǥÁØ ÇÔ¼ö ÁýÇÕÀ» Á¦°øÇÑ´Ù. ÀÌ´Â ¼Â¾÷ÇÏ°í ÇÁ·¹ÀÓÀ» Àü¼ÛÇÏ´Â ·çƾ»Ó¸¸ ¾Æ´Ï¶ó, Ç¥ÁØ ÇÁ·¹ÀÓ Çì´õ¸¦ Ãß°¡ÇÏ°í, Åë°èÁ¤º¸¸¦ ¸ðÀ¸´Â ·çƾµµ Æ÷ÇÔ ÇÑ´Ù. ÀÌ Åë°èÁ¤º¸´Â ifconfig ¸í·ÉÀ¸·Î º¼¼ö ÀÖ´Ù. 8.6.1 ³×Æ®¿÷ ÀåÄ¡ ÃʱâÈ­ ³×Æ®¿÷ µð¹ÙÀ̽º µå¶óÀ̹ö´Â ´Ù¸¥ ¸®´ª½º µð¹ÙÀ̽º µå¶óÀ̹ö¿Í ¸¶Âù°¡Áö·Î Ä¿³Î¿¡ Á÷Á¢ Æ÷ÇԵǾî ÀÖÀ» ¼ö ÀÖ´Ù. °¢ ÀáÀçÀûÀÎ ³×Æ®¿÷ ÀåÄ¡´Â dev_base ¸®½ºÆ® Æ÷ÀÎÅÍ°¡ °¡¸®Å°´Â ³×Æ®¿÷ ÀåÄ¡ ¸®½ºÆ®¿¡ ÀÖ´Â device ÀڷᱸÁ¶·Î Ç¥ÇöµÈ´Ù. ³×Æ®¿÷ °èÃþÀº ÀåÄ¡¿¡ °íÀ¯ÇÑ ÀÛ¾÷À» ¼öÇàÇÒ ÇÊ¿ä°¡ ÀÖÀ» ¶§, device ÀڷᱸÁ¶¿¡ ÀÖ´Â ¼­ºñ½º ·çƾÀÇ ÁÖ¼Ò¸¦ °¡Áö°í ¿©·¯ ³×Æ® ¿÷ ÀåÄ¡ÀÇ ¼­ºñ½º ·çƾÀ» È£ÃâÇÑ´Ù. ±×·¸Áö¸¸ device ÀڷᱸÁ¶´Â óÀ½¿¡´Â ÃʱâÈ­³ª ÀåÄ¡¸¦ Ž»ç(probe)ÇÏ´Â ·çƾÀÇ ÁÖ¼Ò¸¸ °®°í ÀÖ´Ù. ³×Æ®¿÷ µð¹ÙÀ̽º µå¶óÀ̹ö°¡ Ç®¾î¾ß ÇÏ´Â ¹®Á¦·Î µÎ°¡Áö°¡ ÀÖ´Ù. ¿ì¼± ù¹ø°´Â ¸®´ª½º Ä¿³Î¿¡ Æ÷ÇÔµÈ ¸ðµç ³×Æ®¿÷ µð¹ÙÀ̽º µå¶óÀ̹ö°¡ ÀÚ½ÅÀÌ Á¦¾îÇÒ ÀåÄ¡¸¦ °®´Â °ÍÀº ¾Æ´Ï¶ó´Â °ÍÀÌ´Ù. ±×¸®°í µÎ¹ø°·Î ½Ã½ºÅÛ¿¡ ÀÖ´Â ÀÌ´õ³Ý ÀåÄ¡´Â ¹Ø¿¡ ÀÖ´Â µð¹ÙÀ̽º µå¶óÀ̹ö°¡ ¾î¶² °ÅµçÁö°£¿¡ Ç×»ó /dev/eth0, /dev/eth1°ú °°ÀÌ ³ªÅ¸³­´Ù´Â °ÍÀÌ´Ù. ¸ÕÀú "¾ø´Â"³×Æ®¿÷ ÀåÄ¡ ¹®Á¦´Â ½±°Ô Ç® ¼ö ÀÖ´Ù. °¢ ³×Æ®¿÷ ÀåÄ¡ÀÇ ÃʱâÈ­ ·çƾÀ» ºÎ¸£¸é, ÀÌ ·çƾÀº ÀÚ½ÅÀÌ ±¸µ¿ÇÒ ÄÁÆ®·Ñ·¯¸¦ ã¾Ò´ÂÁö ¸øã¾Ò´ÂÁö ÀǹÌÇÏ´Â »óÅ °ªÀ» µ¹·ÁÁØ´Ù. ¸¸¾à µå¶óÀ̹ö°¡ ¾Æ¹«·± ÀåÄ¡µµ ãÁö ¸øÇß´Ù¸é, dev_base °¡ °¡¸®Å°°í ÀÖ´Â device ¸®½ºÆ®¿¡ ÀÖ´Â ¿£Æ®¸®°¡ Á¦°ÅµÈ´Ù. ¸¸¾à µå¶óÀÌ ¹ö°¡ ÀåÄ¡¸¦ ã°Ô µÈ´Ù¸é, µå¶óÀ̹ö´Â device ÀڷᱸÁ¶ÀÇ ³ª¸ÓÁö ºÎºÐÀ» ÀåÄ¡¿¡ ´ëÇÑ Á¤º¸¿Í ³×Æ®¿÷ µð¹ÙÀ̽º µå¶óÀ̹ö¿¡ ÀÖ´Â µå¶óÀ̹ö°¡ Áö¿ø ÇÏ´Â ÇÔ¼öµéÀÇ ÁּҷΠä¿î´Ù. µÎ¹ø° ¹®Á¦´Â ÀÌ´õ³Ý ÀåÄ¡¸¦ Ç¥ÁØ /dev/ethN ÀåÄ¡ Ư¼öÆÄÀÏ¿¡ µ¿ÀûÀ¸·Î ºÎ¿©ÇÏ´Â ¹®Á¦·Î ÀÌ´Â Á»´õ ¿ì¾ÆÇÑ ¹æ¹ýÀ¸·Î ÇØ°áµÈ´Ù. ÀåÄ¡ ¸ñ·Ï¿¡´Â eth0ºÎÅÍ eth7±îÁö ¸ðµÎ ¿©´ü°³ÀÇ Ç¥ÁØ ¿£Æ®¸®°¡ ÀÖ´Ù. ÃʱâÈ­ ·çƾÀº ÀÌµé ¸ðµÎ¿¡ ¶È°°Àºµ¥, ÀåÄ¡¸¦ ãÀ» ¶§±îÁö Ä¿³Î¿¡ ÀÖ´Â °¢ ÀÌ´õ³Ý µð¹Ù À̽º µå¶óÀ̹ö¸¦ ½ÃµµÇغ¸´Â °ÍÀÌ´Ù. µå¶óÀ̹ö°¡ ÀåÄ¡¸¦ ãÀ¸¸é ÀÌÁ¦ °¡Áö °Ô µÈ ethN device ÀÚ·á ±¸Á¶ÀÇ ³»¿ëÀ» ä¿î´Ù. ±×¸®°í ÀÌ ¶§ ³×Æ®¿÷ µð¹ÙÀ̽º µå¶óÀ̹ö´Â ÀÚ½ÅÀÌ Á¦¾îÇÒ ¹°¸®ÀûÀÎ Çϵå¿þ¾î¸¦ ÃʱâÈ­ÇÏ°í, ¾î¶² IRQ¸¦ »ç¿ëÇÏ°í ÀÖ°í ¾î¶² DMAä³ÎÀ» »ç¿ëÇÏ°í ÀÖ´ÂÁö (¸¸¾à ÀÖ´Ù¸é) µîµîÀ» ¾Ë¾Æ³½´Ù. µå¶óÀ̹ö´Â ÀÚ½ÅÀÌ Á¦¾îÇÒ ³×Æ®¿÷ ÀåÄ¡¸¦ ¿©·¯ °³¸¦ ãÀ» ¼ö Àִµ¥, ÀÌ °æ¿ì µå¶óÀ̹ö´Â ¿©·¯ °³ÀÇ /dev/ethN device ÀÚ·á ±¸Á¶À» ³Ñ°ÜÁØ´Ù. ¿©´ü°³ÀÇ Ç¥ÁØ /dev/ethNÀÌ ¸ðµÎ ÇÒ´çµÇ¸é, ´õ ÀÌ»ó ÀÌ´õ³Ý ÀåÄ¡¸¦ ãÁö ¾Ê´Â´Ù. ¹ø¿ª : ÀÌÈ£, ½Å¹®¼® Á¤¸® : ÀÌÈ£ ===================================================================== 9Àå ÆÄÀÏ ½Ã½ºÅÛ (File System) <<ÀÌ ÀåÀº ¸®´ª½º Ä¿³ÎÀÌ Áö¿øÇÏ´Â ÆÄÀÏ ½Ã½ºÅÛ ¾ÈÀÇ ÆÄÀϵéÀ» ¾î¶»°Ô °ü¸®Çϴ°¡¸¦ ¼³¸íÇÑ´Ù. °¡»ó ÆÄÀÏ ½Ã½ºÅÛ(Virtual File System, VFS)°ú ¸®´ª½º Ä¿³ÎÀÇ ½ÇÁ¦ ÆÄÀÏ ½Ã½ºÅÛÀÌ ¾î¶»°Ô Áö¿øµÇ´ÂÁö¸¦ ¼³¸íÇÑ´Ù.>> ¸®´ª½ºÀÇ °¡Àå Áß¿äÇÑ Æ¯Â¡ Áß Çϳª´Â ¸¹Àº ÆÄÀÏ ½Ã½ºÅÛÀ» Áö¿øÇÑ´Ù´Â °Í ÀÌ´Ù. ÀÌ·¸°Ô ÇÔÀ¸·Î½á ¸®´ª½º´Â À¯¿¬¼ºÀ» °®°Ô µÇ¾ú°í ´Ù¸¥ ¸¹Àº ¿î¿µ üÁ¦¿Í Àß °øÁ¸ÇÒ ¼ö ÀÖ°Ô µÇ¾ú´Ù. ¸®´ª½º¸¦ óÀ½ ¸¹µé¾úÀ» ¶§´Â ext, ext2, xia, minix, umsdos, msdos, vfat, proc, smb, ncp, iso9660, sysv, hpfs, affs, ufsÀÇ 15°¡Áö ÆÄÀÏ ½Ã½ºÅÛÀ» Áö¿øÇß°í, ´ç¿¬È÷ ½Ã°£ÀÌ Áö³²¿¡ µû¶ó ´õ ¸¹Àº °ÍÀÌ Ãß°¡µÇ¾ú´Ù. ¸®´ª½º´Â - À¯´Ð½º¿Í ¸¶Âù°¡Áö·Î - ½Ã½ºÅÛÀÌ »ç¿ëÇÒ ¼ö ÀÖ´Â °¢°¢ÀÇ ÆÄÀÏ ½Ã½ºÅÛÀÌ ÀåÄ¡ ½Äº°ÀÚ(µå¶óÀÌºê ¼ýÀÚ³ª À̸§)·Î Á¢±ÙµÇ´Â °ÍÀÌ ¾Æ´Ï¶ó ÇϳªÀÇ °èÃþÀûÀÎ Æ®¸® ±¸Á¶·Î ÅëÇÕÇØ µé¾î°¡¼­ ÆÄÀÏ ½Ã½ºÅÛÀÌ ¸¶Ä¡ ÇϳªÀÎ °Íó·³ º¸ÀÌ°Ô ÇÑ´Ù. ¸®´ª½º´Â ÀÌ ÇϳªÀÇ ÆÄÀÏ ½Ã½ºÅÛ¿¡ »õ·Ó°Ô ¸¶¿îÆ® ÇÏ´Â ÆÄÀÏ ½Ã½ºÅÛÀ» µ¡ºÙÀδÙ. ¸ðµç ÆÄÀÏ ½Ã½ºÅÛÀº ¾î¶² ŸÀÔÀ̵çÁö Çϳª ÀÇ µð·ºÅ丮¿¡ ¸¶¿îÆ®µÇ¾î, ¸¶¿îÆ®µÈ ÆÄÀÏ ½Ã½ºÅÛÀÇ ÆÄÀϵéÀÌ ±× µð·ºÅ丮 ÀÇ ³»¿ëÀ» ±¸¼ºÇÑ´Ù. ÀÌ·¯ÇÑ µð·ºÅ丮¸¦ ¸¶¿îÆ® µð·ºÅ丮 ¶Ç´Â ¸¶¿îÆ® Æ÷ÀÎÆ®¶ó°í ºÎ¸¥´Ù. ÆÄÀÏ ½Ã½ºÅÛÀÇ ¸¶¿îÆ®°¡ ÇØÁ¦µÇ¸é ¸¶¿îÆ® µð·ºÅ丮°¡ ¿ø·¡ °¡Áö°í ÀÖ´ø ÆÄÀϵéÀÌ ´Ù½Ã µå·¯³­´Ù. µð½ºÅ©°¡ ÃʱâÈ­µÉ ¶§ (°¡·É, fdisk¸¦ »ç¿ëÇÏ¿©) µð½ºÅ©´Â ÆÄƼ¼Ç ±¸Á¶¸¦ °¡Áö°Ô µÇ´Âµ¥, ÀÌ°ÍÀº ¹°¸®ÀûÀÎ µð½ºÅ©¸¦ ³í¸®ÀûÀ¸·Î ¸î °³ÀÇ ÆÄƼ¼ÇÀ¸·Î ºÐ¸®ÇÏ´Â °ÍÀÌ´Ù. °¢ ÆÄƼ¼ÇÀº ÇϳªÀÇ ÆÄÀÏ ½Ã½ºÅÛ - ¿¹¸¦ µé¾î, EXT2 ÆÄÀÏ ½Ã½ºÅÛ - À» °¡Áö°Ô µÈ´Ù. ÆÄÀÏ ½Ã½ºÅÛÀº ¹°¸®ÀûÀÎ ÀåÄ¡ÀÇ ºí·°¿¡, ÆÄÀÏÀ» µð·ºÅ丮³ª ¼ÒÇÁÆ® ¸µÅ© µî°ú ÇÔ²² ³í¸®ÀûÀÎ °èÃþ±¸Á¶·Î ±¸¼ºÇÑ´Ù. ÆÄÀÏ ½Ã½ºÅÛÀ» ´ãÀ» ¼ö ÀÖ´Â ÀåÄ¡´Â ºí·° ÀåÄ¡ÀÌ´Ù. ½Ã½ºÅÛ¿¡ Àִ ù¹ø° IDE µð½ºÅ©ÀÇ Ã¹¹ø° ÆÄƼ¼ÇÀÎ /dev/hda1Àº ºí·° ÀåÄ¡ÀÌ´Ù. ¸®´ª½º ÆÄÀÏ ½Ã½ºÅÛÀº ÀÌ·¯ÇÑ ºí·° ÀåÄ¡µéÀ» ´Ü¼øÈ÷ ÀÏ·Ä·Î ´Ã¾î³õÀº ºí·°ÀÇ ¸ðÀ½À¸·Î °£ÁÖÇϸç, ±× ¹Ø¿¡ ÀÖ´Â ¹°¸®ÀûÀÎ µð½ºÅ©¿¡ ´ëÇؼ­´Â ¾ËÁöµµ ¸øÇÏ°í »ó°ü µµ ÇÏÁö ¾Ê´Â´Ù. ÀåÄ¡ÀÇ Æ¯Á¤ ºí·°À» ÀÐÀ¸¶ó´Â ¿ä±¸¸¦ ±× ÀåÄ¡¿¡°Ô ÀÇ¹Ì ÀÖ´Â ¿ä¼Òµé, Áï ƯÁ¤ Æ®·¢, ¼½ÅÍ, ½Ç¸°´õ µî ÇÏµå µð½ºÅ©»ó¿¡ ±× ºí·°ÀÌ ÀÖ´Â À§Ä¡·Î ¸ÅÇÎÇÏ´Â °ÍÀº °¢ ºí·° µð¹ÙÀ̽º µå¶óÀ̹öÀÇ ¿ªÇÒÀÌ´Ù. ÆÄÀÏ ½Ã½ºÅÛÀº ¾î¶² ÀåÄ¡°¡ ±× ºí·°À» °¡Áö°í ÀÖµçÁö °£¿¡ ¶È°°Àº ¹æ¹ýÀ¸·Î º¸°í, ´À³¢°í, µ¿ÀÛÇØ¾ß ÇÑ´Ù. °Ô´Ù°¡, ¸®´ª½º ÆÄÀÏ ½Ã½ºÅÛÀ» »ç¿ëÇϸé, ÀÌ·¯ÇÑ ´Ù¸¥ ÆÄÀÏ ½Ã½ºÅÛÀÌ ´Ù¸¥ Çϵå¿þ¾î ÄÁÆ®·Ñ·¯¿¡ ÀÇÇØ Á¶À۵Ǵ ´Ù¸¥ ¹°¸®Àû ¸Åü¿¡ ÀÖ´Â °ÍÀº ÀüÇô ¹®Á¦°¡ µÇÁö ¾Ê´Â´Ù (Àû¾îµµ ½Ã½ºÅÛ »ç¿ëÀÚ¿¡°Ô´Â ±×·¸´Ù). ÆÄÀÏ ½Ã½ºÅÛÀº ½ÉÁö¾î ·ÎÄà ½Ã½ºÅÛ¿¡ ÀÖÁö ¾ÊÀ» ¼ö µµ ÀÖ´Ù. ³×Æ®¿÷ ¿¬°á·Î ¿ø°ÝÁö¿¡¼­ ¸¶¿îÆ®µÈ µð½ºÅ©ÀÏ ¼öµµ ÀÖ´Â °ÍÀÌ´Ù. ¸®´ª½º ½Ã½ºÅÛÀÌ SCSI µð½ºÅ©¿¡ ·çÆ® µð·ºÅ丮¸¦ °¡Áö´Â ´ÙÀ½ ¿¹¸¦ º¸ÀÚ. A E boot etc lib opt tmp usr C F cdrom fd proc root var sbin D bin dev home mnt lost+found ÆÄÀÏÀ» °¡Áö°í ÀÛ¾÷ÇÏ´Â »ç¿ëÀÚµµ ÇÁ·Î±×·¥µµ, /C°¡ »ç½ÇÀº ½Ã½ºÅÛÀÇ Ã¹¹ø ° IDE µð½ºÅ©¿¡ ÀÖ´Â VFAT ÆÄÀÏ ½Ã½ºÅÛÀÌ ¸¶¿îÆ®µÈ µð·ºÅ丮¶ó´Â °ÍÀ» ¾Ë ÇÊ¿ä°¡ ¾ø´Ù. ÀÌ ¿¹¿¡¼­ (»ç½ÇÀº ÇÊÀÚÀÇ Áý¿¡ ÀÖ´Â ¸®´ª½º ½Ã½ºÅÛÀÌ´Ù), /E´Â µÎ¹ø° IDE ÄÁÆ®·Ñ·¯¿¡ ¿¬°áµÈ ¸¶½ºÅÍ IDE µð½ºÅ©ÀÌ´Ù. ù¹ø° IDE ÄÁÆ®·Ñ·¯´Â PCIÀ̸ç, µÎ¹ø° °ÍÀº IDE CDROMµµ Á¦¾îÇÏ´Â ISA ÄÁÆ®·Ñ·¯¶ó´Â °ÍÀº ÀüÇô »ó°üÀÌ ¾ø´Ù. ³ª´Â ¸ðµ©°ú PPP ³×Æ®¿÷ ÇÁ·ÎÅäÄÝÀ» »ç¿ëÇؼ­ ³»°¡ ÀÏÇÏ´Â °÷¿¡ ÀüÈ­¸¦ °É¾î, ³» ¾ËÆÄ AXP ¸®´ª½º ½Ã½ºÅÛÀÇ ÆÄÀÏ ½Ã½ºÅÛÀ» /mnt/remote¿¡ ¿ø°ÝÀ¸·Î ¸¶¿îÆ®ÇÒ ¼öµµ ÀÖ´Ù. ÆÄÀÏ ½Ã½ºÅÛÀÇ ÆÄÀϵéÀº µ¥ÀÌÅÍÀÇ ÁýÇÕÀÌ´Ù. ÀÌ ÀåÀº filesystems.tex ¶ó´Â ¾Æ½ºÅ° ÆÄÀÏ¿¡ µé¾î ÀÖ´Ù. ÆÄÀÏ ½Ã½ºÅÛÀº ÆÄÀÏ¿¡ ´ã±ä µ¥ÀÌÅÍ »Ó¸¸ ¾Æ´Ï¶ó, ÆÄÀÏ ½Ã½ºÅÛÀÇ ±¸Á¶µµ °¡Áö°í ÀÖ´Ù. ÆÄÀÏ ½Ã½ºÅÛÀÇ ±¸Á¶¿¡´Â ¸®´ª½ºÀÇ »ç¿ëÀÚ³ª ÇÁ·Î¼¼½º°¡ º¼ ¼ö ÀÖ´Â ÆÄÀÏ, µð·ºÅ丮¿¡ ´ëÇÑ ¼ÒÇÁÆ® ¸µÅ©, ÆÄÀÏ º¸È£ Á¤º¸¿Í °°Àº °ÍµéÀÌ Æ÷ÇԵȴÙ. ÀÌ·¯ÇÑ Á¤º¸µéÀº ¾ÈÀüÇÏ°í ½Å·Ú¼ºÀÖ°Ô ÀúÀåµÇ¾î¾ß Çϸç, µû¶ó¼­ ¿î¿µÃ¼Á¦ÀÇ ±âº»ÀûÀÎ ¹«°á¼ºÀº ±× ÆÄÀÏ ½Ã½ºÅÛ¿¡ ´Þ·ÁÀÖ´Ù. ¾Æ¹«µµ ¼ö½Ã·Î Àڷᳪ ÆÄÀÏÀÌ ¼Õ»óµÇ´Â ¿î¿µÃ¼Á¦ ¸¦ »ç¿ëÇÏ·Á ÇÏÁö ¾ÊÀº °ÍÀÌ´Ù . ¸®´ª½º°¡ óÀ½ »ç¿ëÇß´ø ¹Ì´Ð½º(Minix)ÆÄÀÏ ½Ã½ºÅÛÀº Á¦ÇÑÀûÀÌ°í ¼º´ÉÀÌ ÁÁÁö ¸øÇß´Ù. ÆÄÀÏÀ̸§ÀÌ 14ÀÚ¸¦ ³ÑÁö ¸øÇß°í (±×·¡µµ, 8.3 Á¦ÇѺ¸´Ù´Â ³´´Ù), ÆÄÀÏ Å©±â°¡ 64M¹ÙÀÌÆ®·Î Á¦ÇѵǾú´Ù. 64M¹ÙÀÌÆ®´Â ¾óÇÍ º¸±â¿¡ ÃæºÐÇÒ °Í °°Áö¸¸, ÀϹÝÀûÀÎ µ¥ÀÌÅͺ£À̽º¸¦ ÀúÀåÇϱâ À§Çؼ­´Â ÈξÀ Å« ÆÄÀÏÀÌ ÇÊ¿äÇÏ´Ù. ¸®´ª½º Àü¿ëÀ¸·Î ¼³°èµÇ¾ú´ø ù¹ø° ÆÄÀÏ ½Ã½ºÅÛÀº È®Àå ÆÄÀÏ ½Ã½ºÅÛ(Extended File System, EXT)À¸·Î, 1992³â 4¿ù¿¡ ¼Ò°³ µÇ¾ú°í ¸¹Àº ¹®Á¦Á¡À» ÇØ°áÇßÁö¸¸ ¾ÆÁ÷Àº ¼º´ÉÀÌ ¶³¾îÁ³´Ù. ±×·¡¼­, 1993³â¿¡ 2Â÷ È®Àå ÆÄÀÏ ½Ã½ºÅÛ(Second Extended File System, EXT2)ÀÌ Ãß°¡µÇ¾ú´Ù. ÀÌ ÀåÀÇ µÞºÎºÐ¿¡ ÀÚ¼¼È÷ ¼³¸íµÉ ÆÄÀÏ ½Ã½ºÅÛÀÌ ¹Ù·Î ÀÌ°Í ÀÌ´Ù. ¸®´ª½º¿¡ EXT ÆÄÀÏ ½Ã½ºÅÛÀÌ Ãß°¡µÇ¾úÀ» ¶§, Áß¿äÇÑ ¹ßÀüÀÌ ÀÖ¾ú´Ù. ½ÇÁ¦ ÆÄÀÏ ½Ã½ºÅÛÀÌ °¡»ó ÆÄÀÏ ½Ã½ºÅÛ(Virtual File System, VFS)À̶ó´Â ÀÎÅÍ ÆäÀ̽º °èÃþÀ» ÅëÇؼ­ ¿î¿µÃ¼Á¦¿Í ¿î¿µÃ¼Á¦ÀÇ ¼­ºñ½º·ÎºÎÅÍ ºÐ¸®µÈ °ÍÀÌ ´Ù. VFS ´öºÐ¿¡ ¸®´ª½º´Â VFS¸¦ Áö¿øÇÏ´Â ¼­·Î ´Ù¸¥ ¸¹Àº ÆÄÀÏ ½Ã½ºÅÛµéÀ» »ç¿ëÇÒ ¼ö ÀÖ°Ô µÇ¾ú´Ù. ¸®´ª½º ÆÄÀÏ ½Ã½ºÅÛÀÇ ¸ðµç ¼¼¼¼ÇÑ °ÍµéÀÌ ¼ÒÇÁÆ® ¿þ¾î¿¡ ÀÇÇؼ­ º¯È¯µÇ¾î¼­, ¸ðµç ÆÄÀÏ ½Ã½ºÅÛÀÌ ¸®´ª½º Ä¿³ÎÀÇ ´Ù¸¥ ºÎºÐ µé°ú ±× À§¿¡¼­ ½ÇÇàµÇ´Â ÇÁ·Î±×·¥¿¡°Ô´Â °°Àº °ÍÀ¸·Î º¸ÀδÙ. ¶ÇÇÑ, ¸®´ª½ºÀÇ °¡»ó ÆÄÀÏ ½Ã½ºÅÛÀº ¸¹Àº ´Ù¸¥ ÆÄÀÏ ½Ã½ºÅÛÀ» µ¿½Ã¿¡ ±¸º°¾øÀÌ ¸¶¿îÆ®ÇÒ ¼ö ÀÖ°Ô ÇØ ÁØ´Ù. ¸®´ª½º °¡»ó ÆÄÀÏ ½Ã½ºÅÛÀº ±× ¾ÈÀÇ ÆÄÀÏÀ» °¡Àå ºü¸£°í È¿À²ÀûÀ¸·Î »ç¿ë ÇÒ ¼ö ÀÖµµ·Ï ±¸ÇöµÇ¾ú´Ù. ¶ÇÇÑ, ÆÄÀÏ°ú ±× ¾ÈÀÇ ÀÚ·á°¡ Á¤È®ÇÏ°Ô À¯ÁöµÉ ¼ö ÀÖ¾î¾ß¸¸ ÇÑ´Ù. ÀÌ·¯ÇÑ µÎ°¡Áö ¿ä±¸ Á¶°ÇÀº ¼­·Î »ó¹ÝµÉ ¼ö ÀÖ´Ù. ¸®´ª½º VFS´Â ¸¶¿îÆ®µÇ¾î »ç¿ëÁßÀÎ °¢°¢ÀÇ ÆÄÀÏ ½Ã½ºÅÛÀÇ Á¤º¸¸¦ ¸Þ¸ð¸®¿¡ ij½ÃÇÑ´Ù. ÆÄÀÏÀ̳ª µð·ºÅ丮°¡ »ý¼º, »èÁ¦µÇ°Å³ª ÀÚ·á°¡ ÀÔ·ÂµÉ ¶§ ÆÄÀÏ ½Ã½ºÅÛ°ú ij½Ã ¾ÈÀÇ ÀڷḦ Á¤È®ÇÏ°Ô ¼öÁ¤Çϱâ À§Çؼ­ ¸¹Àº ÁÖÀÇ°¡ ÇÊ¿ä ÇÏ´Ù. ¸¸¾à ½ÇÇàÁßÀÎ Ä¿³Î¾È¿¡¼­ ÆÄÀÏ ½Ã½ºÅÛÀÇ ÀڷᱸÁ¶µéÀ» º¼ ¼ö ÀÖ´Ù ¸é, ÆÄÀÏ ½Ã½ºÅÛÀÌ ÀÚ·áµéÀ» Àаųª ¾²´Â °Íµµ º¼ ¼ö ÀÖÀ» °ÍÀÌ´Ù. Á¢±Ù ÇÏ·Á´Â ÆÄÀÏÀ̳ª µð·ºÅ丮¸¦ ³ªÅ¸³»´Â ÀڷᱸÁ¶´Â µð¹ÙÀ̽º µå¶óÀ̹ö°¡ ÀÛ¾÷À» Çϰųª, ÀڷḦ ²¨³»°Å³ª ÀúÀåÇÏ´Â °úÁ¤¿¡¼­ ¸¸µé¾îÁö°í ¾ø¾îÁø´Ù. ij½Ã Áß¿¡¼­ °¡Àå Áß¿äÇÑ °ÍÀº ¹öÆÛ Ä³½Ã(Buffer Cache)Àε¥ ÀÌ°ÍÀº °¢°¢ ÀÇ ÆÄÀÏ ½Ã½ºÅÛÀÌ ±× ¾Æ·¡¿¡ ÀÖ´Â ºí·° ÀåÄ¡¿¡ Á¢±ÙÇÏ´Â ¹æ¹ý¿¡ ÅëÇյǾî ÀÖ´Ù. ºí·°¿¡ Á¢±ÙÇÏ¸é ±× ºí·°Àº ¹öÆÛ Ä³½Ã¿¡ µé¾î°¡°í »óÅ¿¡ µû¶ó ¿©·¯ °¡Áö Å¥¿¡ µé¾î ÀÖ°Ô µÈ´Ù. ¹öÆÛ Ä³½Ã´Â µ¥ÀÌÅÍ ¹öÆÛ¸¦ ij½ÃÇÒ »Ó¸¸ ¾Æ´Ï ¶ó, ºí·° µð¹ÙÀ̽º µå¶óÀ̹ö¿ÍÀÇ ºñµ¿±âÀûÀÎ ÀÎÅÍÆäÀ̽ºÀÇ °ü¸®µµ µµ¿Í ÁØ´Ù. 9.1 2Â÷ È®Àå ÆÄÀÏ ½Ã½ºÅÛ (EXT2) 2Â÷ È®Àå ÆÄÀÏ ½Ã½ºÅÛÀº ¸®´ª½º¸¦ À§ÇÑ È®À强ÀÖ°í °­·ÂÇÑ ÆÄÀÏ ½Ã½ºÅÛ À¸·Î R?my Card°¡ °í¾ÈÇÑ °ÍÀÌ´Ù. ÀÌ´Â ÇöÀç±îÁö ¸®´ª½º °øµ¿Ã¼¿¡¼­ ¸¸µç °Í Áß °¡Àå ¼º°øÀûÀÎ ÆÄÀÏ ½Ã½ºÅÛÀÏ »Ó¸¸ ¾Æ´Ï¶ó ÇöÀç ¹èÆ÷µÇ°í ÀÖ´Â ¸ðµç ¸®´ª½º ¹èÆ÷ÆÇÀÇ ±â¹ÝÀ» ÀÌ·ç°í ÀÖ´Ù. ´Ù¸¥ ¼ö¸¹Àº ÆÄÀÏ ½Ã½ºÅÛ°ú ¸¶Âù °¡Áö·Î EXT2 ÆÄÀÏ ½Ã½ºÅÛÀº ÆÄÀÏ¿¡ µé¾îÀÖ´Â µ¥ÀÌÅÍ´Â µ¥ÀÌÅÍ ºí·°¿¡ ÀúÀåµÈ´Ù´Â °ÍÀ» ÀüÁ¦·Î ÇÏ°í ÀÖ´Ù. ¸ðµç µ¥ÀÌÅÍ ºí·°ÀÇ Å©±â´Â °°´Ù. ¹°·Ð ¼­·Î ´Ù¸¥ EXT2 ÆÄÀÏ ½Ã½ºÅÛ¿¡¼­´Â Å©±â°¡ ´Ù¸¦ ¼ö ÀÖ´Ù. ±×¸®°í ƯÁ¤ EXT2 ÆÄÀÏ ½Ã½ºÅÛ¿¡¼­ÀÇ ºí·°ÀÇ Å©±â´Â (mke2fs ¸í·ÉÀ» ÅëÇØ) ÆÄÀÏ ½Ã½ºÅÛÀÌ ¸¸µé¾î Áú ¶§ °áÁ¤µÈ´Ù. ¸ðµç ÆÄÀÏÀÇ Å©±â´Â ºí·°ÀÇ Å©±â¿¡ µû¶ó ¿Ã¸²ÀÌ µÈ´Ù. ¸¸¾à ºí·°ÀÇ Å©±â°¡ 1024¹ÙÀÌÆ®ÀÏ ¶§, Å©±â°¡ 1025¹ÙÀÌÆ®ÀÎ ÆÄÀÏÀº 1024¹ÙÀÌÆ® ºí·° µÎ°³¸¦ Â÷ÁöÇÏ°Ô µÈ´Ù. ÀÌ´Â ÆÄÀÏ Çϳª´ç Æò±Õ ºí·°ÀÇ Àý¹Ý Å©±â ¸¸Å­À» ³¶ºñÇÏ°í ÀÖ´Ù´Â °ÍÀ» ÀǹÌÇÑ´Ù. ´ë°³ ÄÄÇ»ÅÍ¿¡¼­´Â CPUÀÇ ¸Þ¸ð¸® »ç¿ë·®°ú µð½ºÅ© °ø°£ÀÇ È°¿ëµµ »çÀÌ¿¡ Æ®·¹ÀÌµå ¿ÀÇÁ(trade off)°¡ ¹ß»ýÇÑ´Ù. ´ëºÎºÐÀÇ ¿î¿µÃ¼Á¦¿Í ¸¶Âù°¡Áö·Î ÀÌ·¯ÇÑ °æ¿ì¿¡ ¸®´ª½º´Â CPUÀÇ ºÎ´ãÀ» ÁÙÀ̱â À§ÇÏ¿© µð½ºÅ©ÀÇ È°¿ëµµ¸¦ Èñ»ýÇÑ´Ù. ÆÄÀÏ ½Ã½ºÅÛÀÇ ¸ðµç ºí·°ÀÌ µ¥ÀÌÅ͸¸À» ÀúÀåÇÏ´Â °ÍÀº ¾Æ´Ï´Ù. ¾î¶² ºí·°¿¡´Â ÆÄÀÏ ½Ã½ºÅÛÀÇ ±¸Á¶¸¦ Ç¥ÇöÇÏ´Â Á¤º¸¸¦ ´ã°í ÀÖ¾î¾ß ÇÑ´Ù. EXT2´Â ÆÄÀÏ ½Ã½ºÅÛ ¹èÄ¡µµ¸¦ Á¤ÀÇÇϱâ À§ÇÏ¿© ½Ã½ºÅÛ³»ÀÇ °¢ ÆÄÀÏÀ» inode ÀڷᱸÁ¶·Î Ç¥ÇöÇÑ´Ù. inode´Â ÆÄÀÏÀÇ µ¥ÀÌÅÍ°¡ ¾î´À ºí·°¿¡ µé¾î ÀÖ´ÂÁö, ÆÄÀÏ¿¡ ´ëÇÑ Á¢±Ù ±ÇÇÑ, ÆÄÀÏÀÇ ¼öÁ¤ ½Ã°£, ÆÄÀÏÀÇ Á¾·ù µîÀ» ³ªÅ¸³½´Ù. EXT2 ÆÄÀÏ ½Ã½ºÅÛÀÇ ¸ðµç ÆÄÀÏÀº °¢±â ÇϳªÀÇ inode¿¡ ÀÇÇÏ¿© Ç¥ÇöµÇ¸ç °¢°¢ÀÇ inode´Â °¢°¢À» ±¸ºÐÇÒ ¼ö ÀÖ´Â °íÀ¯ÀÇ ¹øÈ£¸¦ °®°í ÀÖ´Ù. ÆÄÀÏ ½Ã½ºÅÛÀÇ ¸ðµç inode´Â inode Å×ÀÌºí¿¡ µé¾î ÀÖ´Ù. EXT2ÀÇ µð·ºÅ丮´Â (±× ÀÚüµµ inode·Î Ç¥ÇöµÇ´Â) ´ÜÁö Á» º°³­ ÆÄÀÏÀÏ»Ó ÀÌ¸ç ±× µð·ºÅ丮¿¡ ¼ÓÇÏ´Â ÆÄÀϵéÀÇ inode¿¡ ´ëÇÑ Æ÷ÀÎÅ͸¦ °®°í ÀÖ´Ù. +--+----------+------------+------------+--------------+ | | Block | | Block | Block | | | Group 0 | | Gruop N-1 | Gruop N | +--+----------+------------+------------+--------------+ / \ / \ /---------------------/ \-------------\ / \ / \ +-------+-------------+--------+--------+-------+------------------+ | Super | Group | Block | Inode | Inode | Data | | Block | Descriptors | Bitmap | Bitmap | Table | Blocks | +-------+-------------+--------+--------+-------+------------------+ ±×¸² 9.1 : Physical Layout of the EXT2 Files system ±×¸² 9.1Àº EXT2 ÆÄÀÏ ½Ã½ºÅÛÀÌ ºí·° ±¸Á¶·Î µÈ ÀåÄ¡¿¡¼­ ºí·°À» ¾î¶»°Ô Â÷ÁöÇÏ°í ÀÖ´ÂÁö ¹èÄ¡ »óŸ¦ º¸¿©ÁØ´Ù. ÆÄÀÏ ½Ã½ºÅÛ¿¡ °üÇÑ ÇÑ ºí·° ÀåÄ¡ ´Â ±×Àú ÀÐ°í ¾µ ¼ö ÀÖ´Â ÀÏ·ÃÀÇ ºí·°ÀÏ »ÓÀÌ´Ù. ÆÄÀÏ ½Ã½ºÅÛÀº ½ÇÁ¦ ¸Åü ÀÇ ¾î´À °÷¿¡ ºí·°ÀÌ ¾º¾î¾ß ÇÏ´ÂÁö¿¡ ´ëÇØ ½Å°æ ¾µ ÇÊ¿ä°¡ ¾ø´Ù. ±×°ÍÀº µð¹ÙÀ̽º µå¶óÀ̹ö°¡ ¾Ë¾Æ¼­ ÇÒ ÀÏÀÌ´Ù. ÆÄÀÏ ½Ã½ºÅÛÀÌ ±× ÆÄÀÏ ½Ã½ºÅÛÀ» ´ã°í ÀÖ´Â ºí·° ÀåÄ¡·ÎºÎÅÍ Á¤º¸³ª µ¥ÀÌÅ͸¦ ÀÐÀ¸·Á°í ÇÑ´Ù¸é ´ÜÁö ÇØ´ç µð¹ÙÀ̽º µå¶óÀ̹ö¿¡°Ô ¸î °³ÀÇ ºí·°À» Àоî´Þ¶ó°í ¿äûÇϱ⸸ ÇÏ¸é µÈ´Ù. EXT2 ÆÄÀÏ ½Ã½ºÅÛÀº ÀÚ½ÅÀÌ Â÷ÁöÇÏ°í ÀÖ´Â ³í¸®ÀûÀÎ ÆÄƼ¼ÇÀ» ´Ù½Ã ºí·° ±×·ìÀ¸·Î ÂÉ°µ´Ù. °¢ ºí·° ±×·ìÀº ÆÄÀÏ ½Ã½ºÅÛ¿¡¼­ ¹«°á¼ºÀÇ ÇÙ½ÉÀÌ µÇ´Â Á¤º¸¸¦ Áߺ¹Çؼ­ °®°í ÀÖÀ¸¸ç, ½ÇÁ¦ ÆÄÀÏ°ú µð·ºÅ丮¸¦ Á¤º¸¿Í µ¥ÀÌÅÍÀÇ ºí·°À¸·Î °®°í ÀÖ´Ù. ÀÌ Áߺ¹Àº ÆÄÀÏ ½Ã½ºÅÛÀÌ ±úÁö´Â µîÀÇ Àç³­ÀÌ ¹ß»ý Çؼ­ ÆÄÀÏ ½Ã½ºÅÛÀÇ º¹±¸°¡ ÇÊ¿äÇÒ ¶§ ÇʼöÀûÀÌ´Ù. ´ÙÀ½ ¼Ò´Ü¿ø¿¡¼­ °¢ ºí·° ±×·ìÀÇ ³»¿ëÀ» ´õ ÀÚ¼¼È÷ ¼³¸íÇÑ´Ù. 9.1.1 EXT2 inode EXT2 ÆÄÀÏ ½Ã½ºÅÛ¿¡¼­ inode´Â °¡Àå ±âº»ÀÌ µÇ´Â ´ÜÀ§ÀÌ´Ù. ÆÄÀÏ ½Ã½ºÅÛ ÀÇ ¸ðµç ÆÄÀÏÀ̳ª µð·ºÅ丮´Â °¢±â ´Ü ÇϳªÀÇ inode¿¡ ÀÇÇÏ¿© Ç¥ÇöµÈ´Ù. °¢ ºí·° ±×·ìÀ» À§ÇÑ EXT2 inode´Â ¾î¶² inode°¡ ÇÒ´çµÇ¾ú´ÂÁö ¾Æ´ÑÁö¸¦ ÃßÀûÇϱâ À§ÇÑ ºñÆ®¸Ê°ú ÇÔ²² inode Å×ÀÌºí¿¡ ÀúÀåµÈ´Ù. ±×¸² 9.2´Â EXT2 inodeÀÇ ÇüŸ¦ º¸¿©ÁØ´Ù. ÀúÀåµÇ´Â Á¤º¸¿¡´Â ´ÙÀ½°ú °°Àº Ç׸ñÀÌ ÀÖ´Ù. ¸ðµå(mode) : ¿©±â¿¡´Â ÀÌ inode°¡ ¾î´À ÆÄÀÏ¿¡ ÇØ´çÇÏ´ÂÁö¸¦ ³ªÅ¸ ³»´Â Á¤º¸¿Í, Á¢±Ù±ÇÇÑÀ» ³ªÅ¸³»´Â Á¤º¸°¡ ÀúÀåµÈ´Ù. EXT2¿¡¼­ ÇϳªÀÇ inode´Â ÇϳªÀÇ ÆÄÀÏ, µð·ºÅ丮, ½Éº¼¸¯ ¸µÅ©, ºí·° ÀåÄ¡, ¹®ÀÚ ÀåÄ¡ ¶Ç´Â FIFO¸¦ ³ªÅ¸³½´Ù. ¼ÒÀ¯ÀÚ Á¤º¸(Owner Information) : ÀÌ ÆÄÀÏ ¶Ç´Â µð·ºÅ丮¿¡ ´ëÇÑ »ç¿ëÀÚ¿Í ±×·ì ½Äº°ÀÚÀÌ´Ù. ÀÌ Á¤º¸¸¦ ÀÌ¿ëÇÏ¿© ÆÄÀÏ ½Ã½ºÅÛÀº Á¢±Ù±ÇÇÑÀ» Á¦´ë·Î °ü¸®ÇÒ ¼ö ÀÖ°Ô µÈ´Ù. Å©±â(Size) : ÆÄÀÏÀÇ Å©±â¸¦ ¹ÙÀÌÆ® ´ÜÀ§·Î °¡Áö°í ÀÖ´Ù. ŸÀÓ½ºÅÆÇÁ(Timestamps) : inode°¡ ¸¸µé¾îÁø ½Ã°£°ú ÃÖÁ¾ÀûÀ¸·Î ¼öÁ¤µÈ ½Ã°£À» ±â·ÏÇÑ´Ù. µ¥ÀÌÅÍºí·°(Datablocks) : ÀÌ inode°¡ Ç¥ÇöÇÏ°í ÀÖ´Â µ¥ÀÌÅÍ°¡ ÀúÀå µÈ ºí·°¿¡ ´ëÇÑ Æ÷ÀÎÅÍ. ¸Ç ¾ÕÀÇ ¿­µÎ°³ÀÇ Æ÷ÀÎÅÍ´Â ÀÌ inode°¡ Ç¥ÇöÇÏ°í ÀÖ´Â µ¥ÀÌÅ͸¦ ÀúÀåÇÑ ½ÇÁ¦ ºí·°¿¡ ´ëÇÑ Æ÷ÀÎÅÍÀÌ¸ç ¸¶Áö ¸· ¼¼°³ÀÇ Æ÷ÀÎÅÍ´Â Á¡Á¡ ´õ ³ôÀº ¼öÁØÀÇ °£Á¢ÀûÀÎ ¿¬°áÀ» °®°í ÀÖ´Ù. ¿¹¸¦ µé¾î, ÀÌÁß °£Á¢ ºí·° Æ÷ÀÎÅÍ(double indirect block pointer)´Â µ¥ÀÌÅÍ ºí·°¿¡ ´ëÇÑ Æ÷ÀÎÅ͵éÀÇ ºí·°¿¡ ´ëÇÑ Æ÷ÀÎÅ͵é ÀÇ ºí·°À» °¡¸®Å°°í ÀÖ´Ù. µû¶ó¼­, ±æÀÌ°¡ 12°³ µ¥ÀÌÅÍ ºí·° ÀÌÇÏ ÀÎ ÆÄÀÏÀº ±× º¸´Ù Å« ÆÄÀϺ¸´Ù ÈξÀ »¡¸® ¾×¼¼½º µÈ´Ù. EXT2 inode´Â Ưº° ÀåÄ¡ÆÄÀÏÀ» Ç¥ÇöÇÒ ¼öµµ ÀÖ´Ù´Â Á¡¿¡ ÁÖ¸ñÇÏ¿©¾ß ÇÑ´Ù. À̵é ÆÄÀÏÀº ½ÇÁ¦ ÆÄÀÏÀº ¾Æ´ÏÁö¸¸ ÀåÄ¡¸¦ ¾×¼¼½ºÇϴµ¥ »ç¿ëµÇ´Â ÇÁ·Î ±×·¥À» ´Ù·é´Ù. /dev µð·ºÅ丮 ¾Æ·¡ÀÇ ¸ðµç ÀåÄ¡ ÆÄÀÏÀº ÇÁ·Î±×·¥ÀÌ ¸®´ª½º ÀåÄ¡¸¦ ¾×¼¼½º ÇÒ ¼ö ÀÖµµ·Ï Çϱâ À§ÇÏ¿© °Å±â¿¡ ÀÖ´Â °ÍÀÌ´Ù. ¿¹¸¦µé¾î ¸¶¿îÆ® ÇÁ·Î±×·¥ Àº ¸¶¿îÆ®ÇÏ·Á´Â ÀåÄ¡ ÆÄÀÏÀ» ÀÎÀÚ·Î »ç¿ëÇÑ´Ù. 9.1.2 EXT2 ¼öÆÛºí·°(Superblock) ¼öÆÛºí·°¿¡´Â ±× ÆÄÀÏ ½Ã½ºÅÛÀÇ ±âº»ÀûÀÎ Å©±â³ª ¸ð¾ç¿¡ ´ëÇÑ ¼³¸íÀÌ µé¾î ÀÖ´Ù. ¿©±â¿¡ µé¾î ÀÖ´Â Á¤º¸¸¦ ÀÌ¿ëÇÏ¿© ÆÄÀÏ ½Ã½ºÅÛ °ü¸®ÀÚ´Â ÆÄÀÏ ½Ã½ºÅÛÀ» È°¿ëÇÏ°í À¯ÁöÇÑ´Ù. º¸Åë ÆÄÀÏ ½Ã½ºÅÛÀÌ ¸¶¿îÆ® µÉ ¶§¿¡´Â ºí·° ±×·ì 0¿¡ µé¾î ÀÖ´Â ¼öÆÛºí·°À» ÀоîµéÀδÙ. ÇÏÁö¸¸, ¸ðµç ºí·° ±×·ì¿¡´Â ¶È°°Àº º¹»çº»ÀÌ À־ ÆÄÀÏ ½Ã½ºÅÛÀÌ ±úÁö´Â °æ¿ì¸¦ ´ëºñÇÏ°í ÀÖ´Ù. ¿©±â¿¡ µé¾î ÀÖ´Â Á¤º¸¿¡´Â ´ÙÀ½°ú °°Àº °ÍµéÀÌ ÀÖ´Ù. ¸ÅÁ÷ ³Ñ¹ö(Magic Number) : ÀÌ °ªÀº ¸¶¿îÆ®ÇÏ´Â ¼ÒÇÁÆ®¿þ¾î·Î ÇÏ¿©±Ý ÀÌ°ÍÀÌ ÁøÂ¥ EXT2 ÆÄÀÏ ½Ã½ºÅÛÀÇ ¼öÆÛºí·°À̶ó´Â °ÍÀ» È®ÀÎÄÉÇÑ´Ù. ÇöÀç ¹öÀüÀÇ EXT2¿¡¼­´Â 0xEF53À¸·Î µÇ¾î ÀÖ´Ù. °³Á¤ ·¹º§(Revision Level) : ÀÌ °ªÀº ¸ÞÀÌÀú °³Á¤ ·¹º§°ú ¸¶ÀÌ³Ê °³Á¤ ·¹º§·Î ±¸¼ºµÇ¸ç, ¸¶¿îÆ® ÇÁ·Î±×·¥ÀÌ ¾î¶² ƯÁ¤ÇÑ ¹öÀü¿¡¼­¸¸ Áö¿øµÇ´Â ±â´ÉÀÌ ÀÌ ÆÄÀÏ ½Ã½ºÅÛ¿¡¼­ Áö¿øµÇ´ÂÁö ¾Æ´ÑÁö¸¦ È®ÀÎ Çϴµ¥ »ç¿ëµÈ´Ù. ¶ÇÇÑ ±â´É ȣȯ¼º Ç׸ñ¶ó´Â °ÍÀÌ À־ ¸¶¿îÆ® ÇÁ·Î±×·¥ÀÌ ÀÌ ÆÄÀÏ ½Ã½ºÅÛ¿¡¼­ ¾ÈÀüÇÏ°Ô »ç¿ëÇÒ ¼ö ÀÖ´Â ±â´ÉÀÌ ¹«¾ùÀÎÁö¸¦ ÆÇ´ÜÇÒ ¼ö ÀÖµµ·Ï ÇØÁØ´Ù. ¸¶¿îÆ® Ƚ¼ö(Mount Count)¿Í ÃÖ´ë ¸¶¿îÆ® Ƚ¼ö(Maximum Mount Count) : ÀÌ µÎ°³ÀÇ °ªÀ» ÀÌ¿ëÇÏ¿© ½Ã½ºÅÛÀº ÆÄÀÏ ½Ã½ºÅÛ ÀüºÎ¸¦ °Ë»çÇÒ ÇÊ¿ä°¡ ÀÖ´ÂÁö¸¦ È®ÀÎÇÒ ¼ö ÀÖ´Ù. ¸¶¿îÆ® Ƚ¼ö´Â ÆÄÀÏ ½Ã½ºÅÛÀÌ ¸¶¿îÆ®µÉ ¶§ ¸¶´Ù 1¾¿ Áõ°¡ÇÑ´Ù. ±×¸®°í ±× °ªÀÌ ÃÖ´ë ¸¶¿îÆ® Ƚ¼ö ¿Í °°¾ÆÁö¸é "ÃÖ´ë ¸¶¿îÆ® Ƚ¼ö¿¡ µµ´ÞÇÏ¿´½À´Ï´Ù, e2fsck¸¦ ½ÇÇà ÇÏ´Â °ÍÀÌ ÁÁ½À´Ï´Ù " ¶ó´Â ¸Þ½ÃÁö°¡ Ç¥½ÃµÈ´Ù. ºí·° ±×·ì ¹øÈ£(Block Group Number) : ÇöÀç º¸°í ÀÖ´Â ¼öÆÛºí·° º¹Á¦º»À» °®°í ÀÖ´Â ºí·° ±×·ìÀÇ ¹øÈ£. ºí·° Å©±â(Block Size) : ÀÌ ÆÄÀÏ ½Ã½ºÅÛÀÇ ºí·° Å©±â¸¦ ¹ÙÀÌÆ® ´ÜÀ§·Î (¿¹¸¦ µé¾î, 1024 ¹ÙÀÌÆ®) Ç¥½ÃÇÑ´Ù. ±×·ì´ç ºí·°¼ö(Blocks per Group) : ÇϳªÀÇ ±×·ì¿¡ ¼ÓÇÏ´Â ºí·°ÀÇ ¼ö. ºí·° Å©±â¿Í ¸¶Âù°¡Áö·Î ÆÄÀÏ ½Ã½ºÅÛÀ» ¸¸µé¶§ Á¤ÇØÁø´Ù. ÇÁ¸® ºí·°(Free Blocks) : ÆÄÀÏ ½Ã½ºÅÛ³»ÀÇ ÇÁ¸® ºí·°ÀÇ ¼ö. ÇÁ¸® Inode(Free Inode) : ÆÄÀÏ ½Ã½ºÅÛ³»ÀÇ ÇÁ¸® inodeÀÇ ¼ö. ù¹ø° Inode(First Inode) : ÆÄÀÏ ½Ã½ºÅÛ³»ÀÇ Ã¹¹ø° inodeÀÇ inode ¹øÈ£. EXT2 ·çÆ® ÆÄÀÏ ½Ã½ºÅÛ¿¡¼­ ù¹ø° inode´Â "/" µð·º Å丮¿¡ ´ëÇÑ µð·ºÅ丮 ¿£Æ®¸®ÀÌ´Ù. 9.1.3 EXT2 ±×·ì ±â¼úÀÚ(Group Descriptor) °¢ ºí·° ±×·ìÀº ÀÚ½ÅÀ» ±â¼úÇÏ´Â ÀڷᱸÁ¶¸¦ °¡Áö°í ÀÖ´Ù. ¼öÆÛºí·°°ú ¸¶Âù°¡Áö·Î ¸ðµç ºí·° ±×·ìÀ» À§ÇÑ ±×·ì ±â¼úÀÚ´Â °¢ ºí·° ±×·ì¿¡ º¹Á¦ µÇ¾î ÆÄÀÏ ½Ã½ºÅÛÀÌ Æı«µÇ´Â °æ¿ì¸¦ ´ëºñÇÑ´Ù. °¢ ±×·ì ±â¼úÀÚ´Â ´ÙÀ½°ú °°Àº Á¤º¸¸¦ °®°í ÀÖ´Ù : ºí·° ºñÆ®¸Ê(Blocks Bitmap) : ÀÌ ºí·° ±×·ì¿¡¼­ ºí·°ÀÇ ÇÒ´ç »óŸ¦ ³ªÅ¸³»´Â ºñÆ®¸ÊÀ¸·Î¼­ ºí·°ÀÇ ¼ö ¸¸Å­ ÀÖ´Ù. ÀÌ°ÍÀº ºí·°À» ÇÒ´ç Çϰųª ÇØÁ¦ÇÒ ¶§ »ç¿ëµÈ´Ù. Inode ºñÆ®¸Ê(Inode Bitmap) : ÀÌ ºí·° ±×·ì¿¡¼­ inodeÀÇ ÇÒ´ç »óÅ ¸¦ ³ªÅ¸³»´Â ºñÆ®¸ÊÀ¸·Î¼­ ºí·°ÀÇ ¼ö ¸¸Å­ ÀÖ´Ù. ÀÌ°ÍÀº inode¸¦ ÇÒ´çÇϰųª ÇØÁ¦ÇÒ ¶§ »ç¿ëµÈ´Ù. Inode Å×À̺í(Inode Table) : ÀÌ ºí·° ±×·ìÀÇ inode Å×À̺íÀÇ ½ÃÀÛ ºí·°À¸·Î¼­ ºí·°ÀÇ ¼ö ¸¸Å­ ÀÖ´Ù. °¢ inode´Â ´ÙÀ½¿¡ ¼³¸íÇÏ´Â EXT2 inode ÀڷᱸÁ¶¿¡ ÀÇÇØ Ç¥ÇöµÈ´Ù. ÇÁ¸® ºí·° °¹¼ö(Free Blocks Count), ÇÁ¸® Inode °¹¼ö(Free Inode Count), »ç¿ëµÈ µð·ºÅ丮 °¹¼ö(Used Directory Count) ±×·ì ±â¼úÀÚ´Â ÀÕ´Þ¾Æ ³ªÅ¸³ª¼­ ÀüüÀûÀ¸·Î´Â ÇϳªÀÇ ±×·ì ±â¼úÀÚ Å×À̺í À» Çü¼ºÇÑ´Ù. °¢ ºí·° ±×·ì¿¡´Â ¼öÆÛºí·° ¹Ù·Î µÚ¿¡ ±×·ì ±â¼úÀÚ Å×À̺í Àüü°¡ ³õ¿©ÀÖ´Ù. EXT2 ÆÄÀÏ ½Ã½ºÅÛ¿¡¼­ ½ÇÁ¦·Î »ç¿ëµÇ´Â °ÍÀº (ºí·° ±×·ì 0¿¡ ÀÖ´Â) ù ¹ø° º¹»çº» »ÓÀÌ´Ù. ´Ù¸¥ º¹»çº»µéÀº, ¼öÆÛºí·°ÀÇ º¹»çº»µé°ú ¸¶Âù°¡Áö·Î, ¿øº»ÀÌ ±úÁú °æ¿ì¸¦ ´ëºñÇÏ°í ÀÖ´Ù. 9.1.4 EXT2 µð·ºÅ丮 EXT2 ÆÄÀÏ ½Ã½ºÅÛ¿¡¼­ µð·ºÅ丮´Â ÆÄÀÏ ½Ã½ºÅÛ³»ÀÇ ÆÄÀÏ¿¡ ´ëÇÑ Á¢±Ù °æ·Î¸¦ ¸¸µé°í ÀúÀåÇϴ Ưº°ÇÑ ÆÄÀÏÀÌ´Ù. ±×¸² 9.3Àº ¸Þ¸ð¸® »ó¿¡¼­ÀÇ µð·ºÅ丮 ¿£Æ®¸®ÀÇ ¸ð¾çÀ» º¸¿©ÁØ´Ù. µð·ºÅ丮 ÆÄÀÏÀº µð·ºÅ丮 ¿£Æ®¸®ÀÇ ¸®½ºÆ®ÀÌ¸ç °¢°¢ÀÇ µð·ºÅ丮 ¿£Æ®¸®´Â ´ÙÀ½°ú °°Àº Á¤º¸¸¦ °®°í ÀÖ´Ù : inode : ÀÌ µð·ºÅ丮 ¿£Æ®¸®¿¡ ÇØ´çÇÏ´Â inode. ÀÌ °ªÀº ºí·° ±×·ìÀÇ inode Å×ÀÌºí¿¡ ÀúÀåµÇ¾î ÀÖ´Â inode ¹è¿­¿¡ ´ëÇÑ À妽ºÀÌ´Ù. ±×¸² 9.3 ¿¡¼­ fileÀ̶ó´Â À̸§ÀÇ ÆÄÀÏ¿¡ ´ëÇÑ µð·ºÅ丮 ¿£Æ®¸®´Â i1À̶ó´Â ¹øÈ£ÀÇ inode¸¦ ÂüÁ¶ÇÏ°í ÀÖ´Ù. À̸§ ±æÀÌ(name length) : ÀÌ µð·ºÅ丮 ¿£Æ®¸®ÀÇ ±æÀ̸¦ ¹ÙÀÌÆ®·Î ³ªÅ¸³½´Ù. À̸§(name) : ÀÌ µð·ºÅ丮 ¿£Æ®¸®ÀÇ À̸§. ¸ðµç µð·ºÅ丮¿¡¼­ óÀ½ µÎ ¿£Æ®¸®´Â Ç×»ó "." °ú ".." ÀÌ´Ù. ÀÌ´Â °¢°¢ " ÇöÀç µð·ºÅ丮" ¿Í "ºÎ¸ð µð·ºÅ丮" ¸¦ ÀǹÌÇÑ´Ù. ext2_inode +-----------------+ | Mode | +-----------------+ +------+ | Owner info | +------->| Data | +-----------------+ | +------+ | Size | | +------+ +-----------------+ | +--->| Data | | Timestemps | | | +------+ +-----------------+ | | | |--------------------+ | | Direct Blocks | | | |------------------------+ +------+ | | | Data | | | +------+ | | | | | | +------+ | | +---+ +--->| Data | | | +--->| |---------+ +------+ | | | | | +------+ +-----------------+ | | |------------->| Data | | Indirect blocks |-----+ +---+ +------+ +-----------------+ | Double Indirect |--+ +---+ +---+ +------+ +-----------------+ +-->| |------>| |----->| Data | | Triple Indirect | | |---+ | |--+ +------+ +-----------------+ | | | | | | +------+ +---+ | +---+ +-->| Data | | +------+ | | +---+ +------+ +-->| |----->| Data | | | +------+ | | +---+ ±×¸² 9.2 :EXT2 Inode 9.1.5 EXT2 ÆÄÀÏ ½Ã½ºÅÛ¿¡¼­ ÆÄÀÏ Ã£±â ¸®´ª½º ÆÄÀÏ À̸§Àº ´Ù¸¥ À¯´Ð½ºÀÇ ÆÄÀÏ À̸§°ú °°Àº Çü½ÄÀ¸·Î µÇ¾î ÀÖ´Ù. À̸§Àº ¾Õ¿¡ ½½·¡½Ã('/')°¡ ºÙÀº µð·ºÅ丮 À̸§ÀÌ À̾îÁö°í ¸¶Áö¸·¿¡ ÆÄÀÏ À̸§ÀÌ ¿À´Â ÇüÅÂÀÌ´Ù. ¿¹¸¦ µé¾î, ÆÄÀÏ À̸§ÀÌ /home/rusling/.cshrcÀ̶ó ¸é, /home°ú /ruslingÀº µð·ºÅ丮 À̸§ÀÌ°í ÆÄÀÏ À̸§Àº .cshrcÀÌ´Ù. ´Ù¸¥ ¸ðµç À¯´Ð½º ½Ã½ºÅÛ°ú ¸¶Âù°¡Áö·Î ¸®´ª½º´Â ÆÄÀÏ À̸§ ÀÚüÀÇ Çü½ÄÀº ½Å°æ ¾²Áö ¾Ê´Â´Ù. ±æÀÌ Á¦Çѵµ ¾ø°í, Àμ⠰¡´ÉÇÑ ¾Æ¹«·± ¹®ÀÚ·Î ±¸¼ºµÈ´Ù. ÀÌ ÆÄÀÏÀ» ³ªÅ¸³»´Â inode¸¦ EXT2 ÆÄÀÏ ½Ã½ºÅÛ ¾È¿¡¼­ ã±â À§ÇØ, ½Ã½ºÅÛ Àº ÆÄÀÏ À̸§À» Çؼ®Çؼ­ ÇÑ µð·ºÅ丮¾¿ ó¸®ÇÏ¿© ÆÄÀÏ ÀÚü¸¦ ¾ò°Ô µÈ´Ù. óÀ½ ÇÊ¿äÇÑ inode´Â ÆÄÀÏ ½Ã½ºÅÛÀÇ ·çÆ®ÀÇ inode·Î, ±× inode ¼ýÀÚ°ªÀº ÆÄÀÏ ½Ã½ºÅÛÀÇ ¼öÆÛºí·°¿¡¼­ ¾ò´Â´Ù. EXT2 inode¸¦ Àбâ À§Çؼ­´Â ÇØ´ç ÇÏ´Â ºí·° ±×·ìÀÇ inode Å×ÀÌºí¿¡¼­ ã¾Æ¾ß ÇÑ´Ù. ¿¹¸¦ µé¾î ·çÆ® inodeÀÇ ¹øÈ£°¡ 42¶ó¸é ¿ì¸®´Â ºí·° ±×·ì 0ÀÇ inode Å×À̺íÀÇ 42¹ø° inode°¡ ÇÊ¿ä ÇÑ °ÍÀÌ´Ù. ·çÆ® inode´Â EXT2 µð·ºÅ丮¸¦ À§ÇÑ °ÍÀÌ´Ù. ´Ù½Ã ¸»Çؼ­ ·çÆ® inodeÀÇ ¸ðµå´Â ·çÆ® inode°¡ µð·ºÅ丮ÀÓÀ» ³ªÅ¸³»¸ç µ¥ÀÌÅÍ ºí·°¿¡´Â EXT2 µð·ºÅ丮 ¿£Æ®¸®°¡ µé¾î ÀÖ´Ù. homeÀº ¿©·¯ µð·ºÅ丮 ¿£Æ®¸® ÁßÀÇ ÇϳªÀÏ »Ó À̸ç /home µð·ºÅ丮¸¦ ³ªÅ¸³»´Â inodeÀÇ ¹øÈ£¸¦ ¾Ë·ÁÁØ´Ù. ÀÌ µð·ºÅ丮¸¦ Àо (µð·ºÅ丮¸¦ ÀÐÀ¸·Á¸é ¿ì¼± inode¸¦ ÀÐ°í ±× inode°¡ °¡¸®Å°´Â µ¥ÀÌÅÍ ºí·°À¸·ÎºÎÅÍ µð·ºÅ丮 ¿£Æ®¸®¸¦ Àоî¾ß ÇÑ´Ù.) rusling ¿£Æ®¸®¸¦ ãÀ¸¸é ±× ¿£Æ®¸®´Â /home/rusling µð·ºÅ丮¸¦ ³ªÅ¸³»´Â inodeÀÇ ¹øÈ£¸¦ ¾Ë·ÁÁÙ °ÍÀÌ´Ù. ¸¶Ä§³» ¿ì¸®´Â /home/rusling µð·ºÅ丮¸¦ ³ªÅ¸³»´Â inode°¡ °¡¸®Å°´Â µð·º Å丮 ¿£Æ®¸®¸¦ Àо .cshrc ÆÄÀÏÀÇ inode ¹øÈ£¸¦ ãÀº ´ÙÀ½, ÀÌ ¹øÈ£¸¦ ÀÌ¿ëÇÏ¿© ÆÄÀÏÀÇ ³»¿ëÀ» °®°í ÀÖ´Â µ¥ÀÌÅÍ ºí·°À» °¡Á®¿À°Ô µÈ´Ù. 9.1.6 EXT2 ÆÄÀÏ ½Ã½ºÅÛÀÇ ÆÄÀÏÀÇ Å©±â º¯°æ ÆÄÀÏ ½Ã½ºÅÛÀÌ °øÅëÀûÀ¸·Î °Þ´Â ¹®Á¦ ÁßÀÇ Çϳª´Â ºÐÇÒÈ­ µÇ´Â °æÇâÀÌ´Ù. ÆÄÀÏÀÇ µ¥ÀÌÅ͸¦ °¡Áö°í ÀÖ´Â ºí·°µéÀº ÆÄÀÏ ½Ã½ºÅÛ Àüü¿¡ Èð¾îÁö°ÔµÇ°í, µ¥ÀÌÅÍ ºí·°ÀÌ ´õ ¸Ö¸® ¶³¾îÁú¼ö·Ï ÇÑ ÆÄÀÏÀÇ µ¥ÀÌÅÍ ºí·°µéÀ» ¼øÂ÷ÀûÀ¸·Î Á¢±ÙÇÏ´Â °ÍÀÌ Á¡Á¡ ´õ ºñÈ¿À²ÀûÀ¸·Î µÈ´Ù. EXT2 ÆÄÀÏ ½Ã½ºÅÛÀº À̸¦ ±Øº¹ ÇÏ·Á°í ¾î¶² ÆÄÀÏ¿¡ ´ëÇÑ »õ·Î¿î ºí·°À» ÇöÀçÀÇ µ¥ÀÌÅÍ ºí·°µé¿¡ ¹°¸®Àû À¸·Î ÀÎÁ¢Çϵµ·Ï ÇÒ´çÇϰųª Àû¾îµµ ÇöÀçÀÇ µ¥ÀÌÅÍ ºí·°°ú °°Àº ºí·° ±×·ì ¿¡ ÇÒ´çÇÏ·Á°í ÇÑ´Ù. µÑ ´Ù ½ÇÆÐÇßÀ» ¶§¸¸ ´Ù¸¥ ºí·° ±×·ì¿¡ ÀÖ´Â µ¥ÀÌÅÍ ºí·°À» ÇÒ´çÇÑ´Ù. ÇÁ·Î¼¼½º°¡ ÆÄÀÏ¿¡ µ¥ÀÌÅ͸¦ ¾²·Á°í ÇÒ ¶§¸¶´Ù, ¸®´ª½º ÆÄÀÏ ½Ã½ºÅÛÀº µ¥ÀÌÅÍ°¡ ÆÄÀÏ¿¡ ¸¶Áö¸·À¸·Î ÇÒ´çÇÑ ºí·°À» ³Ñ¾î°¡´ÂÁö °Ë»çÇÑ´Ù. ³Ñ¾î°£ ´Ù¸é ÀÌ ÆÄÀÏÀ» À§ÇØ »õ·Î¿î µ¥ÀÌÅÍ ºí·°À» ÇÒ´çÇØ¾ß ÇÑ´Ù. ÇÒ´çÀÌ ³¡³¯ ¶§±îÁö ÇÁ·Î¼¼½º´Â ½ÇÇàµÉ ¼ö ¾ø´Ù. Áï, ÆÄÀÏ ½Ã½ºÅÛÀÌ »õ·Î¿î µ¥ÀÌÅÍ ºí·°À» ÇÒ´çÇÏ°í ³²Àº µ¥ÀÌÅ͸¦ ±â·Ï Çϵµ·Ï ±â´Ù·È´Ù°¡ °è¼Ó ½ÇÇàµÈ´Ù. EXT2 ºí·° ÇÒ´ç ·çƾÀÌ Ã³À½ ÇÏ´Â °ÍÀº ÀÌ ÆÄÀÏ ½Ã½ºÅÛ¿¡ ´ëÇÑ EXT2 ¼öÆÛºí·°¿¡ ¶ôÀ» °Å´Â °ÍÀÌ´Ù. ÇÒ´ç°ú ÇØÁ¦´Â ¼öÆÛºí·°¿¡ ÀÖ´Â Ç׸ñÀ» º¯°æÇϸç, ¸®´ª½º ÆÄÀÏ ½Ã½ºÅÛÀº µÑ ÀÌ»óÀÇ ÇÁ·Î ¼¼½º°¡ µ¿½Ã¿¡ º¯°æÇÏ´Â °ÍÀ» Çã¿ëÇÏÁö ¾Ê´Â´Ù. ´Ù¸¥ ÇÁ·Î¼¼½º°¡ µ¥ÀÌÅÍ ºí·°À» ÇÒ´çÇÏ°íÀÚ Çϸé ÇöÀçÀÇ ÇÁ·Î¼¼½º°¡ ÀÛ¾÷À» ³¡¸¶Ä¡±æ ±â´Ù·Á¾ß ÇÑ´Ù. ¼öÆÛºí·°À» ±â´Ù¸®´Â ÇÁ·Î¼¼½º´Â Á¤ÁöµÇ°í, ¼öÆÛºí·°ÀÇ Á¦¾î°¡ ÇöÀç »ç¿ëÀڷκÎÅÍ Ç®·Á³¯ ¶§±îÁö ½ÇÇàµÇÁö ¸øÇÑ´Ù. ¼öÆÛºí·°ÀÇ »ç¿ëÀº ¿Â ¼ø¼­ ¿¡ µû¸£¸ç, ÇÑ ÇÁ·Î¼¼½º°¡ ¼öÆÛºí·°ÀÇ Á¦¾î±ÇÀ» °®°Ô µÇ¸é ÀÛ¾÷À» Á¾·áÇÒ ¶§±îÁö Á¦¾î¸¦ °®°í Àִ´Ù. ÇÁ·Î¼¼½º´Â ¼öÆÛºí·°¿¡ ¶ôÀ» °Ç µÚ ÀÌ ÆÄÀÏ ½Ã½ºÅÛ¿¡ ÇÁ¸® ºí·°ÀÌ ÃæºÐÈ÷ ³²¾ÆÀÖ´ÂÁö È®ÀÎÇÑ´Ù. ¸¸¾à ÇÁ¸® ºí·°ÀÌ ÃæºÐÇÏÁö ¾Ê´Ù¸é ´õ ÀÌ»ó ÇÒ´ç¹ÞÀ¸·Á´Â ½Ãµµ´Â ½ÇÆÐÇÒ °ÍÀ̱⠶§¹®¿¡ ÇÁ·Î ¼¼½º´Â ÀÌ ÆÄÀÏ ½Ã½ºÅÛÀÇ ¼öÆÛºí·°¿¡ ´ëÇÑ ÅëÁ¦±ÇÀ» ³»³õ°Ô µÈ´Ù. ¸¸¾à ÆÄÀÏ ½Ã½ºÅÛ¿¡ ÇÁ¸® ºí·°ÀÌ ÃæºÐÇϸé ÇÁ·Î¼¼½º´Â ÇÒ´çÀ» ¹Þ°Ô µÈ´Ù. ¸¸¾à EXT2 ÆÄÀÏ ½Ã½ºÅÛÀÌ µ¥ÀÌÅÍ ºí·°À» ¹Ì¸® ÇÒ´çÇϵµ·Ï ¸¸µé¾îÁ³´Ù¸é ¹Ì¸® ÇÒ´çµÈ ºí·°À» »ç¿ëÇÒ ¼öµµ ÀÖ´Ù. ¹Ì¸® ÇÒ´çµÈ ºí·°Àº ½ÇÁ¦·Î Á¸ÀçÇÏ Áö´Â ¾ÊÁö¸¸ ÇÒ´çµÈ ºí·° ºñÆ®¸Ê¿¡ ¿¹¾àµÇ¾î ÀÖ´Ù. ¿ì¸®°¡ »õ·Î¿î µ¥ÀÌÅÍ ºí·°À» ÇÒ´çÇØ ÁÖ·Á°í ÇÏ´Â ÆÄÀÏÀ» ³ªÅ¸³»´Â VFS inode´Â EXT2 °íÀ¯ÀÇ Ç׸ñ µÎ°³¸¦ °®°í ÀÖ´Ù. prealloc_blockÀº óÀ½¿¡ ¹Ì¸® ÇÒ´çµÈ µ¥ÀÌÅÍ ºí·°ÀÇ ¼ö¸¦ ³ªÅ¸³»°í, prealloc_count´Â ±× Áß¿¡¼­ ¸î °³°¡ ³²¾Æ ÀÖ´ÂÁö ¸¦ ³ªÅ¸³½´Ù. ¹Ì¸® ÇÒ´çµÈ ºí·°ÀÌ ¾ø°Å³ª ºí·°À» ¹Ì¸® ÇÒ´çÇÏ´Â ±â´ÉÀÌ »ç¿ëµÇÁö ¾Ê°í ÀÖÀ¸¸é, EXT2 ÆÄÀÏ ½Ã½ºÅÛÀº »õ·Î¿î ºí·°À» ÇÒ´çÇÏ¿©¾ß¸¸ ÇÑ´Ù. EXT2 ÆÄÀÏ ½Ã½ºÅÛÀº ¿ì¼± ÆÄÀÏÀÇ ¸¶Áö¸· µ¥ÀÌÅÍ ºí·°ÀÇ ´ÙÀ½ µ¥ÀÌÅÍ ºí·°ÀÌ ºñ¾ú´ÂÁö º»´Ù. ³í¸®ÀûÀ¸·Î º¸¾Æ ÀÌ ºí·°Àº ¼øÂ÷½Ä ¾×¼¼½º¸¦ ´õ¿í ºü¸£°Ô ÇØÁֱ⠶§¹®¿¡ °¡Àå È¿À²ÀûÀÎ ºí·°ÀÌ´Ù. ¸¸¾à, ±× ºí·°ÀÌ ºñ¾îÀÖÁö ¾Ê´Ù¸é °Ë»öÀÇ ¹üÀ§¸¦ ³ÐÇô¼­ °¡Àå ÀÌ»óÀûÀÎ ºí·°¿¡¼­ 64ºí·° À̳»ÀÇ µ¥ÀÌÅÍ ºí·°À» »ìÆ캻´Ù. ÀÌ·¯ÇÑ ºí·°Àº ºñ·Ï °¡Àå ÀÌ»óÀûÀÌÁö´Â ¾ÊÁö¸¸ ÃæºÐÈ÷ °¡±î¿ì¸ç ±× ÆÄÀÏ¿¡ ¼ÓÇÑ ´Ù¸¥ µ¥ÀÌÅÍ ºí·°°ú °°Àº ºí·° ±×·ì¿¡ ¼Ó ÇÑ´Ù. ¸¸¾à, ±×·¯ÇÑ ºí·° Áß¿¡¼­µµ ºó °ÍÀÌ ¾øÀ¸¸é, ºó ºí·°ÀÌ ³ªÅ¸³¯ ¶§ ±îÁö ´Ù¸¥ ¸ðµç ºí·° ±×·ìÀ» µÚÁö°Ô µÈ´Ù. ºí·° ÇÒ´ç ÇÁ·Î±×·¥Àº ÇÑ ºí·° ±×·ì ¾È¿¡¼­ ¿©´ü°³ÀÇ ºó µ¥ÀÌÅÍ ºí·°À¸·Î µÈ µ¢¾î¸®¸¦ ãÀ¸·Á°í ÇÑ´Ù. ¿©´ü°³ Â¥¸®¸¦ ãÁö ¸øÇÏ¸é ´õ ÀÛÀº °ÍÀÌ¶óµµ Ã£¾Æ¾ß ÇÑ´Ù. ¸¸¾à ºí·° ¹Ì¸® ÇÒ´ç ±â´ÉÀÌ ÇÊ¿äÇÏ°í »ç¿ë°¡´ÉÇÏ°Ô µÇ¾î ÀÖÀ¸¸é prealloc_block °ú prealloc_count °ªÀ» °¢±â °»½ÅÇÑ´Ù. ºí·° ÇÒ´ç ÇÁ·Î±×·¥Àº ºó ºí·°À» ãÀ» ¶§¸¶´Ù ºí·° ±×·ìÀÇ ºí·° ºñÆ®¸ÊÀ» °»½ÅÇÏ°í ¹öÆÛ Ä³½Ã ³»¿¡ µ¥ÀÌÅÍ ¹öÆÛ¸¦ ÇÒ´çÇÑ´Ù. ±×·¯ÇÑ µ¥ÀÌÅÍ ¹öÆÛ´Â ÆÄÀÏ ½Ã½ºÅÛÀ» Áö¿øÇÏ´Â ÀåÄ¡ ½Äº°ÀÚ¿Í ÇÒ´çµÈ ºí·°ÀÇ ºí·° ¹øÈ£¿¡ ÀÇÇÏ¿© À¯ÀÏÇÏ°Ô ½Äº°µÈ´Ù. ¹öÆÛ³»ÀÇ µ¥ÀÌÅÍ°¡ ¸ðµÎ 0ÀÌ°í ¹öÆÛ°¡ "´õƼ(dirty)" ¶ó°í Ç¥½ÃµÇ¾î ÀÖÀ¸¸é ÀÌ´Â ½ÇÁ¦ µð½ºÅ©¿¡ ³»¿ëÀÌ ±â·ÏµÇÁö ¾Ê¾ÒÀ½À» ³ªÅ¸³½´Ù. ¸¶Áö¸·À¸·Î ¼öÆÛºí·°ÀÇ ³»¿ëÀÌ ¹Ù²î¾ú°í ¶ôÀÌ µÇ¾î ÀÖÁö ¾ÊÀ½À» ³ªÅ¸³»±â À§ÇÏ¿© "´õƼ(dirty)" ¶ó°í Ç¥½ÃÇÑ´Ù. ¼öÆÛºí·°À» ±â´Ù¸®´Â ÀÖ´Â ÇÁ·Î¼¼½º°¡ ÀÖ¾ú´Ù¸é Å¥¿¡ µé¾î ÀÖ´Â ÇÁ·Î¼¼½º Áß Ã¹¹ø° ÇÁ·Î¼¼½º°¡ ´Ù½Ã ½ÇÇàµÇ°Ô µÇ¸ç ÆÄÀÏ Ã³¸®¿¡ ÇÊ¿äÇÑ ¼öÆÛºí·°ÀÇ µ¶Á¡Àû ÅëÁ¦¸¦ °®°Ô µÈ´Ù. ÇÁ·Î¼¼½ºÀÇ µ¥ÀÌÅÍ´Â µ¥ÀÌÅÍ ºí·°ÀÌ ´Ù ä¿öÁö¸é ¶Ç »õ·Î¿î µ¥ÀÌÅÍ ºí·Ï ¿¡ ±â·ÏµÇ¸ç ÀÌ·¯ÇÑ °úÁ¤Àº µ¥ÀÌÅÍ ºí·°ÀÌ ÇÒ´çµÉ ¶§¸¶´Ù ¶È°°ÀÌ ¹Ýº¹ µÈ´Ù. 0 15 55 +--+--+--+-------+--+--+--+-----------------+---------------------+ |il|15| 5|file |i2|40|14|very_long_name | | +--+--+--+-------+--+--+--+-----------------+---------------------+ | | ^ | | ^ | | | | | | | +------------+ | +---------------------+ | | | | | | inode table | | +-----------------+ | | | | | | | | | | +-----------------+ | | | | | | | | | | +-----------------+ | +-->| | | | | | +-----------------+ | | | | | | | +-----------------+ +-------------------->| | | | +-----------------+ ±×¸² 9.3 : EXT2 Directory 9.2 °¡»ó ÆÄÀÏ ½Ã½ºÅÛ(Virtual File System, VFS) ±×¸² 9.4´Â ¸®´ª½º Ä¿³ÎÀÇ °¡»ó ÆÄÀÏ ½Ã½ºÅÛ°ú ½ÇÁ¦ ÆÄÀÏ ½Ã½ºÅÛ°úÀÇ °ü°è ¸¦ º¸¿©ÁØ´Ù. °¡»ó ÆÄÀÏ ½Ã½ºÅÛÀº ¾î´À ¼ø°£ÀÌµç ¸¶¿îÆ®µÈ ¼­·Î ´Ù¸¥ ÆÄÀÏ ½Ã½ºÅÛ ¸ðµÎ¸¦ ´Ù·ê ¼ö ÀÖ¾î¾ß ÇÑ´Ù. À̸¦ À§ÇØ Àüü (°¡»ó) ÆÄÀÏ ½Ã½ºÅÛ °ú ½ÇÁ¦ ¸¶¿îÆ®µÈ ÆÄÀÏ ½Ã½ºÅÛÀ» ±â¼úÇÏ´Â ÀڷᱸÁ¶¸¦ °ü¸®ÇÏ¿©¾ß ÇÑ´Ù. ´õ È¥¶õ½º·´°Ô ¸»ÇÏÀÚ¸é, VFS´Â EXT2 ÆÄÀÏ ½Ã½ºÅÛÀÌ ¼öÆÛºí·°°ú inode¸¦ »ç¿ëÇÏ´Â °Í°ú »ó´çÈ÷ ºñ½ÁÇÑ ¹æ¹ýÀ¸·Î, ½Ã½ºÅÛ¿¡ ÀÖ´Â ÆÄÀÏÀ» ¼öÆÛºí·°°ú inode·Î ³ªÅ¸³½´Ù. EXT2 inodeó·³ VFS inode´Â ½Ã½ºÅÛ¿¡ ÀÖ´Â ÆÄÀÏ°ú µð·ºÅ丮 Áï °¡»ó ÆÄÀÏ ½Ã½ºÅÛÀÇ ³»¿ë°ú ¹èÄ¡¸¦ ³ªÅ¸³½´Ù. ÀÌÁ¦ºÎÅÍ È¥µ¿À» ÇÇÇϱâ À§ÇÏ¿©, EXT2ÀÇ inode¿Í ¼öÆÛºí·°°ú´Â ´Þ¸® "VFS inode"¿Í "VFS ¼öÆÛºí·°"À̶ó°í Ç¥±âÇϵµ·Ï ÇÏ°Ú´Ù. °¢ ÆÄÀÏ ½Ã½ºÅÛµéÀº ÃʱâÈ­µÉ¶§, ÀÚ½ÅÀ» VFS¿¡ µî·ÏÇÑ´Ù. ÀÌ´Â ½Ã½ºÅÛ ºÎÆÃÁß¿¡ ¿î¿µÃ¼Á¦°¡ ÃʱâÈ­µÇ¸é¼­ ÀϾ´Ù. ½ÇÁ¦ ÆÄÀÏ ½Ã½ºÅÛÀº Ä¿³Î ÀÚü¿¡ Æ÷ÇԵǰųª ¸ðµâ·Î ¸¸µé¾îÁø´Ù. ÆÄÀÏ ½Ã½ºÅÛ ¸ðµâÀº ½Ã½ºÅÛÀÌ ÇÊ¿ä ·Î ÇÒ ¶§ ·ÎµåµÈ´Ù. ¿¹¸¦ µé¾î, VFAT ÆÄÀϽýºÅÛÀÌ Ä¿³Î ¸ðµâ·Î µÇ¾î ÀÖ´Ù ¸é, VFAT ÆÄÀÏ ½Ã½ºÅÛÀÌ ¸¶¿îÆ®µÉ ¶§ ·ÎµåµÉ °ÍÀÌ´Ù. ºí·°ÀåÄ¡¿¡ ±â¹ÝÇÑ ÆÄÀÏ ½Ã½ºÅÛÀÌ ¸¶¿îÆ®µÇ°í, ÀÌ°ÍÀÌ ·çÆ® ÆÄÀÏ ½Ã½ºÅÛÀ» Æ÷ÇÔÇÏ°í ÀÖ´Ù¸é, VFS´Â ÀÌ°ÍÀÇ ¼öÆÛºí·°À» Àоî¾ß ÇÑ´Ù. ÆÄÀÏ ½Ã½ºÅÛ Å¸ÀÔº° ¼öÆÛºí·° Àб⠷çƾÀº ÆÄÀÏ ½Ã½ºÅÛÀÇ ¹èÄ¡µµ¸¦ Á¤È®È÷ ¾Ë ¼ö ÀÖ¾î¾ß Çϸç, ±× Á¤º¸¸¦ VFS ¼öÆÛºí·° ÀڷᱸÁ¶¿¡ ¸ÅÇÎ ½Ãų ¼ö ÀÖ¾î¾ß ÇÑ´Ù. VFS´Â ¸¶¿îÆ®µÈ ÆÄÀÏ ½Ã½ºÅÛ°ú VFS ¼öÆÛºí·°ÀÇ ¸®½ºÆ®¸¦ °ü¸®ÇÑ´Ù. °¢°¢ ÀÇ VFS ¼öÆÛºí·°Àº ƯÁ¤ ±â´ÉÀ» ¼öÇàÇÏ´Â ·çƾ¿¡ ´ëÇÑ Á¤º¸¿Í Æ÷ÀÎÅ͸¦ °®°í ÀÖ´Ù. µû¶ó¼­, ¿¹¸¦ µé¾î ¸¶¿îÆ®µÈ EXT2 ÆÄÀÏ ½Ã½ºÅÛÀ» ³ªÅ¸³»´Â ¼öÆÛºí·°Àº EXT2 °íÀ¯ÀÇ inode Àб⠷çƾ¿¡ ´ëÇÑ Æ÷ÀÎÅ͸¦ °®°í ÀÖ´Ù. ÀÌ EXT2 inode Àб⠷çƾÀº ´Ù¸¥ ¸ðµç ÆÄÀÏ ½Ã½ºÅÛ °íÀ¯ÀÇ inode Àб⠷çƾ°ú ¸¶Âù°¡Áö·Î VFS inodeÀÇ °¢ Ç׸ñÀ» ä¿î´Ù. °¢°¢ÀÇ VFS ¼öÆÛºí·°Àº ÆÄÀÏ ½Ã½ºÅÛÀÇ Ã¹¹ø° VFS inode¿¡ ´ëÇÑ Æ÷ÀÎÅ͸¦ °®°í ÀÖ´Ù. ·çÆ® ÆÄÀÏ ½Ã½ºÅÛÀÇ °æ¿ì ÀÌ inode´Â "/" µð·ºÅ丮¸¦ ³ªÅ¸³½´Ù. ÀÌ·¯ÇÑ Á¤º¸ÀÇ ¸ÅÇÎ Àº EXT2 ÆÄÀÏ ½Ã½ºÅÛÀÇ °æ¿ì¿¡´Â ¸Å¿ì È¿À²ÀûÀÌÁö¸¸ ´Ù¸¥ ÆÄÀÏ ½Ã½ºÅÛ¿¡¼­ ´Â Á» ´ú È¿À²ÀûÀÌ´Ù. ½Ã½ºÅÛÀÇ ÇÁ·Î¼¼½º°¡ µð·ºÅ丮³ª ÆÄÀÏÀ» ¾×¼¼½ºÇÏ·Á°í ÇÏ¸é ½Ã½ºÅÛ³»ÀÇ VFS inode¸¦ Ž»öÇÏ´Â ½Ã½ºÅÛ ·çƾÀ» ºÎ¸£°Ô µÈ´Ù. ¿¹¸¦ µé¾î, ¾î¶² µð·º Å丮¿¡ ´ëÇØ ls ¸í·ÉÀ» Ä¡°Å³ª ¾î¶² ÆÄÀÏ¿¡ ´ëÇÏ¿© cat ¸í·ÉÀ» Ä¡¸é, °¡»ó ÆÄÀÏ ½Ã½ºÅÛÀº ÆÄÀÏ ½Ã½ºÅÛÀ» ³ªÅ¸³»´Â VFS inodeµéÀ» ÁÖ¿í ã¾Æ³ª°¡°Ô µÈ´Ù. ½Ã½ºÅÛ¿¡ ÀÖ´Â ¸ðµç ÆÄÀÏÀ̳ª µð·ºÅ丮´Â °¢±â ÇϳªÀÇ VFS inode¿¡ ÀÇÇÏ¿© Ç¥ÇöµÇ¹Ç·Î ¼ö¸¹Àº inode°¡ ¹Ýº¹ÀûÀ¸·Î ¾×¼¼½ºµÇ°Ô µÈ´Ù. ¾×¼¼½º ¼Óµµ¸¦ ºü¸£°Ô Çϱâ À§ÇÏ¿© À̵é inode´Â inode ij½Ã¿¡ ÀúÀåµÈ´Ù. ¾î¶² inode°¡ inode ij½Ã¿¡ µé¾îÀÖÁö ¾ÊÀ¸¸é ÇØ´ç inode¸¦ ÀоîµéÀ̱â À§ÇÏ¿© °¢ ÆÄÀÏ ½Ã½ºÅÛ °íÀ¯ÀÇ ·çƾÀ» È£ÃâÇÏ¿©¾ß ÇÑ´Ù. ÀÌ·¸°Ô ÀоîµéÀÎ inode ´Â inode ij½Ã¿¡ ÀúÀåµÇ¾î ´ÙÀ½¹ø ¾×¼¼½ºÇÒ ¶§¿¡´Â ij½Ã¿¡¼­ ãÀ» ¼ö ÀÖ°Ô µÈ´Ù. ´ú »ç¿ëµÇ´Â VFS inode´Â ij½Ã·ÎºÎÅÍ Á¦°ÅµÈ´Ù. ¸ðµç ¸®´ª½º ÆÄÀÏ ½Ã½ºÅÛÀº ÆÄÀÏ ½Ã½ºÅÛÀ» °®°í ÀÖ´Â ½ÇÁ¦ ÀåÄ¡¿¡ ´ëÇÑ ¾×¼¼½º ¼Óµµ¸¦ ³ôÀ̱â À§ÇÏ¿© °øÅëÀÇ ¹öÆÛ Ä³½Ã¸¦ »ç¿ëÇÑ´Ù. ÀÌ ¹öÆÛ Ä³½Ã ´Â ÆÄÀÏ ½Ã½ºÅÛ°ú´Â »óÈ£ µ¶¸³ÀûÀÌ¸ç ¸®´ª½º Ä¿³ÎÀÌ µ¥ÀÌÅÍ ¹öÆÛ¸¦ ÇÒ´ç ÇÏ°í ÀÐ°í ¾²´Â ¸ÞÄ¿´ÏÁò¿¡ ÅëÇյǾî ÀÖ´Ù. ¸®´ª½º ÆÄÀÏ ½Ã½ºÅÛÀ» ±× ¾Æ·¡ ¿¡ ÀÖ´Â ¸Åü³ª ±×¸¦ Áö¿øÇÏ´Â ÀåÄ¡·ÎºÎÅÍ µ¶¸³ÀûÀ¸·Î ¸¸µå´Â °ÍÀº ¶Ñ·ÇÇÑ ÀåÁ¡À» °¡Á®´Ù ÁØ´Ù. ¸ðµç ºí·° ±¸Á¶ÀÇ ÀåÄ¡´Â ¸®´ª½º Ä¿³Î¿¡ ÀÚ½ÅÀ» µî·Ï Çϸç ÅëÀϵǰí, ºí·° ±â¹ÝÀÇ, ÀϹÝÀûÀ¸·Î´Â ºñµ¿±âÀûÀÎ ÀÎÅÍÆäÀ̽º¸¦ Á¦°ø ÇÑ´Ù. ½ÉÁö¾î SCSI ÀåÄ¡¿Í °°ÀÌ ºñ±³Àû º¹ÀâÇÑ ºí·°ÀåÄ¡µµ ÀÌ·¸°Ô ÇÑ´Ù. ½ÇÁ¦ ÆÄÀÏ ½Ã½ºÅÛÀÌ ±× ¾Æ·¡¿¡ ±ò·ÁÀÖ´Â ½ÇÁ¦ µð½ºÅ©¿¡¼­ µ¥ÀÌÅ͸¦ ÀÐ°Ô µÇ¸é ÀÌ´Â ºí·° µð¹ÙÀ̽º µå¶óÀ̹ö·Î ÇÏ¿©±Ý ÀÚ½ÅÀÌ ÄÁÆ®·ÑÇÏ´Â ÀåÄ¡·Î ºÎÅÍ ½ÇÁ¦ ºí·°À» Àеµ·Ï ¿äûÇÏ´Â °ÍÀÌ µÈ´Ù. ÀÌ·¯ÇÑ ºí·° ÀåÄ¡ ÀÎÅÍÆäÀÌ ½º¿¡ ¹öÆÛ Ä³½Ã´Â ÅëÇյǾî ÀÖ´Ù. ÆÄÀÏ ½Ã½ºÅÛÀÌ ¾î¶² ºí·°À» ÀÐÀ¸¸é ±× ºí·°Àº Àüü ¹öÆÛ Ä³½Ã¿¡ ÀúÀåµÇ¾î ¸ðµç ÆÄÀÏ ½Ã½ºÅÛ°ú ¸®´ª½º Ä¿³Î¿¡ ÀÇÇÏ¿© °øÀ¯µÈ´Ù. ±× ¾È¿¡ ÀÖ´Â ¹öÆÛ °¢°¢Àº ºí·° ¹øÈ£¿Í ±× ºí·°À» ÀÐÀº ÀåÄ¡ÀÇ °íÀ¯ ½Äº°ÀÚ¿¡ ÀÇÇÏ¿© ±¸ºÐµÈ´Ù. µû¶ó¼­, °°Àº µ¥ÀÌÅÍ°¡ ÀÚÁÖ ÇÊ¿äÇÏ°Ô µÇ¸é ½Ã°£ÀÌ ¸¹ÀÌ °É¸®´Â ½ÇÁ¦ µð½ºÅ©¿¡¼­ Àд °ÍÀÌ ¾Æ´Ï¶ó ¹öÆÛ Ä³½Ã¿¡¼­ ²¨³»¼­ ¾²°Ô µÈ´Ù. ¾î¶² ÀåÄ¡´Â Ȥ½Ã ÇÊ¿äÇÒ °æ¿ì¸¦ ´ëºñ ÇÏ¿© µ¥ÀÌÅÍ ºí·°À» ¹Ì¸® ÀоîµÎ´Â ¹Ì¸® Àбâ(read ahead) ±â´ÉÀ» Áö¿ø ÇÑ´Ù. VFS¿¡¼­´Â ÀÚÁÖ »ç¿ëµÇ´Â µð·ºÅ丮ÀÇ inode¸¦ »¡¸® ã±â À§ÇÏ¿© µð·ºÅ丮 ã¾Æº¸±â ij½Ãµµ °®°í ÀÖ´Ù. ½ÇÇè»ï¾Æ ÃÖ±Ù¿¡ ¸®½ºÆ®¸¦ º» ÀûÀÌ ¾ø´Â µð·º Å丮ÀÇ ¸®½ºÆ®¸¦ º¸·Á°í Çغ¸¶ó. óÀ½¿¡ º¼ ¶§¿¡´Â ¾à°£ ¸ØÄ© ÇÑ ÈÄ¿¡ ¸®½ºÆ®°¡ ³ª¿ÀÁö¸¸ µÎ¹ø°ºÎÅÍ´Â °ð¹Ù·Î ³ª¿À°Ô µÈ´Ù. µð·ºÅ丮 ij½Ã¿¡´Â µð·ºÅ丮 ±× ÀÚü¿¡ ´ëÇÑ inode¸¦ ÀúÀåÇÏ´Â °ÍÀÌ ¾Æ´Ï´Ù. ÀÌ·¯ÇÑ inode´Â inode ij½Ã¿¡ ÀúÀåµÈ´Ù. µð·ºÅ丮 ij½Ã´Â ´ÜÁö Àüü µð·ºÅ丮 À̸§°ú ±×¿¡ ÇØ´çÇÏ´Â inode ¹øÈ£¿ÍÀÇ ¸ÅÇÎÀ» ÀúÀåÇÑ´Ù. 9.2.1 VFS ¼öÆÛºí·° ¸¶¿îÆ®µÈ ÆÄÀÏ ½Ã½ºÅÛÀº VFS ¼öÆÛºí·°¿¡ ÀÇÇØ Ç¥ÇöµÈ´Ù. ´Ù¸¥ ¿©·¯°¡Áö Á¤º¸µµ ÀÖÁö¸¸ VFS ¼öÆÛºí·°¿¡¼­ ´«¿©°Ü º¼ ¸¸ÇÑ Á¤º¸´Â ´ÙÀ½°ú °°´Ù. ÀåÄ¡(Device) : ÀÌ°ÍÀº ÀÌ ÆÄÀÏ ½Ã½ºÅÛÀÌ ÀúÀåµÇ¾î ÀÖ´Â ºí·° ÀåÄ¡ ÀÇ ÀåÄ¡ ½Äº°ÀÚÀÌ´Ù. ¿¹¸¦ µé¾î ½Ã½ºÅÛÀÇ Ã¹¹ø° IDE ÇÏµå µð½ºÅ© ÀÎ /dev/hda1Àº ÀåÄ¡ ½Äº°ÀÚ·Î 0x301À» °®´Â´Ù. inode Æ÷ÀÎÅÍ : mounted inode Æ÷ÀÎÅÍ´Â ÀÌ ÆÄÀÏ ½Ã½ºÅÛÀÇ Ã¹¹ø° inode¸¦ °¡¸®Å²´Ù. covered inode Æ÷ÀÎÅÍ´Â ÀÌ ÆÄÀÏ ½Ã½ºÅÛÀÌ ¸¶¿îÆ®µÈ µð·ºÅ丮¸¦ Ç¥ÇöÇÏ´Â inode¸¦ °¡¸®Å²´Ù. ·çÆ® ÆÄÀÏ ½Ã½º ÅÛÀÇ VFS ¼öÆÛºí·°Àº covered inode Æ÷ÀÎÅÍ°¡ ¾ø´Ù. ºí·° Å©±â(Blocksize) : ºí·°Å©±â´Â ÀÌ ÆÄÀÏ ½Ã½ºÅÛÀÇ ºí·°ÀÇ Å©±â¸¦ ¹ÙÀÌÆ® ´ÜÀ§·Î - ¿¹¸¦ µé¾î, 1024 ¹ÙÀÌÆ® - ³ªÅ¸³½ °ÍÀÌ´Ù. ¼öÆÛºí·° ¿¬»ê(Superblock Operations) : ÀÌ ÆÄÀÏ ½Ã½ºÅÛ¿¡ ´ëÇÑ ¼öÆÛºí·° ·çƾÀÇ ÁýÇÕÀÌ´Ù. ´Ù¸¥ ¿ëµµ·Î »ç¿ëµÇ±âµµ ÇÏÁö¸¸, ÀÌµé ·çƾÀº VFS°¡ inode¿Í ¼öÆÛºí·°À» ÀÐ°í ¾²±â À§ÇØ »ç¿ëµÈ´Ù. ÆÄÀÏ ½Ã½ºÅÛ Å¸ÀÔ(File System Type) : ¸¶¿îÆ®µÈ ÆÄÀÏ ½Ã½ºÅÛÀÇ file_system_type ÀڷᱸÁ¶¸¦ °¡¸®Å°´Â Æ÷ÀÎÅÍÀÌ´Ù. ÆÄÀÏ ½Ã½ºÅÛ °íÀ¯ Á¤º¸(File System Specific) : ÀÌ ÆÄÀÏ ½Ã½ºÅÛÀÌ ÇÊ¿ä·Î ÇÏ´Â Á¤º¸¸¦ °¡¸®Å°´Â Æ÷ÀÎÅÍ. 9.2.2 VFS inode EXT2 ÆÄÀÏ ½Ã½ºÅÛ°ú ¸¶Âù°¡Áö·Î, VFS ¾È¿¡ ÀÖ´Â ¸ðµç ÆÄÀÏ, µð·ºÅ丮 µî Àº ¹Ýµå½Ã ´ÜÁö ÇϳªÀÇ VFS inode·Î Ç¥ÇöµÈ´Ù. °¢ VFS inodeÀÇ Á¤º¸´Â ÆÄÀÏ ½Ã½ºÅÛÀÇ Á¤º¸·ÎºÎÅÍ ÆÄÀÏ ½Ã½ºÅÛ °íÀ¯ ·çƾ¿¡ ÀÇÇØ »ý¼ºµÈ´Ù. VFS inode´Â Ä¿³ÎÀÇ ¸Þ¸ð¸®¿¡¸¸ Á¸ÀçÇÏ°í, ½Ã½ºÅÛ¿¡¼­ ÇÊ¿äÇÑ µ¿¾È¿¡¸¸ VFS inode ij½Ã¿¡ ÀúÀåµÇ¾î ÀÖ´Ù. ´Ù¸¥ ¿©·¯°¡Áö Á¤º¸µµ ÀÖÁö¸¸ VFS inode¿¡¼­ ´«¿©°Ü º¼ ¸¸ÇÑ Á¤º¸´Â ´ÙÀ½°ú °°´Ù. ÀåÄ¡(Device) : ÀÌ°ÍÀº ÀÌ VFS inode°¡ ³ªÅ¸³»´Â ÆÄÀÏ ¶Ç´Â ´Ù¸¥ ¾î¶² °ÍÀ» °¡Áö°í ÀÖ´Â ÀåÄ¡ÀÇ ÀåÄ¡ ½Äº°ÀÚÀÌ´Ù. inode ¹øÈ£ : ÀÌ°ÍÀº inodeÀÇ ¹øÈ£ÀÌ°í, ÀÌ ÆÄÀÏ ½Ã½ºÅÛ ¾È¿¡¼­ À¯ÀÏ ÇÏ´Ù. ÀåÄ¡¿Í inode ¹øÈ£ÀÇ Á¶ÇÕÀº VFS ³»¿¡¼­ À¯ÀÏÇÏ´Ù. ¸ðµå(Mode) : EXT2¿Í ¸¶Âù°¡Áö·Î ÀÌ Ç׸ñÀº ÀÌ VFS inode°¡ ¹«¾ù (ÆÄÀÏ,µð·ºÅ丮,±âŸ)À» ³ªÅ¸³»´Â°¡¿Í Á¢±Ù ±ÇÇÑ µîÀ» ³ªÅ¸³½´Ù . »ç¿ëÀÚ ½Äº°ÀÚ(user id) : ¼ÒÀ¯ÀÚ¸¦ ³ªÅ¸³½´Ù. ½Ã°¢(times) : »ý¼º½Ã°£, º¯°æ½Ã°£, ÀÐÀº ½Ã°£ µîÀ» ³ªÅ¸³½´Ù. ºí·° Å©±â(block size) : ÀÌ ÆÄÀÏÀÇ ºí·° Å©±â¸¦ ¹ÙÀÌÆ® ´ÜÀ§ - ¿¹¸¦ µé¾î, 1024 ¹ÙÀÌÆ® - ·Î ³ªÅ¸³½´Ù. inode ¿¬»ê(inode operations) : ¿¬»ê ·çƾÀÇ Áּҵ鿡 ´ëÇÑ Æ÷ÀÎÅÍ ÀÌ´Ù. ÀÌµé ·çƾÀº ÆÄÀÏ ½Ã½ºÅÛ¸¶´Ù °íÀ¯Çϸç inode¿¡ ´ëÇÑ ¿©·¯ °¡Áö ¿¬»ê, ¿¹¸¦ µé¾î ÀÌ inode°¡ ³ªÅ¸³»´Â ÆÄÀÏÀÇ Á¦°Å°ú °°Àº ÀÏÀ» ¼öÇàÇÑ´Ù. »ç¿ëȽ¼ö(count) : ÀÌ VFS inode¸¦ ÇöÀç »ç¿ëÇÏ´Â ½Ã½ºÅÛ ¿ä¼ÒÀÇ ¼öÀÌ´Ù. count°¡ 0À̸é inode°¡ ÇÁ¸®À̸ç Á¦°ÅµÇ°Å³ª Àç»ç¿ëµÉ ¼ö ÀÖ´Ù. ¶ô(lock) : VFS inode¸¦ ¶ôÀ» °É±â À§ÇØ »ç¿ëÇÑ´Ù. ¿¹¸¦ µé¾î ÆÄÀÏ ½Ã½ºÅÛ¿¡¼­ ÀÌ inode¸¦ ÀÐÀ» ¶§ »ç¿ëµÈ´Ù. ´õƼ(dirty) : ÀÌ VFS inode°¡ ±â·ÏµÈ ÀûÀÌ Àִ°¡ Áï, ÇϺΠÆÄÀÏ ½Ã½ºÅÛµµ º¯°æÀÌ ÇÊ¿äÇÑ °¡¸¦ ³ªÅ¸³½´Ù. ÆÄÀÏ ½Ã½ºÅÛ °íÀ¯ Á¤º¸.(file system specific information) : +---------+ +-----------+ | | | | | VFS |<----------------->| Inode | | |<--------------+ | Cache | | | | | | +---------+ | +-----------+ ^ ^ | +---------+ +---------+ | v v | +---------+ +---------+ | | | | | | | MINIX | | EXT2 | | +-----------+ | | | | +-->| | | | | | | Directory | +---------+ +---------+ | Cache | ^ ^ | | +---------+ +---------+ +-----------+ v v +---------+ | | | Buffer | | Cache | | | +---------+ ^ | v +---------+ | | | Disk | | Drivers | | | +---------+ ±×¸² 9.4 : A Logical Diagram of the Vitual File System 9.2.3 ÆÄÀÏ ½Ã½ºÅÛ µî·ÏÇϱ⠸®´ª½º Ä¿³ÎÀ» ºôµåÇÒ ¶§ ¾î¶² ÆÄÀÏ ½Ã½ºÅÛÀ» Áö¿øÇÒ °ÍÀÎÁö ÁöÁ¤ÇÒ ¼ö ÀÖ´Ù. Ä¿³ÎÀ» ºôµåÇÒ ¶§, ÆÄÀÏ ½Ã½ºÅÛ ½ÃÀÛ ÄÚµå´Â ³»ÀåµÈ ¸ðµç ÆÄÀÏ ½Ã½ºÅÛÀÇ ÃʱâÈ­ ·çƾÀ» È£ÃâÇÑ´Ù. ¸®´ª½º ÆÄÀÏ ½Ã½ºÅÛÀº ¸ðµâ·Î ¸¸µé¾îÁú ¼öµµ Àִµ¥, ÀÌ °æ¿ì¿¡´Â ÇÊ¿äÇÒ ¶§ ·ÎµåµÇ°Å³ª, insmod¿¡ ÀÇÇØ ¼öÀÛ¾÷ À¸·Î ·ÎµåµÈ´Ù. ÆÄÀÏ ½Ã½ºÅÛ ¸ðµâÀº ·ÎµåµÉ ¶§¸¶´Ù ÀÚ½ÅÀ» Ä¿³Î¿¡ µî·Ï ÇÏ°í, ¾ð·ÎµåµÉ ¶§ ÀÚ½ÅÀ» ÇØÁ¦ÇÑ´Ù. °¢ ÆÄÀÏ ½Ã½ºÅÛÀÇ ÃʱâÈ­ ·çƾÀº ÀÚ½ÅÀ» °¡»ó ÆÄÀÏ ½Ã½ºÅÛ(VFS)¿¡ µî·ÏÇϸç, file_system_type ÀڷᱸÁ¶¿¡ ÀÇÇØ Ç¥ÇöµÈ´Ù. ÀڷᱸÁ¶¿¡´Â ÆÄÀÏ ½Ã½ºÅÛÀÇ À̸§°ú VFS ¼öÆÛºí·° Àб⠷çƾ¿¡ ´ëÇÑ Æ÷ÀÎÅÍ°¡ ÀúÀåµÇ¾î ÀÖ´Ù. ±×¸² 9.5´Â file_system_type ÀÚ·á ±¸Á¶°¡ file_systems Æ÷ÀÎÅÍ°¡ °¡¸®Å°´Â ¸®½ºÆ®·Î ÀúÀåµÇ¾î ÀÖ´Â °ÍÀ» º¸¿©ÁØ´Ù. °¢ file_system_type ÀڷᱸÁ¶´Â ´ÙÀ½ Á¤º¸¸¦ Æ÷ÇÔÇÑ´Ù. ¼öÆÛºí·° Àб⠷çƾ : ÀÌ ·çƾÀº ÆÄÀÏ ½Ã½ºÅÛÀÌ ¸¶¿îÆ®µÉ ¶§ VFS¿¡ ÀÇÇØ È£ÃâµÈ´Ù. ÆÄÀÏ ½Ã½ºÅÛ À̸§ : ÀÌ ÆÄÀÏ ½Ã½ºÅÛÀÇ À̸§À¸·Î ¿¹¸¦ µé¾î ext2. ÇÊ¿äÇÑ ÀåÄ¡ : ÀÌ ÆÄÀÏ ½Ã½ºÅÛÀ» ½ÇÁ¦·Î Áö¿øÇÏ´Â ÀåÄ¡°¡ ÇÊ¿äÇÑ°¡¸¦ ³ªÅ¸³½´Ù. ¸ðµç ÆÄÀÏ ½Ã½ºÅÛÀÌ ÀúÀåµÉ ÀåÄ¡°¡ ÇÊ¿äÇÑ °ÍÀº ¾Æ´Ï´Ù. ¿¹¸¦ µé¾î, /proc ÆÄÀÏ ½Ã½ºÅÛÀº ºí·° ÀåÄ¡°¡ ÇÊ¿ä·Î ÇÏÁö ¾Ê´Â´Ù. ¾î¶² ÆÄÀÏ ½Ã½ºÅÛÀÌ µî·ÏµÇ¾î ÀÖ´ÂÁö´Â /proc/filesystemsÀÇ ³»¿ëÀ» º¸¸é ¾Ë ¼ö ÀÖ´Ù. ¿¹¸¦ µé¸é ´ÙÀ½°ú °°´Ù. ext2 nodev proc iso9660 9.2.4 ÆÄÀÏ ½Ã½ºÅÛ ¸¶¿îÆ®Çϱ⠼öÆÛÀ¯Àú°¡ ÆÄÀÏ ½Ã½ºÅÛÀ» ¸¶¿îÆ®ÇÏ·Á°í ÇÒ ¶§, ¸®´ª½º Ä¿³ÎÀº ½Ã½ºÅÛ ÄÝ·Î Àü´ÞµÈ ÀÎÀÚ°¡ ¿ÇÀºÁö È®ÀÎÇØ¾ß ÇÑ´Ù. mount°¡ ±âº»ÀûÀÎ °Ë»ç¸¦ Çϱä ÇÏÁö¸¸, Ä¿³ÎÀÌ ¾î¶² ÆÄÀÏ ½Ã½ºÅÛÀ» Áö¿øÇϵµ·Ï ºôµåµÇ¾ú´ÂÁö, ¸¶¿îÆ® ÁöÁ¡ÀÌ ½ÇÁ¦·Î Á¸ÀçÇÏ´ÂÁö´Â ¾ËÁö ¸øÇÑ´Ù. ´ÙÀ½ mount ¸í·ÉÀ» ¿¹·Î »ìÆì º¸ÀÚ. mount -t iso9660 -o ro /dev/cdrom /mnt/cdrom ÀÌ mount ¸í·ÉÀº Ä¿³Î¿¡ ¼¼ °¡Áö Á¤º¸¸¦ Àü´ÞÇÑ´Ù. ÆÄÀÏ ½Ã½ºÅÛÀÇ À̸§, ÆÄÀÏ ½Ã½ºÅÛÀ» Æ÷ÇÔÇÏ°í ÀÖ´Â ºí·° ÀåÄ¡, ±×¸®°í »õ·Î¿î ÆÄÀÏ ½Ã½ºÅÛÀÌ ÇöÀçÀÇ ÆÄÀÏ ½Ã½ºÅÛ ¹èÄ¡µµÀÇ ¾îµð¿¡ ¸¶¿îÆ®µÉ °ÍÀΰ¡ ÇÏ´Â °ÍÀÌ´Ù. °¡»ó ÆÄÀÏ ½Ã½ºÅÛÀÌ ¹Ýµå½Ã ÇØ¾ß Çϴ ù¹ø° ÀÏÀº ÆÄÀÏ ½Ã½ºÅÛÀ» ã´Â °Í ÀÌ´Ù. À̸¦ À§ÇØ ¾Ë·ÁÁø ÆÄÀÏ ½Ã½ºÅÛµéÀÇ ¸®½ºÆ®¸¦ Ž»öÇÑ´Ù. Áï file_systems°¡ °¡¸®Å°´Â ¸®½ºÆ®¿¡¼­ °¢°¢ÀÇ file_system_type ÀڷᱸÁ¶¸¦ »ìÆ캻´Ù. ÀÏÄ¡ÇÏ´Â À̸§À» ã´Â´Ù¸é, ÀÌ ÆÄÀÏ ½Ã½ºÅÛ Å¸ÀÔÀº Ä¿³ÎÀÌ Áö¿øÇÏ´Â °ÍÀÌ°í, Ä¿³ÎÀÌ ÀÌ ÆÄÀÏ ½Ã½ºÅÛÀÇ ¼öÆÛºí·°À» Àд ÆÄÀÏ ½Ã½ºÅÛ °íÀ¯ÀÇ ·çƾÀÇ ÁÖ¼Ò¸¦ °®°í ÀÖ´Ù´Â °ÍÀÌ´Ù. ÀÏÄ¡ÇÏ´Â ÆÄÀÏ ½Ã½ºÅÛ À̸§À» ãÁö ¸øÇÏ´õ¶óµµ, Ä¿³ÎÀÌ Ä¿³Î ¸ðµâÀ» ¿ä±¸½Ã ·ÎµåÇϵµ·Ï ºôµåµÇ¾ú´Ù¸é (12ÀåÀ» ÂüÁ¶) ¾ÆÁ÷ ¿ÏÀüÈ÷ ½ÇÆÐÇÑ °ÍÀº ¾Æ´Ï´Ù. ÀÌ °æ¿ì¿¡´Â Ä¿³ÎÀº ÀÛ¾÷ À» °è¼ÓÇϱâ Àü¿¡ Ä¿³Î µ¥¸óÀÌ ÀûÀýÇÑ ÆÄÀÏ ½Ã½ºÅÛ ¸ðµâÀ» ·ÎµåÇϵµ·Ï ¿äûÇÑ´Ù. file_system_type file_system_type file_system +--------------+ +--------------+ ------------>|*real_super() | +-->|*real_super() | +--------------+ | +--------------+ | name | "ext2" | | name | "proc" +--------------+ | +--------------+ | requires_dev | | | requires_dev | +--------------+ | +--------------+ | next |---------+ | next |--+ +--------------+ +--------------+ | +---------------------+ | | file_system_type | +--------------+ +-->|*real_super() | +--------------+ | name | "iso9660" +--------------+ | requires_dev | +--------------+ | next | +--------------+ ±×¸² 9.5 : Registered File Systems ´ÙÀ½À¸·Î ¸¸¾à mount¿¡ Àü´ÞµÈ ¹°¸®Àû ÀåÄ¡°¡ ¾ÆÁ÷ ¸¶¿îÆ®µÇÁö ¾Ê¾Ò´Ù¸é, »õ·Î¿î ÆÄÀÏ ½Ã½ºÅÛÀÇ ¸¶¿îÆ® ÁöÁ¡ÀÌ µÉ µð·ºÅ丮ÀÇ VFS inode¸¦ ã¾Æ¾ß ÇÑ´Ù. ÀÌ VFS inode´Â inode ij½Ã¿¡ Àְųª, ¾Æ´Ï¸é ¸¶¿îÆ® ÁöÁ¡ÀÇ ÆÄÀÏ ½Ã½ºÅÛÀ» ÀúÀåÇÏ°í ÀÖ´Â ºí·° ÀåÄ¡¿¡¼­ Àоî¾ß ÇÑ´Ù. inode¸¦ ãÀ¸¸é ÀÌ°ÍÀÌ µð·ºÅ丮ÀÎÁö, ±×¸®°í ¿©±â¿¡ ÀÌ¹Ì ´Ù¸¥ ÆÄÀÏ ½Ã½ºÅÛÀÌ ¸¶¿îÆ®µÈ °ÍÀº ¾Æ´ÑÁö °Ë»çÇÑ´Ù. ÇÑ µð·ºÅ丮´Â ´Ü ÇϳªÀÇ ÆÄÀÏ ½Ã½ºÅÛÀÇ ¸¶¿îÆ® ÁöÁ¡À¸·Î¸¸ »ç¿ëµÉ ¼ö ÀÖ´Ù. ÀÌ ½ÃÁ¡¿¡¼­ VFS ¸¶¿îÆ® ÄÚµå´Â »õ·Î¿î VFS ¼öÆÛºí·°À» ÇÒ´çÇÏ°í À̸¦ ¸¶¿îÆ® Á¤º¸¿Í ÇÔ²² ÀÌ ÆÄÀÏ ½Ã½ºÅÛÀ» À§ÇÑ ¼öÆÛºí·° Àб⠷çƾ¿¡ Àü´Þ ÇÑ´Ù. ½Ã½ºÅÛÀÇ ¸ðµç VFS ¼öÆÛºí·°Àº super_block ÀڷᱸÁ¶ÀÇ super_blocks º¤ÅÍ¿¡ ÀúÀåµÈ´Ù. ±×¸®°í À̹ø ¸¶¿îÆ®¸¦ À§ÇØ ±× ÁßÀÇ Çϳª °¡ ÇÒ´çµÈ´Ù. ¼öÆÛºí·° Àб⠷çƾÀº ¹°¸®Àû ÀåÄ¡¿¡¼­ ÀÐÀº Á¤º¸¿¡ µû¶ó VFS ¼öÆÛºí·°À» ä¿ö¾ß ÇÑ´Ù. EXT2 ÆÄÀÏ ½Ã½ºÅÛÀÇ °æ¿ì ÀÌ Á¤º¸ÀÇ ¸ÅÇÎ ¶Ç´Â º¯È¯Àº ¸Å¿ì ½±´Ù. ´ÜÁö EXT2 ¼öÆÛºí·°À» Àаí VFS ¼öÆÛºí·°À» ä¿ì¸é µÈ´Ù. ´Ù¸¥ ÆÄÀÏ ½Ã½ºÅÛµé, ¿¹¸¦ µé¾î MS DOS ÆÄÀÏ ½Ã½ºÅÛÀÇ °æ¿ì ÀÌ°ÍÀº ±×¸® ½¬¿î ÀÏÀº ¾Æ´Ï´Ù. ¾î¶² ÆÄÀÏ ½Ã½ºÅÛÀ̵ç, VFS ¼öÆÛºí·°À» ±â·ÏÇÑ´Ù´Â °ÍÀº ±× ÆÄÀÏ ½Ã½ºÅÛÀ¸·Î µÈ ºí·° ÀåÄ¡¿¡¼­ ¹«¾ùÀ̵ç ÀÐÀ» ¼ö ÀÖ´Ù´Â °ÍÀ» ÀǹÌÇÑ´Ù. ¸¸¾à ºí·° ÀåÄ¡·ÎºÎÅÍ ÀÐÁö ¸øÇÑ´Ù¸é, Áï ºí·° ÀåÄ¡°¡ ÀÌ Å¸ÀÔÀÇ ÆÄÀÏ ½Ã½ºÅÛÀ¸·Î µÇ¾î ÀÖÁö ¾ÊÀ¸¸é mount ¸í·ÉÀº ½ÇÆÐÇÏ°Ô µÈ´Ù. ¸¶¿îÆ®µÈ °¢ ÆÄÀÏ ½Ã½ºÅÛÀº vfsmount ÀڷᱸÁ¶·Î ±â¼úµÈ´Ù (±×¸² 9.6 ÂüÁ¶). À̵éÀº vfsmntlist°¡ °¡¸®Å°´Â ¸®½ºÆ®¿¡ Å¥µÇ¾î ÀÖ´Ù. vfsmnttail Æ÷ÀÎÅÍ´Â ¸®½ºÆ®ÀÇ ¸¶Áö¸· Ç׸ñÀ» °¡¸®Å°°í, mru_vfsmnt Æ÷ÀÎÅÍ´Â °¡Àå ÃÖ±Ù¿¡ »ç¿ëµÈ ÆÄÀÏ ½Ã½ºÅÛÀ» °¡¸®Å²´Ù. °¢ vfsmount ±¸Á¶´Â ÆÄÀÏ ½Ã½ºÅÛ À» ´ã°íÀÖ´Â ºí·° ÀåÄ¡ÀÇ ÀåÄ¡¹øÈ£, ÀÌ ÆÄÀÏ ½Ã½ºÅÛÀÌ ¸¶¿îÆ®µÈ µð·ºÅ丮, ÀÌ ÆÄÀÏ ½Ã½ºÅÛÀÌ ¸¶¿îÆ®µÉ ¶§ ÇÒ´çµÈ VFS ¼öÆÛºí·°¿¡ ´ëÇÑ Æ÷ÀÎÅÍ µîÀ» °®°í ÀÖ´Ù. VFS ¼öÆÛºí·°Àº ÇØ´ç Á¾·ùÀÇ ÆÄÀÏ ½Ã½ºÅÛ¿¡ ´ëÇÑ file_system_type ÀڷᱸÁ¶¿Í ÀÌ ÆÄÀÏ ½Ã½ºÅÛÀÇ ·çÆ® inode¸¦ °¡¸®Å²´Ù. ÀÌ inode´Â ÀÌ ÆÄÀÏ ½Ã½ºÅÛÀÌ ·ÎµåµÇ¾î ÀÖ´Â µ¿¾È VFS inode ij½Ã¿¡ Ç×»ó Á¸ÀçÇÑ´Ù. 9.2.5 °¡»ó ÆÄÀÏ ½Ã½ºÅÛ(VFS)¿¡¼­ ÆÄÀÏ Ã£±â °¡»ó ÆÄÀÏ ½Ã½ºÅÛ¿¡¼­ ¾î¶² ÆÄÀÏÀÇ VFS inode¸¦ ãÀ¸·Á¸é, VFS´Â ÆÄÀÏ À̸§À» ±¸¼ºÇÏ´Â Áß°£ µð·ºÅ丮¸¦ ³ªÅ¸³»´Â VFS inode¸¦ Çѹø¿¡ Çϳª¾¿ ã¾Æ°¡¸ç µð·ºÅ丮 À̸§À» Çؼ®ÇØ¾ß ÇÑ´Ù. °¢ µð·ºÅ丮¸¦ °Ë»öÇÏ´Â °úÁ¤ ¿¡¼­ ÆÄÀÏ ½Ã½ºÅÛ °íÀ¯ÀÇ °Ë»ö ÇÔ¼ö¸¦ È£ÃâÇÏ°Ô µÇ¸ç, ÀÌ ÇÔ¼öÀÇ ÁÖ¼Ò´Â ºÎ¸ð µð·ºÅ丮¸¦ ³ªÅ¸³»´Â VFS inode¿¡ ÀúÀåµÇ¾î ÀÖ´Ù. ÀÌ°ÍÀÌ °¡´ÉÇÑ ÀÌÀ¯´Â Ç×»ó °¢ ÆÄÀÏ ½Ã½ºÅÛÀÇ ·çÆ®ÀÇ VFS inode¸¦ ¾Ë°í ÀÖ°í, ÀÌ°ÍÀº ÆÄÀÏ ½Ã½ºÅÛÀÇ VFS ¼öÆÛºí·°¿¡¼­ °¡¸®Å°°í Àֱ⠶§¹®ÀÌ´Ù. ½ÇÁ¦ ÆÄÀÏ ½Ã½º ÅÛÀÌ ¾î¶² inode¸¦ °Ë»öÇÒ ¶§, °¢ µð·ºÅ丮¿¡ ´ëÇØ µð·ºÅ丮 ij½Ã¸¦ °Ë»ç ÇÑ´Ù. µð·ºÅ丮 ij½Ã¿¡ Ç׸ñÀÌ ¾øÀ¸¸é, ½ÇÁ¦ ÆÄÀÏ ½Ã½ºÅÛÀº ±â¹ÝÇÏ´Â ÆÄÀÏ ½Ã½ºÅÛÀ̳ª inode ij½Ã¿¡¼­ VFS inode¸¦ °¡Á®¿Â´Ù. 9.2.6 °¡»ó ÆÄÀÏ ½Ã½ºÅÛ¿¡¼­ ÆÄÀÏ ¸¸µé±â 9.2.7 ÆÄÀÏ ½Ã½ºÅÛÀÇ ¸¶¿îÆ® ÇØÁ¦ º¸Åë Á¶¸³Àº ºÐÇØÀÇ ¿ª¼øÀ̶ó°í ÇÑ´Ù. ÀÌ ¸»Àº ÆÄÀÏ ½Ã½ºÅÛÀÇ ¸¶¿îÆ® ÇØÁ¦ (unmount)¿¡µµ ¾î´ÀÁ¤µµ Àû¿ëµÈ´Ù. ÆÄÀÏ ½Ã½ºÅÛÀÇ ¸¶¿îÆ®¸¦ ÇØÁ¦ÇÏ·Á¸é ½Ã½ºÅÛ¿¡¼­ ±× ÆÄÀÏ ½Ã½ºÅÛ³»ÀÇ ÆÄÀÏÀ» »ç¿ëÇÏ°í ÀÖ´Â °ÍÀÌ ¾ø¾î¾ß ÇÑ´Ù. µû¶ó¼­ ¾î¶² ÇÁ·Î¼¼½º°¡ /mnt/cdrom µð·ºÅ丮³ª ±× ¾Æ·¡ µð·ºÅ丮¸¦ »ç¿ë ÇÏ°í ÀÖ´Ù¸é ¸¶¿îÆ®¸¦ ÇØÁ¦ÇÒ ¼ö ¾ø´Ù. ¸¸¾à ¹«¾ùÀΰ¡°¡ ¸¶¿îÆ®¸¦ ÇØÁ¦ ÇÏ·Á´Â ÆÄÀÏ ½Ã½ºÅÛÀ» »ç¿ëÇÏ°í ÀÖ´Ù¸é, VFS inode ij½Ã¿¡ ±× ÆÄÀÏ ½Ã½ºÅÛ¿¡ ¼ÓÇÏ´Â VFS inode°¡ µé¾î ÀÖÀ» °ÍÀÌ´Ù. µû¶ó¼­ ¸¶¿îÆ® ÇØÁ¦ ÇÁ·Î ±×·¥Àº ÇØÁ¦ÇÏ·Á´Â ÆÄÀÏ ½Ã½ºÅÛÀÌ Â÷ÁöÇÏ°í ÀÖ´Â ÀåÄ¡¿¡ ¼ÓÇÏ´Â inode°¡ ij½ÃÀÇ inode ¸®½ºÆ®¿¡ µé¾î ÀÖ´ÂÁö °Ë»çÇÑ´Ù. ¸¶¿îÆ®µÈ ÆÄÀÏ ½Ã½ºÅÛÀÇ VFS ¼öÆÛºí·°ÀÌ ´õƼÇϸé, Áï ³»¿ëÀÌ ¼öÁ¤µÇ¾ú´Ù¸é, ¼öÆÛºí·°À» µð½ºÅ©ÀÇ ÆÄÀÏ ½Ã½ºÅÛ¿¡ ±â·ÏÇÏ¿©¾ß¸¸ ÇÑ´Ù. ÀÏ´Ü µð½ºÅ©¿¡ ±â·ÏÇÏ°í ³ª¸é VFS ¼öÆÛºí·°ÀÌ Â÷ÁöÇÏ°í ÀÖ´ø ¸Þ¸ð¸®¸¦ Ä¿³ÎÀÇ ¸Þ¸ð¸® Ç®¿¡ º¸³»ÁØ´Ù. ±×¸®°í ¸¶Áö¸·À¸·Î ÀÌ ÆÄÀÏ ½Ã½ºÅÛÀÇ ¸¶¿îÆ®¿¡ ÇÊ¿äÇß´ø vfsmount¶ó´Â µ¥ÀÌÅÍ ±¸Á¶¸¦ vfsmntlist·Î ºÎÅÍ ¶¼¾î³½ ´ÙÀ½ ÇØÁ¦ÇÑ´Ù. 9.2.8 VFS inode ij½Ã ¸¶¿îÆ®µÈ ÆÄÀÏ ½Ã½ºÅÛÀ» µÚÁú ¶§ ±×¿¡ ÇØ´çÇÏ´Â VFS inode¸¦ °è¼Ó Àаųª ¾²°Ô µÈ´Ù. °¡»ó ÆÄÀÏ ½Ã½ºÅÛÀº ¸¶¿îÆ®µÈ ÆÄÀÏ ½Ã½ºÅÛ¿¡ ´ëÇÑ ¾×¼¼½º ¼Óµµ ¸¦ ³ôÀ̱â À§ÇÏ¿© inode ij½Ã¸¦ À¯ÁöÇÑ´Ù. VFS inode¸¦ inode ij½Ã¿¡¼­ ÀÐÀ» ¼ö ÀÖ´Ù¸é ±×¸¸Å­ ½ÇÁ¦ ÀåÄ¡¿¡ ´ëÇÑ ¾×¼¼½º¸¦ ´ú Çصµ µÈ´Ù. VFS inode ij½Ã´Â Çؽà Å×À̺í·Î ±¸ÇöµÇ¾úÀ¸¸ç, Å×ÀÌºí ³»ÀÇ °¢ ¿£Æ®¸®´Â °°Àº Çؽà °ªÀ» °®´Â VFS inodeÀÇ ¸®½ºÆ®¸¦ °¡¸®Å°°í ÀÖ´Ù. inodeÀÇ Çؽà °ªÀº inode ¹øÈ£¿Í ±× ÆÄÀÏ ½Ã½ºÅÛÀ» °®°í ÀÖ´Â ½ÇÁ¦ ÀåÄ¡ÀÇ ÀåÄ¡ ½Äº°ÀÚ ·ÎºÎÅÍ °è»êµÈ´Ù. °¡»ó ÆÄÀÏ ½Ã½ºÅÛÀÌ inode¸¦ ¾×¼¼½ºÇÒ ÇÊ¿ä°¡ ÀÖÀ» ¶§ ¸¶´Ù VFS inode ij½Ã¸¦ ¸ÕÀú ã¾Æº»´Ù. ij½Ã³»ÀÇ inode¸¦ ã±â À§Çؼ­ ½Ã½ºÅÛÀº ¸ÕÀú Çؽà °ªÀ» °è»êÇÏ°í ±× °ªÀ» À妽º·ÎÇÏ¿© inode Çؽà Å×À̺íÀ» º»´Ù. ±×·¯¸é °°Àº Çؽà °ªÀ» °¡Áø inode ¸®½ºÆ®¿¡ ´ëÇÑ Æ÷ÀÎÅÍ ¸¦ ¾ò°Ô µÈ´Ù. ÀÌ ¸®½ºÆ®¿¡¼­ ãÀ¸·Á´Â °Í°ú °°Àº inode ¹øÈ£¿Í ÀåÄ¡ ½Äº° ÀÚ¸¦ °¡Áø inode°¡ ³ªÅ¸³¯ ¶§±îÁö °¢°¢ÀÇ inode¸¦ »ìÆ캻´Ù. ¸¸¾à ij½Ã¿¡¼­ inode¸¦ ã°ÔµÇ¸é Ä«¿îÆ® °ªÀ» Áõ°¡½ÃÅ´À¸·Î½á ±× inode¸¦ »ç¿ëÇÏ´Â »ç¿ëÀÚ°¡ ÀÖ´Ù´Â °ÍÀ» ¾Ë·ÁÁØ ´ÙÀ½ ÆÄÀÏ ½Ã½ºÅÛ¿¡ ´ëÇÑ ¾×¼¼½º¸¦ °è¼ÓÇÑ´Ù. ¸¸¾à ãÀ» ¼ö ¾ø´Ù¸é ÆÄÀÏ ½Ã½ºÅÛÀÌ ¸Þ¸ð¸®·ÎºÎÅÍ inode¸¦ ÀÐÀ» ¼ö ÀÖµµ·Ï ºó VFS inode¸¦ ã¾Æ¾ß¸¸ ÇÑ´Ù. VFS°¡ ºó inode¸¦ ã´Âµ¥¿¡´Â ¿©·¯°¡Áö ¹æ¹ýÀÌ ÀÖ´Ù. ¸¸¾à ½Ã½ºÅÛÀÌ VFS inode¸¦ ´õ ÇÒ´çÇÒ ¼ö ÀÖ´Ù¸é ´ÙÀ½°ú °°Àº ¹æ¹ýÀ» ¾²°Ô µÈ´Ù - Ä¿³Î ÆäÀÌÁö¸¦ ÇÒ´çÇÏ°í À̸¦ ¿©·¯ °³ÀÇ »õ·Î¿î ºó inode·Î ÂÉ°µ´ÙÀ½ inode ¸®½ºÆ®¿¡ ³Ö´Â´Ù. ½Ã½ºÅÛ¿¡ ÀÖ´Â ¸ðµç VFS inode´Â first_inode°¡ °¡¸®Å°´Â ¸®½ºÆ®¿Í inode Çؽà Å×ÀÌºí¿¡ µé¾î ÀÖ°Ô µÈ´Ù. ¸¸¾à ½Ã½ºÅÛ¿¡ Çã¿ëµÈ ¸¸Å­ ¸ðµç inode¸¦ ÀÌ¹Ì ÇÒ´çÇÏ¿´´Ù¸é Àç»ç¿ëÇÒ¸¸ÇÑ inode È帵éÀ» ã¾Æ¾ß¸¸ ÇÑ´Ù. »ç¿ë Ƚ¼ö°¡ 0ÀÎ inode´Â ÇöÀç ½Ã½ºÅÛ¿¡¼­ »ç¿ëµÇ°í ÀÖÁö ¾Ê´Ù´Â ÀǹÌÀ̹ǷΠÁÁÀº È帰¡ µÈ´Ù. Á¤¸»·Î Áß¿äÇÑ VFS inode, ¿¹¸¦ µé¾î ÆÄÀÏ ½Ã½ºÅÛÀÇ ·çÆ® inode´Â »ç¿ë Ƚ¼ö°¡ 0º¸´Ù ÈξÀ Å« °ªÀ̹ǷΠÀç»ç¿ëÀÇ È帰¡ µÇ´Â °æ¿ì°¡ °áÄÚ ¾ø´Ù. ÀÏ´Ü Àç»ç¿ë È帰¡ ¼±ÅÃµÇ¸é ±× ³»¿ëÀ» ±ú²ýÀÌ Áö¿î´Ù. ¸¸¾à VFS inode °¡ ´õƼÇϸé ÆÄÀÏ ½Ã½ºÅÛ¿¡ ±× ³»¿ëÀ» ±â·ÏÇÒ ÇÊ¿ä°¡ ÀÖÀ¸¸ç, ¸¸¾à ¶ôÀÌ µÇ¾î ÀÖ´Ù¸é ¶ôÀÌ Ç®¸± ¶§±îÁö ±â´Ù·Á¾ß ÇÑ´Ù. Èĺ¸ VFS inode´Â Àç»ç¿ëµÇ ±â Àü¿¡ ¹Ýµå½Ã ±ú²ýÀÌ ÇÏ¿©¾ß ÇÑ´Ù. ¾î·µç »õ·Î¿î VFS inode¸¦ ¹ß°ßÇϸé ÆÄÀÏ ½Ã½ºÅÛÀº ½ÇÁ¦ ÆÄÀÏ ½Ã½ºÅÛ ¿¡¼­ Àоî¿Â Á¤º¸¸¦ inode¿¡ ä¿ì´Â ƯÁ¤ ·çƾÀ» ºÎ¸¥´Ù. inode¸¦ ä¿ì´Â µ¿¾È ±× »õ VFS inodeÀÇ »ç¿ë Ƚ¼ö´Â 1ÀÌ µÇ°í ¶ôÀÌ µÇ±â ¶§¹®¿¡, ±× inode°¡ ¿ÏÀüÇÑ Á¤º¸¸¦ °®°Ô µÉ ¶§±îÁö´Â ¾Æ¹«µµ ¾×¼¼½º ÇÒ ¼ö ¾ø´Ù. ½ÇÁ¦·Î ÇÊ¿äÇÑ VFS inode¸¦ ¾ò±â À§Çؼ­ ±× ¿Ü ´Ù¸¥ ¿©·¯°³ÀÇ inode¸¦ ¾×¼¼½ºÇÒ ÇÊ¿ä°¡ ÀÖ´Ù. µð·ºÅ丮¸¦ ÀÐÀ» ¶§¿¡ ÀÌ·¯ÇÑ ÀÏÀÌ ¹ß»ýÇÑ´Ù. ÃÖÁ¾ µð·ºÅ丮ÀÇ inode°¡ ¿ì¸®°¡ ½ÇÁ¦·Î ÇÊ¿ä·Î ÇÏ´Â °ÍÀÌÁö¸¸, ±×°ÍÀ» ¾ò±â À§Çؼ­´Â ±× Áß°£ µð·ºÅ丮µéÀÇ inodeµµ Àоî¾ß¸¸ ÇÑ´Ù. VFS inode ij½Ã°¡ »ç¿ëµÇ¾î ²Ë Â÷°Ô µÇ¸é, ´ú »ç¿ëµÇ´Â inode´Â ¹ö·ÁÁö°í ´õ ¸¹ÀÌ »ç¿ëµÇ´Â inode´Â ij½Ã¿¡ ³²°Ô µÈ´Ù. 9.2.9 µð·ºÅ丮 ij½Ã(Directory Cache) ÈçÈ÷ ¾²ÀÌ´Â µð·ºÅ丮¿¡ ´ëÇÑ ¾×¼¼½º ¼Óµµ¸¦ ³ôÀ̱â À§ÇØ, VFS¿¡¼­´Â µð·ºÅ丮 ¿£Æ®¸®¿¡ ´ëÇÑ Ä³½Ã¸¦ À¯ÁöÇÑ´Ù. µð·ºÅ丮´Â ½ÇÁ¦ ÆÄÀÏ ½Ã½ºÅÛ ¿¡ ÀÇÇÏ¿© ÂüÁ¶µÇ¹Ç·Î ½ÇÁ¦ ÆÄÀÏ ½Ã½ºÅÛ¿¡ ´ëÇÑ ³»¿ëµµ µð·ºÅ丮 ij½Ã¿¡ ÀúÀåµÈ´Ù. ´ÙÀ½ ¹ø¿¡ ¶È°°Àº µð·ºÅ丮°¡ ÂüÁ¶µÇ¸é (¿¹¸¦ µé¾î, ¾î¶² µð·º Å丮ÀÇ ¸®½ºÆ®¸¦ º» ´ÙÀ½ ±× ¸®½ºÆ®¿¡ ÀÖ´Â ¾î¶² ÆÄÀÏÀ» ¿¬´Ù¸é) µð·ºÅ丮 ij½Ã¿¡¼­ Á¤º¸¸¦ ²¨³¾ ¼ö ÀÖ´Ù. ªÀº À̸§(ÃÖ´ë 15ÀÚ±îÁö)À» °¡Áø µð·ºÅ丮 ¿£Æ®¸®¸¸ ij½Ã°¡ µÇ´Âµ¥ À̴ ªÀº µð·ºÅ丮 À̸§ÀÌ ´õ ÀÚÁÖ »ç¿ëµÇ±â ¶§¹®ÀÌ´Ù. ¿¹¸¦ µé¾î, X ¼­¹ö°¡ ½ÇÇàÁßÀ̶ó¸é /usr/X11R6/bin µð·ºÅ丮´Â ¸Å¿ì ÀÚÁÖ ¾×¼¼½ºµÉ °ÍÀÌ´Ù. µð·ºÅ丮 ij½Ã´Â Çؽà Å×À̺í·Î ±¸¼ºµÇ´Âµ¥, ÀÌ Å×ÀÌºí¿¡¼­ °¢°¢ÀÇ ¿£Æ®¸® ´Â °°Àº Çؽà °ªÀ» °¡Áø µð·ºÅ丮 ij½Ã ¿£Æ®¸®µéÀÇ ¸®½ºÆ®¸¦ °¡¸®Å°°í ÀÖ´Ù. Çؽà ÇÔ¼ö´Â ÆÄÀÏ ½Ã½ºÅÛÀ» °®°í ÀÖ´Â ÀåÄ¡ÀÇ ÀåÄ¡ ¹øÈ£¿Í µð·ºÅ丮 À̸§À» ÀÌ¿ëÇÏ¿© Çؽà Å×ÀÌºí ³»ÀÇ À§Ä¡ Áï À妽º¸¦ »êÃâÇس½´Ù. ÀÌ·¸°Ô ÇÔÀ¸·Î½á ij½ÃµÈ µð·ºÅ丮 ¿£Æ®¸®¸¦ »¡¸® ãÀ» ¼ö ÀÖ´Ù. ¿£Æ®¸®¸¦ ã´Âµ¥ ½Ã°£ÀÌ ³Ê¹« ¸¹ÀÌ °É¸®°Å³ª ½ÉÁö¾î ãÀ» ¼ö ¾ø´Ù¸é ij½Ã¸¦ »ç¿ëÇÒ ÇÊ¿ä°¡ ¾øÀ» °ÍÀÌ´Ù. ij½Ã °ªÀ» À¯È¿ÇÏ°Ô ÇÏ°í ÃÖ½ÅÀÇ °ªÀ¸·Î À¯ÁöÇϱâ À§ÇÏ¿© VFS´Â LRU(ÃÖ±Ù ¿¡ °¡Àå Àû°Ô »ç¿ëµÈ, Least Recently Used) ¹æ½ÄÀ¸·Î µð·ºÅ丮 ij½Ã ¿£Æ® ¸® ¸®½ºÆ®¸¦ °ü¸®ÇÑ´Ù. µð·ºÅ丮 ¿£Æ®¸®´Â óÀ½À¸·Î ÂüÁ¶µÇ¾î ij½Ã·Î µé¾î °¥ ¶§ 1´Ü°è LRU ¸®½ºÆ®ÀÇ ¸Ç µÚ·Î °¡¼­ ºÙ°Ô µÈ´Ù. ¸¸¾à ij½Ã°¡ °¡µæ Â÷ ÀÖÀ¸¸é LRU ¸®½ºÆ®ÀÇ ¸Ç ¾Õ ¿£Æ®¸®¸¦ ´ëÄ¡ÇÑ´Ù. µð·ºÅ丮 ¿£Æ®¸®°¡ ´Ù½Ã Çѹø ¾×¼¼½ºµÇ¸é 2´Ü°è LRU ij½Ã ¸®½ºÆ®·Î ¿Ã¶ó °¡°Ô µÈ´Ù. ¹°·Ð ÀÌ·± °æ¿ì¿¡´Â 2´Ü°è LRU ij½Ã ¸®½ºÆ®ÀÇ ¾ÕÂÊ¿¡¼­ µð·º Å丮 ¿£Æ®¸®¸¦ ´ëÄ¡ÇÏ¸ç µé¾î°¥ ¼öµµ ÀÖ´Ù. 1´Ü°è¿Í 2´Ü°èÀÇ LRU ¸®½ºÆ® ¿¡¼­ ¸Ç ¾ÕÀÇ ¿£Æ®¸®¸¦ ´ëÄ¡ÇÏ´Â °ÍÀº Á¦´ë·Î µÈ °ÍÀÌ´Ù. ¾î¶² ¿£Æ®¸®°¡ ¸®½ºÆ®ÀÇ ¸Ç ¾Õ¿¡ ³ª¿Í ÀÖ´Ù´Â °ÍÀº ÃÖ±Ù¿¡ ¾×¼¼½º µÈ ÀûÀÌ ¾ø´Ù´Â °ÍÀ» ÀǹÌÇϱ⠶§¹®ÀÌ´Ù. ¸¸¾à¿¡ ÃÖ±Ù¿¡ ¾×¼¼½ºµÈ ÀûÀÌ ÀÖ´Ù¸é ¸®½ºÆ®ÀÇ µÚÂÊ ¾îµò°¡¿¡ ÀÖ¾î¾ß ÇÒ °ÍÀÌ´Ù. 2´Ü°è LRU ij½Ã ¸®½ºÆ®¿¡ µé¾î ÀÖ´Â ¿£Æ®¸®µéÀº 1´Ü°è LRU ij½Ã ¸®½ºÆ®¿¡ µé¾î ÀÖ´Â ¿£Æ®¸®µéº¸´Ù ¾ÈÀüÇÏ´Ù. ¿£Æ®¸®°¡ 2´Ü°è ¸®½ºÆ®¿¡ µé¾îÀÖ´Ù´Â °ÍÀº ¾×¼¼½ºµÇ¾úÀ» »Ó¸¸ ¾Æ´Ï¶ó ¹Ýº¹ÀûÀ¸·Î ÂüÁ¶µÇ°í ÀÖÀ½À» ÀǹÌÇϱ⠶§¹®¿¡ ´õ ¾ÈÀüÇÏ°Ô º¸°üÇÒ ÇÊ¿ä°¡ ÀÖ´Ù. vfsmntlist +------------+ ---------->| mnt dev | 0x0301 +------------+ /dev/hda1 | mnt_devname| / +------------+ VFS | mnt_dirnmae| Super_block +------------+ +------------+ | mnt_flags | +->| s_dev | 0x0301 +------------+ | +------------+ 1023 | mnt_sb |-+ | s_blocksize| +------------+ +------------+ file_system_type | | | s_type |-+ +-------------+ +------------+ +------------+ +->|*real_super()| | next | | s_flags | +-------------+ +------------+ +------------+ | name |"ext2" | s_covered | +-------------+ +------------+ | requires_dev| | s_mounted |-+ +-------------+ +------------+ | | next | | +-------------+ | | VFS | inode | +--------+ +->| i_dev | 0x0301 | i_ino | 42 | | | | | | +--------+ ±×¸² 9.6 : A Mounted File System REVIEW NOTE : ±×¸²ÀÌ ÇÊ¿äÇÑ°¡? 9.3 ¹öÆÛ Ä³½Ã(Buffer Cache) ¸¶¿îÆ®µÈ ÆÄÀÏ ½Ã½ºÅÛÀ» »ç¿ëÇÏ°Ô µÇ¸é ÀÌ´Â ºí·° ÀåÄ¡¿¡¼­ µ¥ÀÌÅÍ ºí·°À» Àаųª ¾²´Â ¸¹Àº ¿ä±¸°¡ ¹ß»ýÇÏ°Ô µÈ´Ù. µ¥ÀÌÅÍ ºí·°À» ÀÐ°í ¾²´Â ¸ðµç ¿ä±¸µéÀº Ç¥ÁØ Ä¿³Î ÇÔ¼ö È£ÃâÀ» ÅëÇÏ¿© µð¹ÙÀ̽º µå¶óÀ̹ö¿¡ buffer_head ÀڷᱸÁ¶ÀÇ ÇüÅ·ΠÀü´ÞµÈ´Ù. ÀÌ ÀڷᱸÁ¶´Â ºí·° µð¹ÙÀ̽º µå¶óÀ̹ö°¡ ÇÊ¿ä·Î ÇÏ´Â ¸ðµç Á¤º¸¸¦ Á¦°øÇÑ´Ù. ÀåÄ¡ ½Äº°ÀÚ´Â ÀåÄ¡¸¦ À¯ÀÏÇÏ°Ô ±¸º° ÇØÁÖ°í, ºí·° ¹øÈ£´Â µå¶óÀ̹ö°¡ ¾î¶² ºí·°À» Àоî¾ß ÇÏ´ÂÁö ¸»ÇØÁØ´Ù. ¸ðµç ºí·°ÀåÄ¡´Â ¶È°°Àº Å©±âÀÇ ºí·°µéÀÌ ¼±ÇüÀ¸·Î ¸ð¿©Áø °Íó·³ º¸ÀδÙ. ¹°¸®ÀûÀÎ ºí·° ÀåÄ¡·ÎÀÇ Á¢±Ù ¼Óµµ¸¦ ºü¸£°Ô Çϱâ À§ÇØ ¸®´ª½º´Â ºí·° ¹öÆÛ Ä³½Ã¸¦ °ü¸®ÇÑ´Ù. ½Ã½ºÅÛ¿¡ ÀÖ´Â ¸ðµç ºí·° ¹öÆÛµéÀº »õ °ÍÀÌ´ø, ¾È¾²ÀÌ´Â ¹öÆÛÀÌ´ø°£¿¡ ÀÌ ¹öÆÛ Ä³½Ã ¾îµð¿£°¡ Á¸ÀçÇÑ´Ù. ¸ðµç ¹°¸®ÀûÀÎ ºí·° ÀåÄ¡µéÀº ÀÌ Ä³½Ã¸¦ °øÀ¯Çϸç, ¾î¶² ¼ø°£ÀÌ´øÁö ij½Ã¿¡´Â ¸¹Àº ºí·° ¹öÆÛ°¡ ½Ã½ºÅÛ¿¡ ÀÖ´Â ºí·° ÀåÄ¡ ÁßÀÇ Çϳª¿¡ ¼Ò¼ÓµÇ¾î °¢ÀÚ ¼­·Î ´Ù¸¥ »óÅ¿¡ ÀÖÀ» °ÍÀÌ´Ù. ¹öÆÛ Ä³½Ã¿¡ ¿Ã¹Ù¸¥ µ¥ÀÌÅÍ°¡ ÀÖ´Ù¸é, ÀÌ´Â ½Ã½ºÅÛ ÀÌ ¹°¸®ÀûÀÎ ÀåÄ¡¿¡ Á¢±ÙÇÏ´Â °ÍÀ» Àý¾àÇØÁØ´Ù. ºí·° ÀåÄ¡·ÎºÎÅÍ µ¥ÀÌÅ͸¦ Àдµ¥ »ç¿ëÇϰųª ¾²´Âµ¥ »ç¿ëÇÑ ¾î¶² ºí·° ¹öÆÛÀ̵çÁö°£¿¡ ¹öÆÛ Ä³½Ã·Î µé¾î°£´Ù. ½Ã°£ÀÌ Áö³ª¸é À̵éÀº ¸¶¶¥È÷ ij½Ã¿¡ ÀÖÀ»¸¸ÇÑ ¹öÆÛ¸¦ À§ÇØ ÀÚ¸®¸¦ ³»ÁÖ´øÁö, ÀÚÁÖ »ç¿ëµÈ´Ù¸é ij½Ã¿¡ °è¼Ó ³²¾Æ ÀÖ°Ô µÈ´Ù. ij½Ã¿¡ ÀÖ´Â ºí·° ¹öÆÛ´Â À̸¦ ¼ÒÀ¯ÇÏ´Â ÀåÄ¡ ½Äº°ÀÚ¿Í ¹öÆÛÀÇ ºí·°¹øÈ£·Î À¯ÀÏÇÏ°Ô ±¸º°µÈ´Ù. ¹öÆÛ Ä³½Ã´Â µÎ°³ÀÇ ±â´ÉÀûÀÎ ºÎºÐÀ¸·Î µÇ¾îÀÖ´Ù. ù¹ø° ºÎºÐÀº ÇÁ¸® ºí·° ¹öÆÛÀÇ ¸®½ºÆ®ÀÌ´Ù. Áö¿øÇÏ´Â ¹öÆÛ Å©±âº°·Î °¢±â ÇϳªÀÇ ¸®½ºÆ®°¡ ÀÖ°í, ½Ã½ºÅÛÀÇ ÇÁ¸® ºí·° ¹öÆ۴ óÀ½ ¸¸µé¾îÁú ¶§ ³ª ¹ö·ÁÁú ¶§ ÀÌµé ¸®½ºÆ®¿¡ µé¾î°¡°Ô µÈ´Ù. ÇöÀç Áö¿øÇÏ´Â ¹öÆÛÀÇ Å©±â´Â 512, 1024, 2048, 4096, ±×¸®°í 8192 ¹ÙÀÌÆ®ÀÌ´Ù. µÎ¹ø° ±â´ÉÀûÀÎ ºÎºÐÀº ij½Ã ±× ÀÚüÀÌ´Ù. ÀÌ°ÍÀº Çؽà Å×À̺í·Î¼­ ¶È°°Àº Çؽà À妽º¸¦ °¡Áö´Â ¹öÆÛµéÀ» °í¸®·Î °¡¸®Å°°í ÀÖ´Â Æ÷ÀÎÅ͵éÀÇ º¤ÅÍÀÌ´Ù. Çؽà À妽º´Â ÇØ´ç ÀåÄ¡ ½Äº°ÀÚ¿Í µ¥ÀÌÅÍ ºí·°ÀÇ ºí·° ¹øÈ£·ÎºÎÅÍ ¸¸µé¾îÁø´Ù. ±×¸² 9.7Àº ¸î°³ÀÇ ¿£Æ®¸®¸¦ Çؽà Å×À̺í°ú ÇÔ²² º¸¿©ÁÖ°í ÀÖ´Ù. ºí·° ¹öÆÛ´Â ÇÁ¸® ¸®½ºÆ® ÁßÀÇ ¾î¶² ÇϳªÀÇ ¸®½ºÆ® ¶Ç´Â ¹öÆÛ Ä³½Ã µÑ Áß ÀÇ Çϳª¿¡ µé¾î ÀÖ´Ù. À̵éÀÌ ¹öÆÛ Ä³½Ã¿¡ ÀÖÀ» ¶§ À̵éÀº LRU ¸®½ºÆ®¿¡ µµ µé¾î°¡°Ô µÈ´Ù. °¢ ¹öÆÛ À¯Çü¸¶´Ù LRU ¸®½ºÆ®°¡ ÀÖ°í, À̵éÀº ½Ã½ºÅÛÀÌ Æ¯Á¤ À¯ÇüÀÇ ¹öÆÛ¿¡ ´ëÇØ ÀÏ - ¿¹¸¦ µé¾î »õ·Î¿î µ¥ÀÌÅ͸¦ °¡Áø ¹öÆÛ¸¦ µð½ºÅ©¿¡ ±â·ÏÇϱâ - À» ¼öÇàÇϴµ¥ »ç¿ëµÈ´Ù. ¹öÆÛÀÇ À¯ÇüÀº ¹öÆÛÀÇ »óÅ ¸¦ ¹Ý¿µÇϸç, ¸®´ª½º´Â ÇöÀç ´ÙÀ½°ú °°Àº À¯ÇüÀ» Áö¿øÇÑ´Ù : ±ú²ýÇÑ(clean) : »ç¿ëÇÏÁö ¾ÊÀº, »õ ¹öÆÛ ¶ôµÇ¾îÀÖ´Â(locked) :¹öÆÛ¿¡ ¶ôÀÌ °É·Á ÀÖÀ¸¸ç, ±â·ÏµÇ±â¸¦ ±â´Ù¸®°í ÀÖ´Ù. ´õƼÇÑ(dirty) : ´õƼ ¹öÆÛ. À̵éÀº »õ·Ó°í À¯È¿ÇÑ µ¥ÀÌÅ͸¦ °¡Áö°í ÀÖÀ¸¸ç, ±â·ÏµÉ °ÍÀÌÁö¸¸, ¾ÆÁ÷±îÁö ¾ðÁ¦ ±â·ÏµÉ Áö ½ºÄÉÁìÀÌ ÀâÈ÷ Áö ¾Ê¾Ò´Ù. °øÀ¯(shared) : °øÀ¯ ¹öÆÛ °øÀ¯ÇÏÁö¾Ê´Â(unshared) : ¿¹Àü¿£ °øÀ¯ÇßÀ¸³ª ÀÌÁ¦´Â °øÀ¯ÇÏÁö ¾Ê´Â ¹öÆÛ ÆÄÀÏ ½Ã½ºÅÛÀÌ ¾Æ·¡ °èÃþÀÇ ¹°¸®ÀûÀÎ ÀåÄ¡·ÎºÎÅÍ ¹öÆÛ¸¦ ÀÐÀ» ÇÊ¿ä°¡ ÀÖÀ» ¶§¸¶´Ù ¹öÆÛ Ä³½Ã·ÎºÎÅÍ ºí·°À» ¾òÀ¸·Á°í ½ÃµµÇÑ´Ù. ¸¸¾à ¹öÆÛ Ä³½Ã¿¡¼­ ¹öÆÛ¸¦ ¾òÀ» ¼ö ¾ø´Ù¸é, ÇÁ¸® ¸®½ºÆ®¿¡¼­ Àû´çÇÑ Å©±âÀÇ ±ú²ýÇÑ ¹öÆÛ¸¦ Çϳª ¾ò°Ô µÇ¸ç, ÀÌ »õ ¹öÆÛ´Â ¹öÆÛ Ä³½Ã¿¡ µé¾î°¡°Ô µÈ´Ù. ÇÊ¿ä·Î ÇÏ´Â ¹öÆÛ°¡ ¹öÆÛ Ä³½Ã¿¡ ÀÖ´Ù¸é, ÀÌ°ÍÀº ÃÖ±Ù °ÍÀϼöµµ ±×·¸Áö ¾ÊÀ» ¼öµµ ÀÖ´Ù. ¸¸¾à ÃÖ±Ù °ÍÀÌ ¾Æ´Ï°Å³ª, »õ ºí·° ¹öÆÛ¶ó¸é, ÆÄÀÏ ½Ã½ºÅÛÀº µð¹ÙÀÌ ½º µå¶óÀ̹ö¿¡°Ô ÇØ´çÇÏ´Â µ¥ÀÌÅÍ ºí·°À» µð½ºÅ©¿¡°Ô Àоî¿Àµµ·Ï ÇÑ´Ù. ´Ù¸¥ ij½Ã¿Í ¸¶Âù°¡Áö·Î, ¹öÆÛ Ä³½Ã´Â È¿À²ÀûÀ¸·Î µ¿ÀÛÇϵµ·Ï °ü¸®µÇ¾î¾ß Çϸç, ¹öÆÛ Ä³½Ã¸¦ »ç¿ëÇÏ´Â ºí·° ÀåÄ¡µé »çÀÌ¿¡¼­ °øÆòÇÏ°Ô Ä³½Ã ¿£Æ®¸® ¸¦ ÇÒ´çÇØ¾ß ÇÑ´Ù. ¸®´ª½º´Â bdflush Ä¿³Î µ¥¸óÀ» »ç¿ëÇÏ¿©, ij½Ã¿¡ ´ëÇÑ Àâ´ÙÇÑ ÀϵéÀ» ¼öÇà ÇÏÁö¸¸, ¾î¶² °ÍµéÀº ij½Ã¸¦ »ç¿ëÇÑ °á°ú·Î ÀÚµ¿ÀûÀ¸·Î ÀϾ´Ù. 9.3.1 bdflush Ä¿³Î µ¥¸ó bdflush Ä¿³Î µ¥¸óÀº ½Ã½ºÅÛÀÌ ³Ê¹« ¸¹Àº ´õƼ ¹öÆÛ - ¾ðÁ¨°¡´Â µð½ºÅ©¿¡ ¾²¿©Á®¾ß ÇÏ´Â µ¥ÀÌÅ͸¦ °¡Áö°í ÀÖ´Â ¹öÆÛ - ¸¦ °¡Áö°Ô µÇ¾úÀ» ¶§ µ¿Àû À¸·Î ¹ÝÀÀÇÏ´Â °£´ÜÇÑ Ä¿³Î µ¥¸óÀÌ´Ù. ÀÌ´Â ½Ã½ºÅÛÀÌ ½ÃÀÛÇÒ ¶§ Ä¿³Î ¾²·¹ µå·Î¼­ ½ÃÀ۵Ǹç, È¥µ¿µÇÁö ¾Êµµ·Ï ÀÚ½ÅÀ» kflushd¶ó°í ºÎ¸¥´Ù. ÀÌ À̸§Àº ½Ã½ºÅÛ¿¡ ÀÖ´Â ÇÁ·Î¼¼½ºµéÀ» »ìÆ캸±â À§ÇØ ps ¸í·ÉÀ» ½èÀ» ¶§ º¼ ¼ö ÀÖ´Â À̸§ÀÌ´Ù. ´ëºÎºÐ ÀÌ µ¥¸óÀº ½Ã½ºÅÛ¿¡ ÀÖ´Â ´õƼ ¹öÆÛÀÇ °¹¼ö°¡ ÃæºÐÈ÷ ¸¹¾ÆÁö±â¸¦ ±â´Ù¸®¸ç Àáµé¾îÀÖ´Ù. ¹öÆÛ°¡ ÇÒ´çµÇ°Å³ª ¹ö·ÁÁú ¶§ ½Ã½ºÅÛ¿¡ ÀÖ´Â ´õƼ ¹öÆÛÀÇ °¹¼ö¸¦ °Ë»çÇÑ´Ù. ¸¸¾à ½Ã½ºÅÛ¿¡ ÀÖ´Â Àüü ¹öÆÛÀÇ °¹¼ö Áß¿¡¼­ ´õƼ ¹öÆÛÀÇ ºñÀ²ÀÌ ³Ê¹« Ä¿Áö¸é bdflush°¡ ±ú¾î³­´Ù. ±âº» °ªÀ¸·Î ¼³Á¤µÈ °ªÀº 60%ÀÌÁö¸¸, ½Ã½ºÅÛ¿¡¼­ ¹öÆÛ°¡ ÇÊ¿äÇÏ´Ù¸é bdflush´Â ¾ðÁ¦µçÁö ±ú¾î³¯ ¼ö ÀÖ´Ù. ÀÌ °ªÀº update ¸í·ÉÀ¸·Î º¸°Å³ª ¹Ù²Ü ¼ö ÀÖ´Ù : # update -d bdflush version 1.4 0: 60 Max fraction of LRU list to examine for dirty blocks 1: 500 Max number of dirty blocks to write each time bdflush activated 2: 64 Num of clean buffers to be loaded onto free list by refill_freelist 3: 256 Dirty block threshold for activating bdflush in refill _freelist 4: 15 Percentage of cache to scan for free clusters 5: 3000 Time for data buffers to age before flushing 6: 500 Time for non-data (dir, bitmap, etc) buffers to age before flushing 7: 1884 Time buffer cache load average constant 8: 2 LAV ratio (used to determine threshold for buffer fratricide). µ¥ÀÌÅ͸¦ ¹öÆÛ¿¡ ½á¼­ ¹öÆÛ°¡ ´õƼÇÏ°Ô µÇ¸é ±× ¹öÆÛ´Â BUF_DIRTY LRU ¸®½ºÆ®¿¡ ¿¬°áµÇ°í, bdflush´Â ÀÌÁß¿¡¼­ Àû´çÇÑ °³¼ö¸¦ ÇØ´ç µð½ºÅ©¿¡ ¾²·Á°í ÇÑ´Ù. ÀÌ ¼ýÀÚ ¿ª½Ã update ¸í·ÉÀ¸·Î º¸°í Á¦¾îÇÒ ¼ö ÀÖÀ¸¸ç, ±âº»°ªÀº 500ÀÌ´Ù (À§¿¡¼­ º¸´Â ¹Ùó·³). 9.3.2. update ÇÁ·Î¼¼½º update ¸í·ÉÀº ´Ü¼øÈ÷ ¸í·É¸¸ÀÌ ¾Æ´Ï¶ó, µ¥¸óÀ̱⵵ ÇÏ´Ù. ¼öÆÛÀ¯Àú·Î¼­ ½ÇÇàµÇ¸é (½Ã½ºÅÛ ÃʱâÈ­µ¿¾È¿¡), ÁÖ±âÀûÀ¸·Î ¿À·¡µÈ ´õƼ ¹öÆÛµéÀ» ¸ðµÎ µð½ºÅ©¿¡ ±â·ÏÇÑ´Ù. ÀÌ´Â bdflushÇÏ°í À¯»çÇÑ ÀÏÀ» ÇÏ´Â ½Ã½ºÅÛ ¼­ºñ½º ·çƾÀ» ºÎ¸§À¸·Î½á ÀÌ·ç¾îÁö°Ô µÈ´Ù. ´õƼ ¹öÆÛ°¡ ´Ù ¾²¿©Áö°í ³ª¸é ±× ¶§ ÀÇ ½Ã½ºÅÛ ½Ã°£À» Ç¥½ÃÇØ µÐ´Ù. update´Â ½ÇÇàµÉ ¶§¸¶´Ù ½Ã½ºÅÛ¿¡ ÀÖ´Â ¸ðµç ´õƼ ¹öÆÛ¿¡¼­ ½Ã°£ÀÌ ¸¸·áµÈ °ÍµéÀ» ã´Â´Ù. ¸¸·áµÈ ¸ðµç ¹öÆÛ´Â µð½ºÅ©¿¡ ±â·ÏµÈ´Ù. 9.4 /proc ÆÄÀÏ ½Ã½ºÅÛ /proc ÆÄÀÏ ½Ã½ºÅÛÀ̶󸻷Π¸®´ª½º °¡»ó ÆÄÀÏ ½Ã½ºÅÛÀÇ ÈûÀ» º¸¿©ÁÖ´Â °Í ÀÌ´Ù. ÀÌ´Â ½ÇÁ¦·Î Á¸ÀçÇÏ´Â °ÍÀÌ ¾Æ´Ï´Ù (¸®´ª½ºÀÇ ¶Ç´Ù¸¥ ¸¶¼ú°°Àº ±â±³ ÀÌ´Ù). /proc µð·ºÅ丮µµ, ÀÌÀÇ ¼­ºê µð·ºÅ丮µµ, ÆÄÀϵé·Î ½ÇÁ¦·Î Á¸Àç ÇÏÁö ¾Ê´Â´Ù. ±×·¸´Ù¸é ¾î¶»°Ô cat /proc/devices¸¦ ÇÒ ¼ö Àִ°¡? /proc ÆÄÀÏ ½Ã½ºÅÛÀº ½ÇÁ¦ ÆÄÀÏ ½Ã½ºÅÛ°ú ¸¶Âù°¡Áö·Î ÀÚ½ÅÀ» °¡»ó ÆÄÀÏ ½Ã½ºÅÛ ¿¡ µî·ÏÇÑ´Ù. ±×·¯´Ù°¡ ÆÄÀÏÀ̳ª µð·ºÅ丮¸¦ ¿­¸é¼­ VFS°¡ inode¸¦ ¿äû Çϸé, /proc ÆÄÀÏ ½Ã½ºÅÛÀº À̵é ÆÄÀÏ°ú µð·ºÅ丮¸¦ Ä¿³Î¿¡ ÀÖ´Â Á¤º¸¸¦ °¡Áö°í ¸¸µé¾î³½´Ù. ¿¹¸¦ µé¾î, Ä¿³ÎÀÇ /proc/devices ÆÄÀÏÀº ÀåÄ¡µéÀ» ³ªÅ¸³»´Â Ä¿³Î ÀڷᱸÁ¶·ÎºÎÅÍ »ý¼ºµÈ´Ù. /proc ÆÄÀÏ ½Ã½ºÅÛÀº »ç¿ëÀÚ¿¡°Ô Ä¿³ÎÀÇ ³»ºÎ ÀÛ¾÷À» º¼ ¼ö ÀÖ´Â Àִ âÀ» Á¦°øÇÑ´Ù. 12Àå¿¡¼­ ¼³¸íÇÏ°í ÀÖ´Â ¸®´ª½º Ä¿³Î ¸ðµâ°°Àº ¾î¶² ¸®´ª½º ¼­ºê½Ã½ºÅÛµéÀº /proc ÆÄÀÏ ½Ã½ºÅÛ¿¡ ¿£Æ®¸®¸¦ »ý¼ºÇϱ⵵ ÇÑ´Ù . 9.5 ÀåÄ¡ Ư¼ö ÆÄÀÏ(Device Special Files) ¸®´ª½º´Â ´Ù¸¥ ¸ðµç ¹öÀüÀÇ À¯´Ð½º¿Í ¸¶Âù°¡Áö·Î Çϵå¿þ¾î ÀåÄ¡µéÀ» Ư¼ö ÆÄÀÏ·Î º¸¿©ÁØ´Ù. ¿¹¸¦ µé¾î /dev/nullÀº ³Î(null) ÀåÄ¡ÀÌ´Ù. ÀåÄ¡ ÆÄÀÏÀº ÆÄÀÏ ½Ã½ºÅÛ¿¡¼­ ¾Æ¹«·± µ¥ÀÌÅÍ ¿µ¿ªµµ Â÷ÁöÇÏÁö ¾Ê´Â´Ù. ÀÌ´Â ´ÜÁö µð¹Ù À̽º µå¶óÀ̹ö·ÎÀÇ Á¢±ÙÁ¡ÀÏ »ÓÀÌ´Ù. EXT2 ÆÄÀÏ ½Ã½ºÅÛ°ú ¸®´ª½º VFS´Â ¸ðµÎ ÀåÄ¡ ÆÄÀÏÀ» inodeÀÇ Æ¯¼öÇÑ À¯Çü À¸·Î ±¸ÇöÇÑ´Ù. ÀåÄ¡ ÆÄÀÏ¿¡´Â ¹®ÀÚ Æ¯¼ö ÆÄÀÏ°ú ºí·° Ư¼ö ÆÄÀÏÀ̶ó´Â µÎ°¡Áö ÇüÅ°¡ ÀÖ´Ù. Ä¿³Î ¾È¿¡¼­, µð¹ÙÀ̽º µå¶óÀ̹ö´Â ÆÄÀÏó·³ ±¸ÇöµÇ ¾î ÀÖ´Ù. Áï, À̸¦ ¿­°í, ´Ý´Â µîÀÇ ÀÏÀ» ÇÒ ¼ö ÀÖ´Ù. ¹®ÀÚ ÀåÄ¡´Â ¹®ÀÚ ¸ðµå·Î I/O ÀÛ¾÷À» ÇÒ ¼ö ÀÖÀ¸¸ç, ºí·° ÀåÄ¡´Â ¸ðµç I/O°¡ ¹öÆÛ Ä³½Ã¸¦ ÅëÇϵµ·Ï µÇ¾î ÀÖ´Ù. ÀåÄ¡ ÆÄÀÏ·Î I/O ¿ä±¸¸¦ Çϸé, ÀÌ´Â ½Ã½ºÅÛ ³»¿¡ ÀÖ´Â ÇØ´çÇÏ´Â µð¹ÙÀ̽º µå¶óÀ̹ö·Î Àü´ÞµÈ´Ù. Á¾Á¾ ÀÌ´Â ½ÇÁ¦ µð¹ÙÀ̽º µå¶óÀ̹ö°¡ ¾Æ´Ï¶ó, SCSI µð¹ÙÀ̽º µå¶óÀ̹ö °èÃþ°ú °°Àº ¾î¶² ¼­ºê ½Ã½ºÅÛÀ» À§ÇÑ À¯»ç µð¹ÙÀ̽º µå¶óÀ̹öÀ̱⵵ ÇÑ´Ù. ÀåÄ¡ ÆÄÀÏÀº ÀåÄ¡ÀÇ À¯ÇüÀ» ±¸º°ÇÏ´Â ¸ÞÀÌÀú ¹øÈ£ ¿Í, ÇÑ µ¢¾î¸® ¶Ç´Â ±× ¸ÞÀÌÀú À¯ÇüÀÇ ÇÑ »ç·Ê¸¦ ±¸º°Çϱâ À§ÇÑ ¸¶ÀÌ³Ê À¯ÇüÀ¸·Î ÂüÁ¶ÇÑ´Ù. ¿¹¸¦ µé¾î, ù¹ø° ½Ã½ºÅÛ¿¡¼­ IDE ÄÁÆ®·Ñ·¯¿¡ ÀÖ´Â IDE µð½ºÅ©µéÀº ¸ÞÀÌÀú ¹øÈ£·Î 3À» °¡Áö¸ç, IDE µð½ºÅ©ÀÇ Ã¹¹ø° ÆÄƼ¼ÇÀº ¸¶ÀÌ³Ê ¹øÈ£·Î 1À» °¡Áø´Ù. µû¶ó¼­ ls -l /dev/hda1À» ÇÏ¸é ´ÙÀ½°ú °°Àº Ãâ·ÂÀ» º¸¿©ÁØ´Ù. $ brw-rw---- 1 root disk 3, 1 Nov 24 15:09 /dev/hda1 Ä¿³Î¿¡¼­, ¸ðµç ÀåÄ¡´Â kdev_t ÀÚ·áÇüÀ¸·Î À¯ÀÏÇÏ°Ô Ç¥ÇöµÈ´Ù. ÀÌ´Â 2¹ÙÀÌ Æ® ±æÀ̷Πù¹ø° ¹ÙÀÌÆ®´Â ¸¶ÀÌ³Ê ÀåÄ¡ ¹øÈ£¸¦, µÎ¹ø° ¹ÙÀÌÆ®´Â ¸ÞÀÌÀú ÀåÄ¡ ¹øÈ£¸¦ °®´Â´Ù. À§¿¡ º¸¿©ÁØ IDE ÀåÄ¡´Â Ä¿³Î¿¡¼­ 0x0301À» °®´Â´Ù. ºí·° ÀåÄ¡³ª ¹®ÀÚ ÀåÄ¡¸¦ ³ªÅ¸³»´Â EXT2 inode´Â ÀåÄ¡ÀÇ ¸ÞÀÌÀú ¹øÈ£¿Í ¸¶ÀÌ³Ê ¹øÈ£¸¦ ù¹ø° Á÷Á¢ ºí·° Æ÷ÀÎÅÍ(direct block pointer)¿¡ °¡Áö°í ÀÖ´Ù. VFS°¡ À̸¦ ÀÐÀ¸¸é, À̸¦ ³ªÅ¸³»´Â VFS inode ÀڷᱸÁ¶´Â ÀÌ°ÍÀÇ i_rdev Ç׸ñÀ» ¿Ã¹Ù¸¥ ÀåÄ¡ ½Äº°ÀÚ·Î ¼³Á¤ÇÑ´Ù. ¹ø¿ª : °í¾ç¿ì, ½É¸¶·Î, ÀÌÈ£, ±è±â¿ë, ¼­Ã¢¹è, ÀÌ´ëÇö Á¤¸® : °í¾ç¿ì, ÀÌÈ£ ===================================================================== 10Àå ³×Æ®¿öÅ© (Networks) <<³×Æ®¿öÅ·°ú ¸®´ª½º´Â °ÅÀÇ µ¿ÀǾîÀÌ´Ù. ¸®´ª½º´Â ¸» ±×´ë·Î ÀÎÅÍ³Ý ¶Ç´Â ¿ùµå ¿ÍÀ̵å À¥(World Wide Web, WWW)ÀÇ »ê¹°ÀÌ´Ù. ¸®´ª½ºÀÇ °³¹ß ÀÚ¿Í »ç¿ëÀÚµéÀº Á¤º¸¿Í ÇÁ·Î±×·¥ ÄÚµåÀ» ±³È¯Çϱâ À§ÇØ À¥À» »ç¿ëÇϸç, Á¶Á÷ÀÇ ³×Æ®¿öÅ· ¿ä±¸¸¦ ó¸®Çϱâ À§ÇØ ¸®´ª½º¸¦ ÀÚÁÖ »ç¿ëÇÑ´Ù. ÀÌ ÀåÀº ¸®´ª½º°¡ ÅëƲ¾î TCP/IP¶ó°í ºÎ¸£´Â ³×Æ®¿öÅ© ÇÁ·ÎÅäÄÝÀ» ¾î¶»°Ô Áö¿øÇÏ´ÂÁö ¼³¸íÇÑ´Ù.>> TCP/IP´Â ¹Ì±¹ Á¤ºÎ°¡ ÃâÀÚÇÏ´Â ¹Ì±¹ ¿¬±¸¸Á(ARPANET)¿¡ ¿¬°áµÈ ÄÄÇ»ÅÍ °£ÀÇ Åë½ÅÀ» Áö¿øÇϱâ À§ÇØ ±¸»óµÈ °ÍÀÌ´Ù. ARPANETÀº ÆÐŶ ½ºÀ§Äª°ú Çϳª ÀÇ ÇÁ·ÎÅäÄÝÀÌ ´Ù¸¥ ÇÁ·ÎÅäÄÝÀÇ ¼­ºñ½ºÀ» »ç¿ëÇÏ´Â ÇÁ·ÎÅäÄÝ °èÃþÈ­ µîÀÇ ³×Æ®¿öÅ· °³³äÀ» â½ÃÇß´Ù. ARPANETÀº 1988³â¿¡ Á¾·áµÇ¾úÁö¸¸ ±× °è½ÂÀÚÀÎ NSF NET°ú ÀÎÅͳÝÀº ´õ Å©°Ô ¼ºÀåÇß´Ù. ÇöÀç ¿ùµå ¿ÍÀ̵å À¥À̶ó°í ¾Ë·ÁÁø °ÍÀº ARPANETÀ¸·ÎºÎÅÍ ¼ºÀåÇßÀ¸¸ç, TCP/IP ÇÁ·ÎÅäÄÝÀ» ¹ÙÅÁÀ¸·Î ÇÏ°í ÀÖ´Ù. ARPANET »ó¿¡¼­´Â À¯´Ð½º°¡ ±¤¹üÀ§ÇÏ°Ô »ç¿ëµÇ¾úÀ¸¸ç, óÀ½À¸·Î ³×Æ®¿öÅ· ÀÌ °¡´ÉÇÑ À¯´Ð½º ¹öÀüÀº 4.3 BSD¿´´Ù. ¸®´ª½ºÀÇ ³×Æ®¿öÅ· ±¸ÇöÀº 4.3 BSD¸¦ ¸ðµ¨·Î ¼³°èµÇ¾úÀ¸¸ç, ¸®´ª½º´Â (¾à°£ È®ÀåµÈ) BSD ¼ÒÄÏ°ú TCP/IP ³×Æ®¿öÅ· Àüü¸¦ Áö¿øÇÑ´Ù. ¸®´ª½º¿¡¼­ ÀÌ TCP/IP ÇÁ·Î±×·¡¹Ö ÀÎÅÍÆäÀ̽º ¸¦ ¼±ÅÃÇÑ ÀÌÀ¯´Â TCP/IP°¡ ³Î¸® »ç¿ëµÇ°í ÀÖÀ¸¸ç, ¸®´ª½º¿Í ´Ù¸¥ À¯´Ð½º Ç÷§Æû°úÀÇ ÀÀ¿ë ÇÁ·Î±×·¥ ȣȯ¼ºÀ» ³ôÀ̱â À§ÇÑ °ÍÀ̾ú´Ù. 10.1 TCP/IP ³×Æ®¿öÅ·ÀÇ °³°ü ÀÌ ÀýÀº TCP/IP ³×Æ®¿öÅ·ÀÇ ±âº» ¿ø¸®¿¡ ´ëÇÑ °³°üÀÌ´Ù. ÀÌ°ÍÀº (ÀÌÈÄÀÇ Àý°ú °°Àº) »ó¼¼ÇÑ ¼³¸íÀÌ ¾Æ´Ï±â ¶§¹®¿¡ Çѹø Àо±â ¹Ù¶õ´Ù. IP ³×Æ®¿öÅ©¿¡¼­´Â °¢ ±â°è¸¦ °íÀ¯ÇÏ°Ô ½Äº°ÇÏ´Â 32ºñÆ® ¼ýÀÚÀÎ IP ÁÖ¼Ò¸¦ °¢ ±â°è¿¡ ºÎ¿©ÇÑ´Ù. WWW´Â ¸Å¿ì °Å´ëÇÏ°í °è¼Ó ¼ºÀåÇÏ´Â IP³×Æ®¿öÅ©·Î¼­, WWW¿¡ ¿¬°áµÈ ¸ðµç ±â°èµéÀº ÇÒ´çµÈ °íÀ¯ÇÑ IP ÁÖ¼Ò¸¦ °¡Áø´Ù. IP ÁÖ¼Ò´Â ¿¹¸¦ µé¾î 16.42.0.9¿Í °°ÀÌ Á¡À¸·Î ±¸ºÐµÇ´Â ³× °³ÀÇ ¼ýÀÚ·Î ³ªÅ¸³½´Ù. ½ÇÁ¦·Î´Â ³×Æ®¿öÅ© ÁÖ¼Ò¿Í È£½ºÆ® ÁÖ¼ÒÀÇ µÎ ºÎºÐÀ¸·Î IPÁÖ¼Ò¸¦ ±¸ºÐÇÑ´Ù. (IP ÁÖ¼Ò¿¡´Â ¿©·¯ Ŭ·¡½ºµéÀÌ À־) °¢ ºÎºÐÀÇ Å©±â´Â ´Þ¶óÁú ¼ö ÀÖÁö¸¸, 16.42.0.9¸¦ ¿¹·Î µé¸é 16.42´Â ³×Æ®¿öÅ© ÁÖ¼ÒÀÌ°í 0.9´Â È£½ºÆ® ÁÖ¼Ò°¡ µÈ´Ù. È£½ºÆ® ÁÖ¼Ò´Â ¼­ºê³×Æ®¿öÅ©¿Í È£½ºÆ® ÁÖ¼Ò·Î ´õ (ÀÚ¼¼È÷) ³ª´­ ¼ö ÀÖ´Ù. ´Ù½Ã 16.42.0.9¸¦ ¿¹·Î µé¸é, ¼­ºê³×Æ®¿öÅ© ÁÖ¼Ò´Â 16.42.0 ÀÌ µÇ°í È£½ºÆ® ÁÖ¼Ò´Â 16.42.0.9°¡ µÈ´Ù. ÀÌ·¸°Ô IP ÁÖ¼Ò¸¦ ¸î ±¸È¹À¸·Î ³ª´­ ¼ö ÀÖÀ¸¹Ç·Î, (³×Æ®¿öÅ©¸¦ »ç¿ëÇÏ´Â) ±â°üÀº ÀÚ½ÅÀÇ ³×Æ®¿öÅ©¸¦ ¸î ±¸È¹À¸·Î ³ª´­ ¼ö ÀÖ´Ù. ¿¹¸¦ µé¾î 16.42°¡ ACME ÄÄÇ»ÅÍ»çÀÇ ³×Æ®¿öÅ© ÁÖ¼Ò¶ó¸é, 16.42.0´Â ¼­ºê³×Æ®¿öÅ© 0¹ø, 16.42.1Àº ¼­ºê³×Æ®¿öÅ© 1¹øÀÌ µÉ °ÍÀÌ´Ù. ÀÌ ¼­ºê³×Æ®¿öÅ©´Â ¼­·Î ´Ù¸¥ °Ç¹°¿¡ ÀÖÀ» ¼öµµ ÀÖ°í, ÀÓ´ë ÀüÈ­¼±À» ÀÌ¿ëÇϰųª ¹«¼±(Åë½Å¼ö´Ü)À» ÀÌ¿ë ÇØ ¿¬°áµÇ¾î ÀÖÀ» ¼öµµ ÀÖ´Ù. IP ÁÖ¼Ò´Â ³×Æ®¿öÅ© °ü¸®ÀÚ°¡ ÇÒ´çÇϴµ¥, IP ¼­ºê³×Æ®¿öÅ©¸¦ »ç¿ëÇÏ¿© ³×Æ®¿öÅ© °ü¸® ºÎ´ãÀ» ºÐ»ê½Ãų ¼ö ÀÖ´Ù. IP ¼­ºê³×Æ®¿öÅ© °ü¸®ÀÚ´Â ÀÚ½ÅÀÇ IP ¼­ºê³×Æ®¿öÅ© ¾È¿¡¼­ ÀÚÀ¯·Ó°Ô IP ÁÖ¼Ò¸¦ ÇÒ´çÇÒ ¼ö ÀÖ´Ù. ÇÏÁö¸¸ ÀϹÝÀûÀ¸·Î IP ÁÖ¼Ò´Â ¾ÆÁÖ ±â¾ïÇϱ⠾î·Æ´Ù. À̸§À» ºÙÀÌ´Â °ÍÀÌ ÈξÀ (±â¾ïÇϱâ) ½±´Ù. linux.acme.comÀÌ 16.42.0.9º¸´Ù ÈξÀ ´õ ±â¾ïÇϱ⠽¬¿îµ¥, (À̸§À» »ç¿ëÇϱâ À§Çؼ­´Â) ³×Æ®¿öÅ© À̸§À» IP ÁÖ¼Ò·Î º¯È¯ÇØ ÁÖ´Â µµ±¸°¡ ÇÊ¿äÇÏ´Ù. ÀÌ À̸§µéÀ» /etc/hosts ÆÄÀÏ¿¡ Á¤ÀûÀ¸·Î ¸í½ÃÇÒ ¼öµµ ÀÖÁö¸¸, ¸®´ª½º´Â ºÐ»ê ³×ÀÓ ¼­¹ö(Distributed Name Server, DNS)¿¡ ÀÌ À̸§µéÀ» º¯È¯ÇØ ´Þ¶ó°í ¿äûÇÒ ¼öµµ ÀÖ´Ù. ÀÌ °æ¿ì ·ÎÄà ȣ½ºÆ®´Â Çϳª ÀÌ»óÀÇ DNS ¼­¹öÀÇ IP ÁÖ¼Ò¸¦ ¾Ë°í ÀÖ¾î¾ß¸¸ Çϴµ¥, ÀÌ ÁÖ¼ÒµéÀ» /etc/resolv.conf¿¡ ±â·ÏÇÑ´Ù. À¥ ÆäÀÌÁö¸¦ ÀÐÀ» ¶§¿Í °°ÀÌ ´Ù¸¥ ±â°è¿¡ Á¢¼ÓÇÒ ¶§¸¶´Ù ±× ±â°è¿Í ÀڷḦ ±³È¯Çϱâ À§ÇØ ±× ±â°èÀÇ IP ÁÖ¼Ò¸¦ »ç¿ëÇÑ´Ù. ÀÚ·áµéÀº IP ÆÐŶ¿¡ ´ã°Ü Àü´ÞµÇ´Âµ¥, °¢ ÆÐŶ¸¶´Ù Ãâ¹ßÁö ±â°è¿Í ¸ñÀûÁö ±â°èÀÇ IP ÁÖ¼Ò, üũ¼¶ (checksum)¹× ´Ù¸¥ À¯¿ëÇÑ Á¤º¸¸¦ ´ã°í ÀÖ´Â IP Çì´õ°¡ ºÙ¾î ÀÖ´Ù. üũ¼¶ Àº IP ÆÐŶ¿¡ ÀÖ´Â µ¥ÀÌÅ͸¦ °¡Áö°í °è»êÇϴµ¥, À̸¦ ÀÌ¿ëÇÏ¿© IP ÆÐŶ ¼ö½ÅÀÚ´Â ÀüÈ­¼±ÀÇ ÀâÀ½ µîÀ¸·Î ÀÎÇØ Àü´Þ°úÁ¤¿¡¼­ ÆÐŶÀÌ ¼Õ»óµÇ¾ú´ÂÁö ¸¦ ÆÇ´ÜÇÒ ¼ö ÀÖ´Ù. ÀÀ¿ë ÇÁ·Î±×·¥ÀÌ º¸³»´Â µ¥ÀÌÅÍ´Â Á» ´õ ´Ù·ç±â ½¬¿î ÀÛÀº ÆÐŶµé·Î ÂÉ°³Áú ¼ö ÀÖ´Ù. IP µ¥ÀÌÅÍ ÆÐŶÀÇ Å©±â´Â ¿¬°á ¸Åü¿¡ µû¶ó ´Þ¶óÁö´Âµ¥, ÀϹÝÀûÀ¸·Î ÀÌ´õ³Ý ÆÐŶÀÌ PPP ÆÐŶº¸´Ù ´õ Å©´Ù.¸ñÀû Áö È£½ºÆ®´Â µ¥ÀÌÅÍ ÆÐŶµéÀ» ´Ù½Ã Á¶ÇÕÇÏ¿© ÀÀ¿ë ÇÁ·Î±×·¥¿¡ µ¥ÀÌÅ͸¦ °Ç³»ÁØ´Ù. ´À¸° ½Ã¸®¾ó ¸µÅ©¸¦ ÅëÇØ ¸¹Àº ±×·¡ÇÈ À̹ÌÁöµéÀ» ´ã°í ÀÖ´Â À¥ ÆäÀÌÁö¸¦ º¸¸é À§¿¡¼­ ¸»ÇÑ µ¥ÀÌÅÍÀÇ ºÐÇØ¿Í Á¶¸³ °úÁ¤À» ±×¸²À» º¸µí »ìÆ캼 ¼ö ÀÖ´Ù. °°Àº IP ¼­ºê³×Æ®¿öÅ©¿¡ ¿¬°áµÇ¾î Àִ ȣ½ºÆ®³¢¸®´Â IP ÆÐŶÀ» Á÷Á¢ º¸³¾ ¼ö ÀÖÁö¸¸, ±×·¸Áö ¾ÊÀº °æ¿ì¿¡´Â °ÔÀÌÆ®¿þÀÌ(gateway)¶ó°í Çϴ Ưº°ÇÑ È£½ºÆ®¿¡ IP ÆÐŶÀ» º¸³»¾ß¸¸ ÇÑ´Ù. °ÔÀÌÆ®¿þÀÌ(¶Ç´Â ¶ó¿ìÅÍ)´Â Çϳª ÀÌ»óÀÇ IP ¼­ºê³×Æ®¿öÅ©¿¡ ¿¬°áµÇ¾î ÀÖ´Â µ¥, ÇÑ IP ¼­ºê³×Æ®¿öÅ©¿¡¼­ ¹ÞÀº ÆÐŶÀ» ´Ù¸¥ IP ¼­ºê³ÝÀ¸·Î Àü¼ÛÇÑ´Ù. ¿¹¸¦ µé¾î, ¼­ºê³×Æ®¿öÅ© 16.42.1.0°ú 16.42.0.0ÀÌ ¾î¶² °ÔÀÌÆ®¿þÀ̸¦ ÅëÇØ ¿¬°áµÇ¾î ÀÖ´Ù¸é ¼­ºê³×Æ®¿öÅ© 0¿¡¼­ ¼­ºê³×Æ®¿öÅ© 1·Î Àü´ÞµÇ´Â ÆÐŶµéÀº °ÔÀÌÆ®¿þÀÌ·Î º¸³»Áö°í °ÔÀÌÆ®¿þÀÌ´Â ÀÌ ÆÐŶÀ» Àü´ÞÇÑ´Ù. °¢ È£½ºÆ®µéÀº Á¤È®ÇÑ ±â°è¿¡ IP ÆÐŶÀ» Àü´ÞÇϱâ À§ÇØ ¶ó¿ìÆà Å×À̺í (routing table)À» ÀÛ¼ºÇÑ´Ù. ¶ó¿ìÆà Å×ÀÌºí¿¡´Â ¸ðµç IP ¸ñÀûÁö¿¡ ´ëÇØ ±× ¸ñÀûÁö¿¡ µµ´ÞÇϱâ À§ÇØ ¾î¶² È£½ºÆ®¿¡ IP ÆÐŶÀ» Àü´ÞÇØ¾ß ÇÏ´ÂÁö¸¦ °áÁ¤Çϱâ À§ÇØ »ç¿ëµÇ´Â Á¤º¸°¡ ÀÖ´Ù. ÀÌ ¶ó¿ìÆà Å×À̺íÀº µ¿ÀûÀ̾ ÀÀ¿ë ÇÁ·Î±×·¥ÀÌ ³×Æ®¿öÅ©¸¦ »ç¿ëÇϰųª ³×Æ®¿öÅ© ±¸¼ºµµ°¡ º¯°æµÇ°Å³ª ÇÏ¸é ½Ã°£ÀÌ Áö³²¿¡ µû¶ó º¯°æµÈ´Ù. IP ÇÁ·ÎÅäÄÝÀº ´Ù¸¥ ÇÁ·ÎÅäÄÝÀÌ µ¥ÀÌÅ͸¦ º¸³¾ ¶§ »ç¿ëÇÏ´Â Àü¼Û °èÃþ ÀÌ´Ù. TCP´Â ½Å·ÚÇÒ ¼ö ÀÖ´Â ÀÏ´ëÀÏ ÇÁ·ÎÅäÄݷμ­, µ¥ÀÌÅ͸¦ ÁÖ°í ¹Þ±â À§ÇØ IP ÇÁ·ÎÅäÄÝÀ» »ç¿ëÇÑ´Ù. IP ÆÐŶ¿¡ Çì´õ°¡ ºÙ¾î ÀÖ´Â °Íó·³, TCP ÆÐŶ¿¡µµ Çì´õ°¡ ºÙ¾î ÀÖ´Ù. TCP´Â ¿¬°á Áß½ÉÀûÀÎ ÇÁ·ÎÅäÄÝ·Î (À̸¦ »ç¿ë ÇÏ´Â) µÎ ³×Æ®¿öÅ© ÀÀ¿ë ÇÁ·Î±×·¥Àº ±× »çÀÌ¿¡ ¸¹Àº ¼­ºê³×Æ®¿öÅ©, °ÔÀÌÆ® ¿þÀÌ ¹× ¶ó¿ìÅÍ°¡ ÀÖ´õ¶óµµ ´ÜÀÏÇÑ °¡»óÀÇ Á¢¼ÓÀ» ÅëÇØ ¿¬°áµÈ´Ù. TCP´Â µÎ ÀÀ¿ëÇÁ·Î±×·¥°£ÀÇ µ¥ÀÌÅ͸¦ ½Å·ÚÇÒ ¼ö ÀÖ´Â ¹æ½ÄÀ¸·Î Àü´ÞÇÏ¸ç µ¥ÀÌÅÍ ÀÇ ¼Õ½ÇÀ̳ª Áߺ¹ÀÌ ¾ø´Ù´Â °ÍÀ» º¸ÀåÇÑ´Ù. TCP°¡ IP¸¦ »ç¿ëÇÏ¿© TCP ÆÐŶÀ» Àü¼ÛÇÒ ¶§, IP ÆÐŶ¿¡ µé¾îÀÖ´Â µ¥ÀÌÅÍ´Â ¹Ù·Î TCP ÆÐŶÀÌ´Ù. ¼­·Î Åë½ÅÇÏ°í Àִ ȣ½ºÆ®ÀÇ IP °èÃþÀº IP ÆÐŶÀ» ÁÖ°í ¹Þ´Â ¿ªÇÒÀ» ÇÑ´Ù. UDPµµ (UDP) ÆÐŶÀ» Àü´ÞÇϴµ¥ IP °èÃþÀ» »ç¿ë ÇÏÁö¸¸, TCP¿Í´Â ´Þ¸® UDP´Â ½Å·ÚÇÒ ¼ö ¾ø´Â ÇÁ·ÎÅäÄÝÀÌ¸ç µ¥ÀÌÅͱ׷¥ (datagram) ¼­ºñ½º¸¦ Á¦°øÇÑ´Ù. ÀÌ¿Í °°ÀÌ ´Ù¸¥ ÇÁ·ÎÅäÄÝÀÌ IP¸¦ »ç¿ë ÇÏ·Á¸é, IP ÆÐŶÀ» ¹ÞÀ» ¶§ IP °èÃþÀÌ ÀÌ IP ÆÐŶ¿¡ ´ã±ä µ¥ÀÌÅ͸¦ ¾î¶² »óÀ§ ÇÁ·ÎÅäÄÝ¿¡ Àü´ÞÇØ¾ß ÇÏ´ÂÁö¸¦ ¾Ë°í ÀÖ¾î¾ß¸¸ ÇÑ´Ù. À̸¦ À§ÇØ ¸ðµç IP ÆÐŶ Çì´õ¿¡´Â ÇÁ·ÎÅäÄÝ ½Äº°ÀÚ¸¦ ÁöÁ¤ÇÏ´Â ¹ÙÀÌÆ®°¡ ÀÖ´Ù. TCP°¡ IP °èÃþ¿¡´Ù IP ÆÐŶÀ» Àü¼ÛÇϵµ·Ï ¿äûÇϸé, ±× ÆÐŶ¿¡ TCP ÆÐŶÀÌ µé¾îÀÖ´Ù ´Â °ÍÀ» IP ÆÐŶ Çì´õ¿¡ ±â·ÏÇÑ´Ù. IP °èÃþÀÌ µ¥ÀÌÅ͸¦ ¹ÞÀ¸¸é, ÀÌ ÇÁ·Î ÅäÄÝ ½Äº°ÀÚ¸¦ »ç¿ëÇÏ¿©, ¹ÞÀº µ¥ÀÌÅ͸¦ »óÀ§ÀÇ ¾î¶² °èÃþ¿¡ Àü´ÞÇÒÁö¸¦ °áÁ¤ÇÑ´Ù. ÀÌ °æ¿ì¿¡´Â TCP °èÃþÀÌ µÉ °ÍÀÌ´Ù. ÀÀ¿ëÇÁ·Î±×·¥ÀÌ TCP/IP¸¦ ÅëÇØ Åë½ÅÀ» ÇÒ ¶§, ÀÀ¿ëÇÁ·Î±×·¥Àº »ó´ë¹æÀÇ IP ÁÖ¼Ò»Ó¸¸ ¾Æ´Ï¶ó ±× ÀÀ¿ë ÇÁ·Î±×·¥ÀÇ Æ÷Æ® ÁÖ¼Ò ¶ÇÇÑ ¸í½ÃÇÏ¿©¾ß ÇÑ´Ù. Æ÷Æ® ¹øÈ£´Â ÀÀ¿ëÇÁ·Î±×·¥ ¸¶´Ù À¯ÀÏÇϸç, Ç¥ÁØ ³×Æ®¿öÅ© ÀÀ¿ëÇÁ·Î±×·¥Àº Ç¥ÁØ Æ÷Æ®¹øÈ£¸¦ »ç¿ëÇÑ´Ù. ¿¹¸¦ µé¾î, À¥¼­¹ö´Â 80¹ø Æ÷Æ®¸¦ »ç¿ëÇÑ´Ù. ÀÌ·¯ÇÑ µî·ÏµÈ Æ÷Æ®¹øÈ£´Â /etc/services¿¡¼­ º¼ ¼ö ÀÖ´Ù. ETHERNET FRAME +-----------+--------+--------+----------------+--------+ |Destination|Source | | | | |ethernet |ethernet|Protocol| Data |Checksum| |address |address | | | | +-----------+--------+--------+----------------+--------+ / \ / \ ------------------------- -------- / \ / IP PACKET \ +-+-+------+-+-+-+--------+--------+----------+-----------+--------+ | | |Length| | | |Protocol|Checksum|Source |Destination| Data | | | | | | | | | |IP address|IP address | | +-+-+------+-+-+-+--------+--------+----------+-----------+--------+ / / / | -- | / | / TCP PACKET \ +----------+-----------+---+---+---+---+------------------+ |Source TCP|Destination|SEQ|ACK| | | Data | |address |TCP address| | | | | | +----------+-----------+---+---+---+---+------------------+ ±×¸² 10.1 : TCP/IP Protocol Layers ÇÁ·ÎÅäÄÝÀÇ °èÃþ±¸Á¶´Â TCP, UDP ¹× IP·Î (±¸ºÐÇÏ´Â °ÍÀ¸·Î) ³¡³ª´Â °ÍÀÌ ¾Æ´Ï´Ù. IP ÇÁ·ÎÅäÄÝ ÀÚüµµ IP ÆÐŶÀ» ´Ù¸¥ IP È£½ºÆ®·Î Àü¼ÛÇϴµ¥ ¼ö ¸¹Àº ÀåÄ¡µéÀ» »ç¿ëÇÑ´Ù. ÀÌ ÀåÄ¡´Â ÀڽŸ¸ÀÇ ÇÁ·ÎÅäÄÝ Çì´õ¸¦ Ãß°¡Çϱ⵵ ÇÑ´Ù. ÀÌ·¯ÇÑ ¿¹·Î´Â ÀÌ´õ³Ý °èÃþÀÌ ÀÖÀ¸¸ç, ¶Ç ´Ù¸¥ ¿¹·Î PPP¿Í SLIPÀÌ ÀÖ´Ù. ÀÌ´õ³Ý ³×Æ®¿öÅ©¿¡¼­ ¸¹Àº È£½ºÆ®°¡ ½ÇÁ¦ ÄÉÀ̺í Çϳª¿¡ µ¿½Ã¿¡ Á¢¼ÓÇÒ ¼ö ÀÖ´Ù. Àü¼ÛµÇ´Â ¸ðµç ÀÌ´õ³Ý ÇÁ·¹ÀÓÀº ¿¬°áµÈ ¸ðµç È£½ºÆ®¿¡ º¸ÀÌ°Ô µÇ¹Ç·Î ¸ðµç ÀÌ´õ³Ý ÀåÄ¡´Â °íÀ¯ÇÑ ÁÖ¼Ò¸¦ °®´Â´Ù. È£½ºÆ®´Â ÀÚ±â ÁÖ¼Ò·Î ¹è´ÞµÇ´Â ¸ðµç ÀÌ´õ³Ý ÇÁ·¹ÀÓÀ» ¹Þ¾ÆµéÀÌÁö¸¸, °°Àº ³×Æ®¿öÅ©¿¡ ¿¬°áµÈ ´Ù¸¥ È£½ºÆ®µéÀº À̸¦ ¹«½ÃÇÏ°Ô µÈ´Ù. ÀÌ´õ³ÝÀÇ ÀÌ·± À¯ÀÏÇÑ ÁÖ¼Ò ´Â ÀÌ´õ³Ý ÀåÄ¡¸¦ ¸¸µé ¶§ Àû¾î³Ö°Ô µÇ´Âµ¥, ÀϹÝÀûÀ¸·Î ÀÌ´õ³Ý Ä«µåÀÇ SROM¿¡ µé¾î ÀÖ´Ù. ÀÌ´õ³Ý ÁÖ¼Ò´Â 6¹ÙÀÌÆ® ±æÀÌÀε¥ ¿¹¸¦ µé¸é 08-00-2B-00-49-A4°°Àº °ªÀ» °®´Â´Ù. ¾î¶² ÀÌ´õ³Ý ÁÖ¼Ò´Â ¸ÖƼij½ºÆ® (multicast) ¸ñÀûÀ¸·Î ¿¹¾àµÇ¾î Àִµ¥, ÀÌ·± ÁÖ¼Ò·Î º¸³»Áö´Â ÀÌ´õ³Ý ÇÁ·¹ÀÓÀº °°Àº ³×Æ®¿öÅ© ¾È¿¡ ÀÖ´Â ¸ðµç È£½ºÆ®°¡ ¹Þ´Â´Ù. ÀÌ´õ³Ý ÇÁ·¹ÀÓ Àº (µ¥ÀÌÅÍ·Î) ¼ö¸¹Àº ÇÁ·ÎÅäÄݵéÀ» Àü¼ÛÇÒ ¼ö Àֱ⠶§¹®¿¡, IP ÆÐŶ°ú °°ÀÌ Çì´õ¿¡ ÇÁ·ÎÅäÄÝ ½Äº°ÀÚ°¡ ÀÖ´Ù. ÀÌ¿¡ µû¶ó ÀÌ´õ³Ý °èÃþÀº Á¤È®ÇÏ°Ô IP ÆÐŶÀ» ¹Þ¾Æ IP °èÃþ¿¡ Àü´ÞÇÒ ¼ö ÀÖ´Ù. ÀÌ´õ³Ý°ú °°Àº ´ÙÁß Á¢¼Ó ÇÁ·ÎÅäÄÝÀ» ÅëÇØ IP ÆÐŶÀ» º¸³»±â À§Çؼ­´Â IP °èÃþÀº IP È£½ºÆ®ÀÇ ÀÌ´õ³Ý ÁÖ¼Ò¸¦ ã¾Æ¾ß¸¸ ÇÑ´Ù. IP ¾îµå·¹½º´Â ´ÜÁö °³³äÀûÀÎ ÁÖ¼ÒÀÏ »ÓÀÌ°í, °íÀ¯ÇÑ ¹°¸®ÀûÀÎ ÁÖ¼Ò¸¦ °¡Áö°í ÀÖ´Â °ÍÀº ÀÌ´õ ³Ý ÀåÄ¡À̱⠶§¹®ÀÌ´Ù. ¹Ý¸é¿¡ IP ÁÖ¼Ò´Â ³×Æ®¿öÅ© °ü¸®ÀÚÀÇ ÀÇÁö´ë·Î ÁöÁ¤µÇ°í º¯°æµÉ ¼ö ÀÖÁö¸¸, ³×Æ®¿öÅ© Çϵå¿þ¾î´Â ÀÚ½ÅÀÇ ¹°¸®Àû ÁÖ¼Ò ¶Ç´Â ¸ðµç ±â°è°¡ ¹Þ¾Æ¾ß¸¸ Çϴ Ưº°ÇÑ ¸ÖƼij½ºÆ®¿¡¸¸ ¹ÝÀÀÇÑ´Ù. ¸®´ª½º ´Â IP ÁÖ¼Ò¸¦ ÀÌ´õ³Ý ÁÖ¼Ò¿Í °°Àº ½ÇÁ¦ Çϵå¿þ¾î ÁÖ¼Ò º¯È¯Çϱâ À§ÇØ ARP(Address Resolution Protocol)¸¦ »ç¿ëÇÑ´Ù. ƯÁ¤ÇÑ IP ÁÖ¼Ò¸¦ °¡Áø Çϵå¿þ¾î ÁÖ¼Ò¸¦ ¾Ë°íÀÚ Çϴ ȣ½ºÆ®´Â º¯È¯ÇÏ°íÀÚ ÇÏ´Â IP ÁÖ¼Ò°¡ ´ã±ä ARP ¿äû ÆÐŶÀ» ¸ÖƼij½ºÆ® ÁÖ¼Ò¿¡ º¸³» ¸ðµç ³ëµå ¿¡ Àü´ÞÇÑ´Ù. ±× IP ÁÖ¼Ò¸¦ °¡Áö°í Àִ ȣ½ºÆ®´Â ÀÚ½ÅÀÇ Çϵå¿þ¾î ÁÖ¼Ò °¡ ´ã±ä ARP ÀÀ´äÀ» µ¹·ÁÁØ´Ù. ARP´Â ÀÌ´õ³Ý ÀåÄ¡¸¸ »ç¿ëµÇ´Â °ÍÀÌ ¾Æ´Ï¶ó IP ÁÖ¼Ò¸¦ FDDI¿Í °°Àº ´Ù¸¥ ¹°¸®Àû ÀåÄ¡ÀÇ ÁÖ¼Ò·Î º¯È­Çϴµ¥¿¡µµ »ç¿ëÇÒ ¼ö ÀÖ´Ù. ARP¸¦ ÇÒ ¼ö ¾ø´Â ³×Æ®¿öÅ© ÀåÄ¡µéÀº µû·Î Ç¥½Ã¸¦ ÇØ µÎ¾î ¸®´ª½º´Â (ÀÌ ÀåÄ¡¿¡ ´ëÇؼ­´Â) ARP¸¦ ½ÃµµÇÏÁö ¾Ê´Â´Ù. ÀÌ¿Í´Â ¹Ý´ëµÇ´Â ±â´ÉÀ¸·Î RARP(Reverse Address Resolution Protocol)°¡ Àִµ¥, ÀÌ°ÍÀº ¹°¸®Àû ³×Æ®¿öÅ© ÁÖ¼Ò¸¦ IP ÁÖ¼Ò·Î º¯È¯ÇÑ´Ù. ÀÌ ±â´ÉÀº °ÔÀÌÆ®¿þÀÌ°¡ »ç¿ëÇϴµ¥, °ÔÀÌÆ®¿þÀÌ´Â ¿ø°Ý ³×Æ®¿öÅ©¿¡ ÀÖ´Â IP ÁÖ¼Ò¸¦ ´ë½ÅÇؼ­ ARP ¿äû¿¡ ÀÀ´äÇÑ´Ù. 10.2 ¸®´ª½ºÀÇ TCP/IP ³×Æ®¿öÅ· °èÃþ ³×Æ®¿öÅ© ÇÁ·ÎÅäÄÝ°ú ¸¶Âù°¡Áö·Î, ±×¸² 10.2¿¡¼­ º¼ ¼ö ÀÖ´Â °Íó·³ ¸®´ª½º´Â ÀÎÅÍ³Ý ÇÁ·ÎÅäÄÝ ÁÖ¼Ò Æйи®(address family)¸¦ ÀÏ·ÃÀÇ ¿¬°üµÈ ¼ÒÇÁÆ®¿þ¾î °èÃþÀ¸·Î ±¸ÇöÇÏ°í ÀÖ´Ù. BSD ¼ÒÄÏÀº BSD ¼ÒÄϸ¸ ó¸®ÇÏ´Â ÀϹÝÀûÀÎ ¼ÒÄÏ °ü¸® ¼ÒÇÁÆ®¿þ¾î°¡ Áö¿øÇÑ´Ù. INET ¼ÒÄÏ °èÃþÀº ¼ÒÄÏ °ü¸® ¼ÒÇÁÆ®¿þ¾î¸¦ Áö¿øÇϴµ¥, ÀÌ°ÍÀº IP ±â¹Ý ÀÇ ÇÁ·ÎÅäÄÝÀÎ TCP¿Í UDPÀÇ Åë½Å Á¾Á¡À» °ü¸®ÇÑ´Ù. UDP(User Datagram Protocol)´Â ºñ¿¬°áÁöÇâ ¹æ½ÄÀÇ ÇÁ·ÎÅäÄÝ(connectionless protocol)Àε¥ ºñÇØ, TCP(Transmission Control Protocol)´Â ¿¬°áÁöÇâÀÇ ½Å·ÚÇÒ ¼ö ÀÖ´Â ÀÏ´ëÀÏ ÇÁ·ÎÅäÄÝÀÌ´Ù. UDP ÆÐŶÀ» Àü¼ÛÇÒ ¶§, ¸®´ª½º´Â ±× ÆÐŶÀÌ ¸ñÀûÁö ¿¡ ¾ÈÀüÇÏ°Ô µµÂøÇÏ¿´´ÂÁö¸¦ ¾Ë¼öµµ ¾ø°í ½Å°æÀ» ¾²Áöµµ ¾Ê´Â´Ù. TCP ÆÐŶ µé¿¡´Â ¹øÈ£¸¦ ¸Å°Ü, TCP Á¢¼ÓÀÇ ¾ç ³¡(Á¾Á¡ È£½ºÆ®)Àº Àü¼Û µ¥ÀÌÅÍ°¡ Á¤È®ÇÏ°Ô ¼ö½ÅµÇ¾ú´ÂÁö¸¦ È®ÀÎÇÑ´Ù. IP °èÃþ¿¡´Â ÀÎÅÍ³Ý ÇÁ·ÎÅäÄÝÀ» ±¸Çö ÇÑ Äڵ尡 µé¾î ÀÖ´Ù. ÀÌ ÄÚµå´Â Àü¼ÛÇÏ´Â µ¥ÀÌÅÍ ¾Õ¿¡ IP Çì´õ¸¦ ºÙÀÌ°í, µé¾î¿À´Â IP ÆÐŶÀ» TCP³ª UDP °èÃþÀ¸·Î ¾î¶»°Ô Àü´ÞÇÏ´ÂÁö¸¦ ¾Ë°í ÀÖ´Ù. IP °èÃþ ¾Æ·¡¿¡¼­ PPP ¶Ç´Â ÀÌ´õ³Ý°ú °°Àº ³×Æ®¿öÅ© ÀåÄ¡µéÀÌ ¸®´ª½ºÀÇ ¸ðµç ³×Æ®¿öÅ·À» Áö¿øÇÑ´Ù. ³×Æ®¿öÅ© ÀåÄ¡¶ó°í Ç×»ó ¹°¸®ÀûÀÎ ÀåÄ¡¸¸À» °¡¸®Å°´Â °ÍÀº ¾Æ´Ï´Ù. ·çÇÁ¹é ÀåÄ¡¿Í °°Àº ¸î¸î ÀåÄ¡´Â ¼øÀüÈ÷ ¼ÒÇÁÆ®¿þ¾î·Î¸¸ ÀÛ¼ºµÇ¾î ÀÖ´Ù. mknod ¸í·ÉÀ¸·Î ¸¸µé¾îÁö´Â Ç¥ÁØÀûÀÎ ¸®´ª½º ÀåÄ¡¿Í´Â ´Þ¸®, ³×Æ®¿öÅ© ÀåÄ¡´Â °ü·ÃµÈ ¼ÒÇÁÆ®¿þ¾î°¡ ÀåÄ¡¸¦ ã¾Æ³» ÃʱâÈ­ÇؾßÁö¸¸ ³ªÅ¸³­´Ù. ±×·¡¼­ ÇØ´çÇÏ´Â ÀÌ´õ³Ý µð¹ÙÀ̽º µå¶óÀ̹ö¸¦ ³Ö¾î¼­ Ä¿³ÎÀ» ºôµåÇؾ߸¸ /dev/eth0¸¦ º¼ ¼ö ÀÖ´Ù. ARP ÇÁ·ÎÅäÄÝÀº IP °èÃþ°ú °¢Á¾ ÁÖ¼Ò¿¡ ´ëÇÑ ARP ¸¦ Áö¿øÇÏ´Â ÇÁ·ÎÅäÄÝ »çÀÌ¿¡ ÀÖ´Ù. 10.3 BSD ¼ÒÄÏ ÀÎÅÍÆäÀ̽º(Socket Interface) BSD ¼ÒÄÏ ÀÎÅÍÆäÀ̽º´Â ´Ù¾çÇÑ ÇüÅÂÀÇ ³×Æ®¿öÅ· »Ó¸¸ ¾Æ´Ï¶ó ÇÁ·Î¼¼½º°£ Åë½Åµµ Áö¿øÇÏ´Â ÀϹÝÀûÀÎ ÀÎÅÍÆäÀ̽ºÀÌ´Ù. ¼ÒÄÏÀº Åë½Å ¿¬°áÀÇ ÇÑÂÊ ³¡À¸·Î »ý°¢ÇÒ ¼ö Àִµ¥, Åë½ÅÇÑ°í ÀÖ´Â µÎ ÇÁ·Î¼¼½º´Â Åë½Å ¿¬°á¿¡¼­ ÀÚ½ÅÂÊ ³¡¿¡ ÇØ´çÇÏ´Â ¼ÒÄÏÀ» °¡Áö°Ô µÈ´Ù. ¼ÒÄÏÀ» Ưº°ÇÑ Á¾·ùÀÇ ÆÄÀÌÇÁ ·Î »ý°¢ÇÒ ¼öµµ ÀÖÁö¸¸, ÆÄÀÌÇÁ¿Í´Â ´Þ¸® ¼ÒÄÏÀº °Å±â¿¡ ´ãÀ» ¼ö ÀÖ´Â µ¥ÀÌÅÍÀÇ ¾ç¿¡ Á¦ÇÑÀÌ ¾ø´Ù. ¸®´ª½º´Â ¸î °¡Áö Ŭ·¡½ºÀÇ ¼ÒÄÏÀ» Áö¿øÇÏ´Â µ¥, À̰͵éÀ» ÁÖ¼Ò Æйи®(address family)¶ó°í ºÎ¸¥´Ù. ÀÌ´Â °¢ Ŭ·¡½ºº° ·Î ÀÚ½ÅÀÇ Åë½Å¿¡ »ç¿ëÇÏ´Â ÁÖ¼Ò Ç¥Çö¹ýÀ» °¡Áö°í Àֱ⠶§¹®ÀÌ´Ù. ¸®´ª½º ´Â ´ÙÀ½°ú °°Àº ¼ÒÄÏ ÁÖ¼Ò Æйи® ¶Ç´Â µµ¸ÞÀÎÀ» Áö¿øÇÑ´Ù. UNIX À¯´Ð½º µµ¸ÞÀÎ ¼ÒÄÏ (Unix domain socket) INET TCP/IP ÇÁ·ÎÅäÄÝÀ» ÀÌ¿ëÇÑ Åë½ÅÀ» Áö¿øÇÏ´Â ÀÎÅÍ³Ý ÁÖ¼Ò Æйи® AX25 ¾Æ¸¶Ãß¾î ¶óµð¿À X.25 IPX ³ëº§ÀÇ IPX ÇÁ·ÎÅäÄÝ APPLETALK ¾ÖÇûçÀÇ Appletalk DDP ÇÁ·ÎÅäÄÝ X25 X.25 ÇÁ·ÎÅäÄÝ ¼ÒÄÏ¿¡´Â ¸î°¡Áö ŸÀÔÀÌ ÀÖÀ¸¸ç, ÀÌ´Â Á¢¼ÓÀ» Áö¿øÇÏ´Â ¼­ºñ½ºÀÇ Á¾·ù¸¦ ³ªÅ¸³½´Ù. ¸ðµç ÁÖ¼Ò Æйи®°¡ ¸ðµç ÇüÅÂÀÇ ¼­ºñ½º¸¦ Áö¿øÇÏ´Â °ÍÀº ¾Æ´Ï´Ù. ¸®´ª½º BSD ¼ÒÄÏÀº ¸î°¡Áö ¼ÒÄÏ Å¸ÀÔÀ» Áö¿øÇÑ´Ù. ½ºÆ®¸²(Stream) : ÀÌ ¼ÒÄÏÀº µ¥ÀÌÅÍ°¡ Àü¼Û Áß ºÐ½Ç, ¿À¿° ¶Ç´Â Áߺ¹ µÇÁö ¾Ê´Â´Ù´Â °ÍÀ» º¸ÀåÇÏ´Â ½Å·ÚÇÒ ¼ö ÀÖ´Â ¾ç¹æÇâ ¼øÂ÷ µ¥ÀÌÅÍ ½ºÆ®¸²À» Á¦°øÇÑ´Ù. INET ÁÖ¼Ò Æйи®ÀÇ TCP ÇÁ·ÎÅäÄÝÀÌ ½ºÆ®¸² ¼ÒÄÏÀ» Áö¿øÇÑ´Ù. µ¥ÀÌÅͱ׷¥(Datagram): ÀÌ ¼ÒÄÏÀº ¾ç¹æÇâ µ¥ÀÌÅÍ Àü¼ÛÀ» Á¦°øÇÏÁö¸¸, ½ºÆ®¸² ¼ÒÄÏ°ú´Â ´Þ¸® ±× ¸Þ½ÃÁö°¡ (Á¦´ë·Î) µµÂøÇÑ´Ù´Â °ÍÀ» º¸Àå ÇÏÁö´Â ¾Ê´Â´Ù. ¸Þ½ÃÁö°¡ ¸ñÀûÁö¿¡ µµÂøÇÏ¿´´Ù ÇÏ´õ¶óµµ, ¸Þ½ÃÁö°¡ ¼ø¼­¿¡ ¸Â°Ô ¶Ç´Â Áߺ¹µÇ°Å³ª ¿À¿°µÇÁö ¾Ê°í µµÂøÇÏ¿´´Ù´Â °ÍÀ» º¸ÀåÇÏÁö ¾Ê´Â´Ù. INETÁÖ¼Ò Æйи®ÀÇ UDP ÇÁ·ÎÅäÄÝÀÌ ÀÌ Á¾·ùÀÇ ¼ÒÄÏÀ» Áö¿øÇÑ´Ù. Network Application ^ | User -------------------------------+--------------------- | Kernel v +---------+ | BSD | | Sockets | +---------+ ^ Socket | Interface v +---------+ | INET | | Sockets | +---------+ ^ ^ ^ | | | +-------+ | +-------+ | | | v | v +-------+ | +-------+ | | | | | | TCP | | | UDP | Protocol | | | | | Layers +-------+ | +-------+ ^ | ^ | | | v v v +---------------------------------+ | | | IP |<-+ | | | +---------------------------------+ | +-------+ ^ ^ ^ +-->| | | | | +----->| ARP | v v v v | | +----------+ +----------+ +----------+ +-------+ Network | | | | | | Device | PPP | | SLIP | | Ethernet | | | | | | | +----------+ +----------+ +----------+ ±×¸² 10.2 : Linux Networking Layers °¡°øÇÏÁö ¾ÊÀº(Raw) : ÇÁ·Î¼¼½º°¡ ÇϺΠÇÁÅäÅäÄÝ¿¡ Á÷Á¢ Á¢±Ù(±×·¡¼­ "raw")ÇÒ ¼ö ÀÖ´Â ¼ÒÄÏÀÌ´Ù. ¿¹¸¦ µé¸é ÀÌ´õ³Ý ÀåÄ¡¿¡ ÀÌ ¼ÒÄÏÀ» ¿­¾î°¡°øµÇÁö ¾ÊÀº IP µ¥ÀÌÅÍ È帧À» ÁöÄѺ¸´Â °ÍÀÌ °¡´ÉÇÏ´Ù. µµÂø ½Å·Ú ¸Þ½ÃÁö(Reliable Delivered Messages) : ÀÌ°ÍÀº µ¥ÀÌÅÍ ±×·¥ ¼ÒÄÏ°ú ¾ÆÁÖ ºñ½ÁÇÏÁö¸¸ µ¥ÀÌÅÍ°¡ (¸ñÀûÁö¿¡) µµÂøÇÑ´Ù´Â °ÍÀ» º¸ÀåÇÑ´Ù. ¼øÂ÷Àû ÆÐŶ(Sequenced Packets) : ÀÌ°ÍÀº ½ºÆ®¸² ¼ÒÄÏ°ú ºñ½ÁÇѵ¥ µ¥ÀÌÅÍ ÆÐŶÀÇ Å©±â°¡ °íÁ¤µÇ¾î ÀÖ´Ù. ÆÐŶ(Packet) : ÀÌ°ÍÀº Ç¥ÁØ BSD ¼ÒÄÏ Å¸ÀÔÀº ¾Æ´Ï°í, ÀåÄ¡ ¼öÁØ¿¡ ¼­ ÇÁ·Î¼¼½º°¡ Á÷Á¢ ÆÐŶ¿¡ Á¢±ÙÇÒ ¼ö ÀÖ´Â ¸®´ª½º ƯÀ¯ÀÇ È®Àå ÀÌ´Ù. ¼ÒÄÏÀ» »ç¿ëÇÏ¿© Åë½ÅÀ» ÇÏ´Â ÇÁ·Î¼¼½º´Â Ŭ¶óÀ̾ðÆ® ¼­¹ö ¸ðµ¨À» µû¸¥´Ù. ¼­¹ö´Â ¼­ºñ½º¸¦ Á¦°øÇÏ°í Ŭ¶óÀ̾ðÆ®´Â ÀÌ ¼­ºñ½º¸¦ ÀÌ¿ëÇÑ´Ù. ÀÌ·± ¿¹·Î À¥ ÆäÀÌÁö¸¦ Á¦°øÇÏ´Â À¥ ¼­¹ö¿Í ±× ÆäÀÌÁöµéÀ» Àд À¥ Ŭ¶óÀ̾ðÆ® ¶Ç´Â ºê¶ó¿ìÀú¸¦ µé ¼ö ÀÖ´Ù. ¼ÒÄÏÀ» »ç¿ëÇÏ´Â ¼­¹ö´Â ¸ÕÀú ¼ÒÄÏÀ» ¸¸µç ÈÄ ¼ÒÄÏ¿¡ À̸§À» ¹ÙÀεå(bind)ÇÑ´Ù. ÀÌ À̸§ÀÇ Çü½ÄÀº ¼ÒÄÏÀÇ ÁÖ¼Ò Æйи®¿¡ µû¶ó ´Þ¶óÁö´Âµ¥, ½ÇÁ¦·Î´Â ¼­¹öÀÇ ·ÎÄà ÁÖ¼Ò°¡ µÈ´Ù. ¼ÒÄÏÀÇ À̸§ ¶Ç´Â ÁÖ¼Ò´Â sockaddr ÀÚ·á ±¸Á¶¸¦ ÀÌ¿ëÇØ ¸í½ÃÇÑ´Ù. INET ¼ÒÄÏÀº ±×°Í¿¡ ¹ÙÀεåµÈ IP Æ÷Æ® ÁÖ¼Ò¸¦ °¡Áö°Ô µÈ´Ù. µî·ÏµÈ Æ÷Æ® ¹øÈ£´Â /etc/services ¿¡¼­ º¼ ¼ö ÀÖ´Ù. ¿¹¸¦ µé¾î, À¥ ¼­¹öÀÇ Æ÷Æ® ¹øÈ£´Â 80¹øÀÌ´Ù. ¼ÒÄÏ¿¡ ÁÖ¼Ò°¡ ¹ÙÀεåµÇ¾ú´Ù¸é, ¼­¹ö´Â ±× ¹ÙÀεåµÈ ÁÖ¼Ò¸¦ °¡¸®Å°´Â ¿¬°á ¿äû ÀÌ µé¾î¿À´ÂÁö ¸®½¼(listen)À» ÇÑ´Ù. ¿¬°á ¿äûÀ» Çϴ Ŭ¶óÀ̾ðÆ®´Â ¼ÒÄÏ À» ¸¸µé°í ¼­¹öÀÇ ÁÖ¼Ò¸¦ ¸í½ÃÇÏ¿© ¼ÒÄÏ¿¡ ´ëÇØ ¿¬°á ¿äûÀ» ÇÑ´Ù. INET ¼ÒÄÏ¿¡¼­ ¼­¹öÀÇ ÁÖ¼Ò´Â ¼­¹öÀÇ IP ÁÖ¼Ò¿Í Æ÷Æ® ¹øÈ£ÀÌ´Ù. ÀÌ·¯ÇÑ ¿¬°á ¿äûÀº ´Ù¾çÇÑ ÇÁ·ÎÅäÄÝ °èÃþÀ» ÅëÇØ Àü´ÞµÇ¾î ¼­¹öÀÇ ¸®½¼ ¼ÒÄÏ¿¡ µµ´Þ ÇÏ°Ô µÈ´Ù. ¼­¹ö°¡ ¿¬°á ¿äûÀ» ¹ÞÀ¸¸é, ÀÌ°ÍÀ» ¹Þ¾ÆµéÀ̰ųª(accept) ¶Ç´Â °ÅºÎÇÑ´Ù(reject). ¿¬°á ¿äûÀ» ¹Þ¾ÆµéÀ̱â·Î ÇÏ¿´´Ù¸é, ¼­¹ö´Â ¿¬°á À» ¹Þ¾ÆµéÀÏ »õ·Î¿î ¼ÒÄÏÀ» ¸¸µç´Ù. ¿¬°á ¿äûÀ» ¸®½¼Çϴµ¥ »ç¿ëÇÏ´Â ¼ÒÄÏÀº ¿¬°áÀ» ¹Þ¾ÆµéÀ̴µ¥ »ç¿ëÇÒ ¼ö´Â ¾ø´Ù. ¿¬°áÀÌ ÀÌ·ç¾îÁö°í³ª¸é, ¼­¹ö¿Í Ŭ¶óÀ̾ðÆ®´Â ÀÚÀ¯·Ó°Ô µ¥ÀÌÅ͸¦ ÁÖ°í ¹ÞÀ» ¼ö ÀÖ´Ù. ¸¶Áö¸·À¸·Î, ¿¬°áÀÌ ´õÀÌ»ó ÇÊ¿ä¾ø´Â °æ¿ì ¼ÒÄÏÀ» Á¾·á(shutdown)ÇÒ ¼ö ÀÖ´Ù. ÀÌ ¶§ Àü¼Û Áß¿¡ ÀÖ´Â µ¥ÀÌÅÍ ÆÐŶÀÌ Á¤È®ÇÏ°Ô Ã³¸®µÇ¾ú´ÂÁö¿¡ À¯ÀÇÇÏ¿©¾ß ÇÑ´Ù. BSD ¼ÒÄÏ¿¡ ¾î¶² Á¶ÀÛÀ» °¡ÇÏ´Â °ÍÀÌ ¹«¾ùÀ» ÀǹÌÇÏ´ÂÁö´Â ¾î¶² ÁÖ¼Ò Æйи® À§¿¡¼­ ÀÛ¾÷À» ÇÏ°í ÀÖ´À³Ä¿¡ µû¶ó ´Ù¸£´Ù. TCP/IPÁ¢¼ÓÀ» ¼³Á¤ÇÏ´Â °ÍÀº ¾Æ¸¶Ãß¾î ¶óµð¿À X.25 Á¢¼ÓÀ» ¼³Á¤ÇÏ´Â °Í°ú´Â ¾ÆÁÖ ´Ù¸£´Ù. °¡»ó ÆÄÀÏ ½Ã½ºÅÛ°ú ¸¶Âù°¡Áö·Î ¸®´ª½º´Â BSD ¼ÒÄÏ °èÃþÀ¸·Î ¼ÒÄÏ ÀÎÅÍÆäÀ̽º ¸¦ Ãß»óÈ­ÇÑ´Ù. BSD ¼ÒÄÏ °èÃþÀº BSD ¼ÒÄÏ °èÃþÀÌ ÀÀ¿ëÇÁ·Î±×·¥°ú ÀÎÅÍ ÆäÀ̽ºÇÏ´Â °Í¿¡ °ü·ÃµÈ´Ù. ÀÌ·± ¼ÒÄÏ ÀÎÅÍÆäÀ̽º´Â µ¶¸³µÈ ÁÖ¼Ò Æйи®¸¦ °¡Áö´Â ¼ÒÇÁÆ®¿þ¾î¿¡ ÀÇÇØ Áö¿øÀ» ¹Þ´Â´Ù. Ä¿³Î ÃʱâÈ­ °úÁ¤¿¡¼­, Ä¿³Î¿¡ ±¸ÇöµÈ ÁÖ¼Ò Æйи®´Â (ÀÚ½ÅÀÌ Áö¿øÇÏ´Â) BSD ¼ÒÄÏ ÀÎÅÍÆäÀ̽º¿Í ÇÔ²² ÀÚ½ÅÀ» µî·ÏÇÑ´Ù. ³ªÁß¿¡ ÀÀ¿ëÇÁ·Î±×·¥ÀÌ BSD ¼ÒÄÏÀ» ¸¸µé°í »ç¿ëÇÒ ¶§, BSD ¼ÒÄÏ°ú ±×°ÍÀÌ Áö¿øÇÏ´Â ÁÖ¼Ò Æйи® »çÀÌÀÇ ¿¬°üÀÌ ¸¸µé¾îÁø´Ù. ÀÌ·¯ÇÑ ¿¬°ü°ü°è´Â ±³Â÷¿¬°á ÀڷᱸÁ¶¿Í ÁÖ¼Ò Æйи® °íÀ¯ÀÇ Áö¿ø ·çƾ Å×À̺íÀ» ÅëÇØ ¸¸µé¾îÁø´Ù. ¿¹¸¦ µé¾î ÀÀ¿ëÇÁ·Î±×·¥ÀÌ »õ·Î¿î ¼ÒÄÏÀ» ¸¸µé¶§ BSD ¼ÒÄÏ ÀÎÅÍÆäÀ̽º°¡ »ç¿ëÇÏ´Â ÁÖ¼Ò Æйи® °íÀ¯ÀÇ ¼ÒÄÏ »ý¼º ·çƾÀÌ ÀÖ´Ù. Ä¿³ÎÀ» ¼³Á¤ÇÒ ¶§ (¸¹Àº) ÁÖ¼Ò Æйи®¿Í ÇÁ·ÎÅäÄÝÀ» protocols º¤ÅÍ¿¡ ³Ö´Â´Ù. protocols º¤ÅÍ¿¡´Â °¢ ÁÖ¼Ò Æйи® ¶Ç´Â ÇÁ·ÎÅäÄÝÀÇ À̸§ (¿¹¸¦ µé¸é "INET")°ú ÃʱâÈ­ ·çƾÀÌ µé¾î°£´Ù. ½Ã½ºÅÛÀÌ ºÎÆõǸ鼭 ¼ÒÄÏ ÀÎÅÍ ÆäÀ̽º¸¦ ÃʱâÈ­ÇÒ ¶§, °¢ ÇÁ·ÎÅäÄÝÀÇ ÃʱâÈ­ ·çƾÀÌ ºÒ¸®°Ô µÈ´Ù. ¿©±â¼­ ¼ÒÄÏ ÁÖ¼Ò Æйи® º°·Î ÀÏ·ÃÀÇ ÇÁ·ÎÅäÄÝ ¿¬»ê ·çƾÀ» µî·ÏÇÏ°Ô µÈ´Ù. ÀÌ°ÍÀº ·çƾµéÀÇ ÁýÇÕÀÌ¸ç °¢ ·çƾÀº ÇØ´ç ÁÖ¼Ò Æйи®ÀÇ °íÀ¯ÇÑ Æ¯Á¤ ¿¬»êÀ» ¼öÇàÇÑ´Ù. proto_ops ÀڷᱸÁ¶´Â ÁÖ¼Ò Æйи® ŸÀÔ°ú ƯÁ¤ ÁÖ¼Ò Æйи®¿¡ °íÀ¯ÇÑ ¼ÒÄÏ ¿¬»ê ·çƾ¿¡ ´ëÇÑ Æ÷ÀÎÅ͵éÀÇ ÁýÇÕÀ¸·Î ÀÌ·ç¾îÁ® ÀÖ´Ù. pops º¤ÅÍ´Â ÀÎÅÍ³Ý ÁÖ¼Ò Æйи®°°Àº (AF_INETÀº 2ÀÌ´Ù) ÁÖ¼Ò Æйи® ½Äº°ÀÚ·Î À妽º µÇ¾îÀÖ´Ù. 10.4 INET ¼ÒÄÏ °èÃþ INET ¼ÒÄÏ °èÃþÀº TCP/IP ÇÁ·ÎÅäÄݵéÀ» Æ÷ÇÔÇÏ´Â ÀÎÅÍ³Ý ÁÖ¼Ò Æйи®¸¦ Áö¿øÇÑ´Ù. À§¿¡¼­ ¼³¸íÇÑ °Íó·³ À̵é ÇÁ·ÎÅäÄݵéÀº °èÃþÀûÀÌ°í, ÇÑ ÇÁ·Î ÅäÄÝÀÌ ´Ù¸¥ ÇÁ·ÎÅäÄÝÀÇ ¼­ºñ½º¸¦ »ç¿ëÇÑ´Ù. ¸®´ª½ºÀÇ TCP/IP ÄÚµå¿Í ÀڷᱸÁ¶´Â ÀÌ °èÃþ±¸Á¶¸¦ ¹Ý¿µÇÑ´Ù. BSD ¼ÒÄÏ °èÃþÀ¸·ÎÀÇ ÀÎÅÍÆäÀ̽º´Â ³×Æ®¿öÅ© ÃʱâÈ­ µµÁß¿¡ BSD ¼ÒÄÏ °èÃþ¿¡ µî·Ï ÇÑ ÀÎÅÍ³Ý ÁÖ¼Ò Æйи® ¼ÒÄÏ ÇÔ¼öµéÀ» ÅëÇÑ´Ù. À̵éÀº µî·ÏµÈ ´Ù¸¥ ÁÖ¼Ò Æйи®¿Í ÇÔ²² pops º¤ÅÍ¿¡¼­ º¸°üÇÑ´Ù. BSD ¼ÒÄÏ°èÃþÀº µî·ÏµÈ INET proto_ops ÀڷᱸÁ¶·Î ºÎÅÍ INET °èÃþÀÇ ¼ÒÄÏÁö¿ø ·çƾÀ» È£ÃâÇÏ¿© ÇÊ¿äÇÑ ÀÏÀ» ¼öÇàÇÑ´Ù. ¿¹¸¦ µé¾î, ÁÖ¼Ò Æйи®¿¡ INETÀ» ÁÖ°í BSD ¼ÒÄÏÀ» ¸¸µé¶ó°í ¿ä±¸ÇÑ´Ù¸é, ÀÌ´Â ¹Ø¿¡ ÀÖ´Â INET ¼ÒÄÏ »ý¼º ÇÔ¼ö¸¦ »ç¿ëÇÏ°Ô µÈ´Ù. BSD ¼ÒÄÏ °èÃþÀº ÀÌµé °¢°¢ÀÇ ÇÔ¼ö¸¶´Ù INET °èÃþ¿¡ BSD ¼ÒÄÏÀ» ³ªÅ¸³»´Â socket ÀڷᱸÁ¶¸¦ Àü´ÞÇÑ´Ù. BSD socketÀ» TCP/IP¿¡¸¸ ÇÊ¿äÇÑ Á¤º¸·Î ¾îÁö·´È÷±â º¸´Ù´Â INET ¼ÒÄÏ °èÃþÀº ÀڽŸ¸ÀÇ ÀڷᱸÁ¶ÀÎ sockÀ» °¡Áö°í ÀÚ½ÅÀ» BSD socket ÀڷᱸÁ¶¿Í ¿¬°áÇÑ´Ù. ÀÌ·± ¿¬°áÀº ±×¸² 10.3¿¡¼­ º¼ ¼ö ÀÖ´Ù. sock ÀÚ·á ±¸Á¶´Â BSD socket¿¡ ÀÖ´Â data Æ÷ÀÎÅ͸¦ ÅëÇØ BSD socket ÀڷᱸÁ¶¿Í ¿¬°áµÈ´Ù. ÀÌ°ÍÀº °è¼ÓµÈ INET ¼ÒÄÏ È£Ãâ¿¡¼­ ½±°Ô sock ÀڷᱸÁ¶¸¦ ¾ò¾î ¿Ã ¼ö ÀÖ´Ù´Â ÀǹÌÀÌ´Ù. sock ÀڷᱸÁ¶ÀÇ ÇÁ·ÎÅäÄÝ ÇÔ¼ö Æ÷ÀÎÅÍ ¿ª½Ã »ý¼º ½Ã¿¡ ¼Â¾÷ÀÌ µÇ¸ç, ÀÌ´Â ¿ä±¸ÇÑ ÇÁ·ÎÅäÄÝ¿¡ µû¶ó ´Ù¸£´Ù. ¸¸¾à TCP¸¦ ¿ä±¸ Çß´Ù¸é, sock ÀڷᱸÁ¶ÀÇ ÇÁ·ÎÅäÄÝ ÇÔ¼ö Æ÷ÀÎÅÍ´Â TCP ¿¬°áÀ» À§ÇØ ÇÊ¿äÇÑ TCP ÇÁ·ÎÅäÄÝ ÇÔ¼ö ÁýÇÕÀ» °¡¸®Å³ °ÍÀÌ´Ù. files_struct +--------------+ | count | +--------------+ file | close_on_exec| +----------+ +--------------+ +->| f_mode | | open_fs | | +----------+ +--------------+ | | f_pos | | fd[0] | | +----------+ +--------------+ | | f_flags | | fd[1] |-+ +----------+ +--------------+ | f_count | | | +----------+ | | | f_owner | +--------------+ +----------+ BSD Socket | fd[255] | | f_op |-------------------> File Operations +--------------+ +----------+ lseek | f_inode |-+ read +----------+ | write | f_version| | inode select +----------+ | +---------+ ioctl +->| | close +---->| | fasync | | | | | socket | | +---------+ | | type | SOCK_STREAM | | ops | | | data |---> Address Family | | |-+ Socket Operation | +---------+ | | | | +--------------+ +--|--------------+ | sock | | +---------+ | +->| type | SOCK_STREAM +---------+ | | Protocol| | +---------+ | | socket |-+ +---------+ | | | | | | | | | | +---------+ ±×¸² 10.3 : Linux BSD Socket Data Structures 10.4.1 BSD ¼ÒÄÏ ¸¸µé±â »õ ¼ÒÄÏÀ» ¸¸µå´Â ½Ã½ºÅÛ ÄÝ¿¡´Â ÁÖ¼Ò Æйи® ½Äº°ÀÚ¿Í ¼ÒÄÏ Å¸ÀÔ, ±×¸®°í ÇÁ·ÎÅäÄÝÀ» ÀÎÀÚ·Î ÁØ´Ù. ¸ÕÀú, ¿ä±¸ÇÑ ÁÖ¼Ò Æйи®¸¦ »ç¿ëÇÏ¿© pops º¤ÅÍ¿¡¼­ ÀÏÄ¡ÇÏ´Â ÁÖ¼Ò Æйи®°¡ ÀÖ´ÂÁö ã´Â´Ù. ¾î¶² ÁÖ¼Ò Æйи®´Â Ä¿³Î ¸ðµâ·Î ¸¸µé¾îÁ® ÀÖÀ» ¼öµµ Àִµ¥, ÀÌ °æ¿ì kerneld µ¥¸óÀÌ ÀÌ ¸ðµâ À» Àоîµé¿©¾ß ÀÛ¾÷À» °è¼ÓÇÒ ¼ö ÀÖ´Ù. BSD ¼ÒÄÏÀ» ³ªÅ¸³»±â À§ÇØ »õ socket ÀڷᱸÁ¶¸¦ ÇÒ´çÇÑ´Ù. ½ÇÁúÀûÀ¸·Î socket ÀڷᱸÁ¶´Â ¹°¸®ÀûÀ¸·Î VFS inode ÀڷᱸÁ¶ÀÇ ÇÑ ºÎºÐÀÌ°í ¼ÒÄÏÀ» ÇÒ´çÇÑ´Ù´Â °ÍÀº ½ÇÁ¦·Î´Â VFS inode¸¦ ÇÒ´çÇÑ´Ù´Â °ÍÀ» ÀǹÌÇÑ´Ù. ÀÌ´Â ¼ÒÄÏÀÌ ÀÏ¹Ý ÆÄÀÏ°ú ¶È°°Àº ¹æ¹ý À¸·Î ÀÛµ¿ÇÑ´Ù´Â °ÍÀ» »ý°¢ÇÑ´Ù¸é º°·Î ÀÌ»óÇÏ°Ô º¸ÀÌÁø ¾ÊÀ» °ÍÀÌ´Ù. ¸ðµç ÆÄÀÏÀº VFS inode ÀڷᱸÁ¶·Î ³ªÅ¸³»Áö¸ç, µû¶ó¼­ ÆÄÀÏ ÇÔ¼öµéÀ» Áö¿øÇÏ·Á¸é BSD ¼ÒÄÏ ¿ª½Ã VFS inode ÀڷᱸÁ¶·Î Ç¥ÇöµÇ¾î¾ß ÇÑ´Ù. »õ·Î ¸¸µé¾îÁø BSD socket ÀڷᱸÁ¶´Â ÁÖ¼Ò Æйи®¿¡ µû¶ó Ư¼öÇÑ ¼ÒÄÏ ·çƾµé¿¡ ´ëÇÑ Æ÷ÀÎÅ͸¦ °¡Áö°í ÀÖÀ¸¸ç, ÀÌ´Â pops º¤ÅÍ¿¡¼­ ¾òÀ» ¼ö ÀÖ´Â proto_ops ÀڷᱸÁ¶¿¡ ¼³Á¤µÈ´Ù. ŸÀÔÀº ¿ä±¸ÇÑ ¼ÒÄÏ Å¸ÀÔÀ¸·Î ¼³Á¤µÈ´Ù. Áï SOCK_STREAM, SOCK_DGRAM µîµî ÁßÀÇ ÇϳªÀÌ´Ù. ÁÖ¼Ò Æйи®¿¡ µû¶ó ´Ù¸¥ »ý¼º ÇÔ¼ö¸¦ proto_ops ÀڷᱸÁ¶¿¡ ÀÖ´Â ÁÖ¼Ò¸¦ ÀÌ¿ëÇÏ¿© È£ÃâÇÑ´Ù. ÅÖºó ÆÄÀÏ ±â¼úÀÚ(descriptor)°¡ ÇöÀç ÇÁ·Î¼¼½ºÀÇ fd º¤ÅÍ¿¡¼­ ÇÒ´çµÇ°í, À̸¦ °¡¸®Å°´Âfile ÀڷᱸÁ¶°¡ ÃʱâÈ­µÈ´Ù. ÀÌ´Â ÆÄÀÏ ÇÔ¼ö Æ÷ÀÎÅÍ°¡ BSD ¼ÒÄÏ ÀÎÅÍÆäÀ̽º¿¡¼­ Áö¿øÇÏ´Â BSD ¼ÒÄÏ ÆÄÀÏ ÇÔ¼öµéÀ» °¡¸®Å°µµ·Ï ¼³Á¤ ÇÏ´Â °ÍÀ» Æ÷ÇÔÇÑ´Ù. ÀÌÈÄÀÇ ÀÛ¾÷µéÀº ¼ÒÄÏ ÀÎÅÍÆäÀ̽º·Î Àü´ÞµÇ°í ÀÎÅÍ ÆäÀ̽º´Â Â÷·Ê·Î ÁÖ¼Ò Æйи®ÀÇ ÇÔ¼öµéÀ» È£ÃâÇÔÀ¸·Î½á À̵éÀ» Áö¿øÇÏ´Â ÁÖ¼Ò Æйи®·Î Àü´ÞÇÑ´Ù. 10.4.2 ÁÖ¼Ò¿Í INET BSD ¼ÒÄÏÀ» ¹ÙÀεåÇϱâ(binding) µé¾î¿À´Â ÀÎÅÍ³Ý Á¢¼Ó ¿ä±¸¸¦ ±â´Ù¸± ¼ö (listen) ÀÖÀ¸·Á¸é, °¢ ¼­¹ö´Â INET BSD ¼ÒÄÏÀ» ¸¸µé¾î À̸¦ ¼­¹öÀÇ ÁÖ¼Ò¿Í ¹ÙÀεåÇØ ÁÖ¾î¾ß ÇÑ´Ù. ÀÌ ¹ÙÀεå ÀÛ¾÷Àº ´ëºÎºÐ INET ¼ÒÄÏ°èÃþÀÌ ¾Æ·¡ °èÃþÀÎ TCP¿Í UDP ÇÁ·ÎÅäÄÝ °èÃþÀ¸·ÎºÎÅÍ ¾î´À Á¤µµ Áö¿øÀ» ¹Þ¾Æ ó¸®ÇÑ´Ù. ÁÖ¼Ò¿Í ¹ÙÀÎµå µÇ¾îÀÖ´Â ¼ÒÄÏÀº ´Ù¸¥ Åë½ÅÀ» À§Çؼ­ »ç¿ëÇÒ ¼ö ¾ø´Ù. ÀÌ´Â socketÀÇ »óÅ´ TCP_CLOSE¿©¾ß¸¸ ÇÑ´Ù´Â °ÍÀ» ¸»ÇÑ´Ù. ¹ÙÀεå ÇÔ¼ö¿¡ Àü´ÞµÈ sockaddr Àº ¹ÙÀεåÇÒ IP ÁÖ¼Ò¿Í, ¿É¼ÇÀ¸·Î Æ÷Æ® ¹øÈ£¸¦ °¡Áö°í ÀÖ´Ù. º¸ÅëÀº INET ÁÖ¼Ò Æйи®¸¦ Áö¿øÇϸç À§¿¡¼­ ÀÌ ÀÎÅÍÆäÀ̽º¸¦ »ç¿ëÇÒ ¼ö ÀÖ´Â ³×Æ®¿öÅ© ÀåÄ¡¿¡ ÇÒ´çµÈ IP ÁÖ¼Ò°¡, ¿©±â¼­ ¹ÙÀÎµå µÇ´Â IP ÁÖ¼ÒÀÌ´Ù. ÇöÀç ½Ã½ºÅÛ ¿¡¼­ ¾î¶² ³×Æ®¿öÅ© ÀÎÅÍÆäÀ̽º°¡ È°¼ºÈ­µÇ¾î ÀÖ´ÂÁö´Â ifconfig ¸í·ÉÀ» »ç¿ëÇÏ¿© ¾Ë ¼ö ÀÖ´Ù. IP ÁÖ¼Ò´Â ¸ðµÎ 1À̰ųª ¸ðµÎ 0ÀÎ IP ºê·Îµåij½ºÆ® (broadcast) ÁÖ¼ÒÀÏ ¼öµµ ÀÖ´Ù. À̵éÀº Ưº°ÇÑ Áּҷμ­ "¸ðµç»ç¶÷¿¡°Ô º¸³»¶ó"¸¦ ÀǹÌÇÑ´Ù. ¶Ç, ±â°è°¡ Åõ¸íÇÑ ÇÁ·Ï½Ã³ª ¹æÈ­º®À¸·Î µ¿ÀÛÇÏ°í ÀÖ´Ù¸é, ¾î¶² IP ÁÖ¼ÒÇÏ°íµµ ¹ÙÀεåÇÒ ¼ö ÀÖ´Ù. ±×·¯³ª ½´ÆÛÀ¯Àú ±ÇÇÑÀ» °¡Áø ÇÁ·Î¼¼½º¸¸ÀÌ ¾Æ¹« IP ÁÖ¼Ò¿¡³ª ¹ÙÀεå ÇÒ ¼ö ÀÖ´Ù. ¹ÙÀεåµÈ IP ÁÖ¼Ò´Â recv_addr¿¡ ÀÖ´Â sock ÀڷᱸÁ¶¿Í saddr Ç׸ñ¿¡ ÀúÀåµÈ´Ù. À̵éÀº Çؽ÷ΠãÀ» ¶§ ¾²À̸ç, º¸³»´Â IP Áּҷεµ ¾²ÀδÙ. Æ÷Æ® ¹øÈ£´Â ¿É¼Ç À̸ç À̸¦ ÁöÁ¤ÇÏÁö ¾ÊÀ¸¸é À̸¦ Áö¿øÇÏ´Â ³×Æ®¿öÅ©¿¡°Ô ¾Æ¹«°ÍÀ̳ª ºñ¾îÀÖ´Â °ÍÀ» ´Þ¶ó°í ¿äûÇÑ´Ù. °ü½ÀÀûÀ¸·Î 1024º¸´Ù ÀÛÀº Æ÷Æ®¹øÈ£´Â ½´ÆÛÀ¯Àú ±ÇÇÑÀ» °¡ÁöÁö ¾ÊÀº ÇÁ·Î¼¼½º´Â »ç¿ëÇÒ ¼ö ¾ø´Ù. ¸¸¾à ¾Æ·¡ÀÇ ³×Æ®¿öÅ© °èÃþ¿¡¼­ Æ÷Æ® ¹øÈ£¸¦ ÇÒ´çÇÑ´Ù¸é, ÀÌ´Â Ç×»ó 1024º¸´Ù Å« °ÍÀ» ÇÒ´çÇÒ °ÍÀÌ´Ù. ¾Æ·¡±â¹ÝÀÇ ³×Æ®¿öÅ© ÀåÄ¡´Â ÆÐŶÀ» ¹ÞÀ¸¸é, À̸¦ ¿Ã¹Ù¸¥ INET°ú BSD ¼ÒÄÏÀ¸·Î Àü´ÞÇÏ¿© ó¸®µÉ ¼ö ÀÖµµ·Ï ÇØ¾ß ÇÑ´Ù. ÀÌ·± ÀÌÀ¯·Î UDP¿Í TCP´Â µé¾î¿Â IP ¸Þ½ÃÁö¿¡ ÀÖ´Â ÁÖ¼Ò¸¦ Á¶È¸ÇÏ¿© ¿Ã¹Ù¸¥ socket/sock ½ÖÀ¸·Î Àü´ÞÇϴµ¥ »ç¿ëÇÒ ¼ö ÀÖµµ·Ï Çؽà Å×À̺íÀ» °ü¸®ÇÑ´Ù. TCP´Â ¿¬°á ÁöÇâ ÇÁ·ÎÅäÄÝÀ̹ǷΠUDP ÆÐŶÀ» ó¸®ÇÒ ¶§º¸´Ù TCP ÆÐŶÀ» ó¸®Çϴµ¥ ´õ ¸¹Àº Á¤º¸°¡ »ç¿ëµÈ´Ù. UDP´Â ÇÒ´çµÈ UDP Æ÷Æ®ÀÇ Çؽà Å×À̺íÀÎ udp_hash Å×À̺íÀ» °ü¸®ÇÑ´Ù. ÀÌ´Â sock ÀڷᱸÁ¶ÀÇ Æ÷ÀÎÅͷμ­ Æ÷Æ® ¹øÈ£¿¡ ±â¹ÝÇÑ Çؽà ÇÔ¼ö·Î À妽º µÇ¾î ÀÖ´Ù. UDP Çؽà Å×À̺íÀº Çã¿ëµÇ´Â Æ÷Æ® ¹øÈ£ÀÇ ¼öº¸´Ù´Â ÈξÀ ÀûÀ¸¹Ç·Î (udp_hash´Â 128 ¶Ç´Â UDP_HTABLE_SIZEÀÇ °ª ¸¸Å­ÀÇ ¿£Æ®¸®¸¦ °®´Â´Ù), Å×À̺íÀÇ ¾î¶² ¿£Æ®¸®µéÀº sock ÀڷᱸÁ¶ÀÇ ¿¬°á °í¸®(À̵éÀº sockÀÇ next Æ÷ÀÎÅÍ·Î ¼­·Î ¿¬°áµÈ´Ù)¸¦ °¡¸®Å²´Ù. TCP´Â ¿©·¯ °³ÀÇ Çؽà Å×À̺íÀ» °ü¸®ÇϹǷΠÈξÀ ´õ º¹ÀâÇÏ´Ù. ¾î·µç TCP´Â ¹ÙÀεå ÀÛ¾÷ µ¿¾È¿¡ ¹ÙÀεåÇÏ´Â sock ÀڷᱸÁ¶¸¦ ÀÌÀÇ Çؽà Å×ÀÌºí ¿¡ ½ÇÁ¦·Î Ãß°¡ÇÏÁö´Â ¾Ê°í, ´ÜÁö ¿ä±¸ÇÑ Æ÷Æ®¹øÈ£°¡ ÇöÀç »ç¿ëµÇ°í ÀÖ´Â Áö¸¸ °Ë»çÇÑ´Ù. sock ÀڷᱸÁ¶´Â ¸®½¼ ÀÛ¾÷À» ÇÏ´Â µµÁß¿¡ TCPÀÇ Çؽà Å×ÀÌºí¿¡ Ãß°¡µÈ´Ù REVIEW NOTE : ÀÔ·ÂÇÑ ·çÆ®´Â ¾î¶»°Ô µÇ´Â°¡? 10.4.3 INET BSD ¼ÒÄÏÀ¸·Î ¿¬°áÇϱ⠼ÒÄÏÀÌ ¸¸µé¾îÁö°í, ÀÌ°ÍÀÌ ³»ºÎ·ÎÀÇ ¿¬°á ¿ä±¸¸¦ ¹Þ±â À§ÇÑ ¿ëµµ·Î »ç¿ë µÇÁö ¾Ê¾Ò´Ù¸é, ÀÌ´Â ¿ÜºÎ·ÎÀÇ ¿¬°á ¿ä±¸¿¡ »ç¿ëÇÒ ¼ö ÀÖ´Ù. UDP¿Í °°Àº ºñ¿¬°áÁöÇâ ÇÁ·ÎÅäÄÝ(connectionless protocol)¿¡¼­´Â ÀÌ·± ÀÛ¾÷Àº º°·Î ÇÏ´Â ÀÏÀÌ ¾øÁö¸¸, TCP°°Àº ¿¬°áÁöÇâ ÇÁ·ÎÅäÄÝ(connection oriented protocol)¿¡¼­´Â ÀÌ´Â µÎ °³ÀÇ ÀÀ¿ëÇÁ·Î±×·¥°£¿¡ °¡»ó ȸ·Î¸¦ ¸¸µå´Â °Í À» Æ÷ÇÔÇÑ´Ù. ¿ÜºÎ·ÎÀÇ ¿¬°áÀº ÀûÀýÇÑ »óÅ¿¡ ÀÖ´Â INET BSD ¼ÒÄÏ¿¡¼­¸¸ ÀÌ·ç¾îÁú ¼ö ÀÖ´Ù : ¸»ÇÏÀÚ¸é ÀÌ¹Ì ¿¬°áÀÌ µÇ¾î Àְųª, ³»ºÎ·ÎÀÇ ¿¬°áÀ» ±â´Ù¸®´Âµ¥ »ç¿ëÇÏ°í ÀÖ´Â °ÍÀº ¾ÈµÈ´Ù´Â °ÍÀÌ´Ù. ÀÌ´Â BSD ¼ÒÄÏ ÀڷᱸÁ¶°¡ SS_UNCONNECTED »óÅ¿¡ ÀÖ´Ù´Â °ÍÀ» ÀǹÌÇÑ´Ù. UDP ÇÁ·ÎÅäÄÝÀº ÀÀ¿ëÇÁ·Î±× ·¥°£¿¡ °¡»ó ¿¬°áÀ» ¸¸µéÁö ¾Ê´Â´Ù. º¸³»´Â ¸Þ½ÃÁöµéÀº ¸ðµÎ µ¥ÀÌÅͱ׷¥ À̸ç, ¸Þ½ÃÁöÀÇ ÇÑ ºÎºÐÀÌ ¸ñÀûÁö¿¡ µµÂøÇÒ ¼öµµ, µµÂøÇÏÁö ¾ÊÀ» ¼öµµ ÀÖ´Ù. ±×·¸±ä ÇÏÁö¸¸, Á¢¼Ó BSD ¼ÒÄÏ ÇÔ¼ö¸¦ Áö¿øÇÑ´Ù. UDP INET BSD ¼ÒÄÏ¿¡¼­ÀÇ Á¢¼Ó ÀÛ¾÷Àº ´Ü¼øÈ÷ ¿ø°Ý ÀÀ¿ëÇÁ·Î±×·¥ÀÇ ÁÖ¼Ò - IP ÁÖ¼Ò¿Í Æ÷Æ® ¹øÈ£ - ¸¦ ¼³Á¤ÇÒ »ÓÀÌ´Ù. Ãß°¡ÀûÀ¸·Î ¶ó¿ìÆà Å×ÀÌºí ¿£Æ®¸®¿¡ ´ëÇÑ Ä³½Ã¸¦ ¼Â¾÷ÇÏ¿©, ÀÌ BSD ¼ÒÄÏÀ¸·Î º¸³½ UDP ÆÐŶÀÌ ´Ù½Ã ¶ó¿ìÆà µ¥ÀÌÅÍ º£À̽º¸¦ °Ë»çÇÒ ÇÊ¿ä°¡ ¾øµµ·Ï (ÀÌ ·çÆ®°¡ Ʋ¸° °ÍÀÌ µÇ±â Àü±îÁö´Â) ÇÑ´Ù. ij½ÃµÈ ¶ó¿ìÆà Á¤º¸´Â INET sock ÀڷᱸÁ¶¿¡¼­ ip_route_cache°¡ °¡¸®Å°°í ÀÖ´Ù. ¸¸¾à ¾Æ¹«·± ÁÖ¼Ò Á¤º¸µµ ÁöÁ¤ÇÏÁö ¾Ê´Â´Ù¸é, ÀÌ Ä³½ÃµÈ ¶ó¿ìÆðú IP ÁÖ¼Ò Á¤º¸¸¦ ÀÚµ¿À¸·Î BSD ¼ÒÄÏÀ» »ç¿ëÇÏ¿© º¸³»´Â ¸Þ½ÃÁö¿¡ »ç¿ëÇÑ´Ù. UDP´Â sockÀÇ »óŸ¦ TCP_ESTABLISHED·Î ¹Ù²Û´Ù. TCP BSD ¼ÒÄÏ¿¡¼­ÀÇ Á¢¼Ó ÀÛ¾÷¿¡¼­´Â, TCP´Â Á¢¼Ó Á¤º¸¸¦ °¡Áø TCP ¸Þ½ÃÁö ¸¦ Çϳª ¸¸µé¾î¼­ À̸¦ ÁÖ¾îÁø IP ¸ñÀûÁö·Î º¸³»¾ß ÇÑ´Ù. ÀÌ TCP ¸Þ½ÃÁö ´Â Á¢¼Ó¿¡ °ü·ÃµÈ °®°¡Áö Á¤º¸µéÀ» °¡Áö°í ÀÖ´Ù. À¯ÀÏÇÑ ½ÃÀÛ ¸Þ½ÃÁö ¼ø¼­ ¹øÈ£¿Í ½ÃÀÛÇÏ´Â (initiator) È£½ºÆ®¿¡¼­ ó¸®ÇÒ ¼ö ÀÖ´Â ¸Þ½ÃÁöÀÇ ÃÖ´ë Å©±â, º¸³»°í ¹Þ´Â À©µµ¿ì Å©±â, µîµîÀÌ ±×°ÍÀÌ´Ù. TCP¿¡¼­´Â ¸ðµç ¸Þ½ÃÁö ¿¡ ¹øÈ£°¡ ºÙÀ¸¸ç, Ãʱ⠼ø¼­ ¹øÈ£´Â ù¹ø° ¸Þ½ÃÁö ¹øÈ£¿¡ »ç¿ëÇÑ´Ù. ¸®´ª½º´Â ¾ÇÀÇÀûÀÎ ÇÁ·ÎÅäÄÝ °ø°ÝÀ» ÇÇÇϱâ À§ÇØ Çã¿ëÇÏ´Â ¹üÀ§ ³»¿¡¼­ ÀÓÀÇÀÇ °ªÀ» °í¸¥´Ù. ÇÑÂÊ¿¡¼­ Àü¼ÛÇÑ ¸Þ½ÃÁö¸¦ ´Ù¸¥ ÂÊ¿¡¼­ ¼º°øÀûÀ¸·Î ¹ÞÀ¸¸é, ¸ðµç ¸Þ½ÃÁö¿¡ ´ëÇØ ±×°ÍÀÌ ¼º°øÀûÀ¸·Î ±úÁöÁö ¾Ê°í µµÂøÇß´Ù´Â °ÍÀ» ¸»ÇÏ´Â ÀÀ´äÇØ ÁÖ¾î ¾ß ÇÑ´Ù. ÀÀ´ä¹ÞÁö ¾ÊÀº ¸Þ½ÃÁö´Â ´Ù½Ã º¸³»°Ô µÈ´Ù. ¼Û¼ö½Å À©µµ¿ì Å©±â ´Â ÀÀ´äÀ» º¸³»Áö ¾Ê°í ÀÖÀ» ¼ö ÀÖ´Â ¸Þ½ÃÁöÀÇ ¼öÀÌ´Ù (À̸¸Å­ÀÇ ¸Þ½ÃÁö ¸¦ º¸³¾ ¶§±îÁö ACK°¡ ¿ÀÁö ¾Ê¾Æµµ µÈ´Ù). ÃÖ´ë ¸Þ½ÃÁö Å©±â´Â ¿äûÀ» ½ÃÀÛÇÑ ÂÊ¿¡¼­ »ç¿ëÇÏ°í ÀÖ´Â ³×Æ®¿öÅ© ÀåÄ¡¿¡ µû¸¥´Ù. ¸¸¾à ¹Þ´Â ÂÊÀÇ ³×Æ®¿öÅ© ÀåÄ¡°¡ À̺¸´Ù ÀÛÀº ÃÖ´ë ¸Þ½ÃÁö Å©±â¸¦ Áö¿øÇÑ´Ù¸é, Á¢¼Ó¿¡¼­´Â µÑ Áß¿¡ ÃÖ¼Ò°ªÀ» »ç¿ëÇÏ°Ô µÈ´Ù. ¹ÛÀ¸·ÎÀÇ TCP Á¢¼Ó ¿äûÀ» ÇÏ´Â ÀÀ¿ë ÇÁ·Î±×·¥Àº ´ë»ó ÀÀ¿ëÇÁ·Î±×·¥ÀÌ ÀÌ Á¢¼Ó ¿ä±¸¸¦ ¹Þ°Å³ª °ÅºÎÇÑ´Ù´Â ÀÀ´ä À» º¸³¾ ¶§±îÁö ±â´Ù·Á¾ß ÇÑ´Ù. TCP sockÀº ÀÌÁ¦ ¸Þ½ÃÁö°¡ µé¾î¿À±æ ±â´Ù ·Á¾ß ÇϹǷÎ, tcp_listening_hash¸¦ Ãß°¡ÇÏ¿©, µé¾î¿À´Â TCP ¸Þ½ÃÁö°¡ sock ÀڷᱸÁ¶·Î °¥ ¼ö ÀÖ°Ô ÇÑ´Ù. TCP´Â ¶ÇÇÑ ´ë»ó ÀÀ¿ëÇÁ·Î±×·¥ÀÌ ¿ä±¸ ¿¡ ÀÀ´äÀ» º¸³»ÁÖÁö ¾Ê´Â °æ¿ì ¹ÛÀ¸·ÎÀÇ Á¢¼Ó ¿ä±¸¸¦ ŸÀӾƿô ÇÒ ¼ö ÀÖµµ·Ï ŸÀ̸Ӹ¦ ½ÃÀÛÇÑ´Ù. 10.4.4 INET BSD ¼ÒÄÏ¿¡¼­ ¸®½¼(listening) ¼ÒÄÏ¿¡ ÁÖ¼Ò¸¦ ¹ÙÀεå ÇÏ¿´´Ù¸é, ¹ÙÀεåÇÑ ÁÖ¼Ò¸¦ ÁöÁ¤ÇÏ¿© µé¾î¿À´Â Á¢¼Ó ¿ä±¸¸¦ ±â´Ù¸± ¼ö ÀÖ´Ù. ³×Æ®¿öÅ© ÀÀ¿ëÇÁ·Î±×·¥Àº ¸ÕÀú ÁÖ¼Ò¸¦ ¹ÙÀεå ÇÏÁö ¾Ê°íµµ Á¢¼ÓÀ» ±â´Ù¸± ¼ö Àִµ¥, ÀÌ·± °æ¿ì INET ¼ÒÄÏ °èÃþÀº Áö±Ý ÇÁ·ÎÅäÄÝ¿¡¼­ »ç¿ëÇÏÁö ¾Ê°í ÀÖ´Â Æ÷Æ® ¹øÈ£¸¦ ã¾Æ À̸¦ ¼ÒÄÏ¿¡ ÀÚµ¿À¸·Î ¹ÙÀεå ÇØÁØ´Ù. ¸®½¼ ¼ÒÄÏ ÇÔ¼ö´Â ¼ÒÄÏÀÇ »óŸ¦ TCP_LISTENÀ¸·Î ¹Ù²Ù°í µé¾î¿À´Â Á¢¼ÓÀ» Çã°¡Çϴµ¥ ÇÊ¿äÇÑ ³×Æ®¿öÅ© Ư¼ö ÀÛ¾÷µéÀ» ÇÑ´Ù. UDP ¼ÒÄÏ¿¡ À־´Â ¼ÒÄÏÀÇ »óŸ¦ ¹Ù²Ù´Â °ÍÀ¸·Îµµ ÃæºÐÇÏÁö¸¸, TCP´Â ¼ÒÄÏÀÇ sock ÀڷᱸÁ¶¸¦ µÎ°³ÀÇ Çؽà Å×ÀÌºí¿¡ Ãß°¡ÇÏ¿© È°¼ºÈ­µÇµµ·Ï ÇÑ´Ù. ÀÌ µÎ °³ÀÇ Çؽà Å×À̺íÀº tcp_bound_hash¿Í tcp_listening_hash Å×À̺íÀÌ´Ù. µÑ ´Ù IP Æ÷Æ® ¹øÈ£¿¡ ±â¹ÝÇÑ Çؽà ÇÔ¼ö¸¦ ÅëÇÏ¿© À妽º µÇ¾î ÀÖ´Ù. È°¼ºÈ­µÈ ¸®½¼ ¼ÒÄÏ¿¡ ´ëÇØ TCP Á¢¼Ó ¿ä±¸°¡ µé¾î¿À¸é, TCP´Â À̸¦ ³ªÅ¸ ³»±â À§ÇØ »õ·Î¿î sock ÀڷᱸÁ¶¸¦ ¸¸µç´Ù. ÀÌ sock ÀڷᱸÁ¶´Â ÀÌ TCP Á¢¼ÓÀÌ °á±¹ ¹Þ¾Æµé¿©Áø´Ù¸é TCP Á¢¼ÓÀÇ ÇϹݺΰ¡ µÈ´Ù. ¶ÇÇÑ Á¢¼Ó ¿ä±¸¸¦ Æ÷ÇÔÇÏ°í ÀÖ´Â µé¾î¿Â sk_buff¸¦ º¹»çÇÏ¿©, ±â´Ù¸®´Â sock ÀڷᱸÁ¶ÀÇ receive_queueÀÇ µÚ¿¡ À̸¦ Ãß°¡ÇÑ´Ù. º¹»çÇÑ sk_buff´Â »õ·Î ¸¸µç sock ÀڷᱸÁ¶¿¡ ´ëÇÑ Æ÷ÀÎÅ͸¦ °®´Â´Ù. 10.4.5 Á¢¼Ó ¿ä±¸ Çã°¡Çϱâ(accepting) UDP´Â Á¢¼ÓÀ̶ó´Â °³³äÀ» Áö¿øÇÏÁö ¾ÊÀ¸¹Ç·Î, INET ¼ÒÄÏ Á¢¼ÓÀ» Çã¶ôÇÏ´Â °ÍÀº TCP ÇÁ·ÎÅäÄÝ¿¡¸¸ Àû¿ëÀÌ µÇ¸ç, Á¢¼ÓÀ» ±â´Ù¸®´Â ¼ÒÄÏ¿¡¼­ Á¢¼ÓÀ» Çã¶ôÇÏ´Â °ÍÀº ¿ø·¡ÀÇ ±â´Ù¸®´Â ¼ÒÄÏ¿¡¼­ socket ÀڷᱸÁ¶¸¦ º¹»çÇÏ¿© »õ·Î¿î socketÀ» ¸¸µç´Ù. Çã°¡ ÀÛ¾÷Àº ÀÚ½ÅÀ» Áö¿øÇÏ´Â ÇÁ·ÎÅäÄÝ °èÃþ, ÀÌ °æ¿ì INET °èÃþÀ¸·Î ³Ñ¾î°¡¼­ µé¾î¿À´Â ¾î¶² Á¢¼Ó ¿ä±¸¸¦ ¹Þ¾ÆµéÀ̶ó°í ÇÑ´Ù. ¸¸¾à ¾Æ·¡ °èÃþÀÇ ÇÁ·ÎÅäÄÝÀÌ UDP°°ÀÌ Á¢¼ÓÀ» Áö¿øÇÏÁö ¾Ê´Â °Í À̶ó¸é ÀÌ Á¢¼Ó Çã°¡ °úÁ¤Àº ½ÇÆÐÇÑ´Ù. ±×·¸Áö ¾ÊÀ¸¸é Á¢¼Ó Çã°¡ °úÁ¤Àº ½ÇÁ¦ ÇÁ·ÎÅäÄÝ, ÀÌ °æ¿ì TCP·Î Àü´ÞµÈ´Ù. ÀÌ Á¢¼Ó Çã°¡ ÀÛ¾÷Àº ºí·°Å· ¸ðµåÀϼöµµ, ºí·°Å· ¸ðµå°¡ ¾Æ´Ò¼öµµ ÀÖ´Ù. ºí·°Å· ¸ðµå°¡ ¾Æ´Ñ °æ¿ì, ¸¸¾à ¾Æ¹«·± µé¾î¿À´Â Á¢¼ÓÀÌ ¾øÀ¸¸é, ÀÌ Á¢¼Ó ÀÛ¾÷Àº ½ÇÆÐÇÏ°í, »õ·Î ¸¸µé¾îÁø socket ÀڷᱸÁ¶´Â ¹ö·ÁÁú °ÍÀÌ´Ù. ºí·°Å· ¸ðµåÀÎ °æ¿ì, Á¢¼Ó Çã°¡¸¦ ÇÏ´Â ³×Æ®¿öÅ© ÀÀ¿ëÇÁ·Î±×·¥Àº ´ë±â Å¥¿¡ µé¾î°¡°í TCP Á¢¼Ó ¿ä±¸ ¸¦ ¹ÞÀ» ¶§±îÁö ÁߴܵȴÙ. Á¢¼Ó ¿ä±¸°¡ µé¾î¿À¸é, ±× ¿ä±¸¸¦ °®°í ÀÖ´Â sk_buff´Â ¹«½ÃµÇ°í, sock ÀڷᱸÁ¶´Â ÀÌÀü¿¡ ¸¸µç »õ socket ÀڷᱸÁ¶¿Í ¿¬°áµÇ¾î ÀÖ´Â INET ¼ÒÄÏ °èÃþÀ¸·Î µÇµ¹¾Æ°£´Ù. ³×Æ®¿öÅ© ÀÀ¿ëÇÁ·Î±×·¥¿¡ »õ·Î ¸¸µé¾îÁø ¼ÒÄÏÀÇ ÆÄÀÏ ±â¼úÀÚ(fd)¸¦ µ¹·ÁÁÖ°í, ÀÀ¿ë ÇÁ·Î±×·¥Àº »õ·Î ¸¸µé¾îÁø BSD ¼ÒÄÏÀ» °¡Áö°í ¼ÒÄÏ ÀÛ¾÷À» Çϴµ¥ ÀÌ ÆÄÀÏ ±â¼úÀÚ¸¦ »ç¿ë ÇÒ ¼ö ÀÖ´Ù. 10.5 IP °èÃþ 10.5.1 ¼ÒÄÏ ¹öÆÛ(Socket Buffer) ¸¹Àº ³×Æ®¿öÅ© ÇÁ·ÎÅäÄÝ °èÃþÀ» °¡Áö°í, °¢°¢ÀÌ ´Ù¸¥ °ÍÀÇ ¼­ºñ½º¸¦ »ç¿ë ÇÏ´Â ¹æ¹ýÀÇ ¹®Á¦ ÁßÀÇ Çϳª´Â, °¢ ÇÁ·ÎÅäÄÝÀÌ Àü¼ÛÇÏ´Â µ¥ÀÌÅÍ¿¡ ÇÁ·Î ÅäÄÝ Çì´õ¿Í ²¿¸®¸¦ ºÙÀÌ°í, ¹ÞÀº µ¥ÀÌÅ͸¦ ó¸®ÇÒ ¶§ À̸¦ Á¦°ÅÇØ¾ß ÇÑ´Ù ´Â °ÍÀÌ´Ù. ÀÌ´Â °¢ ÇÁ·ÎÅäÄÝ °èÃþ¸¶´Ù Ưº°ÇÑ ÇÁ·ÎÅäÄÝ Çì´õ¿Í ²¿¸®¸¦ ã¾Æ¾ß ÇϹǷΠÇÁ·ÎÅäÄÝ »çÀÌ¿¡ µ¥ÀÌÅÍ ¹öÆÛ¸¦ Àü´ÞÇÏ´Â °ÍÀ» ¾î·Æ°Ô ¸¸µç´Ù. ¹æ¹ýÁßÀÇ Çϳª´Â °¢ °èÃþ¸¶´Ù ¹öÆÛ¸¦ º¹»çÇÏ´Â °ÍÀÌÁö¸¸, ÀÌ´Â ¸Å¿ì ºñÈ¿À²ÀûÀÌ´Ù. ´ë½Å ¸®´ª½º´Â ÇÁ·ÎÅäÄÝ °èÃþ »çÀÌ¿Í ³×Æ®¿öÅ© µð¹ÙÀ̽º µå¶óÀ̹ö °£¿¡ µ¥ÀÌÅ͸¦ Àü´ÞÇϱâ À§ÇØ sk_buffs¶ó´Â ¼ÒÄÏ ¹öÆÛ¸¦ »ç¿ë ÇÑ´Ù. sk_buffs´Â Æ÷ÀÎÅÍ¿Í ±æÀÌ Ç׸ñÀ» °¡Áö°í À־ °¢ ÇÁ·ÎÅäÄÝ °èÃþ ÀÌ Ç¥ÁØ ÇÔ¼ö¸¦ ÅëÇØ ÀÀ¿ëÇÁ·Î±×·¥ µ¥ÀÌÅ͸¦ ´Ù·ê ¼ö ÀÖ°Ô ÇÑ´Ù. ±×¸² 10.4´Â sk_buff ÀڷᱸÁ¶¸¦ º¸¿©ÁØ´Ù. °¢ sk_buff´Â ÀڽŰú ¿¬°üµÈ µ¥ÀÌÅÍ ºí·°À» °¡Áö°í ÀÖ´Ù. sk_buff´Â ³×°³ÀÇ µ¥ÀÌÅÍ Æ÷ÀÎÅ͸¦ °¡Áö°í Àִµ¥, À̵éÀº ¼ÒÄÏ ¹öÆÛ µ¥ÀÌÅ͸¦ ´Ù·ç°í °ü¸®Çϴµ¥ »ç¿ëµÈ´Ù. Çìµå(head) : ¸Þ¸ð¸®¿¡¼­ µ¥ÀÌÅÍÀÇ ½ÃÀÛÀ» °¡¸®Å²´Ù. ÀÌ´Â sk_buff¿Í ÀÌ¿Í°ü·ÃµÈ µ¥ÀÌÅÍ ºí·°À» ÇÒ´çÇÒ ¶§ °íÁ¤µÈ´Ù. µ¥ÀÌÅÍ(data) : ÇöÀç ÇÁ·ÎÅäÄÝ µ¥ÀÌÅÍÀÇ ½ÃÀÛÀ» °¡¸®Å²´Ù. ÀÌ Æ÷ÀÎÅÍ ´Â ÇöÀç sk_buff¸¦ ¼ÒÀ¯ÇÏ°í ÀÖ´Â ÇÁ·ÎÅäÄÝ °èÃþ¿¡ µû¶ó ´Þ¶óÁø´Ù. ²¿¸®(tail) :ÇöÀç ÇÁ·ÎÅäÄÝ µ¥ÀÌÅÍÀÇ ³¡À» °¡¸®Å²´Ù. ¸¶Âù°¡Áö·Î, ¼ÒÀ¯ÇÏ°í ÀÖ´Â ÇÁ·ÎÅäÄÝ °èÃþ¿¡ µû¶ó ´Þ¶óÁø´Ù. ³¡(end) : ¸Þ¸ð¸®¿¡¼­ µ¥ÀÌÅÍ ¿µ¿ªÀÇ ³¡À» °¡¸®Å²´Ù. sk_buff¸¦ ÇÒ´çÇÒ ¶§ °áÁ¤µÈ´Ù. sk_buff +-------------+ | next | +-------------+ | prev | +-------------+ | dev | +-------------+ | | | | +-------------+ | head |---+ +-------------+ | | data |-------+ +-------------+ | | | tail |---|---|---+ +-------------+ | | | | end |---|---|---|---+ ^ +-------------+<--+ | | | | | | | | | | | | | | | | +-------------+<------+ | | | ^ | | | | | | | Packet | | | truesize len | to be | | | | | | transmitted | | | | v | | | | | +-------------+<----------+ | | | | | | | | | | | | | v +-------------+<--------------+ ±×¸² 10.4 : The Socket Buffer (sk_buff) ±æÀ̸¦ ³ªÅ¸³»´Â Ç׸ñÀ¸·Î´Â len°ú truesize µÎ°³°¡ ÀÖÀ¸¸ç, À̵éÀº °¢°¢ ÇöÀç ÇÁ·ÎÅäÄÝ ÆÐŶÀÇ ±æÀÌ¿Í, »ó´ëÀûÀÎ µ¥ÀÌÅÍ ¹öÆÛÀÇ Àüü Å©±â¸¦ ³ªÅ¸ ³½´Ù. sk_buff¸¦ ´Ù·ç´Â ÄÚµå´Â ÀÀ¿ëÇÁ·Î±×·¥ µ¥ÀÌÅÍ¿¡ ÇÁ·ÎÅäÄÝ Çì´õ¿Í ²¿¸®¸¦ ºÙÀÌ°í Á¦°ÅÇϴ ǥÁØÀûÀÎ ¹æ¹ýµéÀ» Á¦°øÇÑ´Ù. À̵éÀº ¾ÈÀüÇÏ°Ô sk_buff¿¡ ÀÖ´Â data, tail, ±×¸®°í len Ç׸ñµéÀ» ´Ù·é´Ù. push : data Æ÷ÀÎÅ͸¦ µ¥ÀÌÅÍ ¿µ¿ªÀÇ ½ÃÀÛÂÊÀ¸·Î À̵¿ÇÏ°í, len Ç׸ñ À» Áõ°¡½ÃŲ´Ù. ÀÌ´Â Àü¼ÛÇÒ µ¥ÀÌÅÍÀÇ ½ÃÀۺκп¡ µ¥ÀÌÅͳª ÇÁ·Î ÅäÄÝ Çì´õ¸¦ ºÙÀ̴µ¥ »ç¿ëµÈ´Ù. pull : data Æ÷ÀÎÅ͸¦ ½ÃÀۺκп¡¼­ ¸Õ ÂÊÀ¸·Î, µ¥ÀÌÅÍ ¿µ¿ªÀÇ ³¡ÂÊ À¸·Î À̵¿ÇÏ°í, len Ç׸ñÀ» °¨¼Ò½ÃŲ´Ù. ÀÌ´Â ¼ö½ÅÇÑ µ¥ÀÌÅÍÀÇ ½ÃÀۺκп¡¼­ µ¥ÀÌÅͳª ÇÁ·ÎÅäÄÝ Çì´õ¸¦ Á¦°ÅÇϴµ¥ »ç¿ëµÈ´Ù. put : tail Æ÷ÀÎÅ͸¦ µ¥ÀÌÅÍ ¿µ¿ªÀÇ ³¡ÂÊÀ¸·Î À̵¿ÇÏ°í len Ç׸ñÀ» Áõ°¡½ÃŲ´Ù. ÀÌ´Â Àü¼ÛÇÒ µ¥ÀÌÅÍÀÇ ³¡¿¡ µ¥ÀÌÅͳª ÇÁ·ÎÅäÄÝ Á¤º¸¸¦ Ãß°¡Çϴµ¥ »ç¿ëµÈ´Ù. trim : tail Æ÷ÀÎÅ͸¦ µ¥ÀÌÅÍ ¿µ¿ªÀÇ ½ÃÀÛÂÊÀ¸·Î À̵¿ÇÏ°í len Ç׸ñ À» °¨¼Ò½ÃŲ´Ù. ÀÌ´Â ¼ö½ÅÇÑ ÆÐŶ¿¡¼­ µ¥ÀÌÅͳª ÇÁ·ÎÅäÄÝ ²¿¸®¸¦ Á¦°ÅÇϴµ¥ »ç¿ëµÈ´Ù. sk_buff ÀڷᱸÁ¶´Â ¶ÇÇÑ Ã³¸®µµÁß¿¡ sk_buff ÀÇ ÀÌÁß ¿øÇü ¿¬°á ¸®½ºÆ®¿¡ ÀúÀåÇϴµ¥ »ç¿ëÇÏ´Â Æ÷ÀÎÅ͵éÀ» °¡Áö°í ÀÖ´Ù. ±×¸®°í sk_buffs¸¦ ÀÌµé ¸®½ºÆ®ÀÇ ¾ÕÀ̳ª µÚ¿¡ Ãß°¡ÇÏ°í Á¦°ÅÇϴµ¥ »ç¿ëÇÏ´Â ÀϹÝÀûÀÎ sk_buff ·çƾµéµµ ÀÖ´Ù. 10.5.2 IP ÆÐŶ ¼ö½ÅÇϱâ Ä¿³Î¿¡¼­ ¸®´ª½º µå¶óÀ̹öµéÀÌ ¾î¶»°Ô ¸¸µé¾îÁö°í ÃʱâÈ­µÇ´ÂÁö´Â 8Àå¿¡¼­ ¼³¸íÇß´Ù. ÀÌ ÃʱâÈ­ÀÇ °á°ú´Â dev_base ¸®½ºÆ®¿¡¼­ ¼­·Î ¿¬°áµÇ¾î ÀÖ´Â ÀÏ·ÃÀÇ device ÀڷᱸÁ¶ÀÌ´Ù. °¢ device ÀڷᱸÁ¶´Â ÀåÄ¡¸¦ ¼­¼úÇÏ°í, ³×Æ®¿öÅ© ÇÁ·ÎÅäÄÝ °èÃþ¿¡¼­ ³×Æ® ¿öÅ© µå¶óÀ̹ö°¡ ¾î¶² ÀÏÀ» ¼öÇàÇØ¾ß ÇÒ ¶§ ºÎ¸¦ ¼ö ÀÖ´Â ÄÝ¹é ·çƾ ¼¼Æ® ¸¦ Á¦°øÇÑ´Ù. À̵é ÇÔ¼öµéÀº ´ëºÎºÐ µ¥ÀÌÅÍ Àü¼Û°ú ³×Æ®¿öÅ© ÀåÄ¡ÀÇ ÁÖ¼Ò ¿¡ °ü·ÃµÇ¾î ÀÖ´Ù. ³×Æ®¿öÅ© ÀåÄ¡°¡ ³×Æ®¿öÅ©·ÎºÎÅÍ ÆÐŶÀ» ¼ö½ÅÇϸé ÀÌ ¼ö½ÅÇÑ µ¥ÀÌÅ͸¦ sk_buff ÀڷᱸÁ¶·Î ¹Ù²Ù¾î¾ß ÇÑ´Ù. ³×Æ®¿öÅ© µå¶óÀ̹ö´Â À̵éÀ» ¼ö½ÅÇÒ ¶§¸¶´Ù backlog Å¥¿¡ ¼ö½ÅÇÑ sk_buffµéÀ» Ãß°¡ÇÑ´Ù. ¸¸¾à backlog Å¥°¡ ³Ê¹« Ä¿Áö¸é, ¼ö½ÅÇÑ sk_buff µéÀº ¹«½ÃµÈ´Ù. ÀÌÁ¦ ÇØ¾ß ÇÒ ÀÏÀÌ ÀÖÀ¸¹Ç·Î ½ÇÇàÇÒ Áغñ°¡ µÇ¾ú´Ù°í ³×Æ®¿öÅ© ÇϹݺÎ(bottom half)¿¡ Ç¥½ÃÇÑ´Ù. ½ºÄÉÁÙ·¯°¡ ³×Æ®¿öÅ© ÇϹݺΠÇڵ鷯¸¦ ½ÇÇàÇϸé, ÀÌ´Âsk_buffÀÇ backlog Å¥¸¦ ó¸®Çϱâ ÀÌÀü¿¡ ¼ö½ÅÇÑ ÆÐŶÀ» ¾î¶² ÇÁ·ÎÅäÄÝ °èÃþÀ¸·Î Àü´ÞÇÒÁö¸¦ °áÁ¤Çϸç Àü¼ÛµÇ±æ ±â´Ù¸®°í ÀÖ´Â ³×Æ®¿öÅ© ÆÐŶµéÀ» ó¸®ÇÑ´Ù. ¸®´ª½º ³×Æ®¿öÅ· °èÃþÀ» ÃʱâÈ­ÇÒ ¶§ °¢ ÇÁ·ÎÅäÄÝÀº packet_type ÀڷᱸÁ¶¸¦ ptype_all ¸®½ºÆ®³ª ptype_base ÇؽÃÅ×ÀÌºí¿¡ Ãß°¡ÇÔÀ¸·Î¼­ ÀڽŵéÀ» µî·ÏÇß´Ù. packet_type ÀڷᱸÁ¶´Â ÇÁ·ÎÅäÄÝ Å¸ÀÔ°ú ³×Æ®¿öÅ© ÀåÄ¡¿¡ ´ëÇÑ Æ÷ÀÎÅÍ, ÇÁ·ÎÅäÄÝÀÇ ¼ö½Å µ¥ÀÌÅÍ Ã³¸® ·çƾ, ±×¸®°í ¸¶Áö¸·À¸·Î ¸®½ºÆ®³ª Çؽà °í¸®¿¡ ÀÖ´Â ´ÙÀ½ packet_type ÀڷᱸÁ¶¿¡ ´ëÇÑ Æ÷ÀÎÅ͸¦ °¡Áö°í ÀÖ´Ù. ptype_all °í¸®´Â ¾î¶² ³×Æ®¿öÅ© ÀåÄ¡À̵çÁöºÎÅÍ ¼ö½ÅµÇ´Â ¸ðµç ÆÐŶµéÀ» ¿³º¸´Âµ¥(snoop) »ç¿ëµÇÁö¸¸ Àß »ç¿ëµÇÁö ¾Ê´Â´Ù. ptype_base Çؽà Å×À̺íÀº ÇÁ·ÎÅäÄÝ ½Äº°ÀÚ·Î ÇؽõǾî ÀÖÀ¸¸ç, µé¾î¿À´Â ³×Æ®¿öÅ© ÆÐŶÀ» ¾î¶² ÇÁ·ÎÅäÄÝÀÌ ¹ÞÀ» °ÍÀÎÁö °áÁ¤Çϴµ¥ »ç¿ëµÈ´Ù. ³×Æ® ¿öÅ© ÇϹݺδ µé¾î¿À´Â sk_buffÀÇ ÇÁ·ÎÅäÄÝ Å¸ÀÔ°ú °¢ Å×ÀÌºí¿¡ ÀÖ´Â Çϳª ÀÌ»óÀÇ packet_type ¿£Æ®¸®¿Í ¸ÅÄ¡½ÃŲ´Ù. ÇÁ·ÎÅäÄÝÀº Çϳª ÀÌ»óÀÇ ¿£Æ®¸®¿Í ¸ÅÄ¡µÉ ¼ö Àִµ¥, ¿¹¸¦ µé¾î ¸ðµç ³×Æ®¿öÅ© Æ®·¡ÇÈÀ» ¿³º¼ ¶§ °°Àº °æ¿ìÀ̸ç, ÀÌ °æ¿ì sk_buff´Â º¹Á¦°¡ µÈ´Ù. sk_buff´Â ¸ÅÄ¡µÇ´Â ÇÁ·ÎÅäÄÝ Ã³¸® ·çƾÀ¸·Î Àü´ÞµÈ´Ù. 10.5.3 IP ÆÐŶ Àü¼ÛÇϱâ ÆÐŶÀº ÀÀ¿ëÇÁ·Î±×·¥ÀÌ µ¥ÀÌÅ͸¦ ±³È¯Çϰųª, ³×Æ®¿öÅ© ÇÁ·ÎÅäÄÝÀÌ ÀÌ¹Ì ¸¸µé¾îÁø ¿¬°áÀ̳ª ¸¸µé¾îÁö´Â ¿¬°áÀ» Áö¿øÇÒ ¶§ ¸¸µé¾îÁ®¼­ º¸³»Áø´Ù. ¾î¶² ¹æ¹ýÀ¸·Î µ¥ÀÌÅÍ°¡ ¸¸µé¾îÁ³´øÁö °£¿¡ µ¥ÀÌÅ͸¦ Æ÷ÇÔÇÏ°í ÀÖ´Â sk_buff°¡ ¸¸µé¾îÁö°í, °¢ ÇÁ·ÎÅäÄÝ °èÃþÀ» Åë°úÇϸ鼭 ÇÁ·ÎÅäÄÝ °èÃþÀÌ ´Ù¾çÇÑ Çì´õ¸¦ ºÙÀδÙ. sk_buff´Â Àü¼ÛÇÒ ³×Æ®¿öÅ© ÀåÄ¡·Î Àü´ÞµÇ¾î¾ß ÇÑ´Ù. ¸ÕÀú IP °°Àº ÇÁ·Î ÅäÄÝÀÌ¶óµµ ¾î¶² ³×Æ®¿öÅ© ÀåÄ¡¸¦ »ç¿ëÇÒÁö¸¦ °áÁ¤ÇØ¾ß ÇÑ´Ù. ÀÌ´Â ÆÐŶ¿¡ °¡Àå ¸Â´Â ·çÆ®¿¡ µû¶ó ´Ù¸£´Ù. PPP ÇÁ·ÎÅäÄÝ°°Àº °ÍÀ» ÅëÇØ ¸ðµ©À¸·Î ÇϳªÀÇ ³×Æ®¿öÅ©¿¡ ¿¬°áµÈ ÄÄÇ»ÅÍ ¿¡ À־´Â ÀÌ ·çÆ®¸¦ ¼±ÅÃÇÏ´Â °ÍÀº ½±´Ù. ÆÐŶÀº ·çÇÁ¹é ÀåÄ¡¸¦ ÅëÇØ ·ÎÄÃÈ£½ºÆ®³ª, PPP ¸ðµ© ¿¬°áÀÇ ³¡¿¡ ÀÖ´Â °ÔÀÌÆ®¿þÀÌ µÑ Áß Çϳª·Î Àü¼Û µÉ °ÍÀÌ´Ù. ÀÌ´õ³ÝÀ¸·Î ¿¬°áµÇ¾î ÀÖ´Â ÄÄÇ»ÅÍ¿¡ À־´Â, ³×Æ®¿öÅ©¿¡ ¸¹Àº ÄÄÇ»ÅÍ°¡ ¿¬°áµÇ¾î ÀÖÀ¸¹Ç·Î ÀÌ ¼±ÅÃÀº ´õ ¾î·Æ´Ù. IP ÆÐŶÀ» Àü¼ÛÇÒ ¶§ Ç×»ó IP´Â µµ´ÞÇÒ IP ÁÖ¼Ò·Î °¡´Â ·çÆ®(route)¸¦ ÇØ°áÇϱâ À§ÇØ ¶ó¿ìÆà Å×À̺í(routing table)À» »ç¿ëÇÑ´Ù. °¢ IP ¸ñÀûÁö´Â ¶ó¿ìÆà Å×ÀÌºí¿¡¼­ ¼º°øÀûÀ¸·Î ã°Ô µÇ¾î, »ç¿ëÇÒ ·çÆ®¸¦ ±â¼úÇÏ´Â rtable ÀڷᱸÁ¶¸¦ µ¹·ÁÁØ´Ù. ÀÌ´Â »ç¿ëÇÒ Ãâ¹ßÁö IP ÁÖ¼Ò¿Í, ³×Æ®¿öÅ© device ÀڷᱸÁ¶ÀÇ ÁÖ¼Ò, ¶§¶§·Î ¹Ì¸® ¸¸µé¾îÁø Çϵå¿þ¾î Çì´õ¸¦ Æ÷ÇÔÇÑ´Ù. ÀÌ Çϵå¿þ¾î Çì´õ´Â ³×Æ®¿öÅ© ÀåÄ¡¸¶´Ù ´Ù¸¥ °ÍÀ¸·Î¼­ Ãâ¹ßÁö¿Í µµÂøÁöÀÇ Çϵå¿þ¾î ÁÖ¼Ò¿Í, ¸Å°³Ã¼º°·Î ´Ù¸¥ Á¤º¸¸¦ °¡Áö°í ÀÖ´Ù. ¸¸¾à ³×Æ®¿öÅ© ÀåÄ¡°¡ ÀÌ´õ³Ý ÀåÄ¡À̶ó¸é, Çϵå¿þ¾î Çì´õ´Â ±×¸² 10.1¿¡¼­ º¸´Â ¹Ù¿Í °°À» °ÍÀ̸ç, Ãâ¹ßÁö¿Í µµÂøÁö ÁÖ¼Ò´Â ¹°¸®ÀûÀÎ ÀÌ´õ³Ý ÁÖ¼ÒÀÏ °ÍÀÌ´Ù. Çϵå¿þ¾î Çì´õ´Â ·çÆ®¿Í ÇÔ²² ij½ÃµÇ´Âµ¥, ÀÌ´Â ÀÌ Çϵå¿þ¾î Çì´õ°¡ ÀÌ ·çÆ®¸¦ ÅëÇÏ¿© Àü¼ÛÇÏ´Â ¸ðµç IP ÆÐŶ¿¡ Ãß°¡µÇ¾î¾ß Çϴµ¥, À̸¦ ´Ù½Ã ¸¸µå´Â °ÍÀº ½Ã°£ÀÌ °É¸®±â ¶§¹®ÀÌ´Ù. Çϵå¿þ¾î Çì´õ´Â ARP ÇÁ·ÎÅäÄÝ·Î ÇØ°áµÇ¾î¾ß ÇÏ´Â ¹°¸®ÀûÀÎ ÁÖ¼Ò¸¦ °¡Áú ¼öµµ ÀÖ´Ù. ÀÌ °æ¿ì ¹ÛÀ¸·Î ³ª°¡´Â ÆÐŶÀº ÁÖ¼Ò°¡ ÇØ°áµÉ ¶§±îÁö ²Ä¦¸øÇÏ°í ±â´Ù¸®°í ÀÖ¾î¾ß ÇÑ´Ù. Çѹø ÁÖ¼Ò°¡ ÇØ°áµÇ°í ³ª¸é, Çϵå¿þ¾î Çì´õ°¡ ¸¸µé¾îÁö°í, ÀÌ ÀÎÅÍÆäÀ̽º¸¦ »ç¿ëÇÏ´Â IP ÆÐŶÀÌ ´Ù½Ã ARP¸¦ ÇÒ ÇÊ¿ä°¡ ¾øµµ·Ï ÀÌ Çϵå¿þ¾î Çì´õ¸¦ ij½ÃÇÑ´Ù. 10.5.4 µ¥ÀÌÅÍ Á¶°¢³»±â (data fragmentation) ¸ðµç ³×Æ®¿öÅ© ÀåÄ¡´Â ÃÖ´ë ÆÐŶ Å©±â¸¦ °¡Áö°í ÀÖÀ¸¸ç, À̺¸´Ù Å« Å©±âÀÇ µ¥ÀÌÅ͸¦ º¸³»°Å³ª ¹ÞÀ» ¼ö ¾ø´Ù. IP ÇÁ·ÎÅäÄÝÀº ÀÌ·± °æ¿ì¸¦ Çã¿ëÇÏ¿© µ¥ÀÌÅ͸¦ ³×Æ®¿öÅ© ÀåÄ¡°¡ ó¸®ÇÒ ¼ö ÀÖ´Â ÆÐŶ Å©±â·Î µ¥ÀÌÅ͸¦ Àß°Ô ÂÉ°µ´Ù. IP ÇÁ·ÎÅäÄÝ Çì´õ´Â Ç÷¡±×¿Í ÀÌ Á¶°¢ÀÇ ¿É¼ÂÀ» ´ãÀº Á¶°¢ Ç׸ñÀ» °¡Áö°í ÀÖ´Ù. IP ÆÐŶÀÌ Àü¼ÛÇÒ Áغñ°¡ µÇ¸é, IP´Â IP ÆÐŶÀ» ¹ÛÀ¸·Î º¸³¾ ³×Æ®¿öÅ© ÀåÄ¡¸¦ ã´Â´Ù. ÀåÄ¡´Â IP ¶ó¿ìÆà Å×ÀÌºí¿¡¼­ ã°Ô µÈ´Ù. °¢ device´Â ÃÖ´ë Àü¼Û ´ÜÀ§¸¦ ³ªÅ¸³»´Â Ç׸ñÀ¸·Î °¡Áö°í Àִµ¥ (¹ÙÀÌÆ® ´ÜÀ§), ÀÌ´Â mtu Ç׸ñÀÌ´Ù. ¸¸¾à ÀåÄ¡ÀÇ mtu°¡ Àü¼ÛÇÏ·Á´Â IP ÆÐŶÀÇ Å©±âº¸´Ù ÀÛÀ¸¸é, IP ÆÐŶÀº Á» ´õ ÀÛÀº Å©±â(mtu Å©±â)ÀÇ Á¶°¢À¸·Î ÂÉ°³Á®¾ß ÇÑ´Ù.°¢ Á¶°¢ Àº sk_buff·Î Ç¥ÇöµÈ´Ù. IP Çì´õ¿¡´Â ÀÌ°ÍÀÌ Á¶°¢À̸ç, ÀÌ ÆÐŶÀÌ µ¥ÀÌÅÍ ÀÇ ¾î¶² ¿É¼ÂºÎÅÍ °¡Áö°í ÀÖ´ÂÁö Ç¥½ÃµÈ´Ù. ¸¶Áö¸· ÆÐŶÀº ¸¶Áö¸· IP Á¶°¢À̶ó°í Ç¥½ÃµÈ´Ù. ¸¸¾à, ÀÌ ÂÉ°³´Â µµÁß¿¡ IP°¡ sk_buff¸¦ ÇÒ´ç¹ÞÁö ¸øÇÑ´Ù¸é Àü¼ÛÀ» ½ÇÆÐ ÇÏ°Ô µÈ´Ù. IP Á¶°¢À» ¼ö½ÅÇÏ´Â °ÍÀº Àü¼ÛÇÏ´Â °Íº¸´Ù ´õ ¾î·Á¿îµ¥, ÀÌ´Â IP Á¶°¢ÀÌ ¾Æ¹«·± ¼ø¼­·Î³ª µµÂøÇÒ ¼ö ÀÖÀ¸¹Ç·Î ¸ðµÎ ¼ö½Å¹Þ¾Æ¾ß ÀçÁ¶¸³ÇÒ ¼ö Àֱ⠶§¹®ÀÌ´Ù. IP ÆÐŶÀ» ¼ö½ÅÇÒ ¶§¸¶´Ù ÀÌ°ÍÀÌ IP Á¶°¢ÀÎÁö °Ë»çÇÑ´Ù. ¸Þ½ÃÁö Á¶°¢ÀÌ Ã³À½ µµÂøÇϸé, IP´Â »õ ipq ÀڷᱸÁ¶¸¦ ¸¸µé°í, À̸¦ ÀçÁ¶¸³À» ±â´Ù¸®´Â IP Á¶°¢ÀÇ ¸®½ºÆ®ÀÎ ipqueue¿¡ ¿¬°áÇÑ´Ù. IP Á¶°¢ÀÌ °è¼Ó ¼ö½ÅµÇ¸é ¸Â´Â ipq ÀڷᱸÁ¶¸¦ ã¾Æ ÀÌ Á¶°¢À» ³ªÅ¸³¾ ipfrag ÀڷᱸÁ¶¸¦ »õ·Î ¸¸µç´Ù. °¢ ipq ÀڷᱸÁ¶´Â Á¶°¢³­ IP ¼ö½Å ÇÁ·¹ ÀÓÀ» Ãâ¹ßÁö¿Í µµÂøÁö IP ÁÖ¼Ò¿Í ÇÔ²² À¯ÀÏÇÏ°Ô ±â¼úÇϸç, À§ °èÃþ ÇÁ·Î ÅäÄÝ ½Äº°ÀÚ¿Í ÀÌ IP ÇÁ·¹ÀÓÀÇ ½Äº°ÀÚ¸¦ ±â¼úÇÑ´Ù. ¸ðµç Á¶°¢ÀÌ µµÂøÇϸé, À̵éÀº ÇϳªÀÇ sk_buff·Î ÇÕÃÄÁö°í ó¸®ÇÒ ´ÙÀ½ ÇÁ·ÎÅäÄÝ °èÃþÀ¸·Î Àü´Þ µÈ´Ù. °¢ ipq´Â Á¦´ë·Î µÈ Á¶°¢ÀÌ µµÂøÇÒ ¶§¸¶´Ù ´Ù½Ã ½ÃÀ۵Ǵ ŸÀ̸Ӹ¦ °¡Áö°í ÀÖ´Ù. ¸¸¾à ÀÌ Å¸À̸Ӱ¡ ¸¸·áµÇ¸é, ipq ÀڷᱸÁ¶¿Í ÀÌ°ÍÀÇ ipfrag µéÀº ¼Ò¸êµÇ¸ç, ¸Þ½ÃÁö´Â Àü¼Û Áß¿¡ »ç¶óÁø °ÍÀ¸·Î °£ÁֵȴÙ. ÀÌ ¸Þ½ÃÁö¸¦ ´Ù½Ã Àü¼ÛÇÏ´Â °ÍÀº ´õ À­ ·¹º§ÀÇ ÇÁ·ÎÅäÄÝÀÌ ´ã´çÇÏ´Â ¹®Á¦ÀÌ´Ù. 10.6 ÁÖ¼Ò °áÁ¤ ÇÁ·ÎÅäÄÝ(Address Resolution Protocol, ARP) ÁÖ¼Ò °áÁ¤ ÇÁ·ÎÅäÄÝÀÇ ¿ªÇÒÀº IP ÁÖ¼Ò¿¡¼­ ÀÌ´õ³Ý ÁÖ¼Ò¿Í °°Àº ¹°¸®Àû Çϵå¿þ¾î ÁÖ¼Ò·ÎÀÇ º¯È¯À» Á¦°øÇÏ´Â °ÍÀÌ´Ù. IP´Â µ¥ÀÌÅ͸¦ Àü¼ÛÇÒ µð¹ÙÀÌ ½º µå¶óÀ̹ö¿¡°Ô Àü´ÞÇϱâ (sk_buffÀÇ ÇüÅ·Î) ¹Ù·Î Àü¿¡ ÀÌ·± º¯È¯À» ÇÊ¿ä·Î ÇÑ´Ù. ÀÌ´Â ÀÌ ÀåÄ¡°¡ Çϵå¿þ¾î Çì´õ¸¦ ÇÊ¿ä·Î ÇÏ´ÂÁö, ¸¸¾à ±×·¸ ´Ù¸é ÀÌ ÆÐŶ¿ëÀ¸·Î Çϵå¿þ¾î Çì´õ¸¦ ´Ù½Ã ¸¸µé¾î¾ß ÇÏ´ÂÁö ¾Ë±â À§ÇØ ¿©·¯°¡Áö °Ë»ç¸¦ ¼öÇàÇÑ´Ù. ¸®´ª½º´Â Çϵå¿þ¾î Çì´õ¸¦ ÀÚÁÖ ´Ù½Ã ¸¸µéÁö ¾Êµµ·Ï À̸¦ ij½ÃÇÑ´Ù. ¸¸¾à Çϵå¿þ¾î Çì´õ¸¦ ´Ù½Ã ¸¸µé ÇÊ¿ä°¡ ÀÖ´Ù¸é, ÀåÄ¡ °íÀ¯ÀÇ Çϵå¿þ¾î Çì´õ ÀçÁ¦ÀÛ ·çƾÀ» È£ÃâÇÑ´Ù. ¸ðµç ÀÌ´õ³Ý ÀåÄ¡´Â ¶È°°Àº ÀϹÝÀûÀÎ Çì´õ ÀçÁ¦ÀÛ ·çƾÀ» »ç¿ëÇϸç, ÀÌ ·çƾÀº ¸ñÀûÁö IP ÁÖ¼Ò ¸¦ ¹°¸®ÀûÀÎ ÁÖ¼Ò·Î ¹Ù²Ù±â À§ÇØ Â÷·Ê·Î ARP ¼­ºñ½º¸¦ »ç¿ëÇÑ´Ù. ARP ÇÁ·ÎÅäÄÝ ±× ÀÚü´Â ¸Å¿ì ´Ü¼øÇϸç, ARP ¿ä±¸¿Í ARP ÀÀ´ä µÎ°¡Áö ¸Þ½ÃÁö ÇüÅ·ΠÀÌ·ç¾îÁ® ÀÖ´Ù. ARP ¿ä±¸´Â º¯È¯À» ÇÊ¿ä·Î ÇÏ´Â IP ÁÖ¼Ò¸¦ °¡Áö°í ÀÖ°í, ÀÀ´äÀº (¹Ù¶ó°Çµ¥) º¯È¯µÈ IP ÁÖ¼ÒÀÎ Çϵå¿þ¾î ÁÖ¼Ò¸¦ °¡Áö °í ÀÖ´Ù. ARP ¿ä±¸´Â ³×Æ®¿öÅ©¿¡ ¿¬°áµÈ ¸ðµç È£½ºÆ®·Î ¹æ¼Û(ºê·Îµåij½º Æ®) µÇ¹Ç·Î, ÀÌ´õ³Ý ³×Æ®¿öÅ©¿¡¼­´Â ÀÌ´õ³Ý¿¡ ¿¬°áµÈ ¸ðµç ±â°èµéÀÌ ÀÌ ARP ¿ä±¸¸¦ ¹Þ°Ô µÈ´Ù. ÀÌ ¿ä±¸¿¡ ÀÖ´Â IP ÁÖ¼Ò¸¦ ¼ÒÀ¯ÇÏ°í ÀÖ´Â ±â°è ´Â ÀÌ ARP ¿ä±¸¿¡ ÀÀ´äÇÏ¿© ÀÚ½ÅÀÇ ¹°¸®ÀûÀÎ ÁÖ¼Ò¸¦ ´ã°í ÀÖ´Â ARP ÀÀ´ä À¸·Î ´äÇÏ°Ô µÈ´Ù. ¸®´ª½º¿¡¼­ ARP ÇÁ·ÎÅäÄÝ °èÃþÀº °¢°¢ IP¿¡¼­ ¹°¸®ÁÖ¼Ò·ÎÀÇ º¯È¯À» ³ªÅ¸ ³»´Â arp_table ÀڷᱸÁ¶ÀÇ Å×À̺íÀ» °¡Áö°í ÀÌ·ç¾îÁ® ÀÖ´Ù. ÀÌµé ¿£Æ®¸® µéÀº IPÁÖ¼Ò°¡ º¯È¯µÉ ÇÊ¿ä°¡ ÀÖÀ» ¶§ ¸¸µé¾îÁö°í, ½Ã°£ÀÌ Áö³ª ³°¾ÆÁö¸é Á¦°ÅµÈ´Ù. °¢ arp_table ÀڷᱸÁ¶´Â ´ÙÀ½°ú °°Àº Ç׸ñµéÀ» °¡Áø´Ù : ¸¶Áö¸· »ç¿ë(last used) ARP ¿£Æ®¸®°¡ ¸¶Áö¸·À¸·Î »ç¿ëµÈ ½Ã°£ ¸¶Áö¸· °»½Å(last updated) ARP ¿£Æ®¸®°¡ ¸¶Áö¸·À¸·Î °»½ÅµÈ ½Ã°£ Ç÷¡±×(flags) ¿£Æ®¸®°¡ ¿Ï·áµÇ¾ú´ÂÁö °°Àº ¿£Æ®¸®ÀÇ »óŸ¦ ³ªÅ¸³½´Ù. IP ÁÖ¼Ò ¿£Æ®¸®°¡ ³ªÅ¸³»´Â IP ÁÖ¼Ò Çϵå¿þ¾î ÁÖ¼Ò º¯È¯µÈ Çϵå¿þ¾î ÁÖ¼Ò Çϵå¿þ¾î Çì´õ ij½ÃµÈ Çϵå¿þ¾î Çì´õ¿¡ ´ëÇÑ Æ÷ÀÎÅÍ Å¸À̸Ó(timer) ÀÀ´äÇÏÁö ¾Ê´ÂARP ¿ä±¸¸¦ ŸÀӾƿô ½ÃÅ°´Âµ¥ »ç¿ëÇÏ´Â timer_list ¿£Æ®¸® Àç½Ãµµ(retries) ÀÌ ARP ¿ä±¸¸¦ Àç½ÃµµÇÑ È½¼ö sk_buff Å¥ ÀÌ IP ÁÖ¼Ò¸¦ ÇØ°áÇϱ⠱â´Ù¸®´Â sk_buff ¿£Æ®¸®ÀÇ ¸®½ºÆ® ARP Å×À̺íÀº arp_table ¿£Æ®¸®µéÀ» ÀÕ±â À§ÇØ Æ÷ÀÎÅÍÀÇ Å×À̺í·Î µÇ¾î ÀÖ´Ù (arp_tables º¤ÅÍ). ¿£Æ®¸®µéÀº À̵鿡 ´ëÇÑ Á¢±Ù ¼Óµµ¸¦ ³ôÀ̱â À§ÇØ Ä³½ÃµÇ¸ç, °¢ ¿£Æ®¸®´Â IP ÁÖ¼ÒÀÇ ³¡ µÎ ¹ÙÀÌÆ®¸¦ °¡Á®¿Í Å×ÀÌºí¿¡ ´ëÇÑ À妽º¸¦ °è»êÇÏ°í, ¿øÇÏ´Â °ÍÀ» ãÀ» ¶§±îÁö Çؽà Å×ÀÌºí¿¡¼­ ¿£Æ® ¸®ÀÇ °í¸®¸¦ µû¶ó°¡ ã°Ô µÈ´Ù. ¸®´ª½º´Â ¶ÇÇÑ ¹Ì¸® ¸¸µé¾îÁø Çϵå¿þ¾î Çì´õ¸¦ hh_cache ÀڷᱸÁ¶ ÇüÅ·Πarp_table ¿£Æ®¸®¿¡ ij½Ã½ÃŲ´Ù. IP ÁÖ¼Òº¯È¯À» ¿ä±¸Çߴµ¥ ÀÏÄ¡ÇÏ´Â arp_table ¿£Æ®¸®°¡ ¾øÀ» °æ¿ì, ARP´Â ARP ¿ä±¸ ¸Þ½ÃÁö¸¦ º¸³»¾ß ÇÑ´Ù. ARP´Â arp_table¿¡¼­ »õ arp_table ¿£Æ®¸®¸¦ ¸¸µé°í, ÁÖ¼Ò º¯È¯À» ÇÊ¿ä·Î ÇÏ´Â ÆÐŶµéÀ» Æ÷ÇÔÇÏ°í ÀÖ´Â sk_buff¸¦ »õ·Î ¸¸µé¾îÁø ¿£Æ®¸®ÀÇ sk_buff Å¥¿¡ Å¥½ÃŲ´Ù. ARP´Â ARP ¿ä±¸¸¦ º¸³»°í ARP ¸¸·á ŸÀ̸Ӹ¦ ½ÇÇàÇÑ´Ù. ¾Æ¹«·± ÀÀ´äÀÌ ¾ø´Ù¸é ARP´Â ¿©·¯¹ø Àç½Ãµµ¸¦ ÇÏ°í, ¿©ÀüÈ÷ ÀÀ´äÀÌ ¾ø´Ù¸é ARP´Â arp_table ¿£Æ®¸®¸¦ Á¦°ÅÇÑ´Ù. IP ÁÖ¼Ò°¡ º¯È¯µÇ±â¸¦ ±â´Ù·Á Å¥µÇ¾î ÀÖ´Â ¾î¶² sk_buff ÀÚ·á ±¸Á¶ÀÌµç °£¿¡ ÅëÁö¸¦ ¹Þ°Ô µÇ°í, ÀÌ·± ½ÇÆÐ¿Í ÇùÁ¶ÇÏ´Â °ÍÀº À̵éÀ» Àü¼Û ÇÏ·Á´Â ÇÁ·ÎÅäÄÝ °èÃþÀÇ ¸òÀÌ´Ù. UDP´Â ÀÒ¾î¹ö¸° ÆÐŶ¿¡ ´ëÇؼ­ ½Å°æÀ» ¾²Áö ¾ÊÁö¸¸, TCP´Â ¼º¸³µÈ TCP ¸µÅ©¸¦ ÅëÇÏ¿© ÀçÀü¼ÛÇÏ·Á°í ½ÃµµÇÒ °ÍÀÌ ´Ù. ¸¸¾à IP ÁÖ¼ÒÀÇ ¼ÒÀ¯ÀÚ°¡ Çϵå¿þ¾î ÁÖ¼Ò¸¦ µ¹·ÁÁÖ¸ç ÀÀ´äÇÑ´Ù¸é, arp_table ¿£Æ®¸®´Â ¿Ï·áµÈ °ÍÀ¸·Î Ç¥½ÃµÇ°í, Å¥µÇ¾î ÀÖ´Â ¸ðµç sk_buff µéÀº Å¥¿¡¼­ Àç°ÅµÇ°í Àü¼ÛµÉ °ÍÀÌ´Ù. Çϵå¿þ¾î ÁÖ¼Ò´Â °¢ sk_buffÀÇ ÇÏµå ¿þ¾î Çì´õ¿¡ ±â·ÏµÈ´Ù. ARP ÇÁ·ÎÅäÄÝ °èÃþÀº ÀÚ½ÅÀÇ IP ÁÖ¼Ò¸¦ ÁöÁ¤ÇÏ°í ÀÖ´Â ARP ¿ä±¸¿¡ ¹Ýµå½Ã ÀÀ´äÇØ¾ß ÇÑ´Ù. ÀÌ °èÃþÀº ÀÚ½ÅÀÇ ÇÁ·ÎÅäÄÝ Å¸ÀÔ (ETH_P_ARP)¸¦ µî·Ï ÇÏ°í, packet_type ÀڷᱸÁ¶¸¦ »ý¼ºÇÑ´Ù. ÀÌ´Â ³×Æ®¿öÅ© ÀåÄ¡°¡ ¼ö½ÅÇÑ ¸ðµç ARP ÆÐŶÀ» Àü´Þ¹Þ°Ô µÈ´Ù´Â °ÍÀ» ÀǹÌÇÑ´Ù. ÀÌ´Â ARP ÀÀ´ä»Ó¸¸ ¾Æ´Ï ¶ó ARP ¿ä±¸µµ Æ÷ÇÔÇÑ´Ù. ÀÌ´Â ¼ö½ÅÇÑ ÀåÄ¡ÀÇ device ÀڷᱸÁ¶¿¡ ÀúÀå µÇ¾î ÀÖ´Â Çϵå¿þ¾î ÁÖ¼Ò¸¦ »ç¿ëÇÏ¿© ARP ÀÀ´äÀ» ¸¸µç´Ù. ³×Æ®¿öÅ© ±¸¼ºÀº ½Ã°£ÀÌ Áö³ª¸é¼­ º¯ÇÒ ¼ö ÀÖÀ¸¸ç, IP ÁÖ¼Ò´Â ´Ù¸¥ ÇÏµå ¿þ¾î ÁÖ¼Ò·Î ´Ù½Ã ÇÒ´çµÉ ¼öµµ ÀÖ´Ù. ¿¹¸¦ µé¾î, ¾î¶² ÀüÈ­Á¢¼Ó ¼­ºñ½º´Â ¿¬°áÀÌ µÉ ¶§¸¶´Ù °¢°¢ ´Ù¸¥ IP ÁÖ¼Ò¸¦ ¹èÁ¤ÇÑ´Ù. ARP Å×À̺íÀÌ °¡Àå ÃÖ±Ù ÀÇ ¿£Æ®¸®¸¦ °¡Áú ¼ö ÀÖµµ·Ï, ARP´Â Á¤±âÀûÀΠŸÀ̸Ӹ¦ µ¹·Á¼­ ¸ðµç arp_table ¿£Æ®¸®µéÀÌ Å¸ÀӾƿôÀÌ µÇÁö ¾Ê¾Ò´ÂÁö »ìÆ캻´Ù. ÀÌ´Â Çϳª ÀÌ»óÀÇ Ä³½ÃµÈ Çϵå¿þ¾î Çì´õ¸¦ °®°í ÀÖ´Â ¿£Æ®¸®µéÀ» Á¦°Å ÇÏÁö ¾Êµµ·Ï ¸Å¿ì Á¶½ÉÇÑ´Ù. ÀÌµé ¿£Æ®¸®¸¦ Áö¿ì´Â °ÍÀº ´Ù¸¥ ÀڷᱸÁ¶µé ÀÌ ÀÌ¿¡ ÀÇÁ¸ÇÏ°í ÀÖÀ¸¹Ç·Î ¸Å¿ì À§ÇèÇÏ´Ù. ¾î¶² arp_table ¿£Æ®¸®µéÀº ¿µ±¸ÀûÀ̸ç, À̵éÀº ÇÒ´çÀÌ ÇØÁ¦µÇÁö ¾Êµµ·Ï Ç¥½Ã°¡ µÈ´Ù. ARP Å×À̺íÀº ³Ê¹« Ä¿Áö¸é ¾ÈµÈ´Ù. °¢ arp_table ¿£Æ®¸®´Â ¾î´ÀÁ¤µµ Ä¿³Î ¸Þ¸ð¸®¸¦ Àâ¾Æ ¸Ô±â ¶§¹®ÀÌ´Ù. »õ ¿£Æ®¸®°¡ ÇÒ´çµÇ¾î¾ß ÇÏ°í ARP Å×À̺íÀÌ ÃÖ´ë Å©±â¿¡ µµ´ÞÇÒ ¶§¸¶´Ù, Å×À̺íÀº °¡Àå ¿À·¡µÈ ¿£Æ®¸®µéÀ» ã¾Æ À̸¦ Á¦°ÅÇÑ´Ù. 10.7 IP ¶ó¿ìÆÃ(routing) IP ¶ó¿ìÆà ÇÔ¼ö´Â ƯÁ¤ IP ÁÖ¼Ò¸¦ ¸ñÀûÁö·Î °¡Áø IP ÆÐŶÀ» ¾îµð·Î º¸³¾Áö ¸¦ °áÁ¤ÇÑ´Ù. IP ÆÐŶÀ» Àü¼ÛÇÒ ¶§ ¸¹Àº ¼±ÅÃÀ» ÇÒ ¼ö ÀÖ´Ù. ¸ñÀûÁö¿¡ °á±¹ µµÂøÇÒ ¼ö ÀÖÀ»±î? ¸¸¾à µµÂøÇÒ ¼ö ÀÖ´Ù¸é, Àü¼ÛÇϴµ¥ ¾î¶² ³×Æ® ¿öÅ© ÀåÄ¡¸¦ »ç¿ëÇÒ °ÍÀΰ¡? ¸ñÀûÁö¿¡ µµÂøÇϴµ¥ »ç¿ëÇÒ ¼ö ÀÖ´Â ³×Æ® ¿öÅ© ÀåÄ¡°¡ Çϳª ÀÌ»ó ÀÖ´Ù¸é, ¾î¶² °ÍÀÌ ´õ ÁÁÀº °ÍÀΰ¡? IP ¶ó¿ìÆà µ¥ÀÌÅͺ£À̽º´Â À̵é Áú¹®¿¡ ´ë´äÇÒ ¼ö ÀÖ´Â Á¤º¸¸¦ °ü¸®ÇÑ´Ù. ¿©±â¿¡ µÎ°¡Áö µ¥ÀÌÅͺ£À̽º°¡ Àִµ¥, °¡Àå Áß¿äÇÑ °ÍÀº Àü´Þ Á¤º¸ µ¥ÀÌÅÍ º£À̽º(Forwarding Information Database)ÀÌ´Ù. ÀÌ°ÍÀº IP ÁÖ¼Ò¿Í °¡Àå ÁÁÀº ±æ¿¡ ´ëÇؼ­ ¾Ë·ÁÁø °ÍµéÀÇ ¼Ò¸ðÀûÀÎ ¸ñ·ÏÀÌ´Ù. IP ¸ñÀûÁö·ÎÀÇ ±æÀ» »¡¸® ã±â À§ÇØ, ´õ ÀÛ°í ´õ ºü¸¥ µ¥ÀÌÅͺ£À̽ºÀÎ ·çÆ® ij½Ã(route cache) °¡ »ç¿ëµÈ´Ù. ´Ù¸¥ ¸ðµç ij½Ãó·³ ÀÌ´Â ÀÚÁÖ Á¢±ÙÇÏ´Â ±æµé¿¡ ´ëÇؼ­¸¸ °¡Áö°í ÀÖ¾î¾ß ÇÑ´Ù; ÀÌ°ÍÀÇ ³»¿ëÀº Àü´Þ Á¤º¸ µ¥ÀÌÅͺ£À̽º¿¡¼­ °¡Á®¿Â °ÍÀÌ´Ù. ·çÆ®´Â BSD ¼ÒÄÏ ÀÎÅÍÆäÀ̽º·Î IOCTL ¿ä±¸¸¦ º¸³¿À¸·Î½á Ãß°¡µÇ°Å³ª »èÁ¦ µÈ´Ù. À̵éÀº ÇÁ·ÎÅäÄÝ¿¡¼­ ÇÁ·Î¼¼½º·Î Àü´ÞµÈ´Ù. INET ÇÁ·ÎÅäÄÝ °èÃþÀº IP ·çÆ®¸¦ Ãß°¡Çϰųª »èÁ¦Çϴµ¥ ½´ÆÛÀ¯Àú ±ÇȯÀ» °¡Áø ÇÁ·Î¼¼½º¸¸À» Çã°¡ÇÑ´Ù. ÀÌµé ·çÆ®µéÀº °íÁ¤µÉ ¼öµµ ÀÖ°í, ½Ã°£ÀÌ Áö³ª¸é¼­ µ¿ÀûÀ¸·Î º¯ÇÒ ¼öµµ ÀÖ´Ù. ´ëºÎºÐÀÇ ½Ã½ºÅÛÀº ¶ó¿ìÅÍ°¡ ¾Æ´Ï¶ó¸é °íÁ¤µÈ ·çÆ®¸¦ »ç¿ëÇÑ´Ù. ¶ó¿ìÅÍ´Â Áö¼ÓÀûÀ¸·Î ¸ðµç ¾Ë·ÁÁø IP ¸ñÀûÁö·Î °¡´Â ±æµéÀÇ À¯È¿¼ºÀ» °Ë»çÇÏ´Â ¶ó¿ìÆà ÇÁ·ÎÅäÄÝÀ» ½ÇÇàÇÑ´Ù. ¶ó¿ìÅÍ°¡ ¾Æ´Ñ ½Ã½ºÅÛµé Àº ´Ü¸» ½Ã½ºÅÛÀ̶ó°í ÇÑ´Ù. ¶ó¿ìÆà ÇÁ·ÎÅäÄÝÀº GATED°°Àº µ¥¸óÀ¸·Î ±¸Çö µÇ¾î ÀÖÀ¸¸ç, ¸¶Âù°¡Áö·Î IOCTL BSD ¼ÒÄÏ ÀÎÅÍÆäÀ̽º¸¦ ÅëÇÏ¿© ·çÆ®¸¦ Ãß°¡Çϰųª »èÁ¦ÇÑ´Ù. 10.7.1 ·çÆ® ij½Ã(Route Cache) IP ·çÆ®¸¦ Á¶È¸Çϸé ÀÏÄ¡ÇÏ´Â ·çÆ®¸¦ ã±â À§ÇØ ·çÆ® ij½Ã¸¦ ¸ÕÀú °Ë»ç ÇÑ´Ù. ·çÆ® ij½Ã¿¡ ÀÏÄ¡ÇÏ´Â ·çÆ®°¡ ¾ø´Ù¸é Àü´Þ Á¤º¸ µ¥ÀÌÅͺ£À̽º¿¡¼­ ·çÆ®¸¦ ã´Â´Ù. ¸¸¾à ¾Æ¹«·± ·çÆ®µµ ãÀ» ¼ö ¾ø´Ù¸é, IP ÆÐŶÀº Àü¼Û¿¡ ½ÇÆÐÇÏ°í À̸¦ ÀÀ¿ëÇÁ·Î±×·¥¿¡ ¾Ë¸°´Ù. ¸¸¾à ·çÆ®°¡ Àü´Þ Á¤º¸ µ¥ÀÌÅͺ£À̽º¿¡ ÀÖ°í ·çÆ® ij½Ã¿¡ ¾ø´Ù¸é, ÀÌ ·çÆ® ¿¡ ÇØ´çÇÏ´Â »õ ¿£Æ®¸®¸¦ ¸¸µé¾î ·çÆ® ij½Ã¿¡ Ãß°¡ÇÑ´Ù. ·çÆ® ij½Ã´Â rtable ÀڷᱸÁ¶ÀÇ ¿¬°á°í¸®¿¡ ´ëÇÑ Æ÷ÀÎÅ͸¦ °¡Áö°í ÀÖ´Â Å×À̺í (ip_rt_hash_table)ÀÌ´Ù. ·çÆ® Å×ÀÌºí¿¡¼­ÀÇ À妽º´Â IP ÁÖ¼ÒÀÇ ÇÏ´Ü µÎ ¹ÙÀÌÆ®¿¡ ±â¹ÝÇÑ ÇؽÃÇÔ¼öÀÌ´Ù. ÀÌµé µÎ ¹ÙÀÌÆ®´Â ¸ñÀûÁö¸¶´Ù °¡Àå ´Þ¶ó¼­ ÇؽðªÀ» °¡Àå Àß ºÐ»ê½ÃÄÑ ÁÙ ¼ö ÀÖ´Â °ÍÀÌ´Ù. °¢ rtable ¿£Æ®¸®´Â ·çÆ® ¿¡ ´ëÇÑ Á¤º¸ - ¸ñÀû IP ÁÖ¼Ò¿Í ÀÌ IP ÁÖ¼Ò¿¡ µµ´ÞÇϴµ¥ »ç¿ëÇÒ ³×Æ®¿öÅ© device, »ç¿ëÇÒ ¼ö ÀÖ´Â ¸Þ½ÃÁöÀÇ ÃÖ´ë Å©±â µîµî - ¸¦ °¡Áö°í ÀÖ´Ù. ÀÌ´Â ¶ÇÇÑ ÂüÁ¶È½¼öµµ °¡Áö°í Àִµ¥, ÀÌ´Â »ç¿ëȽ¼ö¿Í ÀÌ°ÍÀÌ »ç¿ëµÈ ¸¶Áö¸· ½Ã°£ÀÇ Å¸ÀÓ½ºÅÆÇÁ¸¦ °¡Áö°í ÀÖ´Ù (jiffies °ªÀ¸·Î). ÂüÁ¶È½¼ö´Â ÀÌ ·çÆ® °¡ »ç¿ëµÉ ¶§¸¶´Ù Áõ°¡ÇÏ¿©, ÀÌ ·çÆ®¸¦ »ç¿ëÇÏ´Â ³×Æ®¿öÅ© ¿¬°áÀÇ ¼ýÀÚ¸¦ º¸¿©ÁØ´Ù. ÀÌ´Â ÀÀ¿ëÇÁ·Î±×·¥ÀÌ ÀÌ ·çÆ®¸¦ »ç¿ëÇϱ⸦ ±×¸¸µÎ¸é °¨¼ÒÇÑ´Ù. »ç¿ëȽ¼ö ´Â ÀÌ ·çÆ®¸¦ ã¾ÒÀ» ¶§¸¶´Ù Áõ°¡Çϸç, rtable Çؽà °í¸®¿¡¼­ ÀÌ ¿£Æ®¸®ÀÇ ¼ø¼­¸¦ °áÁ¤Çϴµ¥ »ç¿ëµÈ´Ù. ·çÆ® ij½Ã¿¡ ÀÖ´Â ¸ðµç ¿£Æ®¸®¿¡ ÀÖ´Â ¸¶Áö ¸· »ç¿ëÇÑ Å¸ÀÓ½ºÅÆÇÁ¸¦ Á¤±âÀûÀ¸·Î °Ë»çÇÏ¿© rtableÀÌ ³Ê¹« ¿À·¡µÇÁö ¾Ê¾Ò´ÂÁö »ìÇÉ´Ù. ¸¸¾à ·çÆ®°¡ ÃÖ±Ù¿¡ »ç¿ëµÇÁö ¾Ê¾Ò´Ù¸é ·çÆ® ij½Ã¿¡¼­ ºüÁö°Ô µÈ´Ù. ¸¸¾à ·çÆ®°¡ ·çÆ® ij½Ã¿¡ ÀÖ´Ù¸é, ÀÌ ·çÆ®´Â °¡Àå ¸¹ÀÌ »ç¿ë ÇÑ ¿£Æ®¸®°¡ Çؽà °í¸®ÀÇ ¸Ç ¾Õ¿¡ ¿Àµµ·Ï ¹èÄ¡µÈ´Ù. ÀÌ´Â ·çÆ®¸¦ Á¶È¸ÇÒ ¶§ »¡¸® ã°Ô µÈ´Ù´Â °ÍÀ» ÀǹÌÇÑ´Ù. 10.7.2 Àü´Þ Á¤º¸ µ¥ÀÌÅͺ£À̽º(Forwarding Information Database) Àü´Þ Á¤º¸ µ¥ÀÌÅͺ£À̽º(±×¸² 10.5¿¡¼­ º¸¿©ÁÖ°í ÀÖ´Ù)´Â ¾î¶² ½Ã°£¿¡ ½Ã½ºÅÛ¿¡¼­ »ç¿ëÇÒ ¼ö ÀÖ´Â ·çÆ®µéÀ» IP °üÁ¡¿¡¼­ °¡Áö°í ÀÖ´Ù. ÀÌ´Â ¸Å¿ì º¹ÀâÇÑ ÀڷᱸÁ¶À̸ç, »ó´çÈ÷ È¿°úÀûÀ¸·Î ¹èÄ¡µÇ¾î ÀÖÁö¸¸, Âü°íÇϱ⿡ ºü¸¥ µ¥ÀÌÅͺ£À̽º´Â ¾Æ´Ï´Ù. ƯÈ÷, Àü¼ÛÇÏ´Â ¸ðµç IP ÆÐŶ¸¶´Ù ¸ñÀûÁö¸¦ ÀÌ µ¥ÀÌÅͺ£À̽º¿¡¼­ ã°Ô µÈ´Ù¸é ¸Å¿ì ´À¸± °ÍÀÌ´Ù. ÀÌ´Â ·çÆ® ij½Ã°¡ ÀÖ´Â ÀÌÀ¯À̱⵵ ÇÏ´Ù - ¾Ë°í ÀÖ´Â ÁÁÀº ·çÆ®¸¦ »ç¿ëÇÏ¿© IP ÆÐŶ Àü¼Û ÇÏ´Â °ÍÀ» ´õ ºü¸£°Ô Çϱâ. ·çÆ® ij½Ã´Â Àü´Þ Á¤º¸ µ¥ÀÌÅͺ£À̽º¿¡¼­ ÆÄ»ý µÈ °ÍÀ¸·Î ÀÚÁÖ »ç¿ëÇÏ´Â ¿£Æ®¸®µéÀ» ´ëÇ¥ÇÑ´Ù. °¢ IP ¼­ºê³ÝÀº fib_zone ÀڷᱸÁ¶·Î Ç¥ÇöÇÑ´Ù. ÀÌµé ¸ðµÎ´Â fib_zones Çؽà Å×ÀÌºí¿¡¼­ °¡¸®Å°°í ÀÖ´Ù. Çؽà À妽º´Â IP ¼­ºê³Ý ¸Å½ºÅ©¿¡¼­ ¸¸µé¾îÁø´Ù. ¶È°°Àº ¼­ºê³ÝÀ¸·ÎÀÇ ¸ðµç ·çÆ®µéÀº fib_nodeÀÇ ½ÖÀ¸·Î ³ªÅ¸³»Áö¸ç, fib_info ÀڷᱸÁ¶´Â °¢ fib_zone ÀڷᱸÁ¶ÀÇ fz_list·Î Å¥µÈ´Ù. ¸¸¾à ÀÌ ¼­ºê³Ý¿¡ ÀÖ´Â ·çÆ®ÀÇ ¼ýÀÚ°¡ Ä¿Áö¸é, fib_node ÀڷᱸÁ¶ ¸¦ ½±°Ô ã±â À§ÇØ ÇؽÃÅ×À̺íÀÌ ¸¸µé¾îÁø´Ù. fib_zones +-------+ | | +-------+ fib_zone | | +-------------+ +-------+ +-->|fz_next | fib_node | | | +-------------+ +----------+ +-------+ | |fz_hash_table|--+ +-->|fib_next | | | | +-------------+ | | +----------+ | | | |fz_list | | | |fib_dst | | | | +-------------+ | | +----------+ +-------+ | |fz_nent | | | |fib_use | fib_info | |--+ +-------------+ | | +----------+ +-----------+ +-------+ |fz_logmask | | | |fib_info |-->|fib_next | | | +-------------+ | | +----------+ +-----------+ | | |fz_mask | | | |fib_metric| |fib_prev | | | +-------------+ | | +----------+ +-----------+ | | | | |fib_tos | |fib_gateway| | | +--------------------+ | +----------+ +-----------+ +-------+ | | |fib_dev | | | | +-------+ | +-----------+ +-------+ +-->| | | |fib_refcnt | | | +-------+ | +-----------+ +-------+ | | | |fib_window | +-------+ | +-----------+ | | | |fib_flags | +-------+ | +-----------+ | | | |fib_mtu | | | | +-----------+ | | | |fib_irtt | +-------+ | +-----------+ | |-----------+ +-------+ | | | | fib_node +-------+ +----------+ | |-------------->|fib_next | +-------+ +----------+ | | |fib_dst | | | +----------+ | | |fib_use | fib_info +-------+ +----------+ +-----------+ | | |fib_info |-->|fib_next | +-------+ +----------+ +-----------+ | | |fib_metric| |fib_prev | +-------+ +----------+ +-----------+ |fib_tos | |fib_gateway| +----------+ +-----------+ |fib_dev | +-----------+ |fib_refcnt | +-----------+ |fib_window | +-----------+ |fib_flags | +-----------+ |fib_mtu | +-----------+ |fib_irtt | +-----------+ ±×¸² 10.5 : The Forwarding Information Database ¶È°°Àº IP ¼­ºê³Ý¿¡ ¿©·¯°³ÀÇ ·çÆ®°¡ ÀÖÀ» ¼ö ÀÖÀ¸¸ç, ÀÌµé ·çÆ®µéÀº ¿©·¯ °ÔÀÌÆ®¿þÀÌ ÁßÀÇ Çϳª¸¦ ÅëÇÏ°Ô µÈ´Ù. IP ¶ó¿ìÆà °èÃþÀº ¶È°°Àº °ÔÀÌÆ® ¿þÀ̸¦ »ç¿ëÇÏ¿© ÇϳªÀÇ ¼­ºê³ÝÀ¸·Î ¿©·¯ °³ÀÇ ·çÆ®°¡ ÀÖ´Â °ÍÀ» Çã°¡ÇÏÁö ¾Ê´Â´Ù. ´Ù¸£°Ô ¸»Çϸé, ¼­ºê³ÝÀ¸·Î °¡´Â ·çÆ®°¡ ¿©·¯ °³°¡ ÀÖ´Ù¸é, °¢ ·çÆ®´Â ´Ù¸¥ °ÔÀÌÆ®¿þÀ̸¦ »ç¿ëÇϵµ·Ï ÇÏ¿©¾ß ÇÑ ´Ù´Â °ÍÀÌ´Ù. °¢ ·çÆ®¿Í ¿¬°üµÇ¾î ÀÖ´Â °ÍÀº ±×°ÍÀÇ °Å¸®(metric)ÀÌ´Ù. ÀÌ°ÍÀº ÀÌ °æ·Î°¡ ¾ó¸¶³ª À¯¸®ÇÑÁö¸¦ ÃøÁ¤ÇÏ°Ô ÇÏ´Â °ÍÀÌ´Ù. ÇÑ ·çÆ®ÀÇ °Å¸®´Â º»ÁúÀûÀ¸·Î ¸ñÀûÇÏ´Â ¼­ºê³Ý¿¡ µµÂøÇϱâ±îÁö °ÅÃÄ¾ß ÇÏ´Â IP ¼­ºê³ÝÀÇ ¼öÀÌ´Ù. ÀÌ °ªÀÌ ´õ Ŭ ¼ö·Ï ´õ ÁÁÁö ¾ÊÀº ·çÆ®ÀÌ´Ù. ¹ø¿ª : ±è¼º·æ, ÀÌÈ£, È«°æ¼± Á¤¸® : ½É¸¶·Î, ÀÌÈ£ ===================================================================== 11Àå Ä¿³Î ¸ÞÄ¿´ÏÁò (Kernel Mechanism) <<ÀÌ Àå¿¡¼­´Â Ä¿³ÎÀÇ ¿©·¯ ºÎºÐµéÀÌ ÇÔ²² È¿°úÀûÀ¸·Î µ¿ÀÛÇÒ ¼ö ÀÖµµ·Ï ¸®´ª½º Ä¿³ÎÀÌ Á¦°øÇÏ´Â ¸î°¡Áö ÀϹÝÀûÀÎ ÀÛ¾÷°ú ¸ÞÄ¿´ÏÁò¿¡ ´ëÇؼ­ ¼³¸íÇÑ´Ù.>> 11.1 ÇϹݺΠó¸®(Bottom Half Handling) Ä¿³Î¿¡¼­´Â Á¾Á¾ ²À ±× ½ÃÁ¡¿¡¼­ ÀÏÀ» ó¸®ÇÏ±æ ¹Ù¶óÁö ¾Ê´Â °æ¿ì°¡ ÀÖ´Ù. ÀÌÀÇ ´ëÇ¥ÀûÀÎ ¿¹·Î ÀÎÅÍ·´Æ®¸¦ ó¸®ÇÏ´Â µµÁßÀÌ´Ù. ÀÎÅÍ·´Æ®°¡ ¹ß»ýÇßÀ» ¶§ ÇÁ·Î¼¼¼­´Â ÀÚ½ÅÀÌ ÇÏ´ø ÀÏÀ» ÁßÁöÇÏ°í ¿î¿µÃ¼Á¦´Â ÀÎÅÍ·´Æ®¸¦ ÇØ´ç ÇÏ´Â µð¹ÙÀ̽º µå¶óÀ̹ö¿¡°Ô Àü´ÞÇÑ´Ù. ÀÎÅÍ·´Æ®¸¦ ó¸®ÇÏ´Â µ¿¾È¿¡´Â ½Ã½ºÅÛÀÇ ´Ù¸¥ ºÎºÐÀ» ½ÇÇàÇÒ ¼ö ¾øÀ¸¹Ç·Î, µð¹ÙÀ̽º µå¶óÀ̹ö´Â ÀÎÅÍ·´Æ® 󸮿¡ ³Ê¹« ¸¹Àº ½Ã°£À» º¸³»¸é ¾ÈµÈ´Ù. ¿©±â¿¡´Â ´çÀåÀÌ ¾Æ´Ï¶ó ³ªÁß¿¡ ó¸®Çصµ µÇ´Â ÀϵéÀÌ Á¾Á¾ ÀÖ´Ù. ¸®´ª½ºÀÇ ÇϹݺΠÇڵ鷯(bottom half handler) ´Â µð¹ÙÀ̽º µå¶óÀ̹ö³ª ¸®´ª½º Ä¿³ÎÀÇ ´Ù¸¥ ºÎºÐµéÀÌ, ÇÒ ÀÏÀ» ³ªÁß¿¡ ½ÇÇàµÇ´Â Å¥¿¡ ³ÖÀ» ¼ö ÀÖµµ·Ï Çϱâ À§ÇØ °³¹ßµÇ¾ú´Ù. ±×¸² 11.1 Àº ÇϹݺΠó¸®¿Í °ü·ÃµÈ Ä¿³ÎÀÇ ÀڷᱸÁ¶¸¦ º¸¿©ÁØ´Ù. ¸ðµÎ 32°³±îÁöÀÇ ¼­·Î ´Ù¸¥ ÇϹݺΠÇڵ鷯°¡ ÀÖÀ» ¼ö ÀÖ´Ù . bh_base´Â Ä¿³ÎÀÇ ÇϹݺΠÇڵ鷯 ·çƾÀ» °¡¸®Å°°í ÀÖ´Â Æ÷ÀÎÅ͵éÀÇ º¤ÅÍÀÌ´Ù. bh_mask¿Í bh_active´Â ¾î¶² Çڵ鷯°¡ ¼³Ä¡µÇ¾î ÀÖ°í ¾×Ƽºê ÇÑ Áö ³ªÅ¸ ³»´Â ºñÆ®µéÀÇ ÁýÇÕÀÌ´Ù. bh_maskÀÇ ºñÆ® NÀÌ ¼³Á¤µÇ¾î ÀÖ´Ù¸é bh_base ÀÇ N¹ø°¿¡ ÇϹݺΠ·çƾÀÌ ´ã°Ü ÀÖ´Â °ÍÀÌ´Ù. bh_activeÀÇ N¹ø° ºñÆ®°¡ ¼³Á¤µÇ¾î ÀÖÀ¸¸é, ½ºÄÉÁì·¯°¡ °¡´ÉÇÏ´Ù°í ÆÇ´ÜÇÒ ¶§ N¹ø° ÇϹݺΠÇڵ鷯 ·çƾÀ» µÇµµ·Ï »¡¸® ºÒ·¯ÁÖ¾î¾ß ÇÑ´Ù´Â °ÍÀÌ´Ù. À̵é À妽ºµéÀº Á¤ÀûÀ¸·Î Á¤ÀÇµÈ °ÍÀÌ´Ù. ŸÀÌ¸Ó ÇϹݺΠÇڵ鷯´Â °¡Àå ³ôÀº ¿ì¼±¼øÀ§¸¦ °¡Áö¸ç (À妽º 0), ÄÜ¼Ö ÇϹݺΠÇڵ鷯´Â ´ÙÀ½ ¿ì¼±¼øÀ§(À妽º 1)¸¦ °¡Áø´Ù. ÀϹÝÀûÀ¸·Î ÇϹݺΠÇڵ鷯 ·çƾµéÀº ÀڽŰú ¿¬°áµÈ ÀÛ¾÷µéÀÇ ¸ñ·ÏÀ» °¡Áö °í ÀÖ´Ù. ¿¹¸¦ µé¾î, Áï½Ã½ÇÇà(immediate) ÇϹݺΠÇڵ鷯´Â ¹Ù·Î ¼öÇàÇØ¾ß ÇÏ´Â ÀÛ¾÷µéÀÇ ¸ñ·ÏÀÎ Áï½Ã½ÇÇà ÀÛ¾÷ Å¥(tq_immediate)¸¦ °¡Áö°í µ¿ÀÛ ÇÑ´Ù. Ä¿³ÎÀÇ ÇϹݺΠÇڵ鷯 Áß¿¡ ¾î¶² °ÍµéÀº ÀåÄ¡¿¡ °íÁ¤µÇ¾î ÀÖÁö¸¸ ´Ù¸¥ °Í µéÀº º¸´Ù ÀϹÝÀûÀ¸·Î ¾µ ¼ö ÀÖ´Ù : bh_active 31 0 bh_base +-----------------------+ +-------------+ | | 0 | |--> Bottom half handler +-----------------------+ +-------------+ (times) | | bh_mask +-------------+ 31 0 | | +-----------------------+ | | | | | | +-----------------------+ | | | | | | | | +-------------+ | | +-------------+ 31 | | +-------------+ ±×¸² 11.1 : Bottom Half Handling Data Structures TIMER : ÀÌ Çڵ鷯´Â ½Ã½ºÅÛÀÇ ÁÖ±âÀûÀ¸·Î ¹ß»ýÇϴ ŸÀÌ¸Ó ÀÎÅÍ·´Æ® °¡ ¹ß»ýÇÒ ¶§¸¶´Ù ¾×Ƽºê·Î Ç¥½Ã°¡ µÇ°í, Ä¿³ÎÀÇ Å¸ÀÌ¸Ó Å¥ ¸ÞÄ¿´Ï ÁòÀ» À§ÇØ »ç¿ëµÈ´Ù. CONSOLE : ÀÌ Çڵ鷯´Â ÄÜ¼Ö ¸Þ½ÃÁö¸¦ ó¸®Çϴµ¥ »ç¿ëµÈ´Ù. TQUEUE : ÀÌ Çڵ鷯´Â tty ¸Þ½ÃÁö¸¦ ó¸®Çϴµ¥ »ç¿ëµÈ´Ù . NET : ÀÌ Çڵ鷯´Â ÀϹÝÀûÀÎ ³×Æ®¿÷ 󸮿¡ »ç¿ëµÈ´Ù. IMMEDIATE : ÀÌ´Â ¿©·¯ µð¹ÙÀ̽º µå¶óÀ̹öµéÀÌ ³ªÁß¿¡ ½ÇÇàµÉ ÀÛ¾÷ µéÀ» ½×¾ÆµÎ´Âµ¥ »ç¿ëµÈ´Ù. µð¹ÙÀ̽º µå¶óÀ̹ö³ª Ä¿³ÎÀÇ ¾î¶² ºÎºÐÀÌ ³ªÁß¿¡ ¼öÇàµÉ ÀÛ¾÷À» ½ºÄÉÁìÇÒ ÇÊ¿ä°¡ ÀÖÀ» ¶§, À̵éÀº ÀÛ¾÷À» Àû´çÇÑ ½Ã½ºÅÛ Å¥¿¡ - ¿¹¸¦ µé¾î ŸÀÌ¸Ó Å¥°°Àº - ³Ö°í, Ä¿³Î¿¡ ÇϹݺΠÇڵ鷯°¡ ¼öÇàµÉ ÇÊ¿ä°¡ ÀÖ´Ù°í ½ÅÈ£¸¦ º¸³½´Ù. ÀÌ´Â bh_activeÀÇ ÇØ´çÇÏ´Â ºñÆ®¸¦ ¼³Á¤ÇÏ°Ô µÈ´Ù. ¸¸¾à µå¶óÀ̹ö °¡ ¾î¶² ÀÏÀ» Áï½Ã½ÇÇà Å¥¿¡ ³Ö°í ÀÌ Áï½Ã½ÇÇà ÇϹݺΠÇڵ鷯°¡ ½ÇÇàµÇ¾î À̸¦ ó¸®ÇÏ±æ ¹Ù¶õ´Ù¸é 8¹ø ºñÆ®¸¦ ¼³Á¤ÇÒ °ÍÀÌ´Ù. °¢ ½Ã½ºÅÛ ÄÝÀÌ ³¡³ª ¼­ Á¦¾î±ÇÀÌ À̸¦ ºÎ¸¥ ÇÁ·Î¼¼½º·Î µ¹¾Æ°¡±â ¹Ù·ÎÀü¿¡ bh_active ºñÆ® ¸¶½ºÅ©¸¦ °Ë»çÇϸç, ¸¸¾à ¾î¶² ºñÆ®°¡ ¼³Á¤µÇ¾î ÀÖÀ¸¸é, ¾×Ƽºê·Î Ç¥½ÃµÈ ÇϹݺΠÇڵ鷯 ·çƾµéÀÌ ºÒ¸°´Ù. ºñÆ® 0À» ¸ÕÀú °Ë»çÇÏ°í, 1¹øÀ» ´ÙÀ½¿¡, ÀÌ·± ½ÄÀ¸·Î 31¹ø ºñÆ®±îÁö °Ë»ç ÇÑ´Ù. °¢ ÇϹݺΠÇڵ鷯 ·çƾÀ» ºÎ¸£°í ³­ ÈÄ¿¡ bh_activeÀÇ ÇØ´ç ºñÆ®´Â 0À¸·Î ¼³Á¤µÈ´Ù. bh_active´Â ÀϽÃÀûÀÎ °ÍÀÌ´Ù. ÀÌ´Â ´Ü½Ã ½ºÄÉÁì·¯ È£Ãâ »çÀÌ¿¡¸¸ Àǹ̰¡ ÀÖÀ¸¸ç, ÇϹݺΠÇڵ鷯¿¡¼­ ´õÀÌ»ó ÇÒ ÀÏÀÌ ¾øÀ» ¶§ À̵éÀ» ºÎ¸£Áö ¾Ê°Ô ÇÏ´Â ¹æ¹ýÀÌ´Ù. tq_struct tq_struct task queue +---------------+ +---------------+ ------------>| next |----->| next |-----> +---------------+ +---------------+ | sync | | sync | +---------------+ +---------------+ | *routine() | | *routine() | +---------------+ +---------------+ | *data | | *data | +---------------+ +---------------+ ±×¸² 11.2 : A Task Queue 11.2 ÀÛ¾÷Å¥(Task Queue) ÀÛ¾÷Å¥´Â Ä¿³ÎÀÌ ÀÛ¾÷À» ³ªÁßÀ¸·Î ¹Ì·ç´Âµ¥ »ç¿ëÇÏ´Â ¹æ¹ýÀÌ´Ù. ¸®´ª½º´Â ÀÛ¾÷À» Å¥¿¡ ½×¾ÆµÎ°í À̸¦ ³ªÁß¿¡ ó¸®ÇÒ ¼ö ÀÖµµ·Ï ÇÏ´Â ÀϹÝÀûÀÎ ¸ÞÄ¿ ´ÏÁòÀ» °¡Áö°í ÀÖ´Ù. ÀÛ¾÷Å¥´Â Á¾Á¾ ÇϹݺΠÇڵ鷯¿Í ¿¬°áµÇ¾î ¾²À̱⵵ ÇÑ´Ù. ŸÀÌ¸Ó ÀÛ¾÷Å¥´Â ŸÀÌ¸Ó ÇϹݺΠÇڵ鷯°¡ ½ÇÇàµÉ ¶§ 󸮵ȴÙ. ÀÛ¾÷Å¥´Â ±×¸² 11.2¿¡¼­ º¸´Â °Í°ú °°ÀÌ, ÇÔ¼öÀÇ ÁÖ¼Ò¿Í ´Ù¸¥ µ¥ÀÌÅ͸¦ °¡¸®Å°´Â Æ÷ÀÎÅ͸¦ °¡Áø tq_struct ÀڷᱸÁ¶ÀÇ ´ÜÀÏ ¿¬°á ¸®½ºÆ®·Î ÀÌ·ç¾î Áø ¾ÆÁÖ °£´ÜÇÑ ÀڷᱸÁ¶ÀÌ´Ù. ÀÛ¾÷Å¥¿¡ ÀÖ´Â ÇÑ ¿ø¼Ò°¡ 󸮰¡ µÉ ¶§ µ¥ÀÌÅÍ Æ÷ÀÎÅÍ¿Í ÇÔ²² ¿©±â¿¡ ÁöÁ¤µÈ ÇÔ¼ö°¡ ºÒ¸°´Ù. Ä¿³Î¿¡ ÀÖ´Â ¾î¶² °ÍÀ̵ç (¿¹¸¦ µé¾î µð¹ÙÀ̽º µå¶óÀ̹ö°°Àº) ÀÛ¾÷Å¥¸¦ ¸¸µé°í »ç¿ëÇÒ ¼ö ÀÖÁö¸¸, ½ÇÁ¦·Î Ä¿³ÎÀÌ ¸¸µé°í °ü¸®ÇÏ´Â ÀÛ¾÷Å¥·Î´Â ´ÙÀ½ ¼¼°¡Áö°¡ ÀÖ´Ù . ŸÀ̸Ó(timer) : ÀÌ Å¥´Â ´ÙÀ½ ½Ã½ºÅÛ Å¬·° ƽÀÌ ¹ß»ýÇÏ¿´À» ¶§ °¡´É ÇÑ »¡¸® 󸮵Ǿî¾ß ÇÏ´Â ÀϵéÀ» Å¥¿¡ ³Ö±â À§Çؼ­ »ç¿ëµÈ´Ù. °¢ Ŭ·° ƽÀÌ ¹ß»ýÇÒ ¶§¸¶´Ù ¿©±â¿¡ ¹«¾ð°¡ ÀÖ´ÂÁö °Ë»çÇϸç, ÀÌ Å¥¿¡ ¹«¾ð°¡ ÀÖ´Ù¸é ŸÀÌ¸Ó Å¥ ÇϹݺΠÇڵ鷯 °¡ ¾×Ƽºê »óÅ·Π¹Ù²î°Ô µÈ´Ù. ŸÀÌ¸Ó Å¥ ÇϹݺΠÇڵ鷯 ¿ª½Ã ´Ù¸¥ ÇϹݺΠÇڵ鷯¿Í ¸¶Âù°¡Áö·Î ½ºÄÉÁì·¯°¡ ´ÙÀ½¿¡ ½ÇÇàµÉ ¶§ 󸮰¡ µÈ´Ù. ÀÌ Å¥´Â ÈξÀ º¹ÀâÇÑ ±¸Á¶¸¦ °¡Áö°í ÀÖ´Â ½Ã½ºÅÛ Å¸À̸ÓÇÏ°í È¥µ¿ÇÏÁö ¸»¾Æ ¾ß ÇÑ´Ù . Áï½Ã½ÇÇà(immediate) : ÀÌ Å¥ ¿ª½Ã ½ºÄÉÁì·¯°¡ ¾×Ƽºê ÇϹݺΠÇڵ鷯 ¸¦ ó¸®ÇÒ ¶§ °°ÀÌ Ã³¸® µÈ´Ù. Áï½Ã½ÇÇà ÇϹݺΠÇڵ鷯´Â ŸÀÌ¸Ó Å¥ ÇϹݺΠÇڵ鷯º¸´Ù ¿ì¼±¼øÀ§°¡ ³·À¸¹Ç·Î À̺¸´Ù´Â ´õ ´Ê°Ô ½ÇÇà ÀÌ µÈ´Ù. time_table timer_struct +-------------+ +------------+ 0 | |--------->| expires | +-------------+ +------------+ | | | *fn() | +-------------+ +------------+ | | | | timer_struct +-------------+ +------------+ | |--------->| expires | +-------------+ +------------+ | | | *fn() | | | +------------+ | | +-------------+ | | 31 timer_active 0 +-------------+ +-------------------------+ 31 | | | | +-------------+ +-------------------------+ timer_head timer_list timer_list +-------------+ +-------------+ +-------------+ | next |------>| next |------>| next | +-------------+ +-------------+ +-------------+ | prev |<------| prev |<------| prev | +-------------+ +-------------+ +-------------+ | expries | | expries | | expries | +-------------+ +-------------+ +-------------+ | data | | data | | data | +-------------+ +-------------+ +-------------+ | *function() | | *function() | | *function() | +-------------+ +-------------+ +-------------+ ±×¸² 11.3 : System Timers ½ºÄÉÁì·¯(scheduler) : ÀÌ Å¥´Â ½ºÄÉÁì·¯¿¡ ÀÇÇØ Á÷Á¢ 󸮵ȴÙ. ÀÌ´Â ½Ã½ºÅÛ¿¡ ÀÖ´Â ´Ù¸¥ ÀÛ¾÷Å¥¸¦ Áö¿øÇϱâ À§Çؼ­ »ç¿ëµÇ¸ç, ÀÌ °æ¿ì ½ÇÇàµÇ´Â ÀÛ¾÷Àº µð¹ÙÀ̽º µå¶óÀ̹ö°°Àº °ÍµéÀ» À§ÇÑ ÀÛ¾÷Å¥ ¸¦ ó¸®ÇÏ´Â ·çƾÀÏ °ÍÀÌ´Ù. ÀÛ¾÷Å¥°¡ 󸮵Ǹé Å¥¿¡ Àִ ù¹ø° ¿ø¼Ò¿¡ ´ëÇÑ Æ÷ÀÎÅʹ ť¿¡¼­ Á¦°Å µÇ¾î null Æ÷ÀÎÅÍ·Î ¹Ù²ï´Ù. »ç½Ç, ÀÌ Á¦°ÅÇÏ´Â °úÁ¤Àº ÇϳªÀÇ ÂÉ°³Áú ¼ö ¾ø´Â ¿¬»êÀ¸·Î 󸮵Ǹç, Áß´ÜµÉ ¼ö ¾ø´Â °ÍÀÌ´Ù. ÀÌ·¸°Ô Å¥¿¡ ÀÖ´Â °¢°¢ ÀÇ ¿ø¼Òµé¿¡ µî·ÏµÈ ó¸® ·çƾµéÀÌ Â÷·Ê·Î È£ÃâÀÌ µÈ´Ù. Å¥¿¡ ÀÖ´Â °¢ ¿ø¼Ò´Â Á¾Á¾ Á¤ÀûÀ¸·Î µ¥ÀÌÅ͸¦ ÇÒ´ç¹Þ±âµµ ÇÑ´Ù. ±×·±µ¥ ¿©±â¿¡´Â ÇÒ´çµÈ ¸Þ¸ð¸®¸¦ ¾Ë¾Æ¼­ ÇØÁ¦ÇÏ´Â ¸ÞÄ¿´ÏÁòÀÌ º»·¡ Æ÷ÇԵǾî ÀÖÁö ¾Ê´Ù. ÀÛ¾÷Å¥¸¦ ó¸®ÇÏ´Â ·çƾÀº ´ÜÁö ¸®½ºÆ®ÀÇ ´ÙÀ½ ¿ø¼Ò·Î À̵¿ÇÒ »ÓÀÌ´Ù. ÇÒ´ç¹ÞÀº Ä¿³Î ¸Þ¸ð¸®¸¦ Á¦´ë·Î ÇØÁ¦ÇÏ´Â °ÍÀº Å¥¿¡ ÀÖ´ø ÀÛ¾÷ÀÌ ÇØ¾ß ÇÒ ÀÏÀÌ´Ù. 11.3 ŸÀ̸Ó(Timer) ¿î¿µÃ¼Á¦´Â ¹Ì·¡ÀÇ ¾î¶² ½Ã°£¿¡ ÇؾßÇÒ ÇൿµéÀ» ½ºÄÉÁìÇÒ ¼ö ÀÖ´Â ´É·ÂÀ» ÇÊ¿ä·Î ÇÑ´Ù. À̵é ÇൿµéÀ» »ó´ë½Ã°£À¸·Î Á¤È®ÇÏ°Ô ¾ó¸¶°£ÀÇ ½Ã°£ ÈÄ¿¡ ½ÇÇàÇϵµ·Ï ½ºÄÉÁìÇϱâ À§ÇÑ ¸ÞÄ¿´ÏÁòÀÌ ÇÊ¿äÇÏ´Ù. ¿î¿µÃ¼Á¦¸¦ Áö¿øÇϱ⠸¦ ¹Ù¶ó´Â ¸¶ÀÌÅ©·ÎÇÁ·Î¼¼¼­µéÀº, ¹Ýµå½Ã Á¤±âÀûÀ¸·Î ÇÁ·Î¼¼¼­¿¡°Ô ÀÎÅÍ ·´Æ®¸¦ ¹ß»ýÇÏ´Â ÇÁ·Î±×·¡¹Ö °¡´ÉÇÑ °£°Ý ŸÀ̸Ó(interval timer)¸¦ °¡Áö°í ÀÖ¾î¾ß ÇÑ´Ù. ÀÌ·¸°Ô Á¤±âÀûÀ¸·Î ¹ß»ýÇÏ´Â ÀÎÅÍ·´Æ®¸¦ ½Ã½ºÅÛ Å¬·° ƽ(clock tick)À̶ó°í Çϸç, ÀÌ´Â ½Ã½ºÅÛÀÇ ÇൿµéÀ» °áÁý½ÃÅ°´Â ¸ÞÆ®·Î³ð °ú ºñ½ÁÇÑ ÀÏÀ» ÇÏ´Â °ÍÀÌ´Ù. ¸®´ª½º´Â ÇöÀç ½Ã°£À» ¾ÆÁÖ ´Ü¼øÇÏ°Ô Ç¥ÇöÇÑ´Ù. ¸®´ª½º´Â ½Ã°£À» ½Ã½ºÅÛÀÌ ºÎÆÃÇÑ ¶§ºÎÅÍ ¹ß»ýÇÑ Å¬·° ƽÀÇ È½¼ö ´ÜÀ§·Î Ç¥ÇöÇÑ´Ù. ¸ðµç ½Ã½ºÅÛ ½Ã°£ Àº ÀÌ ´ÜÀ§·Î µÇ¾î ÀÖÀ¸¸ç, ÀÌ´Â jiffies¶ó°í Çϸç, ÀÌ¿Í ¶È°°Àº À̸§ÀÇ Àü¿ª º¯¼ö°¡ Á¸ÀçÇÑ´Ù . wait_queue +--------+ | *task | +--------+ | *next | +--------+ ±×¸² 11.4 : Wait Queue ¸®´ª½º´Â µÎ°¡Áö ÇüÅÂÀÇ ½Ã½ºÅÛ Å¸À̸Ӹ¦ °¡Áö°í ÀÖÀ¸¸ç, ÀÌ µÎ Å¥ÀÇ ·çƾ µéÀº ¶È°°Àº ½Ã½ºÅÛ Å¸ÀÓ¿¡ È£ÃâµÇÁö¸¸, ±¸Çö¹æ½Ä¿¡ À־ ¾à°£ÀÇ Â÷ÀÌ°¡ ÀÖ´Ù. ±×¸² 11.3Àº ÀÌ µÎ°¡Áö ¸ÞÄ¿´ÏÁòÀ» º¸¿©ÁØ´Ù. ¾ÕÀÇ °ÍÀº ¿¹ÀüÀÇ Å¸ÀÌ¸Ó ¹æ½ÄÀ¸·Î¼­, Á¤Àûº¯¼ö·Î timer_struct ÀÚ·á ±¸Á¶¿¡ ´ëÇÑ Æ÷ÀÎÅÍ 32 °³¸¦ ¹è¿­·Î °¡Áö°í ÀÖÀ¸¸ç, ¾×Ƽºê ŸÀ̸ÓÀÇ ¸¶½ºÅ©ÀÎ timer_active¸¦ °¡Áö°í ÀÖ´Ù. ŸÀ̸Ӱ¡ ŸÀÌ¸Ó Å×ÀÌºí¿¡ µé¾î°¡´Â °ÍÀº Á¤ÀûÀ¸·Î Á¤Àǵȴ٠(ÇϹݺΠÇڵ鷯 Å×À̺íÀÎ bh_base¿¡ ´õ °¡±õ´Ù ). °¢ Ç׸ñµéÀº ½Ã½ºÅÛ ÃʱâÈ­ ¶§ ´ëºÎºÐ ÀÌ Å×ÀÌºí¿¡ Ãß°¡µÈ´Ù. µÎ¹ø° ¹æ½ÄÀº ´õ »õ·Î¿î °ÍÀ¸·Î ¼­ timer_list ÀڷᱸÁ¶¸¦ ¸¸·á½Ã°£ÀÇ ¿Ã¸²¼øÀ¸·Î °¡Áö°í ÀÖ´Â ¿¬°á ¸®½ºÆ®¸¦ »ç¿ëÇÑ´Ù. ÀÌ µÎ°¡Áö ¹æ½Ä ¸ðµÎ ¸¸·á½Ã°£À» jiffies ´ÜÀ§·Î °¡Áö°í ÀÖ´Â ½Ã°£À» ÀÌ¿ë ÇϹǷÎ, 5ÃÊ ÈÄ¿¡ ½ÇÇàµÇ±æ ¹Ù¶ó´Â ŸÀ̸Ӷó¸é, 5Ãʸ¦ jiffies ´ÜÀ§·Î º¯È¯ÇÑ ÈÄ ÇöÀç ½Ã½ºÅÛ ½Ã°£¿¡ ´õÇÏ¿© ¸¸·á½Ã°£À» ½Ã½ºÅÛ ½Ã°£ÀÇ jiffies ·Î ³ªÅ¸³»¾ß ÇÑ´Ù. ¸ðµç ½Ã½ºÅÛ Å¬·° ƽ¸¶´Ù ŸÀÌ¸Ó ÇϹݺΠÇڵ鷯´Â ¾×Ƽºê·Î Ç¥½ÃµÇ°í, ´ÙÀ½¿¡ ½ºÄÉÁì·¯°¡ ½ÇÇàµÉ ¶§ ŸÀÌ¸Ó Å¥°¡ ó¸®µÉ ¼ö ÀÖµµ·Ï ÇÑ´Ù. ŸÀÌ¸Ó ÇϹݺΠÇڵ鷯´Â ÀÌ µÎ°¡Áö ¹æ½ÄÀÇ ½Ã½ºÅÛ Å¸À̸Ӹ¦ ¸ðµÎ ó¸®ÇÑ´Ù. ¿¹Àü ¹æ½ÄÀÇ ½Ã½ºÅÛ Å¸À̸ӿ¡ ´ëÇؼ­´Â timer_active ºñÆ®¸¶½ºÅ©¸¦ °Ë»çÇÏ¿© ¼³Á¤ÀÌ µÇ¾î ÀÖ´Â ºñÆ®¸¦ °Ë»çÇÏ°Ô µÈ´Ù. ¸¸¾à ÇöÀç ¾×ƼºêÇÑ Å¸À̸ÓÀÇ ¸¸·á½Ã°£ÀÌ Áö³ª¸é (¸¸·á½Ã°£ÀÌ ÇöÀç ½Ã½ºÅÛÀÇ jiffiesº¸´Ù ÀÛÀ¸¸é), ŸÀÌ¸Ó ·çƾÀÌ È£ÃâµÇ°í, ¾×Ƽºê ºñÆ®´Â Áö¿öÁö°Ô µÈ´Ù. »õ·Î¿î ¹æ½ÄÀÇ Å¸À̸ӿ¡¼­´Â, timer_list ÀڷᱸÁ¶ÀÇ ¿¬°á ¸®½ºÆ® ¿¡ ÀÖ´Â °¢ ¿ø¼Ò¸¦ °Ë»çÇÏ¿©, ¸¸·áµÈ ¸ðµç ŸÀ̸ӵéÀº ¸®½ºÆ®¿¡¼­ Á¦°Å µÇ°í, µî·ÏµÈ ÇÔ¼ö°¡ È£ÃâµÈ´Ù. »õ·Î¿î ŸÀÌ¸Ó ¹æ½ÄÀº ŸÀÌ¸Ó ·çƾ¿¡ ÀÎÀÚ¸¦ ³Ñ±æ ¼ö ÀÖ´Ù´Â ÀåÁ¡ÀÌ ÀÖ´Ù. 11.4 ´ë±âÅ¥(Wait Queue) ÇÁ·Î¼¼½º°¡ ½Ã½ºÅÛ ÀÚ¿øÀ» ±â´Ù·Á¾ß ÇÏ´Â °æ¿ì°¡ ¸¹ÀÌ ÀÖ´Ù. ¿¹¸¦ µé¾î, ÇÁ·Î¼¼½º°¡ ÆÄÀÏ ½Ã½ºÅÛ¿¡ ÀÖ´Â ÇÑ µð·ºÅ丮¸¦ ³ªÅ¸³»´Â VFS inode¸¦ ÇÊ¿ä·Î Çϴµ¥ ÀÌ inode°¡ ¹öÆÛ Ä³½¬¿¡ ÀÖÁö ¾ÊÀº °æ¿ì, ÇÁ·Î¼¼½º´Â ÆÄÀÏ ½Ã½ºÅÛÀ» °¡Áö°í ÀÖ´Â ¹°¸®ÀûÀÎ ÀåÄ¡¿¡¼­ ±× inode¸¦ °¡Á®¿À´Â °ÍÀ» ±â´Ù·Á¾ß ÇÑ´Ù. ¸®´ª½º Ä¿³ÎÀº ´ë±âÅ¥(±×¸² 11.4À» º¸¶ó)¶ó´Â, ÇÁ·Î¼¼½ºÀÇ task_struct¿¡ ´ëÇÑ Æ÷ÀÎÅÍ¿Í ´ë±âÅ¥¿¡ ÀÖ´Â ´ÙÀ½ ¿ø¼Ò¿¡ ´ëÇÑ Æ÷ÀÎÅ͸¦ °¡Áö°í ÀÖ´Â, ¾ÆÁÖ ´Ü¼øÇÑ ÀڷᱸÁ¶¸¦ »ç¿ëÇÑ´Ù. ÇÁ·Î¼¼½º°¡ ´ë±âÅ¥ÀÇ ³¡¿¡ Ãß°¡°¡ µÇ¸é, À̵éÀº ÀÎÅÍ·´Æ® °¡´É (interruptible), ¶Ç´Â ÀÎÅÍ·´Æ® ºÒ°¡´É(uninterruptible) »óÅ°¡ µÈ´Ù. ÀÎÅÍ·´Æ® °¡´ÉÇÑ ÇÁ·Î¼¼½º´Â ´ë±âÅ¥¿¡ ÀÖ´Â µ¿¾È ¹ß»ýÇϴ ŸÀÌ¸Ó ¸¸·á³ª ½Ã±×³Î°°Àº À̺¥Æ®µé¿¡ ÀÇÇؼ­ ÀÎÅÍ·´Æ®°¡ µÉ ¼ö ÀÖ´Ù. ´ë±âÁßÀÎ ÇÁ·Î¼¼½ºÀÇ »óÅ´ À̸¦ ¹Ý¿µÇÏ¿© INTERRUPTIBLE ¶Ç´Â UNINTERRUPTIBLE µÑ ÁßÀÇ Çϳª°¡ µÉ °ÍÀÌ´Ù. ÀÌ ÇÁ·Î¼¼½º´Â Áö±Ý ´çÀå °è¼Ó ½ÇÇàÇÒ ¼ö ¾ø±â ¶§¹®¿¡ ½ºÄÉÁì·¯°¡ ½ÇÇàµÇ¾î, »õ·Î ½ÇÇàÇÒ ÇÁ·Î¼¼½º ¸¦ ¼±ÅÃÇÏ°Ô µÇ¸é ´ë±â ÇÁ·Î¼¼½º´Â Áß´ÜÀÌ µÈ´Ù . ´ë±âÅ¥°¡ 󸮰¡ µÉ ¶§ ´ë±âÅ¥¿¡ ÀÖ´Â ¸ðµç ÇÁ·Î¼¼½ºµéÀÇ »óÅ´ RUNNING À¸·Î ¹Ù²î°Ô µÈ´Ù. ¸¸¾à ±× ÇÁ·Î¼¼½º°¡ ½ÇÇàÅ¥¿¡¼­ Á¦°ÅµÈ °ÍÀ̾ú´Ù¸é ´Ù½Ã ½ÇÇàÅ¥¿¡ ³Ö°Ô µÈ´Ù. ´ÙÀ½¿¡ ½ºÄÉÁì·¯°¡ ½ÇÇàµÉ ¶§ ´ë±âÅ¥¿¡ ÀÖ´ø ÇÁ·Î¼¼½ºµéÀº, ´õ ÀÌ»ó ±â´Ù¸®°í ÀÖ´Â °ÍÀÌ ¾Æ´Ï±â ¶§¹®¿¡ ½ÇÇàµÉ ¼ö ÀÖ´Â È帰¡ µÈ´Ù. ´ë±âÅ¥¿¡ ÀÖ´Â ÇÁ·Î¼¼½º°¡ ½ºÄÉÁìÀÌ µÇ¸é Á¦ÀÏ ¸ÕÀú ÇÏ´Â ÀÏÀº ÀÚ½ÅÀ» ´ë±âÅ¥¿¡¼­ Á¦°ÅÇÏ´Â °ÍÀÌ´Ù. ´ë±âÅ¥´Â ½Ã½ºÅÛ ÀÚ¿ø¿¡ ´ëÇÑ Á¢±ÙÀ» µ¿±âÈ­Çϴµ¥ »ç¿ëÇÒ ¼ö ÀÖ°í, ¸®´ª½º°¡ ¼¼¸¶Æ÷¾î¸¦ ±¸Çö Çϴµ¥¿¡µµ »ç¿ëÇÑ´Ù. (¾Æ·¡¸¦ º¸¶ó) 11.5 ¹öÀú¶ô(Buzz Lock) ÀÌ°ÍÀº ½ºÇɶô(spin lock)À̶ó°í ´õ Àß ¾Ë·ÁÁ® Àִµ¥, ÀڷᱸÁ¶³ª ÄÚµå ÀÇ ÇÑ ºÎºÐÀ» º¸È£ÇÏ´Â °¡Àå ±âº»ÀûÀÎ ¹æ¹ýÀÌ´Ù. ÀÌ°ÍÀº ÄÚµåÀÇ ÀÓ°èÁö¿ª ¾È¿¡¼­ µ¿½Ã¿¡ ÇϳªÀÇ ÇÁ·Î¼¼½º¸¸ ÀÖµµ·Ï Çã¿ëÇÑ´Ù. ¸®´ª½º¿¡¼­´Â ÇϳªÀÇ Á¤¼ö Ç׸ñÀ» ¶ôÀ¸·Î »ç¿ëÇÏ¿© ÀڷᱸÁ¶¿¡ ÀÖ´Â Ç׸ñ¿¡ ´ëÇÑ Á¢±ÙÀ» Á¦ÇÑ ÇÏ´Â ¸ñÀûÀ¸·Î »ç¿ëÇÑ´Ù . ÀÓ°èÁö¿ªÀ¸·Î µé¾î°¡°íÀÚ ÇÏ´Â °¢ ÇÁ·Î¼¼½ºµé Àº ¶ôÀÇ ÃʱⰪÀ» 0¿¡¼­ 1·Î ¹Ù²Ù·Á°í ÇÑ´Ù. ¸¸¾à ÇöÀç °ªÀÌ 1À̶ó¸é ÇÁ·Î ¼¼½º´Â, ÄÚµåÀÇ ·çÇÁ ¾È¿¡¼­ °è¼Ó ºù±Ûºù±Û µ¹¸é¼­ ´Ù½Ã ½ÃµµÇÏ°Ô µÈ´Ù. ¶ôÀ» °¡Áö°í ÀÖ´Â ¸Þ¸ð¸® À§Ä¡¿¡ ´ëÇÑ Á¢±ÙÀº ¹Ýµå½Ã Çѹø¿¡ ÀÌ·ç¾îÁ®¾ß ÇÑ´Ù(atmoic). °ªÀ» ÀÐ°í ±× °ªÀÌ 0ÀÎÁö È®ÀÎÇÏ°í, 0ÀÌ¸é °ªÀ» 1·Î ¹Ù²Ù´Â °ÍÀº ´Ù¸¥ ¾î¶² ÇÁ·Î¼¼½º¿¡ ÀÇÇؼ­ ÁߴܵǾ ¾ÈµÈ´Ù. ´ëºÎºÐÀÇ CPU ±¸Á¶ µéÀº À̸¦ Ưº°ÇÑ ¸í·É¾î·Î Áö¿øÇÏÁö¸¸, ij½ÃµÇÁö ¾ÊÀº ¸ÞÀÎ ¸Þ¸ð¸®¸¦ ÀÌ¿ëÇÏ¿© ¹öÀú¶ôÀ» ±¸ÇöÇÒ ¼öµµ ÀÖ´Ù. ¶ôÀ» ¼ÒÀ¯ÇÏ°í ÀÖ´ø ÇÁ·Î¼¼½º°¡ ÄÚµåÀÇ ÀÓ°èÁö¿ªÀ» ¹þ¾î³¯ ¶§ ¹öÀú¶ôÀÇ °ªÀ» °¨¼Ò½ÃÄÑ 0ÀÌ µÇ°Ô ÇÑ´Ù. ¶ôÀ» °Ë»çÇÏ¸ç °è¼Ó µ¹°í ÀÖ´ø ¾î¶² ÇÁ·Î ¼¼½ºµçÁö ÀÌ °ªÀÌ 0ÀÎ °ÍÀ» ¾Ë ¼ö ÀÖ°ÚÁö¸¸, óÀ½ ÀÐÀº ÇÁ·Î¼¼½º°¡ À̸¦ 1·Î Áõ°¡ÇÏ°í ÀÓ°èÁö¿ªÀ¸·Î µé¾î°¡°Ô µÉ °ÍÀÌ´Ù. 11.6 ¼¼¸¶Æ÷¾î(Semaphore) ¼¼¸¶Æ÷¾î´Â Äڵ峪 ÀڷᱸÁ¶ÀÇ ÀӰ豸¿ªÀ» º¸È£Çϴµ¥ »ç¿ëµÈ´Ù. µð·ºÅ丮 ¸¦ ³ªÅ¸³»´Â VFS inode °°Àº ÀÓ°è ÀÚ·á¿¡ Á¢±ÙÇÏ´Â °ÍÀº, ÇÁ·Î¼¼½ºÀÇ ´Ù¸¥ ÇÑ Æí¿¡¼­ µ¹¾Æ°¡´Â Ä¿³Î Äڵ忡 ÀÇÇؼ­ ÀÌ·ç¾îÁø´Ù. ÇÑ ÇÁ·Î¼¼½º°¡ »ç¿ëÇÏ°í ÀÖ´Â ÀÌ·± Áß¿äÇÑ ÀڷᱸÁ¶¸¦ ´Ù¸¥ ÇÁ·Î¼¼½º¿¡¼­ °íÄ¥ ¼ö ÀÖ°Ô ÇÏ´Â °ÍÀº ¸Å¿ì À§ÇèÇÏ´Ù. ÀÌ·± ¸ñÀûÀ» ´Þ¼ºÇÒ ¼ö ÀÖ´Â ÇÑ ¹æ¹ýÀº ÀÓ°è ÀÚ·á¿¡ Á¢±ÙÇÏ´Â °÷ ÁÖÀ§¿¡ ¹öÀú¶ôÀ» »ç¿ëÇÏ´Â °ÍÀÌÁö¸¸, ÀÌ´Â ±×´ÙÁö ½Ã½ºÅÛ È¿À²¼ºÀÌ ÁÁÁö ¾ÊÀº ´Ü¼øÇÑ Á¢±Ù ¹æ¹ýÀÌ´Ù. ´ë½Å ¸®´ª½º´Â µ¿½Ã¿¡ ÇÑ ÇÁ·Î¼¼½º¸¸ÀÌ Äڵ峪 µ¥ÀÌÅÍÀÇ ÀӰ豸¿ª¿¡ Á¢±ÙÇÒ ¼ö ÀÖµµ·Ï ¼¼¸¶Æ÷¾î ¸¦ »ç¿ëÇÑ´Ù. ÀÌ ±¸¿ª¿¡ Á¢±ÙÇÏ·Á´Â ´Ù¸¥ ¸ðµç ÇÁ·Î¼¼½º´Â ÀÌ ¼¼¸¶Æ÷¾î°¡ ÇØÁ¦µÉ ¶§±îÁö ±â´Ù¸®°Ô µÉ °ÍÀÌ´Ù. ´ë±âÇÏ°Ô µÇ´Â ÇÁ·Î¼¼½º´Â ÁߴܵÇÁö ¸¸, ½Ã½ºÅÛÀÇ ´Ù¸¥ ÇÁ·Î¼¼µåµéÀº Á¤»óÀûÀ¸·Î °è¼Ó µ¿ÀÛÇÒ ¼ö ÀÖ´Ù. ¸®´ª½º semaphore ÀڷᱸÁ¶´Â ´ÙÀ½°ú °°Àº Á¤º¸¸¦ °¡Áö°í ÀÖ´Ù . Ä«¿îÆ®(count) : ÀÌ Ç׸ñÀº ÀÌ ÀÚ¿øÀ» »ç¿ëÇÏ·Á°í ÇÏ´Â ÇÁ·Î¼¼½ºµéÀÇ °³¼ö¸¦ °ü¸®ÇÑ´Ù. ¾ç¼ö´Â ÀÌ ÀÚ¿øÀÌ »ç¿ë°¡´ÉÇÏ´Ù´Â °ÍÀ» ÀÇ¹Ì ÇÑ´Ù. À½¼ö ¶Ç´Â 0Àº ÇÁ·Î¼¼½ºµéÀÌ ±×°ÍÀÌ ÇØÁ¦µÇ±â¸¦ ±â´Ù¸®°í ÀÖ´Ù´Â °ÍÀ» ÀǹÌÇÑ´Ù. ÃʱⰪÀ¸·Î 1À» ÁÖ´Â °ÍÀº ´ÜÁö µ¿½Ã¿¡ ÇÑ ÇÁ·Î¼¼½º¸¸ÀÌ ÀÌ ÀÚ¿øÀ» »ç¿ëÇÒ ¼ö ÀÖ´Ù´Â °ÍÀ» ¸»ÇÑ´Ù. ÇÁ·Î¼¼½º °¡ ÀÚ¿øÀ» ¾ò°íÀÚ Çϸé Ä«¿îÆ®¸¦ 1 °¨¼Ò½ÃÅ°°í, ÀÚ¿øÀÇ »ç¿ëÀÌ ³¡³ª¸é Ä«¿îÆ®¸¦ 1 Áõ°¡½ÃŲ´Ù. ±ú¿ï(waking) : ÀÌ ÀÚ¿øÀ» ±â´Ù¸®°í ÀÖ´Â ÇÁ·Î¼¼½ºÀÇ ¼öÀ̸ç, ÀÌ ÀÚ¿øÀÌ ÇØÁ¦µÉ ¶§ ±ú¾î³ª°Ô µÉ ÇÁ·Î¼¼½ºÀÇ ¼öÀ̱⵵ ÇÏ´Ù. ´ë±âÅ¥(wait queue) : ÇÁ·Î¼¼½º°¡ ¾î¶² ÀÚ¿øÀ» ±â´Ù¸®¸é ±× ÀÚ¿øÀÇ ´ë±âÅ¥¿¡ µé¾î°£´Ù. ¶ô(lock) : waking Ç׸ñÀ» Á¢±ÙÇÒ ¶§ »ç¿ëÇÏ´Â ¹öÀú¶ôÀÌ´Ù. ¼¼¸¶Æ÷¾îÀÇ Ãʱâ Ä«¿îÆ®°¡ 1À̶ó°í ÇÒ ¶§, óÀ½ »ç¿ëÇÏ´Â ÇÁ·Î¼¼½º´Â ±× °ªÀÌ ¾ç¼ö¶ó´Â °ÍÀ» ¾Ë°í, 1À» °¨¼Ò½ÃÄÑ 0À¸·Î ¸¸µç´Ù. ÀÌ ÇÁ·Î¼¼½º´Â ÀÌÁ¦ ¼¼¸¶Æ÷¾î¿¡ ÀÇÇØ º¸È£µÇ´Â, Äڵ峪 ÀÚ¿øÀÇ ÀÓ°èºÎºÐÀ» "¼ÒÀ¯"ÇÏ°Ô µÈ´Ù. ÇÁ·Î¼¼½º°¡ ÀÓ°èÁö¿ªÀ» ¹þ¾î³ª°Ô µÇ¸é ¼¼¸¶Æ÷¾îÀÇ Ä«¿îÆ®¸¦ Áõ°¡ ½ÃŲ´Ù. °¡Àå ÃÖ¼±ÀÎ °æ¿ì´Â ÀÓ°èÁö¿ªÀ» ¼ÒÀ¯ÇÏ°íÀÚ ÇÏ´Â ´Ù¸¥ ÇÁ·Î¼¼½º°¡ ¾ø´Â °æ¿ìÀÌ´Ù. ¸®´ª½ºÀÇ ¼¼¸¶Æ÷¾î´Â ÀÌ °æ¿ì(°¡Àå ÈçÇÑ °æ¿ìÀ̱⵵ ÇÏ´Ù) ¿¡ ´ëÇØ È¿À²ÀûÀ¸·Î µ¿ÀÛÇϵµ·Ï ±¸ÇöµÇ¾ú´Ù . ¸¸¾à ´Ù¸¥ ÇÁ·Î¼¼½º°¡ ¼ÒÀ¯ÇÏ°í ÀÖ´Â ÀÓ°èÁö¿ª¿¡ ÇÑ ÇÁ·Î¼¼½º°¡ µé¾î°¡·Á °í ÇÒ ¶§, ÀÌ ÇÁ·Î¼¼½ºµµ ¿ª½Ã Ä«¿îÆ®¸¦ 1 °¨¼Ò½ÃŲ´Ù. À̹ø¿£ Ä«¿îÆ®°¡ À½¼ö(-1)À̹ǷΠÇÁ·Î¼¼½º´Â ÀÓ°èÁö¿ª¿¡ µé¾î°¡Áö ¸øÇÑ´Ù. ´ë½Å ¿µ¿ªÀ» ¼ÒÀ¯ÇÏ°í ÀÖ´Â ÇÁ·Î¼¼½º°¡ ¿µ¿ªÀ» ºüÁ®³ª°¥ ¶§±îÁö ±â´Ù·Á¾ß ÇÑ´Ù. ¸®´ª½º ¿¡¼­´Â ±â´Ù¸®´Â ÇÁ·Î¼¼½º¸¦ Àç¿ì°í, ÀÓ°èÁö¿ªÀ» ¼ÒÀ¯ÇÏ°í ÀÖ´Â ÇÁ·Î¼¼½º °¡ ÀÓ°èÁö¿ªÀ» ºüÁ®³ª°¥ ¶§ À̸¦ ±ú¿ìµµ·Ï ÇÑ´Ù. ±â´Ù¸®´Â ÇÁ·Î¼¼½º´Â ÀÚ½ÅÀ» ¼¼¸¶Æ÷¾î¿¡ ÀÖ´Â ´ë±âÅ¥¿¡ Ãß°¡ÇÏ°í, ·çÇÁ¸¦ µ¹¸é¼­ waking Ç׸ñ ÀÇ °ªÀ» °Ë»çÇÏ°í, wakingÀÌ 0ÀÌ ¾Æ´Ñ °ªÀÌ µÉ ¶§±îÁö ½ºÄÉÁì·¯¸¦ È£Ãâ ÇÏ´Â ÀÏÀ» ¹Ýº¹ÇÑ´Ù . ÀÓ°èÁö¿ªÀÇ ¼ÒÀ¯ÀÚ´Â ¼¼¸¶Æ÷¾îÀÇ Ä«¿îÆ®¸¦ Áõ°¡½ÃÅ°´Âµ¥, ±× °ªÀÌ 0º¸´Ù À۰ųª °°À¸¸é Àáµé¾î¼­ ÀÌ ÀÚ¿øÀ» ±â´Ù¸®´Â ÇÁ·Î¼¼½º°¡ ÀÖ´Ù´Â °ÍÀÌ´Ù. °¡Àå ÃÖ¼±ÀÇ °æ¿ì´Â ¼¼¸¶Æ÷¾îÀÇ Ä«¿îÆ®°¡ ´Ù½Ã ÃʱⰪÀÎ 1ÀÌ µÇ¾î¼­, ´õÀÌ»ó ÇÊ¿äÇÑ ÀÏÀÌ ¾ø´Â °ÍÀÌ´Ù. ¼ÒÀ¯ÇÏ´Â ÇÁ·Î¼¼½º´Â waking Ä«¿îÅ͸¦ Áõ°¡½ÃÅ°°í, ¼¼¸¶Æ÷¾îÀÇ ´ë±âÅ¥¿¡¼­ Àáµé¾î ÀÖ´Â ÇÁ·Î¼¼½º¸¦ ±ú¿î´Ù. ±â´Ù¸®´Â ÇÁ·Î¼¼½º°¡ ±ú¾î³µÀ» ¶§ waking Ä«¿îÅÍ´Â ÀÌÁ¦ 1ÀÌ µÇ¾î ÀÖÀ» °ÍÀÌ°í, ÀÌ ÇÁ·Î¼¼½º´Â ÀÌÁ¦ ÀÓ°èÁö¿ª¿¡ µé¾î°¥ ¼ö ÀÖ°Ô µÈ´Ù. ÀÌ ÇÁ·Î ¼¼½º´Â waking Ä«¿îÅ͸¦ 0À¸·Î °¨¼Ò½ÃÅ°°í, ÀÚ½ÅÀÇ ÀÛ¾÷À» °è¼ÓÇÏ°Ô µÈ´Ù. ¼¼¸¶Æ÷¾îÀÇ waking Ç׸ñ¿¡ ´ëÇÑ Á¢±ÙÀº ¼¼¸¶Æ÷¾îÀÇ ¶ô Ç׸ñÀ» ÀÌ¿ëÇÑ ¹öÀú¶ô¿¡ ÀÇÇØ º¸È£µÈ´Ù. ¹ø¿ª : ÀÌÈ£, ½É¸¶·Î Á¤¸® : ÀÌÈ£ ===================================================================== 12Àå ¸ðµâ (Modules) <<ÀÌ Àå¿¡¼­´Â ¸®´ª½º Ä¿³ÎÀÌ ÆÄÀÏ ½Ã½ºÅÛ°°Àº ÇÔ¼öµéÀ» ÀÚ½ÅÀÌ ÇÊ¿ä·Î ÇÒ¶§ µ¿ÀûÀ¸·Î ·ÎµåÇÏ´Â ¹æ¹ýÀ» ¼³¸íÇÑ´Ù.>> ¸®´ª½º´Â ´ÜÀÏ(monolithic) Ä¿³ÎÀÌ´Ù. Áï Ä¿³ÎÀÇ ¸ðµç ±â´ÉÀûÀÎ ¿ä¼ÒµéÀÌ ÀÚ½ÅÀÇ ³»ºÎ ÀڷᱸÁ¶¿Í ÇÔ¼öµé¿¡ ¸ðµÎ Á¢±ÙÇÒ ¼ö ÀÖ´Â ÇϳªÀÇ °Å´ëÇÑ ÇÁ·Î±×·¥ÀÌ´Ù. ¿î¿µÃ¼Á¦ ¼³°èÀÇ ´Ù¸¥ ¹æ¹ýÀ¸·Î´Â Ä¿³ÎÀÇ °¢ ±â´ÉÀûÀÎ ºÎºÐ µéÀÌ º°µµÀÇ ´ÜÀ§·Î ÂÉ°³Áö°í, ±× »çÀÌ¿¡ ¾ö°ÝÇÑ Åë½Å ¸ÅÄ¿´ÏÁòÀ¸·Î ¿¬°á µÇ´Â ¸¶ÀÌÅ©·ÎÄ¿³Î(micro-kernel) ±¸Á¶°¡ ÀÖ´Ù. ÀÌ´Â ½Ã°£ÀÌ ¼Ò¸ðµÇ´Â ÇÁ·Î¼¼½º°¡ ¾Æ´Ñ ȯ°æ ¼³Á¤ ÇÁ·Î¼¼½º¸¦ ÅëÇÏ¿© »õ·Î¿î ÄÄÆ÷³ÍÆ®¸¦ Ä¿³Î¿¡ Ãß°¡ÇÒ ¼ö ÀÖ°Ô ÇÑ´Ù. °¡·É »ç¿ëÀÚ°¡ NCR 810 SCSI¿ë µå¶óÀ̹ö¸¦ »ç¿ëÇÏ·Á°í Çϴµ¥ ÀÌ°ÍÀÌ Ä¿³Î¿¡ Æ÷ÇԵǾî ÀÖÁö ¾Ê´Ù°í ÇÏÀÚ. ±×·¯¸é Ä¿³ÎÀÇ ¼³Á¤À» ¹Ù²Ù°í ´Ù½Ã ÄÄÆÄÀÏÇØ¾ß NCR 810 SCSI¸¦ »ç¿ëÇÒ ¼ö ÀÖ°Ô µÉ °ÍÀÌ´Ù. ±×·¯³ª ¿©±â¿¡ ´Ù¸¥ ´ë¾ÈÀÌ ÀÖ´Ù. ¸®´ª½º´Â ¿î¿µÃ¼Á¦¸¦ ±¸¼ºÇÏ´Â ÄÄÆ÷³ÍÆ®µéÀ» ÇÊ¿ä·Î ÇÒ ¶§ µ¿ÀûÀ¸·Î ·Îµå ¶Ç´Â ¾ð·ÎµåÇÒ ¼ö ÀÖ°Ô ÇÑ´Ù. ¸®´ª½º ¸ðµâÀº ½Ã½ºÅÛ ÀÌ ºÎÆõÈÈÄ ¾ðÁ¦¶óµµ Ä¿³Î¿¡ µ¿ÀûÀ¸·Î ¸µÅ©µÉ ¼ö ÀÖ´Â ÄÚµå µ¢¾î¸®ÀÌ´Ù. ¶ÇÇÑ ¸ðµâÀÌ ´õÀÌ»ó ÇÊ¿äÇÏÁö ¾ÊÀ» ¶§´Â Ä¿³Î°úÀÇ ¿¬°áÀ» ÇØÁ¦ÇÏ°í Á¦°ÅÇÒ ¼ö ÀÖ´Ù. ¸®´ª½º Ä¿³ÎÀÇ »ó´ç¼ö´Â µð¹ÙÀ̽º µå¶óÀ̹ö¿Í, ³×Æ®¿÷ µå¶óÀ̹ö ³ª ÆÄÀϽýºÅÛ °°Àº À¯»ç µð¹ÙÀ̽º µå¶óÀ̹ö(pseudo device driver)ÀÌ´Ù. »ç¿ëÀÚ´Â insmod³ª rmmod°°Àº ¸í·ÉÀ¸·Î ¸®´ª½º Ä¿³Î ¸ðµâÀ» ¸íÈ®ÇÏ°Ô ·Îµå ¶Ç´Â ¾ð·Îµå¸¦ ÇÒ ¼ö ÀÖÀ¸¸ç, ¶Ç´Â Ä¿³Î ÀÚ½ÅÀÌ ÀÚ½ÅÀÌ ÇÊ¿ä·Î ÇÒ ¶§ Ä¿³Î µ¥¸ó(kerneld)¿¡°Ô ¸ðµâÀ» ·Îµå/¾ð·Îµå ÇÒ °ÍÀ» ¿ä±¸ÇÒ ¼ö ÀÖ´Ù. ÇÊ¿ä·Î ÇÒ ¶§ Äڵ带 µ¿ÀûÀ¸·Î ·ÎµåÇÏ´Â °ÍÀº Ä¿³Î Å©±â¸¦ ÃÖ¼ÒÈ­ÇÒ ¼ö ÀÖ°í, Ä¿³ÎÀ» ¸Å¿ì À¯¿¬ÇÏ°Ô ÇÒ ¼ö ÀÖ¾î ¸Å·ÂÀûÀÌ´Ù. ÇÊÀÚ°¡ »ç¿ëÇÏ´Â ÀÎÅÚ Ä¿³ÎÀº ¸ðµâÀ» ±¤¹üÀ§ÇÏ°Ô »ç¿ëÇÏ¿© Å©±â°¡ °Ü¿ì 406 Kbyte ¹Û¿¡ µÇÁö ¾Ê´Â´Ù. ³ª´Â VFAT ÆÄÀÏ ½Ã½ºÅÛÀ» °¡²û¾¿ »ç¿ëÇÒ »ÓÀ̹ǷÎ, ³»°¡ VFAT ÆÄƼ¼ÇÀ» ¸¶¿îÆ® ÇÒ ¶§¸¸ ¸®´ª½º Ä¿³ÎÀÌ VFAT ÆÄÀÏ ½Ã½ºÅÛ ¸ðµâÀ» ÀÚµ¿À¸·Î ¿Ã¸®µµ·Ï Çß´Ù. ±×¸®°í ±× VFAT ÆÄƼ¼ÇÀÇ ¸¶¿îÆ®¸¦ ÇØÁ¦ÇÏ¸é ½Ã½ºÅÛÀÌ ´õÀÌ»ó VFAT ÆÄÀÏ ½Ã½ºÅÛ ¸ðµâÀÌ ÇÊ¿äÇÏÁö ¾Ê´Ù´Â °ÍÀ» ¾Ë¾ÆÂ÷¸® °í ½Ã½ºÅÛ¿¡¼­ Á¦°ÅÇϵµ·Ï Çß´Ù. ¸ðµâÀº ¶ÇÇÑ »õ·Î¿î Ä¿³Î Äڵ带 ´Ù½Ã ÄÄÆÄÀÏÇÏ°í Ä¿³ÎÀ» ÀçºÎÆÃÇÏÁö ¾Ê°í Å×½ºÆ®¸¦ Çغ¸°íÀÚ ÇÒ ¶§ À¯¿ëÇÏ´Ù. ¹°·Ð ¾Æ¹«·± ´ñ°¡µµ ¾ø´Â °ÍÀº ¾Æ´ÏÁö¸¸, Ä¿³Î ¸ðµâ°ú °ü·ÃÇÏ¿© ¼º´É°ú ¸Þ¸ð¸®¿¡¼­ ¾à°£ÀÇ ¼ÕÇØ°¡ ÀÖÀ» »ÓÀÌ´Ù. ÀÌ°ÍÀº ·ÎµåÇÒ ¼ö ÀÖµµ·Ï ¸ðµâÀÌ Á¦°øÇؾßÇÏ´Â ¾à°£ÀÇ Äڵ尡 ÀÖ°í, º°µµ ÀÇ ÀڷᱸÁ¶°¡ ¸Þ¸ð¸®¸¦ Á¶±Ý Â÷ÁöÇϱ⠶§¹®ÀÌ´Ù. ¶ÇÇÑ Ä¿³Î ÀÚ¿ø¿¡ Á¢±Ù ÇÒ ¶§ ÇÑ ´Ü°è¸¦ °ÅÃÄ¾ß ÇϹǷΠ¸ðµâÀÇ È¿À²¼ºÀÌ ¾ÆÁÖ Á¶±Ý ¶³¾îÁö°Ô µÈ´Ù. ·ÎµåµÈ ¸®´ª½º ¸ðµâÀº ´Ù¸¥ º¸Åë Ä¿³Î ÄÚµåó·³ Ä¿³ÎÀÇ ÇÑ ºÎºÐÀÌ µÈ´Ù. ¸ðµâÀº Ä¿³Î ÄÚµå¿Í ¶È°°Àº ±ÇÇÑ°ú Ã¥ÀÓÀ» Áø´Ù. ´Ù¸£°Ô ¸»Çϸé, ¸®´ª½º Ä¿³Î ¸ðµâÀº ¸ðµç Ä¿³Î Äڵ峪 µð¹ÙÀ̽º µå¶óÀ̹öó·³ Ä¿³ÎÀ» ¸Á°¡¶ß¸± ¼öµµ ÀÖ´Ù´Â °ÍÀÌ´Ù. ¸ðµâÀÌ ÀÚ½ÅÀÌ ÇÊ¿ä·Î ÇÒ ¶§ Ä¿³ÎÀÇ ÀÚ¿øÀ» »ç¿ëÇÒ ¼ö ÀÖÀ¸·Á¸é, ±×°ÍÀÌ ¾îµð ÀÖ´ÂÁö ãÀ» ¼ö ÀÖ¾î¾ß ÇÑ´Ù. °¡·É ¸ðµâÀÌ Ä¿³Î ¸Þ¸ð¸®¸¦ ÇÒ´çÇÏ´Â ÇÔ¼öÀÎ kmalloc()À» È£ÃâÇØ¾ß ÇÑ´Ù°í ÇÏÀÚ. ¸ðµâÀ» ÄÄÆÄÀÏÇÒ ¶§¿¡´Â ¸Þ¸ð ¸®ÀÇ ¾î´À À§Ä¡¿¡ kmalloc()ÀÌ ÀÖ´ÂÁö ¸ð¸£¹Ç·Î, ¸ðµâÀÌ ·ÎµåµÉ ¶§ Ä¿³Î Àº ¸ðµâÀÌ Á¦´ë·Î µ¿ÀÛÇÒ ¼ö ÀÖµµ·Ï kmalloc()¿¡ ´ëÇÑ ÂüÁ¶¸¦ ¸ÂÃçÁÖ¾î¾ß ÇÑ´Ù. Ä¿³ÎÀº Ä¿³ÎÀÇ ¸ðµç ÀÚ¿øÀÇ ¸ñ·ÏÀ» Ä¿³ÎÀÇ ½Éº¼ Å×À̺í(symbol table)·Î °ü¸®Çϸç, À̸¦ ÀÌ¿ëÇØ ¸ðµâÀÌ ·ÎµåµÉ ¶§ À̵é ÀÚ¿ø¿¡ ´ëÇÑ ÂüÁ¶ ¸¦ ÇØ°áÇÒ ¼ö ÀÖ´Ù. ¸®´ª½º´Â ÇÑ ¸ðµâÀÌ ´Ù¸¥ ¸ðµâÀÇ ¼­ºñ½º¸¦ ÇÊ¿ä·Î ÇÏ´Â °æ¿ì, ¸ðµâÀÌ ÃþÃþ ÀÌ ½×¾ÆÁú ¼ö ÀÖµµ·Ï ÇÑ´Ù. ¿¹¸¦ µé¾î, VFAT ÆÄÀÏ ½Ã½ºÅÛ ¸ðµâÀº FAT ÆÄÀÏ ½Ã½ºÅÛ ¸ðµâÀÇ ¼­ºñ½º¸¦ ÇÊ¿ä·Î ÇÑ´Ù. ÀÌ´Â VFAT ÆÄÀÏ ½Ã½ºÅÛÀÌ FAT ÆÄÀÏ ½Ã½ºÅÛÀ» ´Ù¼Ò È®ÀåÇÑ °ÍÀ̱⠶§¹®ÀÌ´Ù. ÀÌ·¸°Ô ÇÑ ¸ðµâÀÌ ´Ù¸¥ ¸ðµâÀÌ Á¦°øÇÏ´Â ¼­ºñ½º³ª ÀÚ¿øÀ» ÇÊ¿ä·Î ÇÏ´Â °ÍÀº, ¸ðµâÀÌ Ä¿³Î ÀÚüÀÇ ¼­ºñ½º ¿Í ÀÚ¿øÀ» ÇÊ¿ä·Î ÇÏ´Â °æ¿ì¿Í ¸Å¿ì ºñ½ÁÇÏ´Ù. ´ÜÁö ¿©±â¼­ ÇÊ¿ä·Î ÇÏ´Â ¼­ºñ½º°¡ ´Ù¸¥, ÀÌÀü¿¡ ·ÎµåµÈ ¸ðµâ¿¡ ÀÖ´Â °ÍÀÏ »ÓÀÌ´Ù. °¢ ¸ðµâÀÌ ·Îµå µÉ ¶§, Ä¿³ÎÀº »õ·Î ·ÎµåµÇ´Â ¸ðµâ¿¡¼­ ¿ÜºÎ·Î º¸¿©ÁÖ´Â ÀÚ¿ø°ú ½Éº¼À» ¸ðµÎ Ä¿³Î ½Éº¼ Å×ÀÌºí¿¡ Ãß°¡ÇÑ´Ù. ÀÌ´Â ´ÙÀ½¿¡ ·ÎµåµÇ´Â ¸ðµâÀÌ ÀÌ¹Ì ·ÎµåµÈ ¸ðµâÀÇ ¼­ºñ½º¸¦ ÀÌ¿ëÇÒ ¼ö ÀÖµµ·Ï Çϱâ À§ÇÑ °ÍÀÌ´Ù. ¸ðµâÀ» ¾ð·ÎµåÇÏ·Á ÇÒ ¶§ Ä¿³ÎÀº ¸ðµâÀÌ ÇöÀç »ç¿ëµÇ°í ¾Ê°í ÀÖ´ÂÁö ¾Ë¾Æ ¾ß Çϸç, ¸ðµâ¿¡°Ô ÀÚ½ÅÀÌ ¾ð·ÎµåµÇ·Á°í ÇÑ´Ù´Â °ÍÀ» ¾Ë·ÁÁÙ ¼ö ÀÖ¾î¾ß ÇÑ´Ù. ÀÌ·¸°Ô Çؼ­ ¸ðµâÀº Ä¿³Î¿¡¼­ Á¦°ÅµÉ ¶§, ÀÚ½ÅÀÌ ÇÒ´ç¹ÞÀº Ä¿³Î ¸Þ¸ð¸®³ª ÀÎÅÍ·´Æ® °°Àº ½Ã½ºÅÛ ÀÚ¿øÀ» ÇØÁ¦ÇÒ ¼ö ÀÖ´Ù. ¸ðµâÀÌ ¾ð·ÎµåµÉ ¶§ Ä¿³ÎÀº ¸ðµâÀÌ Ä¿³Î ½Éº¼ Å×ÀÌºí¿¡ Ãß°¡ÇÑ ½Éº¼µéÀ» ¸ðµÎ Á¦°ÅÇÑ´Ù. ·ÎµåµÈ ¸ðµâÀÌ À߸ø ¸¸µé¾îÁø °ÍÀ̾ ¿î¿µÃ¼Á¦¸¦ ¸Á°¡Æ®¸± °¡´É¼º°ú´Â º°µµ·Î, ´Ù¸¥ À§Çè °¡´É¼ºÀÌ ÀÖ´Ù. ¸¸¾à Áö±Ý ½ÇÇàÇÏ°í ÀÖ´Â Ä¿³Îº¸´Ù ÀÌÀü ¹öÀüÀ̳ª ÀÌÈÄ ¹öÀü ¿ëÀ¸·Î ÄÄÆÄÀÏ µÈ ¸ðµâÀ» ·ÎµåÇÏ·Á°í ÇÑ´Ù¸é ¾î¶»°Ô µÉ±î? ¸ðµâÀÌ Ä¿³Î ·çƾÀ» È£ÃâÇÒ ¶§ À߸øµÈ ÀÎÀÚ¸¦ ³Ñ°ÜÁØ´Ù¸é ¹®Á¦°¡ »ý±æ ¼ö ÀÖÀ» °ÍÀÌ´Ù. Ä¿³ÎÀº ¸ðµâÀ» ·ÎµåÇÒ ¶§ ¾ö°ÝÇÑ ¹öÀü °Ë»ç ¸¦ ÇÏ¿© ÀÌ·± ¹®Á¦¸¦ ¼±ÅÃÀûÀ¸·Î ¸·À» ¼ö ÀÖ´Ù . 12.1 ¸ðµâÀ» ·ÎµåÇϱâ Ä¿³Î ¸ðµâÀ» ·ÎµåÇÏ´Â ¹æ¹ýÀº µÎ°¡Áö°¡ ÀÖ´Ù. Çϳª´Â insmod ¸í·ÉÀ» »ç¿ë ÇÏ¿© ¼öµ¿À¸·Î ¸ðµâÀ» Ä¿³Î¿¡ Ãß°¡ÇÏ´Â °ÍÀÌ´Ù. µÎ¹ø°´Â À̺¸´Ù ´õ ¶È¶È ÇÑ ¹æ¹ýÀ¸·Î ¸ðµâÀ» ÇÊ¿ä·Î ÇÒ ¶§ ·ÎµåÇÏ´Â °ÍÀ¸·Î, À̸¦ ¿ä±¸½Ã ·Îµù (demand loading)À̶ó°í ÇÑ´Ù. Ä¿³ÎÀÌ ¾î¶² ¸ðµâÀ» ÇÊ¿ä·Î ÇÑ´Ù´Â °ÍÀ» ¹ß°ßÇϸé (¿¹¸¦ µé¾î »ç¿ëÀÚ°¡ Ä¿³Î¿¡ ¾ø´Â ÆÄÀϽýºÅÛÀ» ¸¶¿îÆ® ÇÑ °æ¿ì), Ä¿³ÎÀº Ä¿³Î µ¥¸ó(kerneld)¿¡°Ô ¸Â´Â ¸ðµâÀ» ·ÎµåÇ϶ó°í ¿ä±¸ÇÑ´Ù. Ä¿³Î µ¥¸óÀº ºñ·Ï ½´ÆÛÀ¯Àú ±ÇÇÑÀ» °¡Áö°í ÀÖ±â´Â ÇÏÁö¸¸ º¸ÅëÀÇ »ç¿ëÀÚ ÇÁ·Î¼¼½ºÀÌ´Ù. ÀÌ ÇÁ·Î¼¼½º´Â º¸Åë ½Ã½ºÅÛÀÌ ºÎÆÃÇÒ ¶§ ½ÃÀÛÇÏ¿©, Ä¿³Î°ú ÇÁ·Î¼¼½º°£ Åë½Å(IPC) ä³ÎÀ» Çϳª ¿¬´Ù. ÀÌ ¿¬°áÀº Ä¿³ÎÀÌ kerneld¿¡°Ô ¿©·¯°¡Áö ÀÛ¾÷À» ¿äûÇϱâ À§ÇØ ¸Þ½ÃÁö¸¦ º¸³»´Âµ¥ »ç¿ëÇÑ´Ù. kerneldÀÇ ÁÖµÈ ¿ªÇÒÀ» Ä¿³Î ¸ðµâÀ» ·ÎµåÇÏ°í ¾ð·ÎµåÇÏ´Â °ÍÀÌÁö¸¸, ÇÊ¿äÇÒ ¶§ Á÷·Ä ¶óÀÎ »ó¿¡ PPP ¿¬°áÀ» ½ÃÀÛÇϰųª, ÇÊ¿äÇÏÁö ¾ÊÀ» ¶§ À̸¦ ´Ý´Â °Í °°Àº ´Ù¸¥ ÀÛ¾÷À» ÇÒ ¼ö ÀÖ´Â ´É·Âµµ ÀÖ´Ù. kerneld´Â Á÷Á¢ ÀÌ·± ÀϵéÀ» ÇÏ´Â °ÍÀÌ ¾Æ´Ï¶ó, ÀÌ·± ÀÏÀ» Çϱâ À§ÇØ ÇÊ¿äÇÑ ÇÁ·Î±×·¥(insmod °°Àº °Í)À» ½ÇÇàÇÑ´Ù. kerneld´Â ´ÜÁö Ä¿³ÎÀÇ ´ë¸®ÀÎÀ̸ç, Ä¿³ÎÀÇ ´Ù¸¥ ÇÑÆí¿¡¼­ ÀÏÀ» ½ºÄÉÁ층ÇÑ´Ù. module module module_list +------------+ +------------+ ------------>| next |--------------->| next | +------------+ +------------+ | ref | +-->| ref | +------------+ | +------------+ | symtab |---------+ | | symtab |---------+ +------------+ | | +------------+ | | name | "fat" | | | name | "vfat" | +------------+ | | +------------+ | | size | | | | size | | +------------+ | | +------------+ | | addr | | | | addr | | +------------+ | | +------------+ | | stste | | | | stste | | +------------+ | | +------------+ | | *cleanup() | | | | *cleanup() | | +------------+ | | +------------+ | | | | +-----------------+ | +-----------------+ | | | | symbol_table | | symbol_table | +------------+ | | +------------+ +--->| size | | +--->| size | +------------+ | +------------+ | n symbols | | | n symbols | +------------+ | +------------+ | n_refs | | | n_refs | +------------+ | +------------+ | | | | | | | | | | | symbols | | | symbols | | | | | | | | | | | +------------+ | +------------+ | references |--+ | references | +------------+ +------------+ ±×¸² 12.1 : The List of Kernel Modules insmod ÇÁ·Î±×·¥Àº ÀÚ½ÅÀÌ ·ÎµåÇØ¾ß ÇÏ´Â ¿äûÇÑ Ä¿³Î ¸ðµâÀ» ãÀ» ¼ö ÀÖ¾î¾ß ÇÑ´Ù. ¿ä±¸½Ã ·ÎµåÇÏ´Â Ä¿³Î ¸ðµâÀº º¸Åë /lib/modules/kernel-version¿¡ µé¾î ÀÖ´Ù. Ä¿³Î ¸ðµâÀº ½Ã½ºÅÛ¿¡ ÀÖ´Â ´Ù¸¥ ÇÁ·Î±×·¥°ú ºñ±³ÇÏ¸é ¸µÅ©µÈ ¿ÀºêÁ§Æ® ÆÄÀÏÀ̶ó´Â Á¡¿¡ °°Áö¸¸, Àç¹èÄ¡°¡´ÉÇÑ À̹ÌÁö·Î ¸µÅ©µÇ¾î ÀÖ´Ù´Â Á¡ÀÌ ´Ù¸£´Ù. Áï, ƯÁ¤ ÁÖ¼Ò¿¡¼­ ½ÃÀÛÇϵµ·Ï ¸µÅ©µÇ¾î ÀÖÁö ¾Ê´Ù´Â °ÍÀÌ´Ù. ÀÌ À̹ÌÁö´Â a.out Æ÷¸ËÀ̳ª ELF Æ÷¸ËÀÇ ¿ÀºêÁ§Æ® ÆÄÀÏÀÏ ¼ö ÀÖ´Ù. insmod´Â Ä¿³ÎÀÌ ÀͽºÆ÷Æ®(export)ÇÏ´Â ½Éº¼À» ã±â À§ÇØ Æ¯±ÇÃþÀÇ ½Ã½ºÅÛ ÄÝÀ» »ç¿ëÇÑ´Ù. Ä¿³ÎÀº ÀͽºÆ÷Æ® ½Éº¼À» ½Éº¼ÀÇ À̸§°ú ±×°ÍÀÇ °ª(½Éº¼ÀÇ ÁÖ¼Ò°°Àº)ÀÇ ½ÖÀ¸·Î °¡Áö°í ÀÖ´Ù. Ä¿³ÎÀÇ ÀͽºÆ÷Æ® ½Éº¼ Å×À̺íÀº, Ä¿³ÎÀÌ °ü¸®ÇÏ´Â ¸ðµâÀÇ ¸ñ·ÏÀÎ module_list Æ÷ÀÎÅÍ°¡ °¡¸®Å°°í ÀÖ´Â, ù¹ø° module ÀڷᱸÁ¶¿¡ µé¾î ÀÖ´Ù. Ä¿³Î¿¡ ÀÖ´Â ¸ðµç ½Éº¼µéÀÌ ¸ðµâ¿¡°Ô ÀͽºÆ÷Æ® µÇ´Â °ÍÀº ¾Æ´Ï´Ù. ´ÜÁö Ä¿³ÎÀ» ÄÄÆÄÀÏÇÏ°í ¸µÅ©ÇÒ ¶§ Ưº°È÷ ÁöÁ¤ÇÑ ½Éº¼¸¸ÀÌ ÀÌ Å×ÀÌºí¿¡ µé¾î°£´Ù. µå¶óÀ̹ö°¡ ½Ã½ºÅÛÀÇ Æ¯Á¤ ÀÎÅÍ·´Æ®ÀÇ Á¦¾î±ÇÀ» °®°í ½ÍÀ» ¶§ È£ÃâÇØ¾ß ÇÏ´Â Ä¿³Î·çƾÀÎ "request_irq" ½Éº¼À» ¿¹·Î µé¾îº¸ÀÚ. ÇÊÀÚ°¡ °®°í ÀÖ´Â ÇöÀç Ä¿³Î¿¡¼­ ÀÌ°ÍÀÇ °ªÀº 0x0010CD30ÀÌ´Ù. Ä¿³ÎÀÇ ÀͽºÆ÷Æ® ½Éº¼°ú °ªÀº /proc/ksyms¸¦ »ìÆ캸°Å³ª ksyms ÇÁ·Î±×·¥À» »ç¿ëÇÏ¿© º¼ ¼ö ÀÖ´Ù. ksyms ÇÁ·Î±×·¥À» ÀÌ¿ëÇÏ¿© Ä¿³Î¿¡ ÀÖ´Â ¸ðµç ÀͽºÆ÷Æ® ½Éº¼À» º¼ ¼öµµ ÀÖ°í, ·ÎµåµÈ ¸ðµâÀÌ ÀͽºÆ÷Æ®ÇÏ´Â ½Éº¼µéÀÇ ¸ñ·Ï¸¸ º¼ ¼öµµ ÀÖ´Ù. insmod´Â ¸ðµâÀ» ÀÚ½ÅÀÇ °¡»ó ¸Þ¸ð¸® °ø°£À¸·Î ÀоîµéÀÌ°í, ¾ÆÁ÷ ÇØ°áµÇÁö ¾ÊÀº Ä¿³Î ·çƾ°ú ÀÚ¿ø¿¡ ´ëÇÑ ÂüÁ¶¸¦ Ä¿³Î¿¡ ÀÖ´Â ÀͽºÆ÷Æ® ½Éº¼À» ÅëÇÏ¿© ¸ÂÃß¾îÁØ´Ù. ÀÌ·¸°Ô À§Ä¡¸¦ °íÁ¤ÇÏ´Â °ÍÀº ¸Þ¸ð¸®»ó¿¡ ÀÖ´Â ¸ðµâ À̹ÌÁö¸¦ ¼öÁ¤ÇÏ´Â ÇüÅ·ΠÀÌ·ç¾îÁø´Ù. insmod´Â ¸ðµâ¿¡ ÀÖ´Â ÇØ´ç ÇÏ´Â À§Ä¡¿¡ ¹°¸®ÀûÀ¸·Î ½Éº¼ÀÇ ÁÖ¼Ò¸¦ ½á³Ö´Â´Ù. insmod°¡ ¸ðµâÀÇ ÀͽºÆ÷Æ®µÈ Ä¿³Î ½Éº¼¿¡ ´ëÇÑ ÂüÁ¶¸¦ ¸ðµÎ ÇØ°áÇÏ¿´´Ù¸é, Ư±Ç ½Ã½ºÅÛ ÄÝÀ» ÀÌ¿ëÇÏ¿© Ä¿³Î¿¡°Ô »õ·Î¿î Ä¿³ÎÀ» Æ÷ÇÔÇÒ ¼ö ÀÖ´Â ÃæºÐÇÑ °ø°£ÀÌ ÀÖ´ÂÁö ¹¯´Â´Ù. Ä¿³ÎÀº »õ module ÀڷᱸÁ¶¿Í, »õ ¸ðµâÀ» ÃæºÐÈ÷ Æ÷ÇÔÇÒ ¼ö ÀÖ´Â Å©±âÀÇ Ä¿³Î ¸Þ¸ð¸®¸¦ ÇÒ´çÇÏ°í, ÀÌ ±¸Á¶Ã¼¸¦ Ä¿³Î ¸ðµâ ¸®½ºÆ®ÀÇ ³¡¿¡ ³Ö´Â´Ù. »õ ¸ðµâÀº ÃʱâÈ­µÇÁö ¾Ê¾Ò´Ù°í (UNINITIALIZED) Ç¥½ÃµÈ´Ù. ±×¸² 12.1Àº FAT¿Í VFAT µÎ ¸ðµâÀÌ Ä¿³Î¿¡ ·ÎµåµÈ ÈÄÀÇ Ä¿³Î ¸ðµâÀÇ ¸®½ºÆ®¸¦ º¸¿©ÁØ´Ù. ÀÌ ±×¸²¿¡´Â ³ªÅ¸³ªÁö ¾Ê¾Ò Áö¸¸, ¸®½ºÆ®¿¡ Àִ ù¹ø° ¸ðµâÀº À¯»ç ¸ðµâ(pseudo module)·Î¼­ ´ÜÁö Ä¿³ÎÀÇ ÀͽºÆ÷Æ® ½Éº¼ Å×À̺íÀ» °®±â À§ÇØ Á¸ÀçÇÑ´Ù. ·ÎµåµÈ Ä¿³ÎÀÇ ¸ñ·Ï°ú ±×µéÀÇ »ó°ü°ü°è¸¦ º¸°í ½ÍÀ¸¸é lsmod ¸í·É¾î¸¦ ¾²¸é µÈ´Ù. lsmod ¸í·ÉÀº ´ÜÁö Ä¿³Î module ÀڷᱸÁ¶ÀÇ ¸®½ºÆ®·ÎºÎÅÍ ¸¸µé ¾îÁö´Â /proc/modulesÀÇ Æ÷¸ËÀ» ¹Ù²Ù¾î¼­ º¸¿©ÁÖ´Â °Í »ÓÀÌ´Ù. Ä¿³ÎÀÌ ¸ðµâÀ» À§ÇØ ÇÒ´çÇÑ ¸Þ¸ð¸®´Â insmod°¡ ÀÌ¿¡ Á¢±ÙÇÒ ¼ö ÀÖµµ·Ï insmod ÇÁ·Î¼¼½ºÀÇ ÁÖ¼Ò°ø°£¿¡ ¸ÅÇÎÀÌ µÈ´Ù. insmod´Â ¸ðµâÀ» ÇÒ´ç¹ÞÀº °ø°£À¸·Î º¹»ç¸¦ ÇÏ°í À̸¦ Àç¹èÄ¡ÇÏ¿©, ÇÒ´ç¹ÞÀº Ä¿³Î °ø°£¿¡¼­ ½ÇÇàµÉ ¼ö ÀÖµµ·Ï ÇÑ´Ù. ÀÌ´Â ¸ðµâÀÌ ¼­·Î ´Ù¸¥ ¸®´ª½º ½Ã½ºÅÛ¿¡¼­ ¶È°°Àº ÁÖ¼Ò¿¡ ·Îµå µÇ°Å³ª µÎ¹ø ¸ðµÎ °°Àº ÁÖ¼Ò¿¡ ·ÎµåµÈ´Ù´Â º¸ÀåÀÌ ¾ø±â ¶§¹®¿¡ ¹Ýµå½Ã ÇÊ¿äÇÏ´Ù. ´Ù½Ã Çѹø, ÀÌ·¸°Ô Àç¹èÄ¡ÇÏ´Â °ÍÀº ¸ðµâÀÇ À̹ÌÁö¸¦ ¿Ã¹Ù¸¥ ÁÖ¼Ò·Î ¼öÁ¤ÇÏ´Â °ÍÀ» Æ÷ÇÔÇÑ´Ù. »õ ¸ðµâÀº ¶ÇÇÑ Ä¿³Î¿¡ ½Éº¼µéÀ» ÀͽºÆ÷Æ®Çϱ⠶§¹®¿¡, insmod´Â ÀÌ·¸°Ô ÀͽºÆ÷Æ®µÈ À̹ÌÁöÀÇ Å×À̺íÀ» ¸¸µç´Ù. ¸ðµç Ä¿³Î ¸ðµâÀº ¸ðµâ ÃʱâÈ­¿Í ¸ðµâ Á¤¸® ·çƾÀ» °¡Áö°í ÀÖ¾î¾ß ÇÑ´Ù. ÀÌ µÎ ½Éº¼Àº ÀͽºÆ÷Æ® µÇÁø ¾ÊÁö ¸¸, insmod´Â ÀÌ µÑÀÇ ÁÖ¼Ò¸¦ ¾Ë¾Æ³»¾î Ä¿³Î¿¡ ³Ñ°Ü¾ß ÇÑ´Ù. ¸ðµç °ÍÀÌ Àß µÇ¾ú´Ù¸é, insmod´Â ÀÌÁ¦ ¸ðµâÀ» ÃʱâÈ­ÇÒ Áغñ°¡ µÇ¾î ÀÖ°í, Ư±Ç ½Ã½ºÅÛ ÄÝÀ» ºÒ·¯ Ä¿³Î¿¡ ¸ðµâÀÇ ÃʱâÈ­ ·çƾ°ú Á¤¸® ·çƾÀÇ ÁÖ¼Ò¸¦ ³Ñ±ä´Ù. »õ ¸ðµâÀÌ Ä¿³Î¿¡ Ãß°¡µÇ¸é, Ä¿³ÎÀÇ ½Éº¼ ¸ñ·ÏÀ» °»½ÅÇÏ°í »õ ¸ðµâÀÌ »ç¿ë ÇÏ´Â ¸ðµâµéÀ» ¼öÁ¤ÇØ¾ß ÇÑ´Ù. Àڽſ¡ ÀÇÁ¸ÇÏ´Â ´Ù¸¥ ¸ðµâÀ» °¡Áø ¸ðµâÀº, ÀÚ½ÅÀÇ module ÀڷᱸÁ¶ÀÇ Æ÷ÀÎÅÍ°¡ °¡¸®Å°°í ÀÖ´Â ÀÚ½ÅÀÇ ½Éº¼ Å×ÀÌºí ³¡¿¡ ÂüÁ¶µÇ´Â ¸ñ·ÏÀ» °ü¸®ÇÏ¿©¾ß ÇÑ´Ù. ±×¸² 12.1Àº VFAT ÆÄÀÏ ½Ã½ºÅÛ ¸ðµâÀÌ FAT ÆÄÀÏ ½Ã½ºÅÛ ¸ðµâ¿¡ ÀÇÁ¸ÇÏ°í ÀÖÀ½À» º¸¿©ÁØ´Ù. µû¶ó¼­ FAT ¸ðµâÀº VFAT ¸ðµâ¿¡ ´ëÇÑ ÂüÁ¶¸¦ Æ÷ÇÔÇÏ°í ÀÖ´Ù. ÀÌ ÂüÁ¶´Â VFAT ¸ðµâÀÌ ·ÎµåµÉ ¶§ Ãß°¡µÈ °ÍÀÌ´Ù. Ä¿³ÎÀº ¸ðµâÀÇ ÃʱâÈ­ ·çƾÀ» ºÎ¸£°í, ÀÌ°ÍÀÌ ¼º°øÇÏ¸é ¸ðµâ ¼³Ä¡¸¦ °è¼Ó ÇÏ°Ô µÈ´Ù. ¸ðµâÀÇ Á¤¸® ·çƾÀÇ ÁÖ¼Ò´Â ¸ðµâÀÇ module ÀڷᱸÁ¶¿¡ ÀúÀåµÇ¸ç, ¸ðµâÀÌ ¾ð·ÎµåµÉ ¶§ Ä¿³Î¿¡ ÀÇÇØ È£ÃâµÈ´Ù. ¸¶Áö¸·À¸·Î ¸ðµâÀÇ »óÅ´ ½ÇÇàÁß(RUNNING)À¸·Î ¼³Á¤µÈ´Ù. 12.2 ¸ðµâÀ» ¾ð·ÎµåÇϱ⠸ðµâÀº rmmod ¸í·ÉÀ» »ç¿ëÇÏ¿© Á¦°ÅÇÒ ¼ö ÀÖÁö¸¸, ¿ä±¸½Ã ·ÎµåµÈ ¸ðµâÀº ´õÀÌ»ó »ç¿ëµÇÁö ¾ÊÀ» ¶§ kerneld¿¡ ÀÇÇØ ½Ã½ºÅÛ¿¡¼­ ÀÚµ¿À¸·Î Á¦°ÅµÈ´Ù. kerneldÀÇ Å¸À̸Ӱ¡ ¸¸·áµÉ ¶§¸¶´Ù, kerneld´Â »ç¿ëµÇÁö ¾Ê´Â ¿ä±¸½Ã ·Îµå µÈ ¸ðµâÀ» ½Ã½ºÅÛ¿¡¼­ Á¦°ÅÇÏ´Â ½Ã½ºÅÛ ÄÝÀ» ºÎ¸¥´Ù. ŸÀ̸ÓÀÇ °ªÀº kerneld¸¦ ½ÃÀÛÇÒ ¶§ ¼³Á¤µÇ´Âµ¥,. ÇÊÀÚÀÇ ½Ã½ºÅÛ¿¡¼­´Â 180Ãʸ¶´Ù °Ë»ç Çϵµ·Ï ¼³Á¤µÇ¾î ÀÖ´Ù. ±×·¡¼­, ¿¹¸¦µé¾î ISO9660 ÆÄÀϽýºÅÛÀÌ ¸ðµâ·Î µÇ¾î ÀÖ´Â °÷¿¡¼­ ISO9660 CDROMÀ» ¸¶¿îÆ®Çß´Ù¸é, CDROMÀ» ¾ð¸¶¿îÆ®ÇÑ ÈÄ Á¶±Ý ÀÖÀ¸¸é ISO9660 ¸ðµâÀÌ Ä¿³Î¿¡¼­ Á¦°ÅµÈ´Ù. ¸ðµâÀº Ä¿³ÎÀÇ ´Ù¸¥ ºÎºÐÀÌ Àڽſ¡ ÀÇÁ¸ÇÏ°í ÀÖÀ» ¶§¿¡´Â ¾ð·ÎµåµÉ ¼ö ¾ø´Ù. ¿¹¸¦ µé¾î, Çϳª ÀÌ»óÀÇ VFAT ÆÄÀÏ ½Ã½ºÅÛÀÌ ¸¶¿îÆ®µÇ¾î ÀÖ´Â µ¿¾È ¿¡´Â VFAT ¸ðµâÀ» ¾ð·ÎµåÇÒ ¼ö ¾ø´Ù. lsmodÀÇ Ãâ·ÂÀ» ´«¿©°Üº¸¸é, ¸ðµâ¿¡ ¼ýÀÚ°¡ °°ÀÌ ºÙ¾î ³ª¿À´Â °ÍÀ» º¼ ¼ö ÀÖÀ» °ÍÀÌ´Ù. ¿¹¸¦ µé¾î : Module : #pages: Used by msdos 5 1 vfat 4 1 (autoclean) fat 6 [vfat msdos] 2 (autoclean) Ä«¿îÆ®´Â ÀÌ ¸ðµâ¿¡ ÀÇÁ¸ÇÏ°í ÀÖ´Â Ä¿³Î ¿ä¼ÒÀÇ °³¼öÀÌ´Ù. À§ÀÇ ¿¹¿¡¼­´Â, vfat¿Í msdos ¸ðµâÀÌ fat ¸ðµâ¿¡ ÀÇÁ¸ÇÏ°í ÀÖÀ¸¹Ç·Î Ä«¿îÆ®°¡ 2°¡ µÈ´Ù. vfat¿Í msdos ¸ðµâÀº ÀÌ °ªÀ¸·Î 1À» °®°í Àִµ¥ ÀÌ°ÍÀº ¸¶¿îÆ®µÈ ÆÄÀÏ ½Ã½ºÅÛÀÌ´Ù. ¸¸¾à ´Ù¸¥ VFAT ÆÄÀÏ ½Ã½ºÅÛÀ» ÀоîµéÀ̸é, vfat ¸ðµâÀÇ Ä«¿îÆ®´Â 2°¡ µÉ °ÍÀÌ´Ù. ¸ðµâÀÇ Ä«¿îÆ®´Â ±× À̹ÌÁöÀÇ Ã¹¹ø° longword ¿¡ ÀúÀåµÈ´Ù. ÀÌ Ç׸ñ¿¡´Â ¶ÇÇÑ AUTOCLEAN°ú VISITED Ç÷¡±×°¡ ´õ ÀÖ´Ù. ÀÌ µÎ Ç÷¡±×´Â ¿ä±¸½Ã ·ÎµåµÈ ¸ðµâ¿¡¼­ »ç¿ëµÈ´Ù. ÀÌµé ¸ðµâÀº ÀÚµ¿À¸·Î ¾ðµµµå µÉ ¼ö ÀÖ´Ù´Â °ÍÀ» ½Ã½ºÅÛÀÌ ¾Ë ¼ö ÀÖµµ·Ï AUTOCLEANÀ̶ó°í Ç¥½ÃµÈ´Ù. VISITED Ç÷¡±×´Â ¸ðµâÀÌ Çϳª ÀÌ»óÀÇ ´Ù¸¥ ½Ã½ºÅÛ ±¸¼º¿ä¼Ò¿¡ ÀÇÇØ »ç¿ëµÇ°í ÀÖÀ½À» ¸»ÇÑ´Ù. ÀÌ´Â ´Ù¸¥ ±¸¼º¿ä¼Ò°¡ ±× ¸ðµâÀ» »ç¿ëÇÒ ¶§¸¶´Ù ¼³Á¤ÀÌ µÈ´Ù. kerneld°¡ ½Ã½ºÅÛ¿¡ »ç¿ëµÇÁö ¾Ê°í ÀÖ´Â ¿ä±¸½Ã ·ÎµåµÈ ¸ðµâÀ» Á¦°Å Ç϶ó°í ¿äûÇÒ ¶§¸¶´Ù, ½Ã½ºÅÛÀº Àڽſ¡°Ô ÀÖ´Â ¸ðµç ¸ðµâÀ» µÚÁ®¼­ ±×·± È帵éÀ» °ñ¶ó³½´Ù. ÀÌ´Â ´ÜÁö AUTOCLEANÀ̶ó°í Ç¥½ÃµÇ¾î ÀÖ°í RUNNING »óÅ¿¡ ÀÖ´Â ¸ðµâ¸¸À» ã´Â´Ù. ¸¸¾à ±× Èĺ¸ÀÇ VISITED Ç÷¡±×°¡ ¼³Á¤µÇ¾î ÀÖÁö ¾Ê´Ù¸é ±× ¸ðµâÀ» Á¦°ÅÇÏ°í, ±×·¸Áö ¾Ê´Ù¸é VISITED Ç÷¡±×¸¦ Áö¿ì°í ½Ã½ºÅÛÀÇ ´Ù¸¥ ¸ðµâÀ» °è¼Ó »ìÆ캻´Ù. ÇÑ ¸ðµâÀÌ ¾ð·Îµå °¡´ÉÇÏ´Ù°í ÇÑ´Ù¸é, ±× ¸ðµâÀÌ ÇÒ´ç¹ÞÀº Ä¿³ÎÀÇ ÀÚ¿øÀ» ÇØÁ¦ÇÒ ¼ö ÀÖµµ·Ï ¸ðµâÀÇ Á¤¸® ·çƾÀÌ È£ÃâµÈ´Ù. ¸ðµâÀÇ ÀڷᱸÁ¶´Â DELETED·Î Ç¥½ÃµÇ°í, Ä¿³Î ¸ðµâÀÇ ¸®½ºÆ®¿ÍÀÇ ¿¬°áÀ» ²÷´Â´Ù. ±× ¸ðµâÀÌ ÀÇÁ¸ÇÏ°í ÀÖ´Â ´Ù¸¥ ¸ðµâÀº ´õ ÀÌ»ó Àڽſ¡ ÀÇÁ¸ÇÏÁö ¾Ê´Ù´Â °ÍÀ» ³ªÅ¸ ³»µµ·Ï ÂüÁ¶¸ñ·ÏÀÌ ¼öÁ¤µÈ´Ù. ¸ðµâÀÌ ÇÊ¿ä·Î Çß´ø ¸ðµç Ä¿³Î ¸Þ¸ð¸®´Â ÇØÁ¦µÈ´Ù. ¹ø¿ª : ÀÌÈ£ Á¤¸® : ÀÌÈ£ ===================================================================== 13Àå ÇÁ·Î¼¼¼­ (Processors) <<¸®´ª½º´Â ¿©·¯ ÇÁ·Î¼¼¼­¿¡¼­ ½ÇÇàµÈ´Ù. ÀÌ ÀåÀº À̵éÀ» °£´ÜÈ÷ ¼³¸í ÇÑ´Ù.>> 13.1 X86 TBD 13.2 ARM ARM ÇÁ·Î¼¼¼­´Â ÀúÀü·Â °í¼º´ÉÀÇ 32ºñÆ® RISC ¾ÆÅ°ÅØóÀÌ´Ù. ARMÀº À̵¿ ÀüÈ­, PDA(Personal Data Assistant)¿Í °°Àº ÀÓº£µðµå(embedded) ÀåÄ¡¿¡¼­ ³Î¸® »ç¿ëµÇ°í ÀÖ´Ù. ARMÀº 31°³ÀÇ 32ºñÆ® ·¹Áö½ºÅ͸¦ °¡Áö°í ÀÖÀ¸¸ç °¢ ¸ðµå¿¡¼­ 16°³¸¦ »ç¿ëÇÒ ¼ö ÀÖ´Ù. ¸í·É¾î´Â ´Ü¼øÇÑ load¿Í store¸í·É (¸Þ¸ð¸®¿¡¼­ °ªÀ» °¡Á®¿À°í, °è»êÇÏ°í, °á°ú¸¦ ¸Þ¸ð¸®¿¡ ÀúÀåÇÑ´Ù) À§ÁÖ·Î ±¸¼ºµÇ¾î ÀÖ´Ù. ÇÑ°¡Áö Àç¹ÌÀִ Ư¡Àº ¸ðµç ¸í·ÉÀÌ Á¶°ÇºÎ ¸í·ÉÀ̶ó´Â °ÍÀÌ´Ù. ¿¹¸¦ µé¾î ¾î¶² ·¹Áö½ºÅÍÀÇ °ªÀ» Å×½ºÆ®ÇÑ ÈÄ, ´Ù½Ã °°Àº Á¶°ÇÀ» Å×½ºÆ®ÇÒ ¶§±îÁö, Å×½ºÆ® °á°ú¿¡ µû¶ó ¿øÇÏ´Â ´ë·Î Á¶°ÇºÎ ¸í·ÉÀ» ½ÇÇàÇÒ ¼ö ÀÖ´Ù. ¶Ç´Ù¸¥ Àç¹ÌÀִ Ư¡Àº °ªÀ» ¸Þ¸ð¸®¿¡¼­ ·ÎµåÇϸ鼭 »ê¼ú/½¬ÇÁÆ® ¿¬»êÀ» µ¿½Ã¿¡ ÇÒ ¼ö ÀÖ´Ù´Â °ÍÀÌ´Ù. ARMÀº »ç¿ëÀÚ ¸ðµå¿Í, ¿©±â¼­ SWI(¼ÒÇÁÆ®¿þ¾î ÀÎÅÍ·´Æ®)¸¦ ÅëÇØ µé¾î°¥ ¼ö ÀÖ´Â ½Ã½ºÅÛ ¸ðµå¸¦ Æ÷ÇÔÇÏ¿© ¿©·¯ ¸ðµå¿¡¼­ µ¿ÀÛÇÑ´Ù. ARMÀº ÇÕ¼ºÀ» À§ÇÑ ÇÙ½ÉÀ̸ç, ARM»ç´Â Á÷Á¢ ÇÁ·Î¼¼¼­¸¦ »ý»êÇÏÁö´Â ¾Ê´Â´Ù. ´ë½Å¿¡ ARM ÆÄÆ®³Ê(ÀÎÅÚÀ̳ª LSI µî)°¡ ARM ¾ÆÅ°ÅØó¸¦ ½Ç¸®ÄÜ À¸·Î ±¸ÇöÇÑ´Ù. ÀÌ ¹æ½ÄÀº ´Ù¸¥ ÇÁ·Î¼¼¼­°¡ º¸Á¶ÇÁ·Î¼¼¼­ ÀÎÅÍÆäÀ̽º¸¦ ÅëÇØ ±ä¹ÐÇÏ°Ô °áÇÕµÉ ¼ö ÀÖµµ·Ï Çϸç, ¿©·¯ Á¾·ùÀÇ ¸Þ¸ð¸® °ü¸® À¯´Ö (memory management unit, MMU)ÀÇ º¯ÇüÀ» °®°í ÀÖ´Ù. À̵éÀº ´Ü¼øÇÑ ¸Þ¸ð¸® º¸È£ Á¤Ã¥ºÎÅÍ º¹ÀâÇÑ ÆäÀÌÁö °èÃþ±¸Á¶¿¡±îÁö À̸¥´Ù. 13.3 ¾ËÆÄ AXP ÇÁ·Î¼¼¼­ ¾ËÆÄ AXP ¾ÆÅ°ÅØó´Â 64ºñÆ® load/store RISC ¾ÆÅ°ÅØó·Î¼­ ¼Óµµ¸¦ ¿°µÎ¿¡ µÎ°í ¼³°èµÇ¾ú´Ù. ¸ðµç ·¹Áö½ºÅÍ´Â 64ºñÆ®·Î, 32°³ÀÇ Á¤¼ö ·¹Áö½ºÅÍ¿Í 32°³ÀÇ ½Ç¼ö ·¹Áö½ºÅÍ°¡ ÀÖ´Ù. 31¹ø Á¤¼ö ·¹Áö½ºÅÍ¿Í 31¹ø ½Ç¼ö ·¹Áö½ºÅÍ ´Â null ¿¬»êÀ» À§ÇØ »ç¿ëµÈ´Ù. ÀÌµé ·¹Áö½ºÅ͸¦ ÀÐÀ¸¸é 0ÀÌ µ¹¾Æ¿À°í, À̵鿡 °ªÀ» ¾²´Â °ÍÀº ¾Æ¹«·± È¿°úµµ ¾ø´Ù. ¸ðµç ¸í·ÉÀº 32ºñÆ®ÀÌ¸ç ¸Þ¸ð¸® ¿¬»êÀº ÀÐ±â ¾Æ´Ï¸é ¾²±â ÀÌ´Ù. ÀÌ ¾ÆÅ°ÅØó´Â ±¸ÇöÀÌ ¾ÆÅ°ÅØó¸¦ µû¸£´Â ÇÑ ¿©·¯°¡Áö ±¸ÇöÀ» Çã¿ë ÇÑ´Ù. ¿©±â¿¡´Â ¸Þ¸ð¸®¿¡ ÀúÀåµÈ °ªÀ» Á÷Á¢ ¿¬»ê ´ë»óÀ¸·Î ÇÏ´Â ¸í·ÉÀº ¾ø´Ù. ¸ðµç µ¥ÀÌŸ 󸮴 ·¹Áö½ºÅÍ°£¿¡ ÀÌ·ç¾îÁø´Ù. µû¶ó¼­ ¸Þ¸ð¸®ÀÇ Ä«¿îÅÍ °ªÀ» Áõ°¡½ÃÅ°°í ½ÍÀ¸¸é ¸ÕÀú ·¹Áö½ºÅÍ¿¡ Àоî¿Â ´ÙÀ½ °ªÀ» º¯°æÇÏ°í ¸Þ¸ð¸®¿¡ ±â·ÏÇØ¾ß ÇÑ´Ù. ¸í·Éµé°£ÀÇ »óÈ£ÀÛ¿ëÀº ÇÑ ¸í·ÉÀÌ °ªÀ» ·¹Áö½ºÅÍ ³ª ¸Þ¸ð¸®¿¡ ¾²°í, ´Ù¸¥ ¸í·ÉÀÌ ±× ·¹Áö½ºÅͳª ¸Þ¸ð¸®¿¡¼­ Àоî¿À´Â °ÍÀ» ÅëÇØ ÀÌ·ç¾îÁø´Ù. ¾ËÆÄ AXPÀÇ ÇÑ°¡Áö Àç¹ÌÀִ Ư¡Àº, µÎ ·¹Áö½ºÅÍ °ªÀÌ °°Àº°¡¸¦ Å×½ºÆ®ÇÏ´Â °Í°ú °°ÀÌ Ç÷¡±×¸¦ ¹ß»ý½ÃÅ°´Â ¸í·ÉÀÇ °á°ú°¡, ÇÁ·Î ¼¼¼­ »óÅ ·¹Áö½ºÅÍ¿¡ ÀúÀåµÇ´Â °ÍÀÌ ¾Æ´Ï¶ó Á¦3ÀÇ ·¹Áö½ºÅÍ¿¡ ÀúÀåÇÒ ¼ö ÀÖ´Â ¸í·ÉÀÌ ÀÖ´Ù´Â Á¡ÀÌ´Ù. óÀ½ º¸±â¿¡´Â ÀÌ»óÇÏÁö¸¸ »óÅ ·¹Áö½ºÅÍ¿¡ ´ëÇÑ ÀÇÁ¸À» Á¦°ÅÇÔÀ¸·Î½á °¢ »çÀÌŬ¿¡ ¿©·¯ ¸í·ÉÀ» ½ÇÇàÇÒ ¼ö ÀÖ´Â ÇÁ·Î ¼¼¼­¸¦ ¸¸µé±â°¡ ´õ¿í ½¬¿öÁø´Ù. ¼­·Î °ü°è¾ø´Â ·¹Áö½ºÅ͸¦ »ç¿ëÇÏ´Â ¸í·ÉÀº ÇϳªÀÇ »óÅ ·¹Áö½ºÅÍ°¡ ÀÖÀ» ¶§Ã³·³ ½ÇÇàÀ» À§ÇØ ¼­·Î¸¦ ±â´Ù¸± ÇÊ¿ä°¡ ¾ø´Ù. ¸Þ¸ð¸®¿¡ ´ëÇÑ Á÷Á¢ ¿¬»êÀÌ ¾ø´Â °Í°ú, ·¹Áö½ºÅÍÀÇ ¼ö°¡ ¸¹Àº °Íµµ ¿©·¯ ¸í·ÉÀ» µ¿½Ã¿¡ ½ÇÇàÇϴµ¥ µµ¿òÀÌ µÈ´Ù. ¾ËÆÄ AXP ¾ÆÅ°ÅØó´Â PALcode(Ư±Ç ¾ÆÅ°ÅØó ¶óÀ̺귯¸® ÄÚµå)¶ó°í ºÒ¸® ´Â ¼­ºê·çƾµéÀ» »ç¿ëÇÑ´Ù. PALcode´Â ¿î¿µÃ¼Á¦, ¾ËÆÄ AXP ¾ÆÅ°ÅØó¸¦ °®´Â CPU ±¸Çö, ½Ã½ºÅÛ Çϵå¿þ¾î¿¡ µû¶ó ´Ù¸£´Ù. ÀÌµé ¼­ºê·çƾÀº ÄÁÅؽº Æ® ½ºÀ§Äª(context switching), ÀÎÅÍ·´Æ®, ¿¹¿Ü(exception), ¸Þ¸ð¸® °ü¸® µîÀÇ ¿î¿µÃ¼Á¦ ÇÁ¸®¹ÌƼºê¸¦ Á¦°øÇÑ´Ù. ÀÌµé ¼­ºê·çƾÀº Çϵå¿þ¾î³ª CALL_PAL ¸í·É¿¡ ÀÇÇØ È£ÃâµÉ ¼ö ÀÖ´Ù. PALcode´Â ³»ºÎ ÇÁ·Î¼¼¼­ ·¹Áö½ºÅÍ ¿Í °°Àº Àú¼öÁØ Çϵå¿þ¾î ±â´É¿¡ ´ëÇÑ Á÷Á¢ Á¢±ÙÀ» Á¦°øÇϱâ À§ÇØ, ±¸Çö¿¡ µû¸¥ ¾à°£ÀÇ È®ÀåÀ» Æ÷ÇÔÇÑ Ç¥ÁØ ¾ËÆÄ AXP ¾î¼Àºí·¯·Î ÀÛ¼ºµÈ´Ù. PALcode ´Â PALmode¿¡¼­ ½ÇÇàµÈ´Ù. ÀÌ ¸ðµå´Â ¸î°¡Áö ½Ã½ºÅÛ À̺¥Æ®ÀÇ ¹ß»ýÀ» ÁßÁö ½ÃÅ°°í PALcode°¡ ½ÇÁ¦ ½Ã½ºÅÛ Çϵå¿þ¾î¿¡ ´ëÇÑ Á¦¾î¸¦ ¿Ï·áÇϵµ·Ï Çϴ Ư±Ç ¸ðµåÀÌ´Ù. ¹ø¿ª : ½É¸¶·Î Á¤¸® : ÀÌÈ£ ===================================================================== 14Àå ¸®´ª½º Ä¿³Î ¼Ò½º (The Linux Kernel Sources) <<ÀÌ ÀåÀº ƯÁ¤ Ä¿³Î ÇÔ¼ö¸¦ ã±â À§Çؼ­ ¸®´ª½º Ä¿³Î ¼Ò½º ¾îµð¼­ºÎÅÍ ½ÃÀÛÇØ¾ß ÇÏ´ÂÁö À̾߱âÇÑ´Ù.>> ÀÌ Ã¥Àº C ¾ð¾î¿¡ ´ëÇÑ Áö½ÄÀ» ¿ä±¸ÇÏÁö´Â ¾ÊÁö¸¸ ¸®´ª½º Ä¿³ÎÀÇ µ¿ÀÛÀ» º¸´Ù Àß ÀÌÇØÇÏ·Á¸é ¸®´ª½º Ä¿³ÎÀÇ ¼Ò½º¸¦ °¡Áö°í ÀÖ´Â °ÍÀÌ ÁÁ´Ù. ´Ù½Ã ¸»Çϸé, Ä¿³ÎÀÇ ¼Ò½º ÇÁ·Î±×·¥Àº ¸®´ª½º ¿î¿µÃ¼Á¦¸¦ ½Éµµ±í°Ô ÀÌÇØÇϴµ¥ ÀÖ¾î È¿°úÀûÀÎ ±³ÀçÀÌ´Ù. ÀÌ ÀåÀº Ä¿³Î ¼Ò½º Àü¹Ý¿¡ ´ëÇØ °³°ýÇÑ´Ù. Áï Ä¿³Î ¼Ò½º°¡ ¾î¶»°Ô ¹è¿­µÇ¾î ÀÖ´ÂÁö, ƯÁ¤ Äڵ带 ãÀ¸·Á¸é ¾îµð¼­ ½ÃÀÛ ÇØ¾ß ÇÏ´ÂÁö ¼³¸íÇÑ´Ù. ¾îµð¼­ ¸®´ª½º Ä¿³Î ¼Ò½º¸¦ ¾òÀ» ¼ö Àִ°¡ ÁÖ¿ä ¸®´ª½º ¹èÆ÷Æǵé(Craftworks, Debian, Slackware, Red Hat µî)Àº ¸ðµÎ ¸®´ª½º Ä¿³Î ¼Ò½º¸¦ Æ÷ÇÔÇÏ°í ÀÖ´Ù. ÀϹÝÀûÀ¸·Î »ç¿ëÀÚÀÇ ¸®´ª½º ½Ã½ºÅÛ¿¡ ¼³Ä¡µÈ ¸®´ª½º Ä¿³ÎÀº ÀÌ ¼Ò½º Äڵ带 ÄÄÆÄÀÏÇÏ¿© »ý¼ºÇÑ °ÍÀÌ´Ù. ¸®´ª½ºÀÇ ¼º°Ý»ó, ¼Ò½ºµéÀÌ °è¼Ó º¯°æµÇ¹Ç·Î »ç¿ëÀÚÀÇ ½Ã½ºÅÛ¿¡ ¼³Ä¡µÈ °ÍÀº Á¶±Ý ¿¾³¯ °ÍÀÌ µÇ°í ¸¸´Ù. ÃֽŠ¹öÀüÀÇ ¼Ò½º ÇÁ·Î±×·¥Àº ºÎ·Ï B¿¡¼­ ¾ð±ÞµÈ À¥ ½ÎÀÌÆ®¿¡¼­ ±¸ÇÒ ¼ö ÀÖ´Ù. À̵éÀº ftp://ftp.cs.helsinki.fi°ú À̸¦ ±×¸²ÀÚó·³ º¹»çÇÏ´Â ´Ù¸¥ À¥ ½ÎÀÌÆ® ¿¡¼­ µé¾î ÀÖ´Ù. Çï½ÌÅ°ÀÇ À¥ ½ÎÀÌÆ®°¡ °¡Àå ÃֽŠ¹öÀüÀÇ ¼Ò½º¸¦ °¡Áö°í ÀÖÀ¸¸ç, MIT³ª Sunsite¿Í °°Àº ½ÎÀÌÆ®µé·Î ºñ±³Àû ÃֽŠ¹öÀüÀÇ ¼Ò½º¸¦ Á¦°øÇÑ´Ù. À¥ ½ÎÀÌÆ®¿¡ Á¢±ÙÇÒ ¼ö ¾ø´Ù°í ÇÏ´õ¶óµµ, ¸¹Àº º¥´õµéÀÌ ÁÖ¿ä À¥ ½ÎÀÌÆ®¿¡ ÀÖ´Â ³»¿ëµéÀ» CD ROM ÇüÅ·Π¸Å¿ì Àú·ÅÇÑ °¡°ÝÀ¸·Î Á¦°øÇÏ°í ÀÖÀ¸¹Ç·Î, À̸¦ ÀÌ¿ëÇÏ¸é µÉ °ÍÀÌ´Ù. 1³â¿¡ ³×¹ø ȤÀº ¸Å´Þ Á¤±âÀûÀ¸·Î ¾÷±×·¹À̵åÆÇ À» Á¦°øÇØÁÖ´Â ±¸µ¶ ¼­ºñ½ºµµ ÀÖ´Ù. Áö¿ªº° ¸®´ª½º À¯Àú ±×·ìµµ ¼Ò½º¸¦ ±¸Çϴµ¥ À¯¿ëÇÑ °÷ÀÌ´Ù . ¸®´ª½º Ä¿³ÎÀÇ ¹öÀü ÇüÅ´ ¸Å¿ì ´Ü¼øÇÏ´Ù. ¦¼ö ¹öÀü Ä¿³Î(¿¹¸¦ µéÀÚ¸é 2.0.30)Àº ¾ÈÁ¤ÀûÀÌ°í ¹ßÇ¥µÈ ¹öÀüÀÌ°í, Ȧ¼ö ¹öÀü Ä¿³Î(¿¹¸¦ µéÀÚ¸é 2.1.42)Àº ¸ðµÎ °³¹ß¿ë Ä¿³ÎÀÌ´Ù. º»Ã¥Àº ¾ÈÁ¤ÀûÀÎ 2.0.30 ¼Ò½º Æ®¸®¸¦ ±â¹ÝÀ¸·Î ÇÏ°í ÀÖ´Ù. °³¹ß¿ë Ä¿³ÎÀº ÃֽŠ±â´ÉµéÀ» ¸ðµÎ Æ÷ÇÔÇÏ°í ÀÖÀ¸¸ç ¶ÇÇÑ ÃֽŠµå¶óÀ̹öµéµµ ¸ðµÎ Áö¿øÇÑ´Ù. °³¹ß Ä¿³ÎÀº ºÒ¾ÈÁ¤ÇÒ ¼öµµ ÀÖ°í, ÀÌ´Â »ç¿ëÀÚ°¡ ¹Ù¶óÁö ¾Ê´Â °ÍÀÌ°ÚÁö¸¸, ÃֽŠĿ³ÎÀ» »ç¿ëÇØ º¸´Â °ÍÀº ¸®´ª½º °øµ¿Ã¼¿¡ ÀÖ¾î Áß¿äÇÑ ÀÏÀÌ´Ù. ±×·¡¾ß Àüü °øµ¿Ã¼¸¦ À§ÇØ Å×½ºÆ®¸¦ ÇÒ ¼ö ÀÖ´Ù. ½ÇÁ¦ Á¦Ç°À¸·Î ³ª¿Â Ä¿³ÎÀÌ ¾Æ´Ñ °ÍÀ» ½áº¸·Á °í ÇÒ ¶§ ½Ã½ºÅÛ Àüü¸¦ ¹é¾÷Çصδ °ÍÀÌ ÁÁ´Ù´Â °ÍÀ» ±â¾ïÇϱ⠹ٶõ´Ù. Ä¿³Î ¼Ò½º¿¡¼­ ¹Ù²ï °ÍµéÀº ÆÐÄ¡(patch) ÆÄÀÏ·Î ¹èÆ÷µÈ´Ù. patch ÇÁ·Î ±×·¥Àº ¼Ò½º ÆÄÀϵ鿡 ÆíÁýµÈ °ÍµéÀ» Àû¿ëÇϴµ¥ »ç¿ëµÈ´Ù. µû¶ó¼­, ¿¹¸¦ µé¾î 2.0.29 Ä¿³Î ¼Ò½º¸¦ °¡Áö°í ÀÖ°í, À̸¦ 2.0.30 ¼Ò½º·Î ¹Ù²Ù°í ½Í´Ù ¸é, 2.0.30 ÆÐÄ¡ ÆÄÀÏÀ» ±¸Çؼ­ ÆÐÄ¡¸¦ ¼Ò½º Æ®¸®¿¡ Àû¿ëÇÏ¸é µÈ´Ù. $ cd /usr/src/inux $ patch -p1 < patch-2.0.30 ÀÌ´Â Àüü ¼Ò½º Æ®¸®¸¦ º¹»çÇÒ ÇÊ¿ä°¡ ¾ø¾î, ´À¸° Á÷·Ä ¿¬°áÀ» ÅëÇÏ´Â °æ ¿ì ´õ¿í À¯¿ëÇÏ´Ù. Ä¿³Î ÆÐÄ¡¸¦ ±¸Çϱâ ÁÁÀº °÷Àº(°ø½ÄÀûÀÌ´ø ºñ°ø½ÄÀûÀÌ´ø) http://www.linuxhq.com À¥ »çÀÌÆ®ÀÌ´Ù . Ä¿³Î ¼Ò½º´Â ¾î¶»°Ô ¹è¿­µÇ¾î Àִ°¡ ¼Ò½º Æ®¸®ÀÇ ½ÃÀÛÀÎ /usr/src/linux¿¡¼­ º¸¸é ¿©·¯°³ÀÇ µð·ºÅ丮°¡ ÀÖ´Ù. arch : arch ¼­ºêµð·ºÅ丮´Â ¸ðµç ¾ÆÅ°ÅØÃÄ¿¡ Á¾¼ÓÀûÀÎ Ä¿³Î Äڵ带 Æ÷ÇÔÇÏ°í ÀÖ´Ù. ¿©±â¿¡´Â ¼­ºêµð·ºÅ丮°¡ ´õ Àִµ¥, °¢°¢ Áö¿ø ÇÏ´Â ¾ÆÅ°ÅØÃĺ°·Î ÀÖ´Ù. ¿¹¸¦ µé¾î i386, alpha°°Àº À̸§ÀÇ ¼­ºê µð·ºÅ丮°¡ Á¸ÀçÇÑ´Ù. include : include ¼­ºêµð·ºÅ丮´Â Ä¿³Î Äڵ带 ºôµåÇϴµ¥ ÇÊ¿äÇÑ ¸ðµç ÀÎŬ·çµå(include) ÆÄÀϵéÀÇ ´ëºÎºÐÀ» °¡Áö°í ÀÖ´Ù. ¿©±â¿¡´Â Áö¿øÇÏ´Â ¾ÆÅ°ÅØÃĺ°·Î Çϳª¾¿ ¼­ºêµð·ºÅ丮°¡ ÀÖ´Ù. /include/asm ¼­ºêµð·ºÅ丮´Â ÇöÀç ¾ÆÅ°ÅØÃÄ¿¡ ÇÊ¿äÇÑ ½ÇÁ¦ µð·ºÅ丮·Î (¿¹¸¦ µé¾î, include/asm-i386) ¼ÒÇÁÆ® ¸µÅ©µÇ¾î ÀÖ´Ù. ¾ÆÅ°ÅØÃĸ¦ ´Ù¸¥ °ÍÀ¸·Î ¹Ù²Ù·Á¸é Ä¿³Î makefileÀ» ¼öÁ¤ÇÏ°í ¸®´ª½º Ä¿³Î ȯ°æ¼³Á¤ ÇÁ·Î±×·¥À¸·Î µ¹¾Æ¿Í¾ß ÇÑ´Ù. init : ÀÌ µð·ºÅ丮´Â Ä¿³ÎÀÇ ÃʱâÈ­ Äڵ带 °¡Áö°í ÀÖÀ¸¸ç, Ä¿³ÎÀÌ ¾î¶»°Ô µ¿ÀÛÇÏ´ÂÁö º¸±â ½ÃÀÛÇϱ⿡ ÁÁÀº °÷ÀÌ´Ù. mm : ÀÌ µð·ºÅ丮´Â ¸ðµç ¸Þ¸ð¸® °ü¸® Äڵ带 °¡Áö°í ÀÖ´Ù. ¾ÆÅ°ÅØÃÄ Á¾¼ÓÀûÀÎ ¸Þ¸ð¸® °ü¸® ÄÚµå´Â arch/*/mm/ ¾Æ·¡¿¡ ÀÖ´Ù. ¿¹¸¦ µé¾î, arch/i386/mm/fault.c °°Àº °÷¿¡ ÀÖ´Ù. drivers : ¸ðµç ½Ã½ºÅÛÀÇ µð¹ÙÀ̽º µå¶óÀ̹ö´Â ÀÌ µð·ºÅ丮¿¡ ÀÖ´Ù. À̵éÀº µð¹ÙÀ̽º µå¶óÀ̹öÀÇ À¯Çüº°·Î Á»´õ ¼¼ºÐÈ­ µÇ¸é. ¿¹¸¦ µé¾î ºí·° µð¹ÙÀ̽º µå¶óÀ̹ö´Â block¿¡ ÀÖ´Ù. ipc : ÀÌ µð·ºÅ丮´Â Ä¿³ÎÀÇ ÇÁ·Î¼¼½º°£ Åë½Å Äڵ带 °¡Áö°í ÀÖ´Ù. modules : ÀÌ´Â ´Ü¼øÈ÷ ºôµåµÈ ¸ðµâÀ» ÀúÀåÇϱâ À§ÇÑ µð·ºÅ丮ÀÌ´Ù. fs : ¸ðµç ÆÄÀÏ ½Ã½ºÅÛ Äڵ带 °¡Áö°í ÀÖ´Ù. ÆÄÀÏ ½Ã½ºÅÛº°·Î Çϳª¾¿ µð·ºÅ丮°¡ ¼¼ºÐÈ­µÈ´Ù. ¿¹¸¦ µé¾î vfat, ext2 °°Àº ¼­ºêµð·ºÅ丮 °¡ ÀÖ´Ù. kernel : ¸ÞÀÎ Ä¿³Î Äڵ尡 µé¾î ÀÖ´Ù. ¾ÆÅ°ÅØÃÄ Á¾¼ÓÀûÀÎ Ä¿³Î ÄÚµå ´Â arch/*/kernel¿¡ ÀÖ´Ù. net : Ä¿³ÎÀÇ ³×Æ®¿öÅ· Äڵ尡 µé¾î ÀÖ´Ù. lib : ÀÌ µð·ºÅ丮´Â Ä¿³ÎÀÇ ¶óÀ̺귯¸® Äڵ带 °¡Áö°í ÀÖ´Ù. ¾ÆÅ°ÅØ ÃÄ Á¾¼ÓÀûÀÎ ¶óÀ̺귯¸® ÄÚµå´Â arch/*/lib/¿¡ ÀÖ´Ù. scripts : ÀÌ µð·ºÅ丮´Â Ä¿³ÎÀ» ¼³Á¤Çϴµ¥ »ç¿ëµÇ´Â ½ºÅ©¸³Æ®(¿¹ ¸¦ µé¾î awk³ª tlk ½ºÅ©¸³Æ®)¸¦ °¡Áö°í ÀÖ´Ù. ¾îµð¼­ºÎÅÍ º¸±â ½ÃÀÛÇÒ °ÍÀÌ°¡ ¸®´ª½º Ä¿³Îó·³ ¹æ´ëÇÏ°í º¹ÇÕÀûÀÎ ÇÁ·Î±×·¥Àº µé¿©´Ùº¸±â¿¡ À§¾ÐÀûÀÏ ¼ö ÀÖ´Ù. ÀÌ´Â ½Ç·Î µÈ Ä¿´Ù¶õ °øó·³ ³¡ÀÌ º¸ÀÌÁö ¾Ê´Â °ÍÀ̱⵵ ÇÏ´Ù. Ä¿³ÎÀÇ ÇÑ ºÎºÐÀ» º¸´Ù º¸¸é °ü·ÃµÈ ´Ù¸¥ ¿©·¯ ÆÄÀϵéÀ» º¸°ÔµÇ°í, ¿À·¡Áö ¾Ê¾Æ ¹«¾ùÀ» ãÀ¸·Á°í Çß´ÂÁö Àؾî¹ö¸®°Ô µÈ´Ù. ´ÙÀ½ ÀÛÀº ÀåµéÀº ¾î¶² ÁÖÁ¦¸¦ º¸·Á ÇÒ¶§ ¼Ò½º Æ®¸®ÀÇ ¾îµð¸¦ º¸´Â°Ô ÁÁÀºÁö ÈùÆ®¸¦ Á¦°øÇÒ °Í ÀÌ´Ù. ½Ã½ºÅÛ ½ÃÀÛ°ú ÃʱâÈ­ ÀÎÅÚ ±â¹Ý ½Ã½ºÅÛ¿¡¼­, Ä¿³ÎÀº loadlin.exe³ª LILO°¡ ¸®´ª½º Ä¿³ÎÀ» ¸Þ¸ð¸®·Î ÀоîµéÀÎ ÈÄ Ä¿³Î¿¡ Á¦¾î±ÇÀ» ³Ñ°ÜÁÜÀ¸·Î½á ½ÃÀÛÇÑ´Ù. ÀÌ ºÎºÐ¿¡ ´ëÇؼ­´Â arch/i386/kernel/-head.S¸¦ º¸±â ¹Ù¶õ´Ù. head.S´Â ¾ÆÅ°ÅØÃÄ Á¾¼ÓÀûÀÎ ¼Â¾÷À» ÇÑ ÈÄ init/main.c¿¡ ÀÖ´Â main() ·çƾÀ¸·Î Á¡ÇÁÇÑ´Ù. ¸Þ¸ð¸® °ü¸® ÀÌ ÄÚµå´Â ´ëºÎºÐ mm¿¡ ÀÖÁö¸¸, ¾ÆÅ°ÅØÃÄ Á¾¼ÓÀûÀÎ ÄÚµå´Â arch/*/mm¿¡ ÀÖ´Ù. ÆäÀÌÁö ÆúÆ® ó¸® ÄÚµå´Â mm/memory.c¿¡ ÀÖ°í, ¸Þ¸ð¸® ¸ÅÇΰú ÆäÀÌÁö ij½Ã ÄÚµå´Â mm/filemap.c¿¡ ÀÖ´Ù. ¹öÆÛ Ä³½Ã´Â mm/buffer.c¿¡, ½º¿Ò ij½Ã´Â mm/swap_state.c¿Í mm/-swapfile.c¿¡ ±¸ÇöµÇ¾î ÀÖ´Ù. Ä¿³Î »ó´ëÀûÀ¸·Î ÀϹÝÀûÀÎ ÄÚµå´Â kernel¿¡ ÀÖ°í, ¾ÆÅ°ÅØÃÄ Á¾¼ÓÀûÀÎ ÄÚµå ´Â arch/*/kernel¿¡ ÀÖ´Ù. ½ºÄÉÁì·¯´Â kernel/sched.c¿¡ ÀÖ°í, fork ÄÚµå ´Â kernel/fork.c¿¡ ÀÖ´Ù. ÇϹݺΠÇڵ鷯 ÄÚµå´Â include/linux/interrupt.h¿¡ ÀÖ´Ù. task_struct ÀڷᱸÁ¶´Â include/linux/sched.h¿¡¼­ ãÀ» ¼ö ÀÖÀ» °ÍÀÌ´Ù. PCI PCI À¯»ç µå¶óÀ̹ö´Â drivers/pci/pci.c¿¡ ÀÖ°í, ½Ã½ºÅÛ ¹üÀ§ÀÇ Á¤Àǵé Àº include/-linux/pci.h¿¡ µÇ¾î ÀÖ´Ù. °¢ ¾ÆÅ°ÅØÃĵéÀº ƯÁ¤ PCI BIOS Äڵ带 °¡Áö°í Àִµ¥, ¾ËÆÄÀÇ PCI BIOS ÄÚµå´Â arch/alpha/kernel/bios32.c¿¡ ÀÖ´Ù. ÇÁ·Î¼¼½º°£ Åë½Å ÀÌ°ÍÀº ¸ðµÎ ipc¿¡ µé¾î ÀÖ´Ù. ¸ðµç ½Ã½ºÅÛ V IPC ¿ÀºêÁ§Æ®µéÀº ipc_perm ÀڷᱸÁ¶¿¡ µé¾î ÀÖ°í, include/linux/ipc.h¿¡¼­ ãÀ» ¼ö ÀÖ´Ù. ½Ã½ºÅÛ V ¸Þ½ÃÁöµéÀº ipc/msg.c¿¡, °øÀ¯ ¸Þ¸ð¸®´Â ipc/shm.c¿¡, ¼¼¸¶Æ÷¾î´Â ipc/sem.c¿¡ ±¸ÇöµÇ¾î ÀÖ´Ù. ÆÄÀÌÇÁ´Â ipc/pipe.c¿¡ ±¸ÇöµÇ¾î ÀÖ´Ù. ÀÎÅÍ·´Æ® ó¸® Ä¿³ÎÀÇ ÀÎÅÍ·´Æ® ó¸® ÄÚµå´Â ´ëºÎºÐ ¸ðµÎ ¸¶ÀÌÅ©·ÎÇÁ·Î¼¼¼­ (¶§¶§·Î Ç÷§ Æû) Á¾¼ÓÀûÀÌ´Ù. ÀÎÅÚÀÇ ÀÎÅÍ·´Æ® ó¸® ÄÚµå´Â arch/i386/kernel/irq.c¿¡ ÀÖ°í, Á¤ÀÇ´Â include/asm-i386/irq.h¿¡ µÇ¾î ÀÖ´Ù.µð¹ÙÀ̽º µå¶óÀ̹ö ¸®´ª½º Ä¿³Î ¼Ò½º ÄÚµåÀÇ ´ëºÎºÐÀº µð¹ÙÀ̽º µå¶óÀ̹ö¿¡ ÀÖ´Ù. ¸ðµç ¸®´ª ½º µð¹ÙÀ̽º µå¶óÀ̹ö ¼Ò½º´Â drivers¿¡ ÀÖÁö¸¸, À̵éÀº ÀåÄ¡ À¯Çü¿¡ µû¶ó ¼¼ºÐÈ­ µÈ´Ù. /block : ºí·° µð¹ÙÀ̽º µå¶óÀ̹ö. ¿¹¸¦ µé¾î IDE µð¹ÙÀ̽º µå¶óÀ̹ö ´Â ide.c¿¡ ÀÖ´Ù. ¸ðµç ÀåÄ¡°¡ ¾î¶»°Ô ÆÄÀÏ ½Ã½ºÅÛÀ» °¡Áú ¼ö ÀÖÀ¸¸ç, ¾î¶»°Ô ÃʱâÈ­µÇ´ÂÁö º¸°í ½Í´Ù¸é drivers/block/genhd.c ¿¡ ÀÖ´Â device_setup()À» º¸±â ¹Ù¶õ´Ù. ÀÌ´Â ÇÏµå µð½ºÅ©¸¸ Ãʱâ È­ÇÏ´Â °ÍÀÌ ¾Æ´Ï¶ó, ³×Æ®¿÷À» nfs ÆÄÀÏ ½Ã½ºÅÛ¿¡ ¸¶¿îÆ®ÇÏ·Á°í ÇÑ´Ù¸é ³×Æ®¿÷µµ ÃʱâÈ­ÇÑ´Ù. ºí·° ÀåÄ¡¿¡´Â IDE¿Í SCSI ±â¹Ý ÀåÄ¡ °¡ Æ÷ÇԵȴÙ. /char : ttys, ½Ã¸®¾ó Æ÷Æ®³ª ¸¶¿ì½º°°Àº ¹®ÀÚ ±â¹Ý ÀåÄ¡µéÀ» º¼ ¼ö ÀÖ´Ù. /cdrom : ¸®´ª½ºÀÇ ¸ðµç CDROM Äڵ尡 µé¾î ÀÖ´Ù. Ưº°ÇÑ CDROM ÀåÄ¡(Soundblaster CDROM °°Àº)µµ ¿©±â¼­ ãÀ» ¼ö ÀÖ´Ù. IDE CDROM µå¶óÀ̹ö´Â drivers/block¿¡ ÀÖ´Â ide-cd.c¿¡ ÀÖ°í, SCSI CDROM µå¶óÀ̹ö´Â drivers/scsi¿¡ ÀÖ´Â scsi.c¿¡ ÀÖ´Ù´Â Á¡¿¡ ÁÖÀÇÇϱ⠹ٶõ´Ù. /pci : ¿©±â¿¡´Â PCI À¯»ç µå¶óÀ̹öÀÇ ¼Ò½º°¡ ÀÖ´Ù. PCI ¼­ºê½Ã½ºÅÛ ÀÌ ¾î¶»°Ô ¸ÅÇεǰí ÃʱâÈ­µÇ´ÂÁö º¸±â ÁÁÀº °÷ÀÌ´Ù. ¾ËÆÄ AXP PCI È®Á¤ ÄÚµå´Â arch/alpha/kernel/bios32.c¿¡ ÀÖ°í, ÀÌ´Â º¼¸¸ÇÑ °¡Ä¡°¡ ÀÖ´Ù. /scsi : ¸ðµç SCSI ÄÚµå¿Í ÇÔ²² ¸®´ª½º°¡ Áö¿øÇÏ´Â ¸ðµç SCSI ÀåÄ¡µé ÀÇ µå¶óÀ̹ö°¡ ÀÖ´Â °÷ÀÌ´Ù. /net : ³×Æ®¿÷ ÀåÄ¡ µð¹ÙÀ̽º µå¶óÀ̹ö¸¦ º¼ ¼ö ÀÖ´Â °÷ÀÌ´Ù. DECChip 21040 PCI ÀÌ´õ³Ý µå¶óÀ̹ö´Â tulip.c¿¡ ÀÖ´Ù. /sound : ¸ðµç »ç¿îµå Ä«µå µå¶óÀ̹ö°¡ ÀÖ´Â °÷ÀÌ´Ù. ÆÄÀÏ ½Ã½ºÅÛ EXT2 ÆÄÀÏ ½Ã½ºÅÛ ¼Ò½º´Â fs/ext2/ µð·ºÅ丮¿¡ ÀÖ°í ÀڷᱸÁ¶´Â include/linux/-ext2_fs.h, ext2_fs_i.h, ext2_fs_sb.h¿¡ Á¤ÀǵǾî ÀÖ´Ù. °¡»ó ÆÄÀÏ ½Ã½ºÅÛ ÀڷᱸÁ¶´Â include/linux/fs.h¿¡ Á¤ÀǵǾî ÀÖ°í, ÄÚµå ´Â fs/*¿¡ ÀÖ´Ù. ¹öÆÛ Ä³½Ã¿Í update Ä¿³Î µ¥¸óÀº fs/buffer.c¿¡ ±¸Çö µÇ¾î ÀÖ´Ù. ³×Æ®¿÷ ³×Æ®¿öÅ· ÄÚµå´Â net¿¡ ÀÖ°í, ÀÎŬ·çµå(include) ÆÄÀϵéÀÇ ´ëºÎºÐÀº include/net¿¡ ÀÖ´Ù. BSD ¼ÒÄÏ ÄÚµå´Â net/socket.c¿¡ ÀÖ°í, IP ¹öÀü 4 INET ¼ÒÄÏ ÄÚµå´Â inet/ipv4/-af_inet.c¿¡ ÀÖ´Ù. ÀϹÝÀûÀÎ ÇÁ·ÎÅäÄÝ Áö¿ø ÄÚµå´Â (sk_buff ó¸® ·çƾµµ Æ÷ÇÔÇÏ¿©) net/core/¿¡, TCP/IP ³×Æ®¿öÅ· ÄÚµå´Â net/ipv4/¿¡ ÀÖ´Ù. ³×Æ®¿öÅ© µð¹ÙÀ̽º µå¶óÀ̹ö´Â drivers/net¿¡ ÀÖ´Ù. ¸ðµâ Ä¿³Î ¸ðµâ ÄÚµå´Â ÀϺκÐÀº Ä¿³Î¿¡, ÀϺκÐÀº modules ÆÐÅ°Áö¿¡ ÀÖ´Ù. Ä¿³Î ÄÚµå´Â ¸ðµÎ kernel/modules.c¿¡ ÀÖ°í, ÀڷᱸÁ¶¿Í Ä¿³Î µ¥¸ó kerneld ¸Þ½ÃÁö´Â include/-linux/module.h¿Í include/linux/kerneld.h¿¡ ÀÖ´Ù. ELF ¿ÀºêÁ§Æ® ÆÄÀÏÀÇ ±¸Á¶´Â include/linux/elf.h¿¡¼­ º¼ ¼ö ÀÖ´Ù. ¹ø¿ª : ÀÌÈ£, ÀÌ´ëÇö, ±èÁø¼®, ½É¸¶·Î Á¤¸® : ÀÌÈ£ ===================================================================== ¿ë·Ê (Glossary) ÀÎÀÚ : (Argument) ÇÔ¼ö³ª ·çƾ¿¡´Â ó¸®ÇÒ ÀÎÀÚ°¡ Àü´ÞµÈ´Ù. ARP : Address Resolution Protocol, ÁÖ¼Ò °áÁ¤ ÇÁ·ÎÅäÄÝ. IP ÁÖ¼Ò¸¦ ¹°¸® Àû Çϵå¿þ¾î ÁÖ¼Ò·Î º¯È¯ÇÏ´Â µ¥ »ç¿ëÇÑ´Ù. ¾Æ½ºÅ° (ASCII) : American Standard Code for Information Interchange, Á¤º¸±³È¯À» À§ÇÑ ¹Ì Ç¥ÁØ ÄÚµå. ¾ËÆĺªÀÇ ¸ðµç ±ÛÀÚ´Â 8ºñÆ® ÄÚµå·Î Ç¥ÇöÇÑ´Ù. ¾Æ½ºÅ°´Â ±ÛÀÚµéÀ» ÀúÀåÇÏ´Â µ¥ °¡Àå ¸¹ÀÌ »ç¿ëµÇ´Â ÄÚµå ÀÌ´Ù. ºñÆ® (Bit) : 0À̳ª 1(²¨Áø »óÅÂ¿Í ÄÑÁø »óÅÂ)À» ³ªÅ¸³»´Â ÇÑ ºñÆ®ÀÇ µ¥ÀÌÅÍ ÇϹݺΠÇڵ鷯 (Bottom Half Handler) : Ä¿³Î ³»ºÎ¿¡ Àִ ť¿¡ ½×ÀÎ ÀÛ¾÷ À» ¼öÇàÇÏ´Â Çڵ鷯 ¹ÙÀÌÆ® (Byte) : 8 ºñÆ®ÀÇ µ¥ÀÌÅÍ°¡ ¸ð¿©¼­ ¹ÙÀÌÆ®¸¦ ÀÌ·é´Ù. C : °í±Þ ÇÁ·Î±×·¡¹Ö ¾ð¾îÀÇ ÀÏÁ¾. ¸®´ª½º Ä¿³ÎÀº ´ëºÎºÐ C·Î µÇ¾î ÀÖ´Ù. CISC : Complex Instruction Set Computer, º¹ÇÕ ¸í·É¾î ¼¼Æ® ÄÄÇ»ÅÍ. RISCÀÇ ¹Ý´ë °³³äÀ¸·Î, ¸¹Àº ¼öÀÇ º¹ÇÕ ¾î¼Àºí¸® ¸í·É¾îµéÀ» Áö¿øÇÏ´Â ÇÁ·Î¼¼¼­ÀÌ´Ù. X86 ±¸Á¶°¡ CISC ±¸Á¶ÀÌ´Ù. CPU : Central Processing Unit, Áß¾Ó Ã³¸® ÀåÄ¡. ÄÄÇ»ÅÍÀÇ ÁÖ󸮺ÎÀÌ´Ù. ¸¶ÀÌÅ©·ÎÇÁ·Î¼¼¼­, ÇÁ·Î¼¼¼­ ÂüÁ¶ ÀڷᱸÁ¶ (Data Structure) : ¿©·¯ Ç׸ñÀ¸·Î ÀÌ·ç¾îÁø, ¸Þ¸ð¸®»ó¿¡ ÀÖ´Â ÀÚ·áÀÇ ÁýÇÕ. µð¹ÙÀ̽º µå¶óÀ̹ö (Device Driver) : ƯÁ¤ ÀåÄ¡¸¦ Á¦¾îÇÏ´Â ¼ÒÇÁÆ®¿þ¾î. ¿¹¸¦ µé¾î, NCR 810 µð¹ÙÀ̽º µå¶óÀ̹ö´Â NCR 810 SCSI ÀåÄ¡¸¦ Á¦¾î ÇÑ´Ù. DMA : Direct Memory Access, Á÷Á¢ ¸Þ¸ð¸® Á¢±Ù ELF : Executable and Linkable Format, ½ÇÇà°¡´ÉÇÏ°í ¸µÅ©ÇÒ ¼ö ÀÖ´Â Æ÷¸Ë. ÀÌ ¿ÀºêÁ§Æ® ÆÄÀÏ Æ÷¸ËÀº À¯´Ð½º ½Ã½ºÅÛ ¿¬±¸¼Ò(Unix System Laboritories)¿¡¼­ °³¹ßµÇ¾úÀ¸¸ç, ÀÌÁ¦´Â ¸®´ª½º¿¡¼­ °¡Àå ÀϹÝÀûÀÎ Æ÷¸ËÀ¸·Î »ç¿ëµÇ°í ÀÖ´Ù. EIDE : Extended IDE, È®Àå IDE ½ÇÇà À̹ÌÁö (Executable Image) : ±â°è¾î ¸í·É°ú µ¥ÀÌÅ͸¦ °¡Áö°í ÀÖ´Â ±¸Á¶È­µÈ ÆÄÀÏ. ÀÌ ÆÄÀÏÀº ÇÁ·Î¼¼½ºÀÇ °¡»ó ¸Þ¸ð¸®¿¡ ·ÎµåµÇ¾î ½ÇÇà ÇÒ ¼ö ÀÖ´Ù. ÇÁ·Î±×·¥ ÂüÁ¶ ÇÔ¼ö (Function) : ¾î¶² µ¿ÀÛÀ» ¼öÇàÇÏ´Â ¼ÒÇÁÆ®¿þ¾îÀÇ ÀϺκÐ. ¿¹¸¦ µé¾î µÎ°ª Áß Å« °ªÀ» µ¹·ÁÁÖ´Â ÇÔ¼ö °°Àº °ÍÀÌ´Ù. IDE : Integrated Disk Electronics, ÁýÀû µð½ºÅ© ÀüÀÚÀåÄ¡ À̹ÌÁö (Image) : ½ÇÇà À̹ÌÁö¸¦ º¸¶ó. IP : Internet Protocol, ÀÎÅÍ³Ý ÇÁ·ÎÅäÄÝ IPC : Interprocess Communication, ÇÁ·Î¼¼½º°£ Åë½Å ÀÎÅÍÆäÀ̽º (Interface) : ·çƾÀ» ºÎ¸£°í ÀڷᱸÁ¶¸¦ Àü´ÞÇϴ ǥÁØ ¹æ½Ä. ¿¹¸¦ µé¾î µÎ ÄÚµå °èÃþ »çÀÌÀÇ ÀÎÅÍÆäÀ̽º´Â ƯÁ¤ ÀڷᱸÁ¶¸¦ Àü´ÞÇÏ°í µ¹·ÁÁÖ´Â ·çƾÀ¸·Î Ç¥ÇöÇÒ ¼ö ÀÖ´Ù. ¸®´ª½ºÀÇ VFS´Â ÀÎÅÍÆäÀ̽ºÀÇ ÁÁÀº ¿¹ÀÌ´Ù. IRQ : Interrupt Request Queue, ÀÎÅÍ·´ÅÍ ¿ä±¸ Å¥ ISA : Industry Standard Architecture, »ê¾÷ Ç¥ÁØ ±¸Á¶. ÀÌÁ¦´Â Á» ¿À·¡ µÇ±ä ÇßÁö¸¸, Ç÷ÎÇÇ µð½ºÅ© µå¶óÀ̺갰Àº ½Ã½ºÅÛ ±¸¼º¿ä¼Ò¸¦ À§ÇÑ Ç¥ÁØ µ¥ÀÌÅÍ ¹ö½º ÀÎÅÍÆäÀ̽ºÀÌ´Ù. Ä¿³Î ¸ðµâ (Kernel Module) : ÆÄÀÏ ½Ã½ºÅÛÀ̳ª µð¹ÙÀ̽º µå¶óÀ̹ö°°ÀÌ µ¿ÀûÀ¸·Î ·ÎµåÇÒ ¼ö ÀÖ´Â Ä¿³Î ÇÔ¼ö ų·Î¹ÙÀÌÆ® (Kilobyte) : Kbyte¶ó°íµµ ¾²¸ç 1000 ¹ÙÀÌÆ®¸¦ ¶æÇÑ´Ù. ¸Þ°¡¹ÙÀÌÆ® (Megabyte) : Mbyte¶ó°íµµ ¾²¸ç 1000000 ¹ÙÀÌÆ®¸¦ ¶æÇÑ´Ù. ¸¶ÀÌÅ©·ÎÇÁ·Î¼¼¼­(Microprocessor) : °í¹Ðµµ Á÷Á¢µÈ CPU. ´ëºÎºÐÀÇ ¿äÁò CPUµéÀº ¸¶ÀÌÅ©·ÎÇÁ·Î¼¼¼­ÀÌ´Ù. ¸ðµâ (Module) : ¾î¼Àºí¸®¾î ¸í·É¾î³ª C°°Àº °í±Þ¾ð¾îÀÇ ÇüÅ·ΠCPU ¸í·É ¾îµéÀ» ³»ÀåÇÑ ÆÄÀÏ. ¿ÀºêÁ§Æ® ÆÄÀÏ (Object File) : ½ÇÇà À̹ÌÁö·Î ¸¸µé¾îÁö±â Àü¿¡, ´Ù¸¥ ¿ÀºêÁ§Æ® ÆÄÀÏÀ̳ª ¶óÀ̺귯¸®¿Í ¸µÅ©µÇÁö ¾ÊÀº, ±â°è¾î ÄÚµå¿Í µ¥ÀÌÅÍ ¸¦ °¡Áö°í ÀÖ´Â ÆÄÀÏ. ÆäÀÌÁö (Page) : ½ÇÁ¦ ¸Þ¸ð¸®´Â µ¿ÀÏÇÑ Å©±âÀÇ ÆäÀÌÁöµé·Î ºÐÇҵȴÙ. Æ÷ÀÎÅÍ (Pointer) : ¸Þ¸ð¸®»óÀÇ ´Ù¸¥ À§Ä¡ÀÇ ÁÖ¼Ò¸¦ °¡Áö°í ÀÖ´Â ¸Þ¸ð¸® »óÀÇ ÇÑ À§Ä¡ (º¯¼ö) ÇÁ·Î¼¼½º (Process) : ÇÁ·Î±×·¥À» ½ÇÇàÇÒ ¼ö ÀÖ´Â ÇÑ °³Ã¼ÀÌ´Ù. ÇÁ·Î¼¼½º ´Â ½ÇÇàÁßÀÎ ÇÁ·Î±×·¥À¸·Î »ý°¢ÇÒ ¼ö ÀÖ´Ù. ÇÁ·Î¼¼¼­ (Processor) : CPU¿Í °°À¸¸ç ¸¶ÀÌÅ©·ÎÇÁ·Î¼¼¼­¸¦ ÁÙÀÎ ¸»ÀÌ´Ù. PCI : Peripheral Component Interconnect, ÁÖº¯ÀåÄ¡ »óÈ£¿¬°á. ÄÄÇ»ÅÍ ½Ã½ºÅÛÀÇ ÁÖº¯ÀåÄ¡µéÀ» ¿¬°áÇÏ´Â ¹ýÀ» ¼³¸íÇÑ Ç¥ÁØ. ÁÖº¯ÀåÄ¡ (Peripheral) : ½Ã½ºÅÛ¿¡ ÀÖ´Â CPU¸¦À§ÇØ ÀÏÇÏ´Â Áö´ÉÇü ÇÁ·Î ¼¼¼­. IDE ÄÁÆ®·Ñ·¯ Ĩ°°Àº °ÍÀÌ ÇÑ ¿¹ÀÌ´Ù. ÇÁ·Î±×·¥ (Program) : "hello world"¸¦ Ãâ·ÂÇÏ´Â °Íó·³, ¾î¶² ÀÛ¾÷À» ¼öÇàÇÏ´Â ÅëÇÕµÈ CPU ¸í·É¾îµéÀÇ ÁýÇÕ. ½ÇÇà À̹ÌÁö Âü°í. ÇÁ·ÎÅäÄÝ (Protocol) : ÇÁ·ÎÅäÄÝÀº »óÈ£ Çùµ¿ÇÏ´Â µÎ °³ÀÇ ÇÁ·Î¼¼½º³ª, ³×Æ®¿÷ °èÃþ »çÀÌ¿¡ ÀÀ¿ëÇÁ·Î±×·¥ µ¥ÀÌÅ͸¦ Àü¼ÛÇϴµ¥ »ç¿ëÇÏ´Â ³×Æ®¿÷ ¿ë ¾ð¾îÀÌ´Ù. ·¹Áö½ºÅÍ (Register) : Á¤º¸³ª ¸í·É¾î¸¦ ÀúÀåÇÏ´Â µ¥ »ç¿ëµÇ´Â, Ĩ ³»ÀÇ ÇÑ À§Ä¡. ·¹Áö½ºÅÍ ÆÄÀÏ (Register File) : ÇÁ·Î¼¼¼­ ³»ÀÇ ·¹Áö½ºÅÍ ÁýÇÕ. RISC : Reduced Instruction Set Computer, Ãà¼Ò ¸í·É¾î ¼¼Æ® ÄÄÇ»ÅÍ. CISCÀÇ ¹Ý´ë °³³äÀ¸·Î, ¾î¼Àºí¸® ¸í·É¾îÀÇ °¹¼ö°¡ Àû°í, °¢°¢ÀÇ ¸í·É¾î ´Â °£´ÜÇÑ ¿¬»ê¸¸ ÇÏ´Â ÇÁ·Î¼¼¼­ÀÌ´Ù. ARM°ú ¾ËÆÄ ÇÁ·Î¼¼¼­´Â µÑ´Ù RISC ±¸Á¶·Î µÇ¾î ÀÖ´Ù. ·çƾ (Routine) : ÇÔ¼öÇÏ°í ºñ½ÁÇÏÁö¸¸, ¾ö¹ÐÇÏ°Ô ¸»ÇÏ¸é ·çƾÀº °á°ú°ª À» µ¹·ÁÁÖÁö ¾Ê´Â´Ù. SCSI : Small Computer Systems Interface, ¼ÒÇü ÄÄÇ»ÅÍ ½Ã½ºÅÛ ÀÎÅÍ ÆäÀ̽º ½© (Shell) : ¿î¿µÃ¼Á¦¿Í »ç¿ëÀÚ »çÀÌ¿¡¼­ ÀÎÅÍÆäÀ̽º ¿ªÇÒÀ» ÇØÁÖ´Â ÇÁ·Î ±×·¥. ¸í·É½©(command shell)À̶ó°íµµ ÇÑ´Ù. ¸®´ª½º¿¡¼­ °¡Àå º¸ÆíÀû À¸·Î »ç¿ëÇÏ´Â °ÍÀº bash ½©ÀÌ´Ù. SMP : Symmetrical Multiprocessing, ´ëĪÇü ¸ÖƼÇÁ·Î¼¼½Ì. µÑ ÀÌ»óÀÇ ÇÁ·Î¼¼¼­°¡ ÀÏÀ» °øÁ¤ÇÏ°Ô ³ª´©´Â ½Ã½ºÅÛ. ¼ÒÄÏ (Socket) : ³×Æ®¿÷ ¿¬°áÀÇ ÇÑÂÊ ³¡À» ³ªÅ¸³½´Ù. ¸®´ª½º´Â BSD ¼ÒÄÏ ÀÎÅÍÆäÀ̽º¸¦ Áö¿øÇÑ´Ù. ¼ÒÇÁÆ®¿þ¾î (Software) : CPU ¸í·É¾î(¾î¼Àºí·¯³ª C°°Àº °í±Þ¾ð¾î ¸ðµÎ)¿Í µ¥ÀÌÅÍ. ´ë°³ ÇÁ·Î±×·¥°ú °°Àº Àǹ̸¦ °®´Â´Ù. ½Ã½ºÅÛ V(System V) : 1983³â¿¡ ³ª¿Â À¯´Ð½ºÀÇ º¯Á¾. ¹«¾ùº¸´Ùµµ System V IPC ¸ÞÄ¿´ÏÁòÀ» Æ÷ÇÔÇÏ°í ÀÖ´Ù. TCP : Transmission Control Protocol, Àü¼Û Á¦¾î ÇÁ·ÎÅäÄÝ. ÀÛ¾÷Å¥ (Task Queue) : ¸®´ª½º Ä¿³Î ³»ºÎ¿¡¼­ ÀÏÀ» ¿¬±âÇϴµ¥ »ç¿ëÇÏ´Â ¸ÞÄ¿´ÏÁò. UDP : User Datagram Protocol, »ç¿ëÀÚ µ¥ÀÌÅͱ׷¥ ÇÁ·ÎÅäÄÝ °¡»ó ¸Þ¸ð¸® (Virtual Memory) : ½Ã½ºÅÛ¿¡ ÀÖ´Â ¹°¸®ÀûÀÎ ¸Þ¸ð¸®ÀÇ Å©±â¸¦ ½ÇÁ¦º¸´Ù Å©°Ô º¸ÀÌ°Ô ÇØÁÖ´Â Çϵå¿þ¾îÀû, ¼ÒÇÁÆ®¿þ¾îÀû ¸ÞÄ¿´ÏÁò. ===================================================================== ¿ªÁÖ) ¿ø¹®¿¡´Â "hackers" (sic)¶ó°í ÇÏ°í Àִµ¥, sic´Â "¿ø¹®´ë·Î"¶ó´Â Àǹ̷ΠÀǽɳª´Â ¿ø¹®À» ±×´ë·Î ÀοëÇÒ ¶§ ¾²´Â Ç¥±âÀÌ´Ù. (flyduck) ) HOWTO´Â ¸»±×´ë·Î ¹«¾ð°¡¸¦ ¾î¶»°Ô ÇÏ¸é µÇ´ÂÁö Àû¾î³õÀº ¹®¼­ÀÌ´Ù. ¸¹Àº HOWTO ¹®¼­µéÀÌ ¸®´ª½º ¿ëÀ¸·Î Á¸ÀçÇϸç, ÀÌµé ¸ðµÎ ´ë´ÜÈ÷ À¯¿ëÇÏ´Ù. ¿ªÁÖ) Altair´Â µ¶¼ö¸®ÀÚ¸®ÀÇ ¾ËÆĺ°ÀÇ À̸§À¸·Î ¿ì¸®¸»·Î °ß¿ì¼ºÀ̶ó°í ÇÑ´Ù. (jhlee) ¿ªÁÖ) IBM PC ÃÊâ±â¿¡ »ç¿ëÇß´ø Ä÷¯ ±×·¡ÇÈ Ä«µå (flyduck) ¿ªÁÖ) ÀÎÅÚ 8086 CPU´Â ¸ðµÎ 1M ¹ÙÀÌÆ®¸¦ ³ªÅ¸³¾ ¼ö ÀÖ´Â 20ºñÆ® ¾îµå·¹ ½Ì ¸ðµå¿¡¼­ µ¿ÀÛÇϸç, ÀÎÅÚ 80386 ÀÌÈÄÀÇ CPU´Â (ÆæƼ¾öÀ» Æ÷ÇÔ ÇÏ¿©) 32ºñÆ® ¾îµå·¹½Ì ¸ðµå¿¡¼­ 4G ¹ÙÀÌÆ®±îÁö ¸Þ¸ð¸®¸¦ »ç¿ëÇÒ ¼ö ÀÖÁö¸¸ óÀ½ ½ÃÀÛÇÒ ¶§´Â 8086°ú ¸¶Âù°¡Áö·Î 20ºñÆ® ¾îµå·¹½Ì ¸ðµå ¿¡¼­ ½ÃÀÛÇÑ´Ù. (flyduck) ¿ªÁÖ) 486 ÀÌÀüÀÇ ÄÉÀ̽º¿¡´Â Åͺ¸ ¸ðµå¸¦ À§ÇÏ¿© Ŭ·° ¼Óµµ¸¦ º¸¿©ÁÖ´Â LED°¡ ´Þ·Á ÀÖ¾ú´Âµ¥, ¿äÁò PC¿¡´Â Åͺ¸ ¸ðµå¶ó´Â°ÍÀÌ ¾ø±â ¶§¹®¿¡ ¿äÁò¿¡ ³ª¿À´Â ÄÉÀ̽º¿¡´Â ´Þ·ÁÀÖÁö ¾Ê´Ù. (flyduck) ¿ªÁÖ) ¸Þ¸ð¸®¸¦ ´õ ¾×¼¼½ºÇÏ°í CPU »çÀÌŬÀ» Àû°Ô ¾µ°ÍÀΰ¡, ¶Ç´Â ¸Þ¸ð¸® ¾×¼¼½º¸¦ Àû°ÔÇÏ°í CPU »çÀÌŬÀ» ´õ ¾µ °ÍÀΰ¡ ÇÏ´Â °¥¸²±æ¿¡¼­ µÑ »çÀÌÀÇ Å¸ÇùÁ¡À» ã´Â °ÍÀ» ¸»ÇÑ´Ù. (flyduck) ¿ªÁÖ) ÀÌÈÄ¿¡ º¤ÅͶó´Â ¿ë¾î´Â ¹è¿­°ú °°Àº Àǹ̷Π¾²ÀδÙ. (flyduck) ¿ªÁÖ) ½ÇÁ¦ ÀÎÅÚ 80386¿¡¼­ ¸Þ¸ð¸®¸¦ 4KB ÆäÀÌÁö ´ÜÀ§·Î ´Ù·ç°í ÀÖÀ¸¸ç, ÀÌ ÆäÀÌÁö Å©±â´Â Çϵå¿þ¾î¿¡¼­ Áö¿øÇÏ´Â Å©±â¸¦ µû¸¥ °ÍÀÌ´Ù. (flyduck) ¿ªÁÖ) 4KB´Â 212À̹ǷΠÀÌ ÇÑÆäÀÌÁöÀÇ ÁÖ¼Ò¸¦ ³ªÅ¸³»´Âµ¥ 12ºñÆ®°¡ ÇÊ¿ä ÇÏ´Ù. ÀÎÅÚ 80385 CPU¿¡¼­´Â ÆäÀÌÁö ÇÁ·¹ÀÓ ¹øÈ£¿¡ 20ºñÆ®, ¿ÀÇÁ¼Â¿¡ 12ºñÆ®¸¦ »ç¿ëÇÏ¿© ¸ðµÎ 32ºñÆ®ÀÇ ÁÖ¼Ò°ø°£ Áï 4GBÀÇ ÁÖ¼Ò°ø°£À» °®´Â´Ù. (flyduck) ¿ªÁÖ) Áï ¹°¸®Àû ÁÖ¼Ò´Â Physical PFN * PAGE_SIZE + offsetÀÌ´Ù. (flyduck) ¿ªÁÖ) °è¼Ó ½º¿Ò ÆÄÀÏÀ» Á¢±ÙÇÏ´À¶ó µð½ºÅ©¸¸ °í»ýÇÏ°í ½ÇÁ¦ ÀÛ¾÷Àº ½ÇÇà µÇÁö ¾Ê´Â Çö»ó (½É¸¶·Î) ¿ªÁÖ) À̵éÀº °¢±â ÆäÀÌÁö µð·ºÅ丮(page directory), ÆäÀÌÁö Áß°£ µð·º Å丮(page middle directory), ÆäÀÌÁö Å×À̺í(page table)À̶ó°í Çϸç, °¢±â pgd_t, pmd_t, pte_t ŸÀÔÀ¸·Î Á¤ÀǵǾî ÀÖ´Ù. (flyduck) ) Çò°¥¸®°Ôµµ ÀÌ ±¸Á¶Ã¼¸¦ ÆäÀÌÁö(page) ±¸Á¶Ã¼¶ó°íµµ ºÎ¸¥´Ù. ) ¿©±â¿¡ Âü°í ¸ñ·ÏÀ» ÀûÀ» °Í. ¿ªÁÖ) ³ôÀÌ ±ÕÇüÀ» ÀÌ·ç´Â ÀÌÁø Æ®¸®, »ç½Ç ÀÌ »ç¶÷ À̸§µéÀº ¸ô¶óµµ µÈ´Ù. (½É¸¶·Î) ¿ªÁÖ) Segmentation Fault. (flyduck) ¿ªÁÖ) ÀÌ ¹Û¿¡ min_free_pages ¶ó´Â °ªÀÌ Àִµ¥, ÀÌ´Â Ä¿³ÎÀÌ ÇÊ¿ä·Î Çϴ°æ¿ì ¹Ù·Î ÇÁ¸® ÆäÀÌÁö¸¦ ¾òÀ» ¼ö ÀÖµµ·Ï, ÇÁ¸® ÆäÀÌÁöÀÇ °¹¼ö°¡ ÀÌ °ª ÀÌÇÏ·Î ¶³¾îÁöÁö ¾Êµµ·Ï ÇÑ´Ù. ÀÌ °ª ¿ª½Ã ºÎÆýÿ¡ ¼³Á¤ÀÌ µÈ´Ù. (flyduck) ¿ªÁÖ) vm_area_struct ÀڷᱸÁ¶¿¡´Â ÇØ´ç °¡»ó ¸Þ¸ð¸® ¿µ¿ª¿¡ ´ëÇÑ ¿¬»êÀ» ÇÒ ¶§ »ç¿ëÇÒ ÇÔ¼öµé¿¡ ´ëÇÑ Æ÷ÀÎÅÍ°¡ µé¾î ÀÖ´Ù. ÀÌ°ÍÀÌ NULL °ªÀÌ ¶ó¸é ±âº» µ¿ÀÛÀ» ¼öÇàÇÏÁö¸¸, µû·Î ÁöÁ¤µÈ °ÍÀÌ ÀÖ´Ù¸é ÇØ´çÇÏ´Â ÇÔ¼ö¸¦ ºÎ¸£°Ô µÈ´Ù. swapoutÀ̳ª swapin ÇÔ¼ö°¡ ¿©±â¿¡ µé¾îÀÖÀ¸¸ç, ÀÌÀü¿¡ ¼³¸íÇÑ nopage¿¬»êµµ ¿©±â¿¡ ÇÔ¼ö Æ÷ÀÎÅÍ·Î µé¾îÀÖ´Ù. ¿©±â¼­ ´Â swapout ¿¬»ê¿¡ ´ëÇÑ Æ÷ÀÎÅÍ°¡ »ç¿ëµÈ´Ù. include/linux/mm.hÀÇ struct vm_area_struct, struct vm_operations_struct ÂüÁ¶. (flyduck) ¿ªÁÖ) ¾Õ¿¡¼­ ¼³¸íÇÑ ¹Ù¿Í °°ÀÌ ÇÁ·Î¼¼½º¿¡ °ü·ÃµÈ ¸Þ¸ð¸®¸¦ ³ªÅ¸³»´Â mm_struct¿¡´Â vm_area_structÀÇ ¿¬°á ¸®½ºÆ®¿Í ÇÔ²² AVL Æ®¸®¸¦ °°ÀÌ °¡Áö°í ÀÖ´Ù. AVL Æ®¸®¸¦ °ü¸®ÇÏ´Â °ÍÀº ¾à°£ÀÇ ¿À¹öÇìµå°¡ ÀÖÁö¸¸ ÆäÀÌÁö ÆúÆ®¸¦ »¡¸® ó¸®Çϱâ À§Çؼ­´Â À̸¦ °¨¼öÇØ¾ß ÇÑ´Ù. (flyduck) ¿ªÁÖ) ¾ÕÀÇ swapout ¿¬»ê°ú ¸¶Âù°¡Áö·Î vm_area_struct ÀڷᱸÁ¶¿¡ ÀÖ´Â vm_ops Æ÷ÀÎÅÍ¿¡(vm_operations_struct ±¸Á¶Ã¼) ÀÌ Æ÷ÀÎÅÍ°¡ µé¾î ÀÖ´Ù. (flyduck) ¿ªÁÖ) ½º¿Ò ij½Ã¿¡¼­ ³ª¿Â¹Ù¿Í °°ÀÌ ½º¿Ò ÆÄÀÏ¿¡ ÀÖ´Â ³»¿ë°ú ¸Þ¸ð¸®¿¡ ÀÖ´Â ³»¿ëÀÌ ´Þ¶óÁø °æ¿ì¿¡¸¸ ½º¿Ò ij½Ã¿¡¼­ Á¦°ÅÇÒ ¼ö ÀÖµµ·Ï, ù¹ø° ÆäÀÌÁö ÆúÆ®¿¡¼­´Â ¸Þ¸ð¸®·Î °¡Á®¿À±â¸¸ ÇÏ°í, µÎ¹ø° ÆäÀÌÁö ÆúÆ®°¡ ¹ß»ýÇÒ ¶§ ½º¿Ò ij½Ã¿¡¼­ Á¦°ÅÇÏ°Ô µÈ´Ù. (flyduck) ¿ªÁÖ) ÀÌ ¼±Çü ÁÖ¼Ò´Â Ä¿³Î¿¡¼­ »ý°¢ÇÏ´Â °¡»ó ÁÖ¼Ò¿Í °°Àº °ÍÀ̶ó°í »ý°¢ ÇÏ¸é µÈ´Ù. (flyduck) ¿ªÁÖ) ½Ç½Ã°£À̶ó´Â Àǹ̴ ¾î¶² »ç°ÇÀÌ ¹ß»ýÇÏ¿´À» ¶§ ÀÌ°ÍÀÌ ¾î´À ½Ã°£ À̳»¿¡ 󸮵Ǿî¾ß ÇÑ´Ù´Â °ÍÀÌ´Ù. Áï ´õ Áß¿äÇÑ »ç°ÇÀÌ ¹ß»ýÇÏ¸é ´ú Áß¿äÇÑ ÀÏÀº ±×¸¸µÎ°í À̸¦ ºü¸¥ ½Ã°£ ³»¿¡ ó¸®ÇÏ´Â °ÍÀÌ´Ù. À̸¦ À§ÇØ ½Ç½Ã°£ 󸮸¦ ÇÏ´Â ¿î¿µÃ¼Á¦(real time operating system, RTOS)´Â ¿ì¼±¼øÀ§(priority)¸¦ »ç¿ëÇÏ¿©, ¾î¶² ÇÁ·Î¼¼½º¸¦ ¼öÇàÇÏ°í ÀÖ´õ¶óµµ ¿ì¼±¼øÀ§°¡ ´õ ³ôÀº ÇÁ·Î¼¼½º°¡ µîÀåÇϸé ÇÏ´ø ÀÏÀ» ¸ØÃß°í ÇØ´ç ÇÁ·Î¼¼½º¸¦ ¼öÇàÇÏ°Ô µÇ¸ç, ÀÌ ÇÁ·Î¼¼½º°¡ Á¾·áµÇ°Å³ª ¿ì¼±¼øÀ§ °¡ ³·¾ÆÁö°Å³ª ´õ ³ôÀº ¿ì¼±¼øÀ§¸¦ °®´Â ÇÁ·Î¼¼½º°¡ µîÀåÇÏÁö ¾Ê´Â ÀÌ»ó °è¼Ó ÀÌ ÇÁ·Î¼¼½º¸¦ ¼öÇàÇÏ°Ô µÈ´Ù. ÀÌ·± Á¡¿¡ À־ ¸®´ª½º´Â ½Ç½Ã°£ ÇÁ·Î¼¼½º°¡ ÀÏ¹Ý ÇÁ·Î¼¼½ºº¸´Ù ¸ÕÀú ¼öÇàµÇ±ä ÇÏÁö¸¸, ½Ç½Ã°£ ÇÁ·Î¼¼½º¸¦ À§ÇØ ÇÁ·Î¼¼½º¸¦ Áß´ÜÇÏÁö ¾Ê°í, ´õ ³ôÀº ¿ì¼±¼øÀ§ÀÇ ÇÁ·Î¼¼½º¶óµµ ÇÒ´çµÈ ½Ã°£ÀÌ Áö³ª¸é ½ºÄÉÁ층ÀÌ µÇ¹Ç·Î RTOS¶ó°í ÇÒ ¼ö´Â ¾ø´Ù. (flyduck) ) REVIEW NOTE : SWAPPING »óÅ´ »ç¿ëµÇÁö ¾Ê´Â °Í °°¾Æ Á¦¿Ü Çß´Ù. ¿ªÁÖ) ¼¼¸¶Æ÷¾î¸¦ ±â´Ù¸®°Å³ª ÆÄÀÏÀ» ÀÐÀ» ¼ö ÀÖ°Ô µÇ±æ ±â´Ù¸®´Â °Íó·³ ÀÚ¿øÀ» ±â´Ù¸®´Â ÀϹÝÀûÀÎ ´ë±â»óÅ´ ´ë°³ ÀÎÅÍ·´Æ® °¡´ÉÇÑ »óÅ ÀÌ´Ù. ÀÎÅÍ·´Æ®°¡ ±ÝÁöµÇ´Â ´ë±â»óÅ´ ½º¿ÒÆÄÀÏ¿¡¼­ ¸Þ¸ð¸®·Î ÆäÀÌÁö¸¦ ÀоîµéÀÌ´Â °Í°ú °°ÀÌ ÀÓ°èÁö¿ª¿¡¼­ ÀÏÀÌ ³¡¸¶Ä¡±æ ±â´Ù¸® °í ÀÖ´Â »óÅÂÀÌ´Ù. (flyduck) ¿ªÁÖ) ÀÌ °ªÀº ¾Æ·¡³ª¿À´Â groups º¤ÅÍ Å©±â¿¡ ÀÇÇØ Á¦ÇѵȴÙ. ÀÌ °ªÀº NGROUPS·Î Á¤ÀǵǾî ÀÖ´Ù. include/linux/sched.h ÂüÁ¶ (flyduck) ¿ªÁÖ) setuid´Â passwd°°Àº ÇÁ·Î±×·¥ÀÌ ÀÏ¹Ý »ç¿ëÀÚ°¡ ½ÇÇàÇÏ¿´´õ¶óµµ rootÀÇ ±ÇÇÑÀ» ȹµæÇÏ¿© /etc/passwd ¶Ç´Â /etc/shadow ÆÄÀÏÀ» ¼öÁ¤ ÇÒ ¼ö ÀÖ°Ôµµ ÇÏÁö¸¸, ¹Ý´ë·Î À¥¼­¹ö(httpd)°°Àº ÇÁ·Î±×·¥À» root°¡ ½ÇÇàÇÏ¿´´õ¶óµµ nobodyÀÇ ±ÇÇÑÀ¸·Î ¹Ù²Ù¾î ´Ù¸¥ ½Ã½ºÅÛ ÆÄÀÏ¿¡ Á¢±ÙÇÏÁö ¸øÇÏ°Ô Çϱ⵵ ÇÑ´Ù. (flyduck) ¿ªÁÖ) ÀÌ ¸»Àº ¿ÀÇظ¦ ³ºÀ» ¼ö ÀÖ´Â ¸»ÀÌ´Ù. ÀÌ ¸»Àº ¸®´ª½º°¡ ºñ¼±Á¡Çü ½ºÄÉÁ층À» ÇÑ´Ù´Â °ÍÀÌ ¾Æ´Ï´Ù. µÚ¿¡ ³ª¿ÀµíÀÌ ÇÑ ÇÁ·Î¼¼½º°¡ Á¤ÇØ Áø ŸÀÓ ½½¶óÀ̽º¸¦ ÃÊ°úÇؼ­ »ç¿ëÇϸé, ±× ÇÁ·Î¼¼½º¸¦ ÁߴܽÃÄÑ ´Ù¸¥ ÇÁ·Î¼¼½º¸¦ ½ÇÇàÇÏ´Â ¼±Á¡Çü ½ºÄÉÁ층À» ÇÑ´Ù. ¿©±â¼­ ¼±Á¡ ÇÏÁö ¾Ê´Â´Ù´Â Àǹ̴ ±â´Ù·Á¾ß ÇÏ´Â »óȲÀÌ ¹ß»ýÇÏ¿© ¸ØÃß¾î¾ß ÇÏ´Â °æ¿ì°¡ ¹ß»ýÇÏ¿© ÀÚ¹ßÀûÀ¸·Î CPU¸¦ ³»³õÁö ¾ÊÀº ÀÌ»ó Á¤ÇØÁø ŸÀÓ ½½¶óÀ̽ºµ¿¾È °è¼Ó ½ÇÇàµÈ´Ù´Â °ÍÀÌ´Ù. ¶ÇÇÑ ¸®´ª½º´Â Ä¿³Î ¸ðµå¿¡¼­´Â ºñ¼±Á¡ÇüÀÌ´Ù. ÀÌ´Â Ä¿³Î Äڵ尡 ÀçÁøÀÔ°¡´ÉÇÏÁö ¾Ê°Ô ¸¸µé¾îÁ³±â ¶§¹®ÀÌ´Ù. ÀÏ´Ü ½Ã½ºÅÛ ÄÝÀÌ ºÒ¸®¸é ½Ã½ºÅÛ ÄÝÀÌ ÀÚ¹ßÀû À¸·Î CPU¸¦ ³»³õÁö ¾ÊÀº ÀÌ»ó (schedule(), sleep_on(), interruptible_sleep_on() µîÀÇ ÇÔ¼ö¸¦ ºÒ·¯ ½ºÄÉÁ층ÀÌ ÀϾ°Ô ÇÏÁö ¾Ê´Â ÀÌ»ó), ½Ã½ºÅÛ ÄÝÀÌ ´Ù¸¥ ÇÁ·Î¼¼½º¿¡ ÀÇÇØ ÁߴܵÇÁö ¾Ê´Â´Ù. (flyduck) ¿ªÁÖ) 200ms´Â 0.2ÃÊ·Î CPU ÀÔÀå¿¡¼­ °áÄÚ ÂªÀº ½Ã°£ÀÌ ¾Æ´Ï´Ù. ÇÏÁö¸¸ ´ë°³ÀÇ °æ¿ì ÇÁ·Î¼¼½º°¡ ½ÇÇàµÇ´Â µ¿¾È ¿©·¯ I/O¿¡¼­»Ó¸¸ ¾Æ´Ï¶ó, ½º¿ÒÆÄÀÏ¿¡¼­ ÆäÀÌÁö¸¦ Àд °ÍÀ̳ª, ¸Þ¸ð¸® ¸ÊµÈ ÆÄÀÏÀ» µð½ºÅ©¿¡¼­ ¸Þ¸ð¸®·Î ÀоîµéÀÌ´Â °Íó·³ ±â´Ù·Á ¾ß ÇÏ´Â °æ¿ì°¡ ¸¹ÀÌ ¹ß»ýÇÏ¿© ÀÌ ½Ã°£À» ´Ù ¾²´Â °æ¿ì´Â ¸¹Áö ¾Ê´Ù. (flyduck) ¿ªÁÖ) idle ÇÁ·Î¼¼½º´Â CPU°¡ ÇÒ ÀÏÀÌ ¾Æ¹«°Íµµ ¾øÀ» ¶§ ½ÇÇàÇÏ´Â ÇÁ·Î ¼¼½ºÀÌ´Ù. idle ÇÁ·Î¼¼½º´Â ¸» ±×´ë·Î ¾Æ¹«Àϵµ ÇÏÁö ¾Ê°í, CPU¿¡¼­ °¡Àå Àü·ÂÀ» Àû°Ô ¼Ò¸ðÇÏ´Â ¸í·ÉÀ» ÇÏ¿°¾øÀÌ ¼öÇàÇÑ´Ù. (flyduck) ) ¶¥ÄáÀ» »ý°¢Çغ¸¸é, Ä¿³ÎÀº °¡¿îµ¥ ¸ÔÀ» ¼ö ÀÖ´Â ºÎºÐÀÌ°í, ½©Àº À̸¦ µÑ·¯ ½Î°í ÀÖ´Â °ÍÀ¸·Î ÀÎÅÍÆäÀ̽º¸¦ Á¦°øÇÑ´Ù. ) REVIEW NOTE : ÇÁ·Î¼¼½º ±×·ìÀ» ¼³¸íÇÒ °Í ¿ªÁÖ) ÀÌ·¯ÇÑ ¹®Á¦´Â ½Ã±×³ÎÀÌ ¹ß»ýÇß´ÂÁö È®ÀÎÇÏ´Â °ÍÀÌ Ä¿³Î ¸ðµå¿¡¼­ ÀÌ°í, ½Ã±×³Î Çڵ鷯´Â »ç¿ëÀÚ ¸ðµå¿¡¼­ ½ÇÇàµÇ¾î¾ß Çϱ⠶§¹®¿¡, Ä¿³Î ¸ðµå¿¡¼­ ¹Ù·Î ½Ã±×³Î Çڵ鷯´Â ºÎ¸¦ ¼ö ¾ø¾î¼­ ¹ß»ýÇÑ´Ù. ÀÌ¿¡ »ç¿ëÀÚ ¸ðµå·Î ¹Ù²Ù¾î ½Ã±×³Î Çڵ鷯¸¦ ºÎ¸£°í ÀÌ°ÍÀÌ ³¡³µÀ» ¶§ ¸¶Ä¡ ½Ã½ºÅÛ ÄÝÀ» ÇÑ °Íó·³ Ä¿³Î ¸ðµå·Î ´Ù½Ã µ¹¾Æ¿À°Ô ÇÏ´Â ¹æ¹ýÀ» ¾²´Â °ÍÀÌ´Ù. (flyduck) ¿ªÁÖ) Áï ÆÄÀÌÇÁ¸¦ À§ÇØ ÆÄÀÏ ½Ã½ºÅÛ¿¡ ÆÄÀÏÀ» »ý¼ºÇÏ´Â °ÍÀÌ ¾Æ´Ï¶ó, ¸Þ¸ð¸® »ó¿¡ °øÀ¯ ¸Þ¸ð¸® ÆäÀÌÁö¸¦ ¸¸µé¾î¼­ VFS inode°¡ À̸¦ »ç¿ëÇÏ°Ô ÇÏ´Â °ÍÀ̸ç, ÀÌ´Â ÆÄÀÌÇÁÀÇ ¼Óµµ¸¦ ºü¸£°Ô ÇÑ´Ù. (flyduck) ¿ªÁÖ) VFS inodeÀÇ f_op Ç׸ñÀº Àбâ, ¾²±â¸¦ Æ÷ÇÔÇÏ¿© ÇÔ¼ö¿¡ °ü·ÃµÈ ¿¬»êµéÀÇ Æ÷ÀÎÅÍ ¹è¿­À̸ç, ÆÄÀÏ ¿¬»êÀº ÀÌ Ç׸ñ¿¡ ÀÖ´Â ÇÔ¼ö Æ÷ÀÎ Å͸¦ ºÎ¸§À¸·Î½á ÀÌ·ç¾îÁø´Ù. ¿©±â¼­ ÆÄÀÌÇÁ¸¦ ÀоîµéÀÌ´Â ÆÄÀÏÀ» Ÿ³ª³»´Â file ÀڷᱸÁ¶´Â º¸Åë ÆÄÀÏ¿¡ Àд ÇÔ¼ö¿¡ ´ëÇÑ Æ÷ÀÎÅÍ°¡ ¾Æ´Ï¶ó ÆÄÀÌÇÁ¿¡¼­ ÀоîµéÀÌ´Â Æ÷ÀÎÅ͸¦ °¡¸®Å°°Ô ÇÏ´õ¶óµµ, ½Ã½ºÅÛ ÄÝ¿¡ À־´Â ¾îÂ¥ÇÇ f_op Ç׸ñÀÇ ÇÔ¼ö Æ÷ÀÎÅ͸¦ ÀÌ¿ëÇϹǷΠ¾Æ¹«·± Â÷ÀÌ°¡ ¾ø´Â °ÍÀÌ´Ù. ÀÌ°ÍÀº ÆÄÀÌÇÁ¿¡ ¾²´Â file ÀڷᱸÁ¶¿¡ À־µµ ¸¶Âù°¡Áö¸ç, ÀÌ·¯ÇÑ ±â¹ýÀº ¸®´ª½º Ä¿³Î °÷°÷¿¡¼­ ¾²ÀÌ°í ÀÖ´Ù. (flyduck) ¿ªÁÖ) task_struct´Â ÆÄÀÏ¿¡ °ü·ÃµÈ ÀڷᱸÁ¶ÀÎ struct files_struct files Ç׸ñÀ» °¡Áö°í ÀÖÀ¸¸ç, files_struct´Â struct file *fd[NR_OPEN] Ç׸ñÀ» °¡Áö°í ÀÖ´Ù. ÀÌ fd¿¡¼­ÀÇ À妽º°¡ ÆÄÀÏ ±â¼úÀÚÀ̸ç, fd Ç׸ñÀº ÇÁ·Î¼¼½º¿¡¼­ ¿­Àº ÆÄÀÏ¿¡ ´ëÇÑ Á¤º¸¸¦ °¡Áö°í ÀÖ´Ù. (flyduck) ¿ªÁÖ) file ÀڷᱸÁ¶ÀÇ f_flags Ç׸ñÀÌ ÆÄÀÏ¿¡ °ü·ÃµÈ Ç÷¡±×¸¦ °¡Áö°í Àִµ¥, ¿©±â¿¡ O_NONBLOCK °¡ ÁöÁ¤µÇ¾î ÀÖÀ¸¸é ºí·°Å·À» ÇÏÁö ¾Ê´Â »óÅÂÀÌ´Ù. ÀÌ´Â ÆÄÀÏÀ» ¿­¶§ ÁöÁ¤ÇÒ ¼öµµ, ioctlÀ̳ª fcntl°°Àº ½Ã½ºÅÛ ÄÝÀ» ÅëÇؼ­ ¹Ù²Ü ¼öµµ ÀÖ´Ù. (flyduck) ¿ªÁÖ) ¾ÕÀÇ ls | prÀ» ÁöÁ¤ ÆÄÀÌÇÁ¸¦ »ç¿ëÇÑ´Ù¸é, ¿ì¼± mkfifo fifo (ÆÄÀÏ À̸§Àº ´Ù¸£°Ô ÁöÁ¤Çصµ µÈ´Ù) ¸í·ÉÀ¸·Î ÁöÁ¤ ÆÄÀÌÇÁ¸¦ ¸¸µç ÈÄ, ls > fifo & pr < fifo·Î ÇÏ¸é µÈ´Ù. (flyduck) ¿ªÁÖ) FIFOµµ ÆÄÀÌÇÁ¿Í ¸¶Âù°¡Áö·Î ½ÇÁ¦·Î ÆÄÀÏÀ» ÅëÇÏ¿© Åë½ÅÇÏ´Â °ÍÀÌ ¾Æ´Ï¶ó ¸Þ¸ð¸®¿¡ °øÀ¯ ÆäÀÌÁö¸¦ ¸¸µç´Ù. Áï ÀÐ°í ¾²´Â °ÍÀº ÆÄÀÌÇÁ ¿Í ¶È°°Àº ¹æ¹ýÀ» »ç¿ëÇÏ°Ô µÈ´Ù. FIFO¿Í ÆÄÀÌÇÁÀÇ Â÷ÀÌÁ¡Àº ÆÄÀÌÇÁ´Â Àӽ÷Π»ý¼ºµÇ´Â °ÍÀε¥ ¹ÝÇØ FIFO´Â ÀÌ¹Ì ¸¸µé¾îÁ® ÀÖ´Â °ÍÀ̹ǷΠµÎ °³ÀÇ ÇÁ·Î¼¼½º°¡ open(), close() ÇÔ¼ö¸¦ ÅëÇÏ¿© ÆÄÀÏó·³ ¿­ ¼ö ÀÖÀ¸¹Ç·Î ½©ÀÌ °ü¿©ÇÏÁö ¾Ê¾Æµµ Åë½ÅÇÒ ¼ö ÀÖ´Ù´Â Á¡ÀÌ´Ù. (flyduck) ¿ªÁÖ) ¼ÒÄÏÀº ³×Æ®¿öÅ·¿¡¼­ À̾߱âÇÏ´Â ¼ÒÄÏÀÌ´Ù. ¼ÒÄÏÀº ÇÑ ÄÄÇ»ÅÍ ³» ¿¡¼­ ÇÁ·Î¼¼½º »çÀÌ¿¡ Åë½ÅÀ» ÇÒ ¼ö ÀÖ°Ô ÇÒ »Ó¸¸ ¾Æ´Ï¶ó ³×Æ®¿÷¿¡ ÀÖ´Â ´Ù¸¥ ÄÄÇ»ÅÍ¿¡ ÀÖ´Â ÇÁ·Î¼¼½º¿Íµµ Åë½ÅÀ» °¡´ÉÇÏ°Ô ÇÑ´Ù. ¼ÒÄÏ ÀÇ »ç¿ëÀº À¯´Ð½º¿¡¼­ ÀüÅëÀûÀ¸·Î »ç¿ëÇÏ´Â ÆÄÀÏ ±â¼úÀÚ(file descriptor)¸¦ ÅëÇÏ¿© ÇÑ´Ù. Áï socket() ÇÔ¼ö¸¦ ºÎ¸£¸é ¼ÒÄÏÀ» ³ªÅ¸³»´Â ÆÄÀÏ ±â¼úÀÚ°¡ µ¹¾Æ¿À°í À̸¦ °¡Áö°í bind, listen, connect, accept µîÀÇ ¿¬»êÀ» ÇÒ ¼ö ÀÖÀ¸¸ç, ÆÄÀÏ°ú ¸¶Âù°¡Áö·Î read, write, close ¿¬»êÀ» ÇÒ ¼ö ÀÖ´Ù. (flyduck) ¿ªÁÖ) °ø¿ëÅ°°¡ ¾Æ´Ï¶ó °³ÀοëÅ°¸¦ »ç¿ëÇÏ´Â °æ¿ì´Â ipc_permÀÇ key Ç׸ñ ÀÌ IPC_PRIVATE·Î ÁöÁ¤µÇ´Âµ¥, À̸¦ °¡Áö°í ÂüÁ¶ ½Äº°ÀÚ¸¦ ãÀ» ¼ö ¾ø´Ù. °³ÀοëÅ°¸¦ »ç¿ëÇÏ´Â IPC °³Ã¼´Â °³Ã¼ ¹øÈ£¸¦ ÅëÇؼ­¸¸ Á¢±ÙÇÒ ¼ö ÀÖ´Ù. (flyduck) ¿ªÁÖ) °Ë»ç¸¦ ÇÏ°í ¼³Á¤ÇÏ´Â »çÀÌ¿¡ Áß´ÜÀÌ µÇ¾î ´Ù¸¥ °ÍÀÌ ½ÇÇàµÇ¾ú´Âµ¥ ¿©±â¼­ ÀÌ °ªÀ» °Ë»çÇÏ°í ¼³Á¤ÇÑ´Ù¸é, ´Ù½Ã ÀÌÀüÀ¸·Î µ¹¾Æ¿Í¼­ ¼³Á¤ ÇÏ·Á°í ÇÒ ¶§´Â ÀÌ¹Ì °ªÀÌ ¹Ù²ï ÀÌÈÄ°¡ µÇ¾î ¹®Á¦°¡ ¹ß»ýÇÒ °ÍÀÌ´Ù. µû¶ó¼­ ÀÌ °Ë»ç ¹× ¼³Á¤ ¿¬»êÀº ÁߴܵǾ´Â ¾ÈµÇ¸ç, CPU¿¡¼­ Á¦°øÇϴ Ưº°ÇÑ ¸í·É¾î¸¦ ÀÌ¿ëÇϰųª ¿î¿µÃ¼Á¦ Äڵ带 ÅëÇÏ¿© ±¸Çö µÈ´Ù. ¸®´ª½º¿¡¼­´Â Ä¿³Î¸ðµå¿¡¼­ ºñ¼±Á¡ÇüÀ̹ǷΠÀÌ ¿¬»êÀÌ Áß´Ü µÇÁö ¾Ê´Â´Ù°í »ý°¢ÇÏ°í ÀÏ¹Ý ¿¬»êÀ¸·Î ó¸®ÇÑ´Ù. Ä¿³Î Äڵ忡¼­ ¼¼¸¶Æ÷¾î °ªÀ» °Ë»çÇÏ´Â ÇÔ¼ö´Â try_semop()À̸ç, ¼¼¸¶Æ÷¾î °ªÀ» ¹Ù²Ù´Â ÇÔ¼ö´Â do_semop()ÀÌ´Ù. À̵éÀº ipc/sem.c¿¡ ÀÖ´Ù. (flyduck) ¿ªÁÖ) ù¹ø° ÇÁ·Î¼¼½º°¡ ¼¼¸¶Æ÷¾îÀÇ °ªÀ» 0À¸·Î ¹Ù²Û ÈÄ¿¡´Â ´ÙÀ½ ÇÁ·Î ¼¼½º°¡ °Ë»ç´Ü°è¿¡¼­ ½ÇÆÐÇϹǷΠ¼¼¸¶Æ÷¾îÀÇ °ªÀº º¯ÇÏÁö ¾ÊÀ¸¸ç, ù¹ø° ÇÁ·Î¼¼½º°¡ ÀÌ °ªÀ» 1·Î ¹Ù²Û ÈÄ¿¡¾ß ±â´Ù¸®°í ÀÖ´ø ÇÁ·Î ¼¼½º°¡ À̸¦ ¹Ù²Ü¼ö ÀÖ°Ô µÈ´Ù. ±×·¡¼­ ¼¼¸¶Æ÷¾îÀÇ °ªÀº Ç×»ó 0º¸´Ù Å©°Å³ª °°°Ô µÈ´Ù. (flyduck) ¿ªÁÖ) ÇϳªÀÇ ¼¼¸¶Æ÷¾î °´Ã¼¿¡ ¿©·¯°³ÀÇ ¼¼¸¶Æ÷¾î ¹è¿­(semÀÇ ¹è¿­)ÀÌ ÀÖÀ¸¸ç, ½Ã½ºÅÛ ÄÝÀº ÀÌ ÁßÀÇ ÀϺθ¸À» °Ë»çÇÏ°í ¼³Á¤ÇÒ ¼ö ÀÖ´Ù. ÀÓ°èÁö¿ª¿¡¼­ ¿©·¯°³ÀÇ ¼¼¸¶Æ÷¾î¸¦ ÇÊ¿ä·ÎÇÏ´Â °æ¿ì ÀÌ Áß¿¡ ÇÊ¿ä·Î ÇÏ´Â °Íµé¸¸ ÁöÁ¤ÇÒ ¼ö ÀÖ´Ù. (flyduck) ¿ªÁÖ) ¼¼¸¶Æ÷¾î ¿¬»êÀ» ÇÏ´Â ½Ã½ºÅÛ ÄÝÀº sys_semop(int semid, struct sembuf *sops, unsigned nsops)À̸ç, ¿©±â¼­ ÇϳªÀÇ ¿¬»êÀ» °¡¸® Å°´Â sembuf´Â sem_num, sem_op, sem_flg ¼¼°¡Áö ¿ø¼Ò·Î ÀÌ·ç¾îÁ® ÀÖ´Ù. ÀÌ ¼¼¸¶Æ÷¾î ¿¬»êÀº ¼¼¸¶Æ÷¾î °ªÀ» °¨¼Ò½Ãų ¼öµµ, Áõ°¡½Ãų ¼öµµ ÀÖ´Ù. (flyduck) ¿ªÁÖ) ¸Þ½ÃÁö Å¥ÀÇ °æ¿ì´Â ´ë±âÅ¥°¡ task_struct¸¦ °¡Áö°í ÀÖ´Â ´Ü¼øÇÑ wait_queueÀÇ ¿¬°á ¸®½ºÆ®·Î µÇ¾î ÀÖÁö¸¸, ¼¼¸¶Æ÷¾îÀÇ ´ë±âÅ¥´Â sem_queueÀÇ ¿¬°á ¸®½ºÆ®·Î µÇ¾î ÀÖ´Ù. ÀÌ´Â ¸Þ½ÃÁö Å¥ÀÇ °æ¿ì Àб⸦ ±â´Ù¸®´ÂÁö, ¾²±â¸¦ ±â´Ù¸®´ÂÁö¸¸ ±¸º°ÇÏ¸é µÇÁö¸¸, ¼¼¸¶ Æ÷¾î ¿¡¼­´Â ¼¼¸¶Æ÷¾î ¿¬»êÀ¸·Î ³Ñ°ÜÁØ ÀÎÀÚµéÀ» ¸ðµÎ ÀúÀåÇÏ°í ÀÖ¾î¾ß ÇÏ°í Á» ´õ º¹ÀâÇÑ ¿¬»êÀÌ ÇÊ¿äÇϱ⠶§¹®¿¡ ÀÌ Á¤º¸¸¦ ¸ðµÎ sem_queue¿¡ ÀúÀåÇÏ´Â °ÍÀÌ´Ù.(flyduck) ¿ªÁÖ) µ¥µå¶ôÀº ÀÌ °æ¿ì»Ó¸¸ ¾Æ´Ï¶ó ÇÑ ÇÁ·Î¼¼½º°¡ ÇÊ¿ä·Î ÇÏ´Â ÀÚ¿øÀ» ´Ù¸¥ ÇÁ·Î¼¼½º°¡ »ç¿ëÇÏ°í ÀÖ¾î ´ë±â »óÅ·Π°¬´Âµ¥, ³ªÁß¿¡ ±× ÇÁ·Î¼¼½º°¡ ¾ÕÀÇ ÇÁ·Î¼¼½º°¡ Á¡À¯ÇÏ°í ÀÖ´Â ÀÚ¿øÀ» ÇÊ¿ä·Î ÇÏ°Ô µÇ¾î ÇÁ·Î¼¼½ºµéÀÌ ¼­·Î »ó´ë°¡ ÀÚ¿ø »ç¿ëÀ» Á¾·áÇϱ⸸À» ±â´Ù¸®°Ô µÇ´Â »óŵµ Æ÷ÇÔÇÑ´Ù. ÀÌ°ÍÀº ´Ü¼øÈ÷ µÎ ÇÁ·Î¼¼½º°¡ ¾Æ´Ï¶ó ¿©·¯ ÇÁ·Î¼¼½º°¡ ²¿¸®¿¡ ²¿¸®¸¦ ¹°°í ÀÖÀ» ¶§ º¹ÀâÇÏ°Ô ÀÌ·ç¾îÁú ¼ö ÀÖ´Ù. ´Ü¼øÈ÷ ¼¼¸¶Æ÷¾î¿¡ ±¹ÇÑÇÏ¿© À̾߱âÇÑ´Ù¸é, ÇÁ·Î¼¼½º°¡ ¼¼¸¶ Æ÷¾î¸¦ ÀÌ¿ëÇÏ¿© ÀÓ°èÁö¿ªÀ¸·Î µé¾î°£ ÈÄ ´Ù½Ã ¼¼¸¶Æ÷¾î¸¦ ¾òÀ¸·Á°í ÇÏÁö ¾Ê´Â´Ù¸é ÀÌ·± ¹®Á¦´Â ¹ß»ýÇÏÁö ¾ÊÀ» °ÍÀÌ´Ù. (flyduck) ¿ªÁÖ) °¡»ó ¸Þ¸ð¸®¸¦ ¹°¸®ÀûÀÎ ¸Þ¸ð¸®¿¡ Á¸ÀçÇÏ°Ô ¸¸µå´Â °ÍÀ» ¸»ÇÑ´Ù. (flyduck) ¿ªÁÖ) ¾ÕÀÇ ÇÁ·Î¼¼½º Àå¿¡¼­ ¼³¸íÇÑ °Í°ú °°ÀÌ ÇÑ ÇÁ·Î¼¼½º°¡ ÇÒ´ç¹ÞÀº ¸Þ¸ð¸®µéÀº vm_area_structÀÇ ¸®½ºÆ®¿Í AVL Æ®¸®·Î °ü¸®µÇ´Âµ¥, ÀÌ´Â ÆäÀÌÁö ÆúÆ®°¡ ¹ß»ýÇßÀ» ¶§ ÇØ´ç ÆäÀÌÁö°¡ ½ÇÁ¦ ÇÁ·Î¼¼½º°¡ »ç¿ëÇÏ´Â ¸Þ¸ð¸®ÀÎÁö, ¾î¶»°Ô ¹°¸®ÀûÀÎ ÆäÀÌÁö¸¦ ¸¸µé °Í ÀÎÁö ¾Ë±â À§ÇØ »ç¿ëµÈ´Ù. (flyduck) ¿ªÁÖ) nopage ¿¬»ê (flyduck) ¿ªÁÖ) ÀÌ ÀåÀÇ ³»¿ë°ú ºÐ·®Àº ÀϹÝÀûÀ¸·Î ¿î¿µÃ¼Á¦¿¡ ´ëÇØ °¡Áö´Â °ü½É¿¡ ºñÇØ ÀÚ¼¼ÇÏ°í ¸¹Àº ÆíÀÌ´Ù. ÀÌ´Â PCI BIOS°¡ ¸ðµç ÀÏÀ» ó¸®ÇÏ´Â ÀÎÅÚ ±â¹Ý PC¿Í´Â ´Þ¸®, ´Ù¸¥ ½Ã½ºÅÛ¿¡¼­´Â PCI ¹ö½º¸¦ ¿î¿µÃ¼Á¦°¡ Á÷Á¢ Á¦¾î¸¦ ÇؾßÇϸç, ÀúÀÚ°¡ ÁÖ·Î ¾ËÆÄ AXP ±â¹Ý ½Ã½ºÅÛ¿¡¼­ ÀÛ¾÷À» Ç߱⠶§¹®ÀÎ °Í °°´Ù. ÇÏÁö¸¸ ¹ö½º ±¸Á¶¿¡ ´ëÇÑ ÀÌÇØ´Â ½ÇÁ¦ Çϵå¿þ¾î¿Í °ü·ÃµÈ ÀÛ¾÷¿¡ À־ Å« µµ¿òÀ» ÁÖ¸®¶ó »ý°¢ÇÑ´Ù. (flyduck) ¿ªÁÖ) ÇϳªÀÇ PCI ¹ö½º°¡ °¨´çÇÒ ¼ö ÀÖ´Â ÀåÄ¡ÀÇ °¹¼ö°¡ ÇÑÁ¤µÇ¾î Àֱ⠶§¹®¿¡, ´õ ¸¹Àº ÀåÄ¡¸¦ ¿¬°áÇÏ·Á¸é ¹ö½º¸¦ Ãß°¡ÇÏ°í À̸¦ PCI-PCI ºê¸´Áö·Î ¿¬°áÇØ¾ß ÇÑ´Ù. ¿¹Àü¿¡´Â ÀÏ¹Ý PC¿¡´Â PCI-PCI ºê¸´Áö°¡ ¾ø°í, ¼­¹ö¿ë ±â°è¿¡¸¸ PCI-PCI ºê¸´Áö°¡ ÀÖ¾úÁö¸¸, ¿äÁò¿¡´Â ÀÏ¹Ý PC ¿ëÀ¸·Îµµ PCI-PCI ºê¸´Áö°¡ ÀÖ´Â º¸µå°¡ ³ª¿À°í ÀÖ´Ù. MS Windows ¿î¿µÃ¼Á¦¸¦ »ç¿ëÇÏ°í ÀÖ´Ù¸é ½Ã½ºÅÛ µî·ÏÁ¤º¸ÀÇ ÀåÄ¡°ü¸® ÀÚ¿¡¼­ ½Ã½ºÅÛ ÀåÄ¡¿¡ ¾î¶² °ÍÀÌ ¿¬°áµÇ¾î ÀÖ´ÂÁö È®ÀÎÇغ¸¸é ÁÁÀ» °ÍÀÌ´Ù. CPU ¹ö½º¿Í PCI ¹ö½º¸¦ ¿¬°áÇÏ´Â ºê¸´Áö¿Í, PCI-ISA ºê¸´Áö, PCI-PCI ºê¸´Áö µîÀ» È®ÀÎÇÒ ¼ö ÀÖÀ» °ÍÀÌ´Ù. (flyduck) ¿ªÁÖ) CPUÀÇ ÀÔÀå¿¡¼­ »ý°¢ÇÑ´Ù¸é 0¹ø ¹ö½º°¡ CPU¿¡ ¹Ù·Î ¿¬°áµÈ °ÍÀ̱⠶§¹®¿¡, 1¹ø ¹ö½º¿¡¼­ 0¹ø ¹ö½º·Î °¡´Â °ÍÀº À§·Î °¡´Â °ÍÀ̹ǷΠ¾÷½ºÆ®¸², 0¹ø ¹ö½º¿¡¼­ 1¹ø ¹ö½º·Î °¡´Â °ÍÀº ´Ù¿î½ºÆ®¸²ÀÌ µÈ´Ù. (flyduck) ¿ªÁÖ) PCI ±Ô¾à¿¡ µû¶ó ÇϳªÀÇ PCI Ä«µå°¡ ÃÖ´ë 8°³ÀÇ ±â´ÉÀ» °¡Áú¼ö ÀÖ´Ù. (flyduck) ¿ªÁÖ) óÀ½ IBM PC°¡ ³ª¿Ã ¶§ºÎÅÍ ¿©±â¿¡´Â ¸Þ¸ð¸® °ø°£¿Ü¿¡ I/O °ø°£¿¡ ÀÖ´Â Æ÷Æ®¶ó´Â °ÍÀÌ ÀÖ¾ú´Ù. ÀÌ´Â º¸ÅëÀÇ ¸Þ¸ð¸® Á¢±Ù ¸í·ÉÀÌ ¾Æ´Ñ Ư¼öÇÑ Æ÷Æ® ÀÔÃâ·Â ¸í·ÉÀ» »ç¿ëÇߴµ¥ ÀÎÅÚ CPU¿¡ ÀÖ´Â in, out ¸í·ÉÀÌ ±×°ÍÀÌ´Ù. ISA Ä«µå¿¡¼­´Â ÀåÄ¡ÀÇ ·¹Áö½ºÅÍ¿¡ Á¢±ÙÇϴµ¥ ÀÌ·± Æ÷Æ® I/O¸¦ »ç¿ëÇÏ¿´°í, Å« ¿µ¿ªÀÇ µ¥ÀÌÅÍ¿¡ Á¢±ÙÇÒ ¶§´Â(¿¹¸¦ µé¾î ±×·¡ÇÈ Ä«µåÀÇ ¸Þ¸ð¸®) ¸Þ¸ð¸® ¿µ¿ªÀ» »ç¿ëÇÏ¿´´Ù. ÇÏÁö¸¸ ÀÎÅÚ CPU¿Í´Â ´Þ¸® ¸¹Àº CPUµéÀº Æ÷Æ® I/O¸¦ Áö¿øÇÏÁö ¾Ê´Â´Ù. ºñ·Ï PCI ±Ô¾àÀÌ I/O °ø°£À» Áö¿øÇϱâ ÇÏÁö¸¸, À̸¦ »ç¿ëÇÏÁö ¾Ê´Â PCI Ä«µåµéµµ ÀÖÀ¸¸ç, ¿©±â¼­´Â ĨÀÇ ·¹Áö½ºÅ͵éÀÌ ¸ðµÎ ¸Þ¸ð¸® °ø°£¿¡ Á¸ÀçÇÑ´Ù. ISA Ä«µå¿¡¼­´Â 64KBÀÇ I/O ¿µ¿ª°ú 640KB-1MB, 15MB-16MB(ÀÌ ¿µ¿ªÀ» »ç¿ëÇÏ´Â ÀåÄ¡´Â ¾ÆÁÖ µå¹°´Ù)ÀÇ ¸Þ¸ð¸® ¿µ¿ªÀ» »ç¿ëÇÏ°í ÀÖ´Ù. ÀÌ´Â Áö±Ý±îÁö À¯È¿Çѵ¥, ¸î°¡Áö ¹®Á¦¸¦ ¾ß±âÇÏ°í ÀÖ´Ù. PCI¿¡¼­´Â 4GBÀÇ I/O °ø°£°ú, 32ºñÆ® ¶Ç´Â 64ºñÆ®ÀÇ ¸Þ¸ð¸® °ø°£À» Á¦°øÇÑ´Ù. (flyduck) ¿ªÁÖ) ¿©±â¼­ Á¦ÀÛÀÚ´Â, PCI Ä«µåÀÇ Á¦ÀÛÀÚ¶ó±â º¸´Ù´Â Ä«µå¿¡ ÀÖ´Â PCI¿Í ¿¬°á ¿ªÇÒÀ» Çϴ ĨÀÇ Á¦ÀÛÀÚÀÌ´Ù. (flyduck) ¿ªÁÖ) ÀÌ À̸§Àº IRQ A-D¿Í ¹«°üÇϸç, PCI Ä«µå»óÀÇ ÇÉ¿¡ ´ëÇÑ À̸§ÀÌ´Ù. (flyduck) ¿ªÁÖ) PCI°¡ µîÀåÇÑ ÃÊâ±â¿¡´Â ºü¸¥ ÀÔÃâ·Â ¼Óµµ¸¦ ÇÊ¿ä·Î ÇÏ´Â ÀåÄ¡µé¸¸ PCI Ä«µå·Î ³ª¿ÔÁö¸¸, PCIÀÇ ¿©·¯ ÀåÁ¡À¸·Î ÀÎÇØ Áö±ÝÀº °ÅÀÇ ¸ðµç Ä«µå°¡ PCI ¿ëÀ¸·Î Á¦À۵ǰí ÀÖ´Ù. ISA Ä«µå´Â Á¦ÀÛÀÚÀÇ ÀÔÀå¿¡¼­ ¸¸µé±â ½±´Ù´Â ÀåÁ¡ÀÌ ÀÖÁö¸¸, »ç¿ëÀÚÀÇ ÀÔÀå¿¡¼­´Â ¼³Á¤ÇϱⰡ ±î´Ù·Ó´Ù´Â ´ÜÁ¡ ¶§¹®¿¡ °¥¼ö·Ï ã¾Æº¸±â Èûµé¾îÁö°í ÀÖ´Ù. (flyduck) ¿ªÁÖ) ISA ÀåÄ¡ÀÇ °¡Àå Å« ´ÜÁ¡Àº »ç¿ëÇÏ´Â I/O °ø°£°ú ¸Þ¸ð¸® °ø°£, IRQ µîÀÌ Çϵå¿þ¾îÀûÀ¸·Î °íÁ¤µÇ¾î ÀÖ´Ù´Â Á¡ÀÌ´Ù. ¸î ÀåÄ¡µéÀº °ü½À ó·³ °íÁ¤µÇ¾î ±×´ë·Î À̾îÁ®¿À°í ÀÖÀ¸¸ç, ´Ù¸¥ ÀåÄ¡µéÀº Çϵå¿þ¾î ¿¡ ÀÖ´Â Á¡ÆÛ·Î ¼³Á¤Çϰųª, EPROM¿¡ ¼³Á¤°ªÀ» ±â·ÏÇسõ°í ÀÖ´Ù. (flyduck) ¿ªÁÖ) ¼³Á¤ »çÀÌŬÀ̶õ PCI°¡ ÃʱâÈ­°¡ µÇÁö ¾Ê¾ÒÀ» ¶§ PCI ÀåÄ¡µéÀ» ¼³Á¤Çϱâ À§ÇÏ¿© »ç¿ëÇϴ Ưº°ÇÑ ÁÖ¼Ò¸¦ ¸»ÇÑ´Ù. (flyduck) ¿ªÁÖ) ½ÇÁ¦·Î µð¹ÙÀ̽º µå¶óÀ̹öÀÎ °ÍÀÌ ¾Æ´Ï¶ó, µð¹ÙÀ̽º µå¶óÀ̹öó·³ ÀåÄ¡¸¦ ±¸µ¿ÇÏ´Â ¿ªÇÒÀº ÇÏÁö¸¸ µð¹ÙÀ̽º µå¶óÀ̹ö ÇüŸ¦ °®ÃßÁö ¾ÊÀº °ÍÀ̹ǷΠÀ¯»ç µð¹ÙÀ̽º µå¶óÀ̹ö¶ó°í ÇÑ´Ù. ÀÌ·± °ÍÀ¸·Î´Â °¡»ó ÆÄÀÏ ½Ã½ºÅÛÀ̳ª ³×Æ®¿÷ µå¶óÀ̹ö°¡ ÀÖ´Ù. (flyduck) ¿ªÁÖ) IBM PC¿Ü¿¡ BIOS°¡ ÀÖ´Â ½Ã½ºÅÛÀ» ã±â Èûµé¸ç, ÀÌ·± ½Ã½ºÅÛ¿¡¼­ ´Â ¿î¿µÃ¼Á¦ Äڵ尡 ±× ¿ªÇÒÀ» ¸Ã¾Æ¾ß ÇÑ´Ù. (flyduck) ¿ªÁÖ) ISA ÀåÄ¡´Â ÀÎÅÍ·´Æ®¸¦ Çϵå¿þ¾î¿¡ ÀÖ´Â Á¡ÆÛ·Î ¼³Á¤Çϰųª EPROM¿¡ °ªÀ» ±â·ÏÇÔÀ¸·Î½á ÁöÁ¤Çϵµ·Ï µÇ¾î ÀÖ´Ù. ÇÏÁö¸¸ ÀÌµé °ªÀ» ¿î¿µÃ¼Á¦¿¡¼­ ¾Ë¾Æ³¾ ¼ö ÀÖ´Â ¹æ¹ýÀº ¾ø´Ù. (flyduck) ¿ªÁÖ) Ä¿³Î¿¡´Â À̸¦ À§ÇØ probe_irq_on()°ú probe_irq_off() ÇÔ¼ö°¡ ÀÖ´Ù. ÀÙÀÇ ÇÔ¼ö¸¦ ºÒ·¯ ÇÒ´çµÇÁö ¾ÊÀº ÀÎÅÍ·´Æ®¸¦ °¡´ÉÇÏ°Ô ÇÑ ÈÄ, ÀÎÅÍ·´Æ®¸¦ ¹ß»ýÇÑ ÈÄ, µÚÀÇ ÇÔ¼ö¸¦ ºÎ¸£¸é ¹ß»ýÇÑ ÀÎÅÍ·´Æ®¸¦ µ¹·Á ÁÖ°í, ÀÎÅÍ·´Æ® »óŸ¦ ¿ø»óÅ·Πº¹±¸ÇÑ´Ù. probe_irq_off() ÇÔ¼ö´Â ÀÎÅÍ·´Æ®°¡ ¹ß»ýÇÏÁö ¾ÊÀ¸¸é 0À», ÇϳªÀÇ ÀÎÅÍ·´Æ®°¡ ¹ß»ýÇϸé ÇØ´ç ÀÎÅÍ·´Æ® ¹øÈ£¸¦, µÑ ÀÌ»óÀÇ ÀÎÅÍ·´Æ®°¡ ¹ß»ýÇÏ¿© ¸ðÈ£ÇÑ °æ¿ì À½¼ö ¸¦ µ¹·ÁÁØ´Ù. (flyduck) ¿ªÁÖ) »ç½Ç PCI¿¡¼­´Â ±Ô¾àÀ¸·Î ÀÎÅÍ·´Æ® °øÀ¯°¡ °¡´ÉÇϵµ·Ï µÇ¾î ÀÖÁö¸¸, ISA¶ó°í Çؼ­ ÀÎÅÍ·´Æ®¸¦ °øÀ¯ÇÒ ¼ö ¾ø´Â °ÍÀº ¾Æ´Ï´Ù. ¹°·Ð ISA ±Ô¾à¿¡´Â ÀÎÅÍ·´Æ® °øÀ¯¿¡ ´ëÇÑ ±ÔÁ¤ÀÌ ¾ø°í ÃÊâ±â¿¡ ³ª¿Â Ä«µå´Â Àü±âÀûÀÎ ¹®Á¦·Î ÀÎÅÍ·´Æ® °øÀ¯¿¡ ¹®Á¦°¡ ÀÖ¾úÁö¸¸ Áö±Ý ÀÖ´Â ´ëºÎ ºÐÀÇ ISA Ä«µå´Â Çϵå¿þ¾îÀûÀ¸·Î ÀÎÅÍ·´Æ® °øÀ¯¿¡ ¹®Á¦°¡ ¾ø´Ù. µû¶ó¼­ ÀÎÅÍ·´Æ® °øÀ¯ÀÇ ¹®Á¦´Â ´ëºÎºÐ ¼ÒÇÁÆ®¿þ¾î ¹®Á¦À̸ç, ¸®´ª ½º´Â ISA µð¹ÙÀ̽º µå¶óÀ̹ö¶ó°í ÇÏ´õ¶óµµ ÀÎÅÍ·´Æ® Çڵ鷯¸¦ µî·Ï ÇÒ ¶§ ÀÎÅÍ·´Æ®¸¦ °øÀ¯ÇÒ ¼ö ÀÖ´ÂÁö ÁöÁ¤ÇÒ ¼ö ÀÖ´Ù. (flyduck) ¿ªÁÖ) ¹°·Ð ÀÎÅÍ·´Æ®¸¦ ÀÎÅÍ·´Æ®¸¦ °øÀ¯ÇÏÁö ¾Ê´Â ÀÎÅÍ·´Æ® Çڵ鷯°¡ ¼³Ä¡ µÇ¾î ÀÖ´Ù¸é ÀÎÅÍ·´Æ®¸¦ °øÀ¯ÇÏ´Â Çڵ鷯¸¦ µî·ÏÇÒ ¼ö ¾øÀ» °ÍÀ̸ç, ¹Ý´ëÀÇ °æ¿ìµµ ¸¶Âù°¡Áö´Ù. (flyduck) ¿ªÁÖ) Áï ÀÚ½ÅÀÌ Ã³¸®ÇÏ´Â ÀåÄ¡¿¡¼­ ÀÎÅÍ·´Æ®°¡ ¹ß»ýÇÏÁö ¾Ê¾Ò´õ¶óµµ ÀÎÅÍ ·´Æ®¸¦ °øÀ¯ÇÏ´Â ´Ù¸¥ ÀåÄ¡¿¡¼­ ¹ß»ýÇÑ ÀÎÅÍ·´Æ® ¶§¹®¿¡ ÀÚ½ÅÀÇ ÀÎÅÍ·´Æ® Çڵ鷯°¡ ºÒ¸± ¼ö ÀÖ´Ù´Â °ÍÀÌ´Ù. ÀÌ´Â ÀÚ½ÅÀÌ Á¦¾îÇÏ´Â ÀåÄ¡¿¡ ÀÖ´Â ÀÎÅÍ·´Æ® »óÅ ·¹Áö½ºÅ͸¦ Àо ÀÎÅÍ·´Æ®°¡ ¹ß»ýÇÑ °æ¿ì À̸¦ ó¸®ÇÏ°í, ±×·¸Áö ¾ÊÀº °æ¿ì¿¡´Â ±×³É ¹«½ÃÇÏ¸é µÈ´Ù. ±×·¯¸é ½ÇÁ¦·Î ÀÎÅÍ·´Æ®°¡ ¹ß»ýÇÑ ÀåÄ¡ÀÇ µð¹ÙÀ̽º µå¶óÀ̹ö°¡ À̸¦ ó¸®ÇÒ °ÍÀÌ´Ù. (flyduck) ) »ç½Ç Ç÷ÎÇÇ ÄÁÆ®·Ñ·¯´Â °ü·Ê»ó PC ½Ã½ºÅÛ¿¡¼­ ÀÎÅÍ·´Æ®°¡ °íÁ¤µÈ ÀåÄ¡ Áß ÇϳªÀÌ´Ù. Ç÷ÎÇÇ ÄÁÆ®·Ñ·¯´Â Ç×»ó ÀÎÅÍ·´Æ® 6¹ø¿¡ ¿¬°áµÈ´Ù. ¿ªÁÖ) ÀÌ·± ¹æ¹ýÀ¸·Î ÇϹݺΠÇڵ鷯(bottom half handler)¿Í ÀÛ¾÷Å¥(task queue)°¡ ÀÖ´Ù. (flyduck) ¿ªÁÖ) ÀÎÅÍ·´Æ®¸¦ ó¸®ÇÏ´Â µµÁß¿¡´Â ´Ù¸¥ ÀÎÅÍ·´Æ®¸¦ ¹ß»ýÇÏÁö ¸øÇϵµ·Ï Çϱ⠶§¹®¿¡ (¸ðµç ÀÎÅÍ·´Æ®À̵ç, ¿ì¼±¼øÀ§°¡ ³·Àº ÀÎÅÍ·´Æ®À̵ç), ÀÎÅÍ·´Æ® ó¸® »óÅ¿¡ ¿À·¡ ÀÖ´Â °ÍÀº ÁÁÁö ¾Ê´Ù. (flyduck) ¿ªÁÖ) ºü¸¥ ÀÎÅÍ·´Æ®(fast interrupt)¿Í ´À¸° ÀÎÅÍ·´Æ®(slow interrupt)´Â ÀÎÅÍ·´Æ® ó¸® ¹æ½ÄÀÇ Â÷ÀÌÀÌ´Ù. ºü¸¥ ÀÎÅÍ·´Æ®´Â ÀÎÅÍ·´Æ® 󸮰¡ ¿øÀÚÀûÀ¸·Î(atomic) ÀÌ·ç¾îÁö´Â °æ¿ìÀÌ°í, ´À¸° ÀÎÅÍ·´Æ®´Â ±×·¸Áö ¾Ê´Ù. ½ÇÁúÀûÀÎ Â÷ÀÌ´Â ºü¸¥ ÀÎÅÍ·´Æ®ÀÇ °æ¿ì ÇÁ·Î¼¼¼­¿¡¼­ ÀÎÅÍ ·´Æ®¸¦ ±ÝÁö½ÃÄÑ Ã³¸®Áß ´Ù¸¥ ÀÎÅÍ·´Æ®ÀÇ ¹æÇظ¦ ¹ÞÁö ¾ÊÁö¸¸, ´À¸° ÀÎÅÍ·´Æ®´Â ´Ù¸¥ ÀÎÅÍ·´Æ®¿¡ ÀÇÇØ ÁßÁöµÉ ¼ö ÀÖ´Ù. ±×¸®°í ºü¸¥ ÀÎÅÍ·´Æ®´Â ÀÎÅÍ·´Æ® Çڵ鷯´Â ¾ÕµÚ¿¡ ÇÏ´Â ÀÏÀÌ ÀûÀÌ º¸´Ù ºü¸£´Ù. ¾ËÆijª Sparc¿¡¼­´Â ÀÌ·± Â÷ÀÌ´Â ¾øÀ¸¸ç, ÀÎÅÚ¿¡¼­µµ 2.1.37 ¹öÀü ÀÌÈÄ¿¡ ÀÌ Â÷ÀÌ´Â ¾ø¾îÁ³´Ù. (flyduck) ¿ªÁÖ) ÀÌ·¸°Ô ÀåÄ¡¸¦ ÆÄÀϷΠǥ½ÃÇÏ´Â °ÍÀº Windows ¿î¿µÃ¼Á¦¿¡µµ ¿µÇâ À» ¹ÌÃÄ, Windows 95¿¡¼­´Â µð¹ÙÀ̽º µå¶óÀ̹ö¸¦ ÆÄÀÏ·Î Á¢±ÙÇÒ ¼ö ÀÖÀ¸¸ç, Windows NT °è¿­¿¡¼­´Â À¯´Ð½º¿Í º¸´Ù °¡±õ°Ô µð¹ÙÀ̽º µå¶óÀ̹ö°¡ ÀåÄ¡ ÆÄÀÏÀ» ¸¸µå´Â ÇüÅ·ΠµÇ¾î ÀÖ´Ù. (flyduck) ¿ªÁÖ) Áï º¸Åë ¹®ÀÚ ÀåÄ¡³ª ºí·° ÀåÄ¡´Â ½ÇÁ¦·Î ÀåÄ¡°¡ Á¸ÀçÇÏÁö ¾Ê´õ¶óµµ ÀåÄ¡ Ư¼ö ÆÄÀÏÀÌ Á¸ÀçÇÑ´Ù. ÀÌ´Â ½ÇÁ¦ ½Ã½ºÅÛ¿¡ ÀåÄ¡°¡ ¸¹Áö ¾Ê´õ ¶óµµ, /dev µð·ºÅ丮¿¡ ¼ö¸¹Àº ÀåÄ¡ ÆÄÀÏÀÌ Á¸ÀçÇÏ´Â ÀÌÀ¯ÀÌ´Ù. ÇÏÁö¸¸ ³×Æ®¿÷ ÀåÄ¡ ÆÄÀÏÀº ½ÇÁ¦·Î ÀåÄ¡°¡ Á¸ÀçÇÏ´Â °æ¿ì¿¡¸¸ ¸¸µé ¾îÁø´Ù. ¿¹¸¦ µé¾î ½Ã½ºÅÛ¿¡ ÀÌ´õ³Ý ÀåÄ¡°¡ ÀÖ¾î¾ß /dev/eth0À̶ó´Â ÀåÄ¡ Ư¼ö ÆÄÀÏÀÌ »ý±ä´Ù. (flyduck) ¿ªÁÖ) Áï ¸ÞÀÌÀú ÀåÄ¡ ¹øÈ£´Â µð¹ÙÀ̽º µå¶óÀ̹ö¿¡°Ô ºÎ¿©µÇ´Â °ÍÀÌ´Ù. ±×·¯¹Ç·Î ¼­·Î ´Ù¸¥ µð¹ÙÀ̽º µå¶óÀ̹ö¸¦ ÇÊ¿ä·Î ÇÏ´Â CD-ROM µð¹ÙÀ̽º µå¶óÀ̹ö´Â ¼­·Î ´Ù¸¥ ¸ÞÀÌÀú ¹øÈ£¸¦ °¡Áö¸ç, ½ÇÁ¦·Î ¸®´ª ½º ½Ã½ºÅÛ¿¡ º¸¸é CD-ROM µð¹ÙÀ̽º µå¶óÀ̹ö·Î ¿©·¯°³ÀÇ ¸ÞÀÌÀú ¹øÈ£°¡ ÇÒ´çµÇ¾î ÀÖ´Â °ÍÀ» º¼ ¼ö ÀÖ´Ù. µû¶ó¼­ ½Ã½ºÅÛ¿¡ »õ·Î¿î µð¹ÙÀ̽º µå¶óÀ̹ö¸¦ Ãß°¡ÇÒ·Á¸é »ç¿ëµÇ°í ÀÖÁö ¾ÊÀº ¸ÞÀÌÀú ¹øÈ£¸¦ ÇÒ´ç¹Þ¾Æ¾ß ÇÑ´Ù. ¸¶ÀÌ³Ê ¹øÈ£´Â µð¹ÙÀ̽º µå¶óÀ̹ö°¡ ÀÚ½ÅÀÌ °ü¸® ÇÏ´Â ÀåÄ¡µéÀ» ±¸º°Çϱâ À§Çؼ­ ºÙÀÌ´Â °ÍÀ̹ǷÎ, ¾î¶² ¹øÈ£¸¦ ºÎ¿© ÇÏ´ÂÁö´Â µð¹ÙÀ̽º µå¶óÀ̹ö Á¦ÀÛÀÚÀÇ ¸òÀÌ´Ù. ÇöÀç ½Ã½ºÅÛ¿¡ ÀÖ´Â ÀåÄ¡µéÀÇ ¸ÞÀÌÀú ¹øÈ£¿Í ¸¶ÀÌ³Ê ¹øÈ£ÀÇ Àǹ̴ DOCUMENTATION /Device.txt ÆÄÀÏ¿¡ Á¤¸®µÇ¾î ÀÖ´Ù. ¿©±â¼­ ƯÀÌÇÑ Á¡Àº SCSI CD-ROMÀ̳ª SCSI µð½ºÅ©°°Àº °ÍÀº ÇϳªÀÇ ¸ÞÀÌÀú ¹øÈ£¸¸À» °®´Â ´Ù´Â °ÍÀÌ´Ù. ±×·¸´Ù°í ÇϳªÀÇ µð¹ÙÀ̽º µå¶óÀ̹ö°¡ ¸ðµç Á¾·ùÀÇ SCSI ¾î´ðÅ͸¦ Áö¿øÇÑ´Ù´Â °ÍÀº ¾Æ´Ï´Ù. ÀÌ´Â SCSI Ŭ·¡½º µð¹ÙÀÌ ½º µå¶óÀ̹ö°¡ À־ ÀÌ°ÍÀÌ ½ÇÁ¦·Î µð¹ÙÀ̽º µå¶óÀ̹ö¸¦ µî·Ï ÇÏ°í, °¢°¢ÀÇ SCSI ¾î´ðÅÍ¿¡ ÇØ´çÇÏ´Â µð¹ÙÀ̽º µå¶óÀ̹ö´Â ´ÜÁö ÀÌ SCSI Ŭ·¡½º µå¶óÀ̹ö¿¡ º°µµÀÇ ÀÎÅÍÆäÀ̽º¸¦ Á¦°øÇÏ´Â ÇüÅ·ΠµÇ¾î Àֱ⠶§¹®ÀÌ´Ù. ÀÌ´Â ³ªÁß¿¡ ºí·° ÀåÄ¡¿¡¼­ ´Ù½Ã À̾߱âÇÑ´Ù. (flyduck) ¿ªÁÖ) ÀÌ Æ¯¼ºÀº ÇöÀç Ä¿³ÎÀÌ Áö¿øÇÏÁö ¾Ê´Â ÀåÄ¡°¡ Ãß°¡µÇ¾ú´õ¶óµµ, Ä¿³Î À» »õ·Î ÄÄÆÄÀÏÇÏÁö ¾Ê°í ÇØ´çÇÏ´Â µð¹ÙÀ̽º µå¶óÀ̹ö¸¦ Ãß°¡ÇÏ¿© ·ÎµåÇÔÀ¸·Î½á ÀåÄ¡¸¦ »ç¿ëÇÒ ¼ö ÀÖ°Ô ÇÑ´Ù. (flyduck) ¿ªÁÖ) Ä¿³ÎÀ» ÄÄÆÄÀÏÇϱâ Àü¿¡ make menuconfig, ¶Ç´Â X À©µµ¿ì »ó¿¡¼­ make xconfig ¸í·ÉÀ» ÅëÇؼ­, Ä¿³Î¿¡ ¹«¾ùÀ» Æ÷ÇÔÇÏ°í ¹«¾ùÀ» ¸ðµâ ·Î ³ÖÀ» °ÍÀÎÁö ¼³Á¤ÇÒ ¼ö ÀÖ´Ù. (flyduck) ¿ªÁÖ) ÀÌ´Â 11.3 Àå¿¡¼­ ¼³¸íÇÏ°í Àִ ŸÀÌ¸Ó ¸ÞÄ¿´ÏÁòÀÌ´Ù. (flyduck) ¿ªÁÖ) ÀÎÅÍ·´Æ® ÀÚ¿øÀ» ¿äûÇÏ´Â °ÍÀº ²À µå¶óÀ̹ö ÃʱâÈ­ ¶§°¡ ¾Æ´Ï¶óµµ ÇÒ ¼ö ÀÖ´Ù. »ç¶÷¿¡ µû¶ó¼­ µå¶óÀ̹ö ÃʱâÈ­ ¶§¿¡´Â ¾î¶² ÀÎÅÍ·´Æ®¸¦ »ç¿ëÇÏ°í ÀÖ´ÂÁö È®Àθ¸ ÇÏ°í, ½ÇÁ¦ ÀÎÅÍ·´Æ®¸¦ ¿äûÇÏ´Â °ÍÀº ÀåÄ¡¸¦ »ç¿ëÇÒ ¶§¿¡¸¸ Çϸç, »ç¿ëÇÏÁö ¾ÊÀ» ¶§´Â ÀÎÅÍ·´Æ® ÀÚ¿øÀ» ¹Ý³³ÇÏ´Â °ÍÀÌ ÁÁ´Ù°í ÇÏ´Â »ç¶÷µµ ÀÖ´Ù. (flyduck) ¿ªÁÖ) ÇÁ·Î¼¼½º´Â °¡»ó ¸Þ¸ð¸®¸¦ »ç¿ëÇϹǷΠÇÒ´ç¹ÞÀº ¸Þ¸ð¸®´Â °¡»ó ¸Þ¸ð ¸® »ó¿¡¼­´Â ¿¬¼ÓµÇ¾î ÀÖ´õ¶óµµ ¹°¸®ÀûÀ¸·Î ¿¬¼ÓµÈ °ÍÀº ¾Æ´Ï´Ù. ±×·¡¼­ ¸®´ª½º Ä¿³ÎÀº DMA¸¦ À§ÇØ Æ¯º°ÇÑ ¸Þ¸ð¸® ÇÒ´ç ÇÔ¼ö¸¦ Á¦°øÇÑ´Ù. (flyduck) ¿ªÁÖ) ÀÌ "lock"ÀÇ Àǹ̴ °¡»ó ¸Þ¸ð¸®°¡ ½ÇÁ¦ ¹°¸®ÀûÀ¸·Îµµ Á¸ÀçÇÏ°Ô ¸¸µé°í, ¿òÁ÷¿©ÁöÁö ¾Êµµ·Ï ¸¸µç´Ù´Â °ÍÀÌ´Ù. ÀϹÝÀûÀ¸·Î ¸Þ¸ð¸®´Â ÇÒ´ç ¹Þ´õ¶óµµ ¹°¸®ÀûÀ¸·Î ÇÒ´ç¹Þ´Â °ÍÀÌ ¾Æ´Ï±â ¶§¹®¿¡(¿ä±¸ ÆäÀÌ¡), DMA¿¡¼­ »ç¿ëÇÒ ¼ö ÀÖµµ·Ï ½ÇÁ¦·Î ¹°¸®ÀûÀ¸·Î ¸Þ¸ð¸®°¡ Á¸ÀçÇÏ°Ô ÇÏ°í ½º¿Ò ¾Æ¿ôµÇÁö ¾Ê°Ô ÇÑ´Ù´Â ÀǹÌÀÌ´Ù. (flyduck) ¿ªÁÖ) À̸¦ ÀÎÅÍ·´Æ® ŸÀÓ(interrupt time)¿¡¼­ ½ÇÇàµÇ°í ÀÖ´Ù°í ÇÑ´Ù. µð¹ÙÀ̽º µå¶óÀ̹öÀÇ ÀÏ¹Ý ¼­ºñ½ºµéÀº ÀÌ ¼­ºñ½º¸¦ ¿äûÇÑ ÇÁ·Î¼¼½º °¡ ÇöÀç ÇÁ·Î¼¼½ºÀÏ ¶§ (Áï current °¡ ÇöÀç ÇÁ·Î¼¼½ºÀÇ task_struct¸¦ °¡¸®Å°°í ÀÖÀ» ¶§) ½ÇÇàµÇÁö¸¸, ÀÎÅÍ·´Æ® Çڵ鷯³ª ÇϹݺΠÇڵ鷯, ÀÛ¾÷Å¥·Î ó¸®µÉ ¶§´Â ÇöÀç ÇÁ·Î¼¼½º´Â ÀüÇô »ó°ü ¾ø´Â ÇÁ·Î¼¼½º Àϼö ÀÖ´Ù (ÀÛ¾÷Å¥¿¡¼­ tq_scheduler´Â ÀÎÅÍ·´Æ® ŸÀÓ¿¡¼­ 󸮵ÇÁö ¾Ê´Â´Ù). ±×·¡¼­ À̵é ó¸® ·çƾ¿¡¼­´Â ÇöÀç ÇÁ·Î¼¼½º¿¡ ÀÇÁ¸ÇÒ ¼ö ¾ø´Ù. ¸®´ª½º Ä¿³Î¿¡¼­ current´Â ÇöÀç ÇÁ·Î ¼¼½ºÀÇ task_struct¸¦ °¡¸®Å²´Ù. (flyduck) ¿ªÁÖ) ¸®´ª½º Ä¿³ÎÀº ÀÌ¿Í °°Àº ÆäÀÌÁö ±â¹Ý ¸Þ¸ð¸® ÇÒ´ç(page-oriented memory allocation)¸¸À» Áö¿øÇÑ´Ù. C¾ð¾îÀÇ malloc°°Àº ¸Þ¸ð¸® ÇÒ´ç Àº ¼±Çü ¸Þ¸ð¸® ÇÒ´ç(linear memory allocation)À̶ó°í Çϴµ¥, ¸®´ª½º Ä¿³ÎÀº À̸¦ Áö¿øÇÏÁö ¾Ê´Â´Ù. (flyduck) ¿ªÁÖ) ÀÌ·¯ÇÑ ÀÏÀ» ÇÏ´Â ½Ã½ºÅÛ ÄÝÀº register_chrdev()·Î, ¿©±â¿¡´Â ÀåÄ¡ ÀÇ ¸ÞÀÌÀú ¹øÈ£¿Í µð¹ÙÀ̽º µå¶óÀ̹öÀÇ À̸§, ±×¸®°í ÆÄÀÏ ¿¬»ê ºí·°ÀÌ Àü´ÞµÈ´Ù. include/linux/fs.h¿¡¼­ ÇÔ¼öÀÇ ÇÁ·ÎÅäŸÀÔ (prototype)À» º¼ ¼ö ÀÖ´Ù.(flyduck) ¿ªÁÖ) ÀÌ ÆÄÀÏ ¿¬»ê ºí·°À» ³ªÅ¸³»´Â ÀڷᱸÁ¶´Â file_operations·Î, ¿©±â ¿¡´Â open, close, read, release °°Àº ±âº»ÀûÀÎ ¿¬»ê ¿Ü¿¡µµ lseek, ioctl, fsync µîÀÇ ¿©·¯ ¿¬»êµéÀÌ ´õ ÀÖ´Ù. ÀÌ ÀڷᱸÁ¶´Â ºí·° ÀåÄ¡ÀÇ µð¹ÙÀ̽º µå¶óÀ̹ö¿¡µµ »ç¿ëµÈ´Ù. (flyduck) ¿ªÁÖ) ÀÌ´Â ÆÄÀÏ ½Ã½ºÅÛ °´Ã¼¿¡ µû¶ó¼­ ´Ù¸¥ ¿¬»êÀ» Àû¿ëÇÒ ¼ö ÀÖ°Ô ÇÏ¿©, ÆÄÀÌÇÁ³ª ¼ÒÄÏ°°ÀÌ ¶È°°ÀÌ ÆÄÀÏ °´Ã¼ ÀÎÅÍÆäÀ̽º¸¦ °¡ÁöÁö¸¸ ½ÇÁ¦·Î ´Ù¸¥ µ¿ÀÛÀ» ÇÏ´Â °ÍÀ» °¡´ÉÇÏ°Ô ÇÑ´Ù. (flyduck) ¿ªÁÖ) µð¹ÙÀ̽º µå¶óÀ̹ö¸¦ µî·ÏÇÒ ¶§ Àü´ÞµÇ´Â file_operations ±¸Á¶Ã¼¿¡ ´Â ¹öÆÛ Ä³½Ã¿¡ °ü·ÃµÈ ÇÔ¼ö´Â ¾ø´Ù. ±×·¡¼­ ºí·° ÀåÄ¡¿ëÀ¸·Î º°µµ ÀÇ ÀڷᱸÁ¶°¡ ÇÊ¿äÇÏ°Ô µÇ¾î, ¹öÆÛ Ä³½Ã¿¡ °ü·ÃµÈ blk_dev_struct ±¸Á¶Ã¼¿Í ÀÌÀÇ ¹è¿­ÀÎ blk_dev°¡ Á¸ÀçÇÏ°Ô µÈ´Ù. ¹®ÀÚ ÀåÄ¡¿¡¼­¿Í ¸¶Âù°¡Áö·Î ºí·° ÀåÄ¡¸¦ µî·ÏÇÏ´Â ÇÔ¼öÀÎ register_blkdev()¿¡´Â ¸ÞÀÌÀú ¹øÈ£, À̸§, ±×¸®°í ÆÄÀÏ ¿¬»êÀÌ Àü´ÞµÇ¸ç, ¹öÆÛ Ä³½Ã¿¡ °ü·ÃµÈ ¼³Á¤Àº Á÷Á¢ blk_dev_struct ÀÚ·á ±¸Á¶¿¡ ÀÖ´Â request_fn ÇÔ¼ö Æ÷ÀÎÅ͸¦ ÀÚ½ÅÀÇ °ÍÀ¸·Î ¼³Á¤ÇÔÀ¸·Î½á ÀÌ·ç¾î Áø´Ù. (flyduck) ¿ªÁÖ) ÇÑ ½Ç¸°´õÀÇ Å©±â´Â ÇìµåÀÇ ¼ö * ¼½ÅÍÀÇ ¼ö * ¼½ÅÍ Å©±âÀ̹ǷΠ¿©±â ¼­´Â 64 * 32 * 512 = 1048576, Áï 1MBÀÌ´Ù. (flyduck) ¿ªÁÖ) SCSI´Â ¿©±â¿¡ µð½ºÅ© ¿Ü¿¡µµ ½ºÄ³³Ê°°Àº ´Ù¸¥ ¿ÜºÎÀåÄ¡¸¦ ºÙÀÏ ¼ö ÀÖ´Â I/O ¹ö½º ±Ô°ÝÀÌÁö¸¸, IDE´Â ´ÜÁö µð½ºÅ©¸¦ À§ÇÑ ÀÎÅÍÆäÀ̽º ÀÌ´Ù. (flyduck) ¿ªÁÖ) ¿ø¹®¿¡´Â Scsi_Cmd·Î µÇ¾î ÀÖÁö¸¸ Scsi_Cmnd°¡ ¸Â´Ù. (flyduck) ¿ªÁÖ) ¾Õ¿¡¼­ ¼³¸íÇÑ¹Ù¿Í °°ÀÌ ½ÇÁ¦·Î Á¦¾îÇÒ ÀåÄ¡°¡ ÀÖÀ» ¶§ À̸¦ µî·ÏÇÑ ´Ù´Â °ÍÀÌ´Ù. (flyduck) ¿ªÁÖ) IP´Â ±âº»ÀûÀ¸·Î ½ÃÀÛÁÖ¼Ò Çϳª¿Í ¸ñÀûÁö ÁÖ¼Ò Çϳª¸¦ °¡Áö°í ÀÖ´Ù. Áï ¾î¶² °÷¿¡¼­ ´Ü ÇϳªÀÇ ¸ñÀûÁö·Î¸¸ IP ÆÐŶÀ» º¸³¾ ¼ö ÀÖ´Ù´Â °Í ÀÌ´Ù. ÀÌ´Â È­»óȸÀÇ°°ÀÌ °°Àº ÆÐŶÀ» ¿©·¯ ¸ñÀûÁö·Î º¸³»´Â °æ¿ì Áߺ¹µÈ ³»¿ëÀ» ¼ö½ÅÇÏ´Â ¼ýÀÚ¸¸Å­ ¸ñÀûÁö¸¦ µû·Î ÁöÁ¤ÇØ º¸³»¾ß ÇϹǷΠ¸¹Àº ´ë¿ªÆø(bandwidth)¸¦ Àâ¾Æ¸Ô°Ô µÈ´Ù. ÀÌ¿¡ µîÀåÇÑ IP ¸ÖƼij½ºÆ®´Â ¸ñÀûÁö¸¦ ¿©·¯ °÷À» ÁöÁ¤ÇÒ ¼ö ÀÖ°Ô ÇÏ¿© ÆÐŶÀ» Çϳª º¸³»¸é ÀÌ ÆÐŶ¿¡ ±â·ÏµÈ ¸ðµç ¸ñÀûÁö·Î ÆÐŶÀ» Àü¼ÛÇÏ°Ô ÇØ ÁÖ´Â ÇÁ·ÎÅäÄÝÀÌ´Ù. (flyduck) ¿ªÁÖ) ÀåÄ¡°¡ ÀÖÀ» °¡´É¼ºÀº ÀÖÁö¸¸ ¾ÆÁ÷ È®ÀÎÇÑ °ÍÀº ¾Æ´Ï±â¿¡ ÀáÀçÀû À¸·Î Á¸ÀçÇÑ´Ù. (flyduck) ) À½, °íÀÇ´Â ¾Æ´Ï¾ú°ÚÁö¸¸, ³ª´Â ¸®´ª½º°¡ °¡Áø °³¹ßÀÚº¸´Ù ¸¹Àº º¯È£»ç ¸¦ °¡Áø ¿î¿µÃ¼Á¦¿¡ ¹°·Á¿Ô´Ù. ) "maximal mount count reached, running e2fsck is recommended" ¿ªÁÖ) ¸®´ª½º¸¦ ±âº»À¸·Î ¼³Ä¡ÇÏ¸é ºí·° Å©±â´Â 512¹ÙÀÌÆ®ÀÌ´Ù. (½É¸¶·Î) ¿ªÁÖ) 1´ë1 °ü°èÀÌ´Ù. (½É¸¶·Î) ¿ªÁÖ) chmod°¡ º¯°æÇÏ´Â Ç׸ñÀÌ ÀÌ°ÍÀÌ´Ù. (½É¸¶·Î) ¿ªÁÖ) µð¹ÙÀ̽º µå¶óÀ̹ö¸¦ Æ÷ÇÔÇÏ¿© ´Ù¸¥ Ä¿³Î ºÎºÐµµ proc_register_dynamic()ÇÔ¼ö¿¡ ÀûÀýÇÑ ÀÎÀÚ¸¦ Àü´ÞÇÏ°í, ÆÄÀÏ ¿¬»ê À» ¼öÇàÇÒ ¼ö ÀÖ´Â ÇÔ¼ö¸¦ ±¸ÇöÇÔÀ¸·Î½á proc ÆÄÀÏ ½Ã½ºÅÛ¿¡ ¿£Æ®¸® ¸¦ ¸¸µé ¼ö ÀÖ´Ù. (flyduck) ¿ªÁÖ) À¯´Ð½º¿¡¼­ ÀüÅëÀûÀ¸·Î ÀåÄ¡ÀÇ ¹øÈ£¸¦ °£Á÷Çϴµ¥ dev_t¶ó´Â ÀÚ·áÇü À» »ç¿ëÇϸç, ÀÌ´Â 16ºñÆ® Á¤¼ö·Î ¸ÞÀÌÀú ¹øÈ£¿Í ¸¶ÀÌ³Ê ¹øÈ£·Î °¢°¢ 8ºñÆ®¾¿ °®´Â´Ù. ±×·¯³ª ÀÌ´Â 256°³¾¿ÀÇ ¸ÞÀÌÀú ¹øÈ£¿Í ¸¶ÀÌ³Ê ¹øÈ£¹Û¿¡ °¡Áú ¼ö ¾ø¾î¼­ ¹®Á¦¸¦ °¡Áö´Âµ¥, ±×·¸´Ù°í ÀÌ ÀÚ·áÇüÀ» ¹Ù²Ù´Â °ÍÀº ÀåÄ¡¹øÈ£°¡ 16ºñÆ®¶ó°í °¡Á¤ÇÏ°í ÀÖ´Â ¼ÒÇÁÆ®¿þ¾î¿¡¼­ ¹®Á¦¸¦ ÀÒÀ¸Å³ ¼ö ÀÖ´Ù. ±×·¡¼­ ¸®´ª½º´Â ÀåÄ¡ ¹øÈ£¸¦ ³ªÅ¸³»´Âµ¥ kdev_t¶ó´Â »õ·Î¿î ÀÚ·áÇüÀ» ¼±¾ðÇÏ°í À̸¦ »ç¿ëÇÏ°í ÀÖ´Ù. ÀÌ ÀÚ·á ÇüÀº ¸ÞÀÌÀú ¹øÈ£¿Í ¸¶ÀÌ³Ê ¹øÈ£°¡ °¢°¢ 16ºñÆ®ÀÇ Å©±â¸¦ °®´Â´Ù. include/linux/kdev_t.h ÂüÁ¶ (flyduck) ¿ªÁÖ) °¡Àå ³Î¸® »ç¿ëµÇ´Â À¥ ¼­¹öÀÎ ¾ÆÆÄÄ¡ÀÇ Àý¹Ý ÀÌ»óÀÌ ¸®´ª½º¿¡¼­ µ¿ÀÛÁßÀÌ´Ù. (½É¸¶·Î) ) ±¹¸³ °úÇÐ Àç´Ü(National Science Foundation) ¿ªÁÖ) ÀÌ´õ³ÝÀº ¹æ¼Û ÇÁ·ÎÅäÄÝÀ» »ç¿ëÇÏ°í, ÀÌ ¶§¹®¿¡ º¸¾È¼ºÀÌ ¶³¾îÁö´Â Ãø¸éÀÌ ÀÖ´Ù (½É¸¶·Î) ) µ¿±âÀû Àбâ Àü¿ë ¸Þ¸ð¸®(Synchronous Read Only Memory) ¿ªÁÖ) ÇϹݺÎ(bottom half)¶ó´Â ¸»Àº ÀÎÅÍ·´Æ® Çڵ鷯¸¦ »ó¹ÝºÎ(top half) ¶ó°í »ý°¢ÇÏ¿© ÀÎÅÍ·´Æ® Çڵ鷯¿¡¼­ 󸮵ÇÁö ¾Ê°í ³ªÁßÀ¸·Î ¹Ì·ïÁø ÀÛ¾÷À» ´ëºñ½ÃÄÑ ºÙÀÎ À̸§ÀÌ´Ù. (flyduck) ¿ªÁÖ) ÀÌ´Â ÇϹݺΠ󸮿¡ °ü·ÃµÈ ÀڷᱸÁ¶°¡ 4¹ÙÀÌÆ® Å©±âÀÇ ¸¶½ºÅ©¿Í °íÁ¤µÈ Å©±âÀÇ ¹è¿­·Î µÇ¾î Àֱ⠶§¹®ÀÌ´Ù. µû¶ó¼­ ÇϹݺΠ󸮸¦ »ç¿ëÇÒ ¼ö ÀÖ´Â °ÍÀº ÇÑÁ¤µÇ¾î ÀÖÀ¸¸ç, À̰ͺ¸´Ù Á» ´õ °³¼±µÈ ±¸Á¶ ÀÇ ÀÛ¾÷Å¥°¡ ³ª¿À°Ô µÈ´Ù. (flyduck) ¿ªÁÖ) Á¤Àû(static)À¸·Î Á¤ÀǵǾú´Ù´Â Àǹ̴Â, ÇϹݺΠÇڵ鷯¸¦ »ç¿ë ÇÏ°Ú´Ù°í µ¿ÀûÀ¸·Î À妽º¸¦ ¾ò¾î¼­ »ç¿ëÇÏ´Â °ÍÀÌ ¾Æ´Ï¶ó, ¹Ì¸® °¢ À妽º¿¡´Â ¹«¾ùÀÌ ´ã±æ°ÍÀ̸ç ÀÌ À妽º¸¦ Á¤ÀÇÇÏ´Â »ó¼ö(¾Æ·¡ ¿¡ ³ª¿À´Â)°¡ Á¤ÀǵǾî ÀÖ´Ù´Â °ÍÀÌ´Ù. (flyduck) ¿ªÁÖ) ¾Æ·¡¿¡ ³ª¿À´Â ÇϹݺΠÇڵ鷯´Â °¢°¢ TIMER_BH, CONSOLE_BH, TQUEUE_BH, NET_BH, IMMEDIATE_BH·Î Á¤ÀǵǾî ÀÖ´Ù. ÀÌµé ¿Ü¿¡µµ ´Ù¸¥ ÇϹݺΠÇڵ鷯µµ ÀÖÀ¸¸ç, include/linux/interrupt.h¿¡¼­ È®ÀÎÇÒ ¼ö ÀÖ´Ù. (flyduck) ¿ªÁÖ) ÀÌ´Â ¿ø¹®ÀÇ ³»¿ëÀÌ Æ²¸° °ÍÀ̶ó°í »ý°¢ÇÏÁö¸¸, TQUEUE´Â °¢ ŸÀÌ¸Ó Æ½¸¶´Ù È°¼ºÈ­µÇ´Â ÇϹݺΠÇڵ鷯·Î, tq_timer ÀÛ¾÷Å¥¸¦ ó¸® ÇÏ´Â ¿ªÇÒÀ» ÇÑ´Ù. ¾ÕÀÇ TIMER ÇϹݺΠÇڵ鷯 ¿ª½Ã °¢ ŸÀÌ¸Ó Æ½¸¶´Ù È°¼ºÈ­µÇÁö¸¸ 11.3¿¡ ³ª¿À´Â Ä¿³Î ŸÀ̸Ӹ¦ ó¸®ÇÏ´Â ¿ªÇÒÀ» ÇÑ´Ù. ÇÏÁö¸¸ µÑ ´Ù ŸÀÌ¸Ó Æ½ÀÌ ¹ß»ýÇßÀ» ¶§ È°¼ºÈ­µÈ´Ù´Â Á¡Àº µ¿ÀÏÇÏÁö¸¸ ¸ÃÀº ¿ªÇÒÀº ´Ù¸£´Ù. (kernel/sched.cÀÇ do_timer() ÂüÁ¶) (flyduck) ¿ªÁÖ) ÀÌ´Â mark_bh() ÇÔ¼ö¸¦ ÇØ´çÇÏ´Â ÇϹݺΠÇڵ鷯 »ó¼ö¿Í ÇÔ²² ºÎ¸£¸é µÈ´Ù. (flyduck) ¿ªÁÖ) ÀÌ·± ¿ëµµ·Î ¾Õ¿¡ ÇϹݺΠÇڵ鷯¸¦ ¼³¸íÇߴµ¥, µÑÀÇ ¿ªÇÒÀº ºñ½ÁÇÏ Áö¸¸ ¸ÞÄ¿´ÏÁò°ú »ç¿ëÇÏ´Â °æ¿ì´Â ¼­·Î ´Ù¸£´Ù. ÇϹݺΠÇڵ鷯´Â ÇÑÁ¤µÈ ÀÚ¿øÀÎ ¹Ý¸é¿¡, ÀÛ¾÷Å¥´Â ÀÛ¾÷ÀÇ ¸ñ·ÏÀ» ¿¬°á ¸®½ºÆ®·Î °¡Áö °í ÀÖÀ¸¸ç, º°µµÀÇ ÀÛ¾÷Å¥¸¦ Á¤ÀÇÇÏ¿© »ç¿ëÇÒ ¼ö Àֱ⠶§¹®¿¡ È®Àå ÀÌ °¡´ÉÇÏ´Ù. ÀÛ¾÷Å¥´Â ŸÀ̸Ӱ°ÀÌ Å¸ÀÌ¸Ó ÀÎÅÍ·´Æ®°¡ ¹ß»ýÇßÀ» ¶§ ó¸®µÉ ÀÛ¾÷ ¸ñ·ÏÀ» ½×¾ÆµÎ±â À§Çؼ­ »ç¿ëµÇ±âµµ ÇÏ°í, µð¹ÙÀ̽º µå¶óÀ̹ö¿¡¼­ ÀÛ¾÷À» ¹Ì·ç±â À§Çؼ­ »ç¿ëÇÑ´Ù. ¸ðµâ·Î ¸¸µé¾îÁø µð¹ÙÀ̽º µå¶óÀ̹ö´Â ÇϹݺΠÇڵ鷯¸¦ »ç¿ëÇÒ ¼ö ¾øÀ¸¸ç, ÀÛ¾÷Å¥ ¸ÞÄ¿´ÏÁòÀ» »ç¿ëÇØ¾ß ÇÑ´Ù. (flyduck) ¿ªÁÖ) ÀÛ¾÷Å¥¸¦ ó¸®ÇÏ´Â ÇÔ¼ö´Â run_task_queue()À̸ç, kernel/sched.c ¿¡¼­ º¸¸é schedule() ÇÔ¼ö¿¡¼­ run_task_queue(&tq_scheduler)¸¦ ºÎ¸£¸ç, TQUEUE ÇϹݺΠÇڵ鷯¿¡¼­ tq_timer¸¦, IMMEDIATE ÇϹݺΠÇڵ鷯¿¡¼­ tq_immediate¸¦ ó¸®ÇÏ´Â °ÍÀ» º¼ ¼ö ÀÖ´Ù. (flyduck) ¿ªÁÖ) ¾Æ·¡ ³ª¿À´Â ¼¼°¡Áö ÀÛ¾÷Å¥ ¿Ü¿¡ tq_disk°¡ ÀÖÁö¸¸ ÀÌ´Â ¸Þ¸ð¸® °ü¸® ¼­ºê½Ã½ºÅÛ¿¡¼­ ³»ºÎÀûÀ¸·Î »ç¿ëÇÏ´Â °ÍÀ̸ç, ´Ù¸¥ ºÎºÐ¿¡¼­ »ç¿ëÇÒ ¼ö ¾ø´Â °ÍÀÌ´Ù. ÀÌ ¼¼ÀÛ¾÷Å¥´Â °¢°¢ tq_timer, tq_immediate, tq_schedule·Î Á¤ÀǵǾî ÀÖ´Ù. (flyduck) ¿ªÁÖ) ÀÌ Å¸ÀÌ¸Ó Å¥ ÇϹݺΠÇڵ鷯´Â ¾Õ¿¡¼­ À̾߱âÇÑ ¹Ù¿Í °°ÀÌ TQUEUE_BHÀÌ´Ù. (flyduck) ¿ªÁÖ) ½Ã½ºÅÛ Å¸À̸Ӵ TIMER_BH¿¡¼­ ó¸®ÇÏ´Â 11.3Àå¿¡¼­ ¼³¸íÇÒ Å¸À̸Ӹ¦ ¸»ÇÑ´Ù. (flyduck) ¿ªÁÖ) ÀÌ jiffies ´ÜÀ§ÀÇ ½Ã°£ÀÌ Á¤È®È÷ ¾î´ÀÁ¤µµÀÇ ½Ã°£ÀÎÁö´Â ½Ã½ºÅÛ ¸¶´Ù ´Ù¸£´Ù. arch/*/param.h¿¡ HZ¶ó´Â »ó¼ö°¡ Á¤ÀǵǾî Àִµ¥, Ŭ·° ƽÀº ÃÊ´ç ÀÌ HZ Ƚ¼ö¸¸Å­ ¹ß»ýÇϹǷΠ1 jiffie = 1 / HZ Ãʶó°í ÇÒ ¼ö ÀÖ´Ù. ÇöÀç Ä¿³Î¿¡¼­ HZ´Â ¾ËÆÄ ½Ã½ºÅÛ¿¡¼­´Â 1024·Î ´Ù¸¥ ½Ã½ºÅÛ¿¡¼­´Â 100À¸·Î Á¤ÀǵǾî ÀÖ´Ù. ÀÌ °ªÀ» ¹Ù²Ù¾î¼­ ÄÄÆÄÀÏ ÇÒ ¼ö Àִµ¥, ÀÌ °ªÀÌ Ä¿Áö¸é ½Ã½ºÅÛÀÇ ¼Óµµ´Â ´À·ÁÁö°ÚÁö¸¸ ¹ÝÀÀ ¼Óµµ´Â ´õ ºü¸¦ °ÍÀ̸ç, °ªÀÌ ÀÛ¾ÆÁö¸é ¼Óµµ´Â »¡¶óÁöÁö¸¸ ¹ÝÀÀ ¼Óµµ´Â ´õ ´À·ÁÁö°Ô µÈ´Ù. (flyduck) ¿ªÁÖ) ¿¹ÀüÀÇ Å¸À̸Ӵ run_old_timer()¿¡¼­, »õ·Î¿î ŸÀ̸Ӵ run_timer_list()¿¡¼­ ó¸®Çϸç, µÑ´Ù timer_bh()¿¡¼­ ºÒ¸°´Ù. kernel/sched.c ÂüÁ¶ (flyduck) ¿ªÁÖ) ±¸Çö¹æ½ÄÀ¸·Î º»´Ù¸é ¿¹ÀüÀÇ Å¸À̸Ӵ Á¤ÀûÀ¸·Î Á¤ÀÇµÇ°í ºÎÆýÿ¡ Çڵ鷯°¡ µî·ÏµÇ´Â ÇϹݺΠÇڵ鷯¿Í, »õ·Î¿î ŸÀ̸Ӵ µ¿ÀûÀ¸·Î »ç¿ëÇÏ´Â ÀÛ¾÷Å¥¿Í ºñ½ÁÇÏ´Ù°í ÇÒ ¼ö ÀÖ´Ù. (flyduck) ¿ªÁÖ) Áï jiffies(ÇöÀç ½Ã°£À» ³ªÅ¸³»´Â Àü¿ªº¯¼ö) + ¿øÇÏ´Â °£°Ý * HZ·Î °è»êÇÑ´Ù. (flyduck) ) REVIEW NOTE : ´ÙÀ½¹ø¿¡ ½ºÄÉÁì·¯°¡ ½ÇÇàµÉ ¶§ INTERRUPTIBLE »óÅ¿¡ Àִ ŽºÅ©°¡ ½ÇÇàµÇ´Â °ÍÀ» ¸·´Â °ÍÀº ¹«¾ùÀΰ¡? ´ë±âÅ¥ÀÇ ÇÁ·Î¼¼½º´Â ±ú¾î³¯ ¶§±îÁö Àý´ë·Î ½ÇÇàµÇÁö ¾Ê´Â´Ù. ¿ªÁÖ) ´ë±âÅ¥°¡ 󸮰¡ µÉ ¶§¶ó´Â °ÍÀº, ±â´Ù¸®°í ÀÖ´ø ÀÚ¿øÀ» »ç¿ëÇÒ¼ö ÀÖ°Ô µÇ¾î ÀÌ ÀÚ¿øÀ» ±â´Ù¸®´Â ´ë±âÅ¥¸¦ ó¸®ÇÒ ¶§¶ó´Â °ÍÀÌ´Ù. (flyduck) ¿ªÁÖ) ´ÙÀ½ ¼¼¸¶Æ÷¾î¿¡¼­ ÀÌ ½ºÇɶôÀ» semaphore ÀڷᱸÁ¶ÀÇ waking Ç׸ñ ¿¡ ´ëÇÑ Á¢±ÙÀ» Á¦¾îÇÒ ¶§ »ç¿ëÇÏ´Â °ÍÀ» º¼ ¼ö ÀÖ´Ù. (flyduck) ¿ªÁÖ) ÀÌ ¼¼¸¶Æ÷¾î´Â IPC¿¡¼­ ³ª¿Â ¼¼¸¶Æ÷¾î¿Í ´Ù¸£´Ù. ÀÌ ¼¼¸¶Æ÷¾î´Â SMP¿¡¼­ ÇÑ ÇÁ·Î¼¼¼­¸¸ÀÌ Ä¿³Î ¸ðµå·Î µé¾î°¥ ¼ö ÀÖµµ·Ï »ç¿ëÇÏ´Â °ÍÀÌ´Ù. ¸®´ª½º¿¡¼­ SMP´Â ÇöÀç È¿À²ÀûÀ¸·Î ¸¸µé¾îÁöÁö ¾Ê¾Ò´Ù. ¸®´ª½º Ä¿³ÎÀº, Ä¿³Î ¸ðµå¿¡¼­ ÀÚ½ÅÀÌ Á¦¾î±ÇÀ» ³õÁö ¾Ê´Â ÇÑ ´Ù¸¥ ÇÁ·Î¼¼½º¿¡ ÀÇÇØ ÁߴܵÇÁö ¾ÊÀ¸¸ç, ÀÎÅÍ·´Æ® ó¸® ·çƾµµ Àڽź¸´Ù ³ôÀº ¿ì¼±¼øÀ§¸¦ °¡Áø ÀÎÅÍ·´Æ®°¡ ¾Æ´Ñ ´Ù¸¥ ÇÁ·Î¼¼½º¿¡ ÀÇÇØ Áß´Ü µÇÁö ¾Ê´Â´Ù´Â °¡Á¤À» °¡Áö°í ÀÖ´Ù. Áï Ä¿³Î¸ðµå¿¡¼­ ÀڷᱸÁ¶¸¦ ¼öÁ¤ÇÏ´Â °ÍÀÌ ´Ù¸¥ °Í¿¡ ÀÇÇØ Áß´Ü µÇÁö ¾Ê´Â´Ù´Â °¡Á¤À» °¡Áö°í ÀÖ´Â °ÍÀÌ´Ù. ÀÌ´Â SMP¿¡¼­ ¹®Á¦°¡ µÇ´Âµ¥, ¿Ö³ÄÇϸé ÇÑ ÇÁ·Î¼¼¼­¿¡¼­ Ä¿³Î ¸ðµå·Î µé¾î°¡ ÀڷᱸÁ¶¸¦ ¼öÁ¤ÇÏ°í ÀÖÀ» ¶§, ´Ù¸¥ ÇÁ·Î¼¼¼­¿¡¼­ Ä¿³Î¸ðµå·Î µé¾î°¡¸é Ä¿³ÎÀÌ À¯ÁöÇÏ´Â ÀڷᱸÁ¶¸¦ µ¿½Ã¿¡ ¿©·¯ ÇÁ·Î¼¼¼­°¡ ¼öÁ¤ÇÏ°Ô µÇ±â ¶§¹® ÀÌ´Ù. ÀÌÀÇ °¡Àå ¿Ã¹Ù¸¥ ÇØ°áÃ¥Àº ´ç¿¬È÷ ÀڷᱸÁ¶¸¦ ¼öÁ¤Çϱâ Àü¿¡ ÀÓ°èÁö¿ªÀ» Ç¥½ÃÇÏ°í ´Ù¸¥ ÇÁ·Î¼¼¼­°¡ Á¢±ÙÇÏÁö ¸øÇÏ°Ô ÇÏ´Â °ÍÀÌÁö ¸¸, ÀÌ´Â ÇöÀç ±¸Á¶»ó ³Ê¹« ¹æ´ëÇÑ ÀÛ¾÷À» ÇÊ¿ä·Î ÇÑ´Ù. ±×·¡¼­ ÇöÀç SMP ±¸ÇöÀº ÇϳªÀÇ ¼¼¸¶Æ÷¾î¸¦ »ç¿ëÇÏ¿© µ¿½Ã¿¡ ÇÑ ÇÁ·Î¼¼¼­ ¸¸ÀÌ Ä¿³Î¸ðµå¿¡ ÀÖÀ» ¼ö ÀÖ°Ô Çϸç, ÀÌ Àå¿¡¼­ ¼³¸íÇÏ´Â ¼¼¸¶Æ÷¾î ´Â ÀÌ·± ¿ëµµ¸¦ À§ÇØ »ç¿ëÇÏ´Â °ÍÀÌ´Ù. ±×·¡¼­ SMP¿¡¼­µµ Ä¿³Î ¸ðµå¿¡¼­ µ¿ÀÛÇÏ´Â ÇÁ·Î¼¼½º°¡ ´Ù¸¥ ÇÁ·Î ¼¼½º¿¡ ÀÇÇØ ÁߴܵÇÁö ¾Ê°ÔÇÏ´Â °ÍÀÌ´Ù. ÀÌ´Â Ä¿³Î ¸ðµå¿¡¼­ Àâ¾Æ ¸Ô´Â CPU ½Ã°£ÀÌ Àüü ½Ã½ºÅÛ È¿À²¼ºÀÇ º´¸ñÀ¸·Î ÀÛµ¿ÇÏ°Ô µÇ¸ç, Ä¿³Î ¸ðµå¿¡ ¸¹ÀÌ ÁøÀÔÇÏ´Â I/O Áß½ÉÀÇ ½Ã½ºÅÛ¿¡¼­´Â ´õ¿í º´¸ñÇö»ó ÀÌ ´õ ½ÉÇØÁö°Ô µÈ´Ù. ¾ÕÀ¸·Î È¿À²ÀûÀÎ SMP ½Ã½ºÅÛÀ» ±¸ÇöÇÏ·Á¸é ÇÊ¿äÇÑ °æ¿ì¿¡¸¸ ¶ôÀ» °É¼ö ÀÖµµ·Ï ¼öÁ¤µÇ¾î¾ß ÇÒ°ÍÀÌ´Ù.(flyduck) ¿ªÁÖ) ÀÌ Ã¥ÀÇ ¹ÙÅÁÀÎ 2.0.33 ¼Ò½º¿¡´Â lock Ç׸ñÀÌ ÀÖÁö¸¸, 2.0.2x ¹öÀü À̳ª 2.2.x ¹öÀü¿¡¼­ lock Ç׸ñÀ» ãÀ» ¼ö ¾ø´Ù. (flyduck) ¿ªÁÖ) Áï ÇÑ ÇÁ·Î¼¼¼­¸¸ÀÌ Ä¿³Î ¸ðµå¿¡ ÁøÀÔÇÒ ¶§ °¡Àå È¿À²ÀûÀ¸·Î µ¿ÀÛ Çϵµ·Ï ¼³°èµÇ¾ú´Ù´Â ¶æÀÌ´Ù. (flyduck) ¿ªÁÖ) Ä¿³Î ¸ðµå¿¡ ÁøÀÔÇϱâ À§ÇÏ¿© ¼¼¸¶Æ÷¾î¸¦ ¾òÀ¸·Á°í Çߴµ¥ À̸¦ ¾òÀ» ¼ö ¾ø´Ù¸é, ÀÚ½ÅÀº ¼¼¸¶Æ÷¾î¸¦ »ç¿ëÇÒ ¼ö ÀÖ°Ô µÉ ¶§±îÁö ½ºÄÉ Áì·¯¸¦ È£ÃâÇϸç(ÀÌ°ÍÀº ´Ù¸¥ ÇÁ·Î¼¼½º°¡ ÀڽŠ´ë½Å¿¡ ½ÇÇàµÉ ¼ö ÀÖ°Ô ¸¸µç´Ù), ¼¼¸¶Æ÷¾î¸¦ ¾òÀ» ¼ö ÀÖÀ» ¶§±îÁö ±â´Ù¸°´Ù´Â °ÍÀÌ´Ù. (flyduck) ¿ªÁÖ) Ä¿³ÎÀ» »õ·Î ÄÄÆÄÀÏÇÏ´Â °ÍÀ» °¡¸®Å²´Ù. (flyduck) ¿ªÁÖ) À̸¦ module stackingÀ̶ó°í ÇÑ´Ù. (flyduck) ¿ªÁÖ) ¸ðµâÀ» ÄÄÆÄÀÏÇÒ ¶§ Ä¿³ÎÀÇ ¹öÀü Á¤º¸¸¦ ³ÖÀ» ¼ö ÀÖ´Ù ÀÌ °æ¿ì insmod°¡ ¸ðµâÀ» ·ÎµåÇÒ ¶§ ¹öÀü °Ë»ç¸¦ ÇÏ¿©, ¹öÀüÀÌ ¸ÂÁö ¾ÊÀ¸¸é ¸ðµâÀ» ·ÎµåÇÒ ¼ö ¾ø´Ù. insmod -f ¿É¼ÇÀ» »ç¿ëÇÏ¸é ¹öÀüÀÌ ¸ÂÁö ¾Ê´õ¶óµµ ·ÎµåÇÏ°Ô ÇÒ ¼ö´Â ÀÖÁö¸¸ ¾ÈÀüÇÏÁø ¾ÊÀ» °ÍÀÌ´Ù. Á» ´õ ÁÁÀº ¹æ¹ýÀ¸·Î ¸ðµâÀÌ »ç¿ëÇÏ´Â Ä¿³Î ¼­ºñ½º¿¡ ³Ñ°ÜÁÖ´Â ÀÎÀÚµéÀÌ ´Þ¶óÁø °æ¿ì¿¡¸¸ ¸ðµâÀ» ·ÎµåÇÒ ¼ö ¾ø°Ô ÇÒ ¼ö ÀÖ´Ù. Áï ÄÄÆÄÀÏ µÈ ¸ðµâÀÌ »ç¿ëÇÏ´Â ¼­ºñ½º°¡ ÇöÀç Ä¿³Î¿¡¼­ Á¦°øÇÏ´Â ¼­ºñ½º¿Í ´Þ¶óÁø °ÍÀÌ ¾ø´Ù¸é ¹®Á¦°¡ µÇÁö ¾ÊÀ¸¸ç, À̸¦ À§Çؼ± Ä¿³Î°ú ¸ðµâ ¾çÂÊ¿¡¼­ ½Éº¼ÀÌ ÀÎÀÚÁ¤º¸¸¦ üũ¼¶À¸·Î °¡Áö°í ÀÖµµ·Ï ÇؾßÇÑ´Ù. (flyduck) ¿ªÁÖ) kernel/ksymc.c¿¡ º¸¸é Ä¿³ÎÀÌ ÀͽºÆ÷Æ®ÇÒ ½Éº¼µéÀÇ ¸ñ·ÏÀÌ µé¾î ÀÖ´Ù. ÀÌ¿Í ¸¶Âù°¡Áö·Î ¸ðµâÀ» ¸¸µé ¶§ ¸ðµâ¿¡ ÀÖ´Â ¸ðµç ½Éº¼µéÀ» ÀͽºÆ÷Æ®ÇÏÁö ¾Ê°í ÇÊ¿äÇÑ °Í¸¸ ÀͽºÆ÷Æ®Çϵµ·Ï ÇÒ ¼ö ÀÖ´Ù. ÀÌ´Â ³Ê¹« ¸¹Àº ½Éº¼µéÀÌ ½Éº¼ Å×ÀÌºí¿¡ µé¾î°¡ ¹ß»ýÇÒ ¼ö ÀÖ´Â ¹®Á¦¸¦ ¹Ì¸® ¸·±â À§ÇÑ °ÍÀÌ´Ù. (flyduck) ¿ªÁÖ) À̵éÀÇ À̸§Àº °¢°¢ init_module(), cleanup_module()·Î Á¤ÇØÁ® ÀÖ´Ù. À̵éÀº ½Éº¼ Å×ÀÌºí¿¡ µé¾îÀÖÁö ¾Ê´õ¶óµµ Àü¿ª ÇÔ¼ö·Î µÇ¾î ÀÖ´Ù¸é ±× ÁÖ¼Ò¸¦ ¾Ë¾Æ³¾ ¼ö ÀÖ´Ù. (flyduck) ¿ªÁÖ) ³ôÀº Ŭ·°À» Á¦°øÇÒ ¼ö ÀÖ´Â ¼³°è·Î ÀÎÇØ 21264ÀÌÀü¿¡´Â ´Ù¸¥ RISC CPU¿¡ ºñÇØ Å¬·°´ç ¼º´É ¸é¿¡¼­´Â ÁÁÁö ¸øÇß´Ù. (½É¸¶·Î) ¿ªÁÖ) ±¹³»¿¡¼­´Â ÄÄÇ»ÅÍ ÀâÁö ºÎ·ÏÀÇ Çüŵµ Å« ºñÁßÀ» Â÷ÁöÇÏ°í ÀÖ´Ù. (½É¸¶·Î) ¿ªÁÖ) ÀÎÅÍ³Ý ÁÖ¼ÒÀÇ ¼ÒÀ¯±Ç ¹®Á¦·Î http://www.kernelnotes.comÀÌ ´õ ÀÎÁ¤¹Þ°í ÀÖ´Ù. http://www.linuxhq.comÀº °»½Å ºóµµ°¡ ´õ ´Ê´Ù. (½É¸¶·Î)