Ãʺ¸ÀÚ¸¦ À§ÇÑ ¸®´ª½º Ä¿³ÎÀÇ ¸Þ¸ð¸® °ü¸®
ÀúÀÚ: Çѵ¿ÈÆ(traxacun)
ÀÌ ±ÛÀº ¸®´ª½º Ä¿³ÎÀ» óÀ½ °øºÎÇÏ´Â ºÐµé¿¡°Ô¸¸ ÀûÇÕÇϸç, ÀÌ¹Ì Àß ¾Ë°í °è½Ã´Â ºÐµé¿¡°Ô´Â ÀûÇÕÇÏÁö ¾ÊÀ» ¼öµµ ÀÖ½À´Ï´Ù. º» ±â»ç¿¡¼´Â ´ÙÀ½ ÁÖÁ¦µéÀ» ´Ù·ê °ÍÀÔ´Ï´Ù.
1. Memory Model
2. i386 CPU¿¡¼ÀÇ ¸Þ¸ð¸® °ü¸®
3. ¸®´ª¼ Ä¿³Î¿¡¼ÀÇ ¸Þ¸ð¸® °ü¸®
4. Ä¿³Î¿¡¼ÀÇ ÄÚµå
¸Þ¸ð¸® ¸ðµ¨
¿¹¸¦ µé¾î¼, 1M ¸Þ¸ð¸®¸¦ °¡Áø ½Ã½ºÅÛÀÌ ÀÖ½À´Ï´Ù. ÀÌ ½Ã½ºÅÛ¿¡¼ ¸Þ¸ð¸®¸¦ 300k »ç¿ëÇÏ´Â ÇÁ·Î±×·¥ A°¡ ÀÖ°í, 500k¸¦ »ç¿ëÇÏ´Â ÇÁ·Î±×·¥ B°¡ ÀÖ½À´Ï´Ù. ±×·±µ¥, ÇÁ·Î±×·¥ A´Â µ¥ÀÌÅÍ°¡ ¸¹¾ÆÁú¼ö·Ï ´õ ¸¹Àº ¸Þ¸ð¸®¸¦ »ç¿ëÇÏ°Ô µÇ¾î ÀÖ¾î¼ 600kÀÇ ¸Þ¸ð¸®¸¦ »ç¿ëÇÏ°Ô µÇ¾ú½À´Ï´Ù. ÀÌ·± °æ¿ì¿¡´Â ¸Þ¸ð¸®°¡ ÇÁ·Î±×·¥ A¿Í B°¡ ¼·Î Ãæµ¹ÇÏ°Ô µÇ¾î ´õ ÀÌ»ó ÇÁ·Î±×·¥À» ½ÇÇàÇÒ ¼ö ¾ø°Ô µÉ °ÍÀÔ´Ï´Ù. ÇÁ·Î±×·¥À» ÀÛ¼ºÇÏ¸é¼ °è»ê±â ÇÁ·Î±×·¥ÀÌ ³» ÇÁ·Î±×·¥ÀÇ ¸Þ¸ð¸® ¿µ¿ªÀ» ħ¹üÇÏ¸é ¾ÈµÇ´Âµ¥¶ó°í °í¹ÎÇÏ¸é¼ ÇÁ·Î±×·¥À» ÀÛ¼ºÇÏÁö´Â ¾ÊÀ» °ÍÀÔ´Ï´Ù. ÀÌ¿Í °°ÀÌ ´Ù¾çÇÑ ÇÁ·Î±×·¥µéÀÌ ¸Þ¸ð¸®¸¦ »ç¿ëÇÒ ¼ö ÀÖ°Ô Çϱâ À§ÇØ OS´Â ¸Þ¸ð¸®¸¦ °ü¸®ÇÕ´Ï´Ù.
¸Þ¸ð¸® ¸ðµ¨ÀÇ Á¾·ù
¸Þ¸ð¸®¸¦ °ü¸®ÇÏ´Â ¹æ¹ýÀº ¼¼±×¸ÕÆ®(Segment) ±â¹ý°ú ÆäÀÌ¡(Paging) ±â¹ýÀÌ ÀÖ½À´Ï´Ù. ¿ì¸®°¡ ÈçÈ÷ º¸´Â Ã¥Àº ÆäÀÌÁö¸¦ ¸Å±â´Â ¹æ¹ýÀÌ µÎ °¡Áö°¡ ÀÖ½À´Ï´Ù. ¿¹¸¦ µé¾î, 1,000 ÆäÀÌÁöÂ¥¸® Ã¥ÀÌ ÀÖÀ» ¶§ ÆäÀÌÁö¸¦ 1¹øºÎÅÍ 1,000¹ø±îÁö ¸ðµÎ ¸Å°Ü³õÀº Ã¥ÀÌ Àִ°¡Çϸé, Ã¥À» éÅͺ°·Î ³ª´©¾î¼ °¢ éÅÍ¿¡¼ ¸î¹ø° ÆäÀÌÁö¶ó°í Ç¥±âÇÏ´Â ¹æ¹ýÀÌ ÀÖ½À´Ï´Ù. ¼±ÇüÀûÀ¸·Î ÀÏ°ýµÇ°Ô ÆäÀÌÁö¸¦ ¸Å±â´Â ¹æ¹ýÀ» ÆäÀÌ¡À̶ó ÇÏ°í, °¢ éÅͺ°·Î Ã¥À» ³ª´©°í, éÅÍ¿¡¼ ¸î¹ø° ÆäÀÌÁö(Offset)¶ó°í ³ª´©¾î °ü¸®ÇÏ´Â ¹æ¹ýÀ» ¼¼±×¸ÕÆ®¶ó°í ÇÕ´Ï´Ù.
Çö´ë ¿î¿µÃ¼Á¦´Â Á¤È®ÇÏ°Ô ¼¼±×¸ÕÆ®¿Í ÆäÀÌ¡À¸·Î ³ª´©¾î °ü¸®Çϱ⠺¸´Ù´Â ÀÌ µÎ°¡Áö¸¦ ÀûÀýÇÏ°Ô È¥ÇÕµÈ ÇüŸ¦ »ç¿ëÇÕ´Ï´Ù.
¿©±â±îÁö´Â ¸Þ¸ð¸®¸¦ °ü¸®ÇÏ´Â ¹æ¹ýÀ» ÀÌ·ÐÀûÀ¸·Î ³ª´« °ÍÀÌ°í, CPU¿¡¼ ¸Þ¸ð¸®¸¦ °ü¸®ÇÏ´Â °ÍÀº ´Ù¸¨´Ï´Ù. Áï, OS¿¡¼ ¸Þ¸ð¸®¸¦ °ü¸®ÇÏ´Â ¹æ¹ýÀº OS¸¦ Á¦ÀÛÇÏ´Â »ç¶÷ÀÌ ¸¶À½´ë·Î Á¤ÇÒ ¼ö ÀÖ´Â °ÍÀÌÁö¸¸ ½ÇÁ¦·Î CPU¿Í µ¥ÀÌÅ͸¦ ÁÖ°í ¹ÞÀ» ¶§´Â CPU¿¡ ¸ÂÃç¼ µ¥ÀÌÅ͸¦ ÁÖ°í ¹Þ¾Æ¾ß ÇÕ´Ï´Ù. ¿ì¸®°¡ »ç¿ëÇÏ´Â x86 CPU´Â ¸®¾ó ¸ðµå(Real Mode)¿Í º¸È£ ¸ðµå(Protected Mode)¸¦ »ç¿ëÇÕ´Ï´Ù. ¸®¾ó ¸ðµå´Â ¿¹Àü¿¡ µµ½º(DOS)¸¦ »ç¿ëÇÏ´ø ½ÃÀý¿¡ »ç¿ëÇÏ´ø ¸ðµå·Î 1M ±îÁöÀÇ ¸Þ¸ð¸®¸¦ »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù. º¸È£ ¸ðµå¿¡¼´Â ¸Þ¸ð¸®¸¦ 0-4G±îÁö »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù. ¿äÁò¿¡´Â ¸ðµÎµé 512M ÀÌ»óÀÇ ·¥À» ÀåÂøÇؼ »ç¿ëÇÏ´Â °ÍÀÌ º¸ÆíÀûÀÌ´Ï ¸®¾ó ¸ðµå´Â ¸ô¶óµµ µÇÁö ¾Ê¾Æ¶ó°í »ý°¢ÇÒ °Ì´Ï´Ù. ±×·¯³ª, ½Ã½ºÅÛÀÌ Ã³À½ Àü¿øÀÌ µé¾î°¡°í, ºÎÆÃÀÌ µÉ ¶§´Â ¸®¾ó ¸ðµå·Î ½ÇÇàµÇ°í, ±× ÀÌÈÄ¿¡ º¸È£ ¸ðµå·Î ³Ñ¾î°¡°Ô µË´Ï´Ù. ±×·¸°Ô ¶§¹®¿¡ Ä¿³ÎÀ» ÇнÀÇÏ´Â »ç¶÷µéÀº CPU¿¡¼ ¸Þ¸ð¸®¸¦ °ü¸®ÇÏ´Â ¹æ¹ýÀÌ ¸®¾ó ¸ðµåÀ϶§¿Í º¸È£ ¸ðµåÀÏ ¶§ ´Ù¸£´Ù´Â °ÍÀ» ¾Ë¾Æ¾ß ÇÕ´Ï´Ù. ÀÌ¿¡ ´ëÇؼ´Â µÚ¿¡¼ º¸´Ù ÀÚ¼¼È÷ ¼³¸íÇϵµ·Ï ÇÏ°Ú½À´Ï´Ù.
Ä¿³ÎÀÇ ¸Þ¸ð¸® ¸ðµ¨
¸®´ª½º Ä¿³ÎÀÌ »ý°¢ÇÏ´Â ¸Þ¸ð¸® ¸ðµ¨Àº Å©°Ô µÎ °¡Áö »ÓÀÔ´Ï´Ù. Çϳª´Â ¹°¸® ¸Þ¸ð¸®(Physical Memory)ÀÌ°í, ´Ù¸¥ Çϳª´Â °¡»ó ¸Þ¸ð¸®(Virtual Memory)ÀÔ´Ï´Ù.
¸¹Àº ºÐµéÀÌ µé¾îº¸¾ÒÀ» À̾߱â´Â ÇÁ·Î¼¼½º Çϳª´ç 4GB±îÁöÀÇ ¸Þ¸ð¸® °ø°£À» °¡Áø´Ù´Â °ÍÀÔ´Ï´Ù. Áï, ½ºÅ¸Å©·¡ÇÁÆ®µµ 4GBÀÇ ¸Þ¸ð¸® °ø°£À» »ç¿ëÇÑ´Ù°í »ý°¢ÇÏ°í, ÀÎÅÍ³Ý ÀͽºÇ÷η¯µµ 4GBÀÇ ¸Þ¸ð¸® °ø°£À» »ç¿ëÇÑ´Ù°í »ý°¢ÇÕ´Ï´Ù. Àá±ñ¸¸¿ä! Àú´Â PC¿¡ ·¥ÀÌ 512M ¹Û¿¡ ¾ø´Âµ¥¿ä? ¶ó°í »ý°¢ÇÒ ¼ö ÀÖ½À´Ï´Ù.
Àá½Ã »ý°¢ÇÏ¸é ¾Ë ¼ö ÀÖ´Â °Íó·³ ¸ðµç ÇÁ·Î±×·¥Àº 4G¶ó´Â ¸Þ¸ð¸®¸¦ ¸ðµÎ »ç¿ëÇÏ´Â °ÍÀÌ ¾Æ´Õ´Ï´Ù. ½ÇÁ¦·Î´Â ¸Å¿ì ÀÛÀº ÀϺθ¸ »ç¿ëÇÒ »ÓÀÔ´Ï´Ù. ±×·¯´Ï »ç¿ëÇÏÁö ¾Ê´Â ºÎºÐÀº ¹«½ÃÇÏ°í, »ç¿ëÇÏ´Â ºÎºÐ¸¸ ¸Þ¸ð¸®¿¡ °®°í ÀÖÀ¸¸é µË´Ï´Ù.
ÇÁ·Î¼¼½º´Â 4GÀÇ °ø°£ÀÌ ÀüºÎ ÀÚ±â°ÍÀ̶ó°í »ý°¢ÇÏ°í, OS´Â ÇÁ·Î¼¼½º°¡ ½ÇÁ¦·Î »ç¿ëÇÏ´Â ºÎºÐ¸¸ ½ÇÁ¦ ¸Þ¸ð¸®¿¡ ¿Ã·Á³õÀ¸¸é µË´Ï´Ù. Áï, °¡»ó °ø°£°ú ½ÇÁ¦ ¸Þ¸ð¸® °ø°£À» ¿¬°áÇÒ ¼ö ÀÖ´Â º¯È¯ Å×À̺íÀÌ Çϳª ÀÖÀ¸¸é µÇ°Ú³×¿ä!
±×¸²1. ÇÁ·Î¼¼½º AÀÇ °¡»ó °ø°£°ú ½ÇÁ¦ ¸Þ¸ð¸®
±×¸²¿¡¼ º¼ ¼ö ÀÖ´Â °Íó·³ ÇÁ·Î¼¼½º A´Â ÆäÀÌÁö 1, 4, 7¹øÀ» »ç¿ëÇÏ°í ÀÖ½À´Ï´Ù. ±×¸®°í ÀÌµé °¢°¢Àº ½ÇÁ¦ ¸Þ¸ð¸® ÇÁ·¹ÀÓ 5, 3, 1¿¡ ÀúÀåµÇ¾î ÀÖ½À´Ï´Ù. ÀÌ¿Í °°Àº ¹æ¹ýÀ» »ç¿ëÇϱ⠶§¹®¿¡ °¢ ÇÁ·Î¼¼½º´Â °¢ÀÚ°¡ 4GÀÇ °ø°£À» »ç¿ëÇÏ°í ÀÖ´Ù°í »ý°¢ÇÏ°í, ´Ù¸¥ ÇÁ·Î±×·¥ÀÌ »ç¿ëÇÏ´Â ¸Þ¸ð¸® °ø°£¿¡ ´ëÇØ ¿°·ÁÇÏÁö ¾Ê°í ÇÁ·Î±×·¥À» ÀÛ¼ºÇÒ ¼ö ÀÖ´Â °ÍÀÔ´Ï´Ù.
x86 ¾ÆÅ°ÅØóÀÇ ¸Þ¸ð¸® ¸ðµ¨
CPU´Â ¿¬»êÀ» À§ÇØ ¸Þ¸ð¸®¿Í µ¥ÀÌÅ͸¦ ÁÖ°í ¹Þ½À´Ï´Ù. Áï, CPU°¡ ¸Þ¸ð¸®¸¦ ¾î¶»°Ô ÀÌ¿ëÇÏ´ÂÁö ¾Ë°í ÀÖ¾î¾ßÇÕ´Ï´Ù. CPU¸¶´Ù ¸Þ¸ð¸®¸¦ ÀÌ¿ëÇÏ´Â ¹æ¹ýÀº °¢±â ´Ù¸£Áö¸¸, ¿©±â¼´Â °¡Àå ÈçÇÏ°Ô »ç¿ëµÇ´Â x86 CPU¿¡ ´ëÇؼ »ìÆ캼 °ÍÀÔ´Ï´Ù.
±×¸²2. x86 CPUÀÇ ¸Þ¸ð¸® ¸ðµ¨
x86 CPU´Â 32bit ȯ°æÀ̶ó°í ¾ê±âÇÕ´Ï´Ù. Áï, ¸Þ¸ð¸®µµ 32bit¿¡ ÇØ´çÇÏ´Â 2ÀÇ 32½Â = 4G±îÁö »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù. °¢ ÆäÀÌÁö¸¦ 4096 ¹ÙÀÌÆ®·Î ³ª´©¾î¼ °ü¸®ÇÏ°í ÀÖ½À´Ï´Ù. Áï, 2^12 = 4096ÀÔ´Ï´Ù. µû¶ó¼, 12 ºñÆ®´Â °¢ ÆäÀÌÁöÀÇ À§Ä¡¸¦ °¡¸®Å°±â À§Çؼ »ç¿ëµË´Ï´Ù.
4GÀÇ °ø°£À» 4096 ÆäÀÌÁö Å©±â·Î ³ª´©¸é 1,048,576ÀÌ°í, ÀÌ ¼ýÀÚÀÇ Àǹ̴ 4GÀÇ ¸Þ¸ð¸® °ø°£À» 4k Å©±âÀÇ ÆäÀÌÁö·Î ³ª´©¾î °ü¸®Çϱâ À§Çؼ´Â ÆäÀÌÁö Å×À̺íÀÌ 1,048,576°³³ª ÇÊ¿äÇÏ´Ù´Â Àǹ̰¡ µË´Ï´Ù. Áï, 2^20 = 1,048,576ÀÌ°í, 1°³ÀÇ PTE´Â 4 ¹ÙÀÌÆ®À̱⠶§¹®¿¡ ÆäÀÌÁö Å×À̺íÀÌ Â÷ÁöÇÏ´Â ¸Þ¸ð¸®ÀÇ Å©±â´Â 1,048,576 * 4 = 4M°¡ µË´Ï´Ù. Áï, ÇϳªÀÇ ÇÁ·Î¼¼½º°¡ 4GÀÇ ¸Þ¸ð¸® °ø°£À» °ü¸®ÇÏ´Â ÆäÀÌÁö Å×À̺íÀ» À¯ÁöÇϱâ À§Çؼ´Â 4M°¡ ÇÊ¿äÇÏ´Ù´Â °ÍÀÔ´Ï´Ù. ÇÁ·Î¼¼½º 1°³ »ý¼º¿¡ 4M¸¦ ¹«Á¶°Ç »ç¿ëÇÑ´Ù´Â °ÍÀº ²Ï³ª Å« ³¶ºñÀÔ´Ï´Ù.
20 bit tableÀÎ °æ¿ì: 2^20 = 1,048,576 = 1M
1M * 2^12(4096) = 4G
PTE = 4 bytes, 1M * 4 = 4M each process
±×·¸´Ù¸é, 20ºñÆ®¸¦ ÇѲ¨¹ø¿¡ ÀÌ¿ëÇÏ´Â ´ë½Å¿¡ 10ºñÆ®¾¿ ³ª´©¾î¼ »ç¿ëÇÏ¸é ¾î¶³±î¿ä?
2ÀÇ 10½ÂÀº 1024°³ÀÌ°í, ÇÑ Ç׸ñÀº 4 ¹ÙÀÌÆ®¸¦ Â÷ÁöÇϹǷΠ1024 * 4 = 4096 = 4k¸¦ »ç¿ëÇÏ°Ô µÇ°í, 4k´Â ¸Þ¸ð¸®¿¡¼ 1 ÇÁ·¹ÀÓ¸¸ Â÷ÁöÇÕ´Ï´Ù.
±×·¡¼ ±×¸²2¿Í °°ÀÌ ÆäÀÌÁö µð·ºÅ丮¿¡ 10ºñÆ®, ÆäÀÌÁö Å×ÀÌºí¿¡ 10ºñÆ®¸¦ »ç¿ëÇÕ´Ï´Ù.
Page Directory = 1024°³ * 4 bytes = 4k = 1 page
Page Table = 1024°³ * 4 bytes = 4k = 1 page
°£´ÜÇÏ°Ô C¾ð¾îÀÇ Á¤ÀÇ´ë·Î Àû¾îº¸¸é ´ÙÀ½°ú °°½À´Ï´Ù.
unsinged int table[1024*1024];
unsigned int directory[1024], table[1024];
ù¹ø°´Â 20ºñÆ®¸¦ »ç¿ëÇßÀ» ¶§ÀÇ ¹è¿ ¼±¾ðÀÌ°í, µÎ¹ø°´Â 10ºñÆ®¾¿ ³ª´©¾î¼ µð·ºÅ丮, Å×À̺í·Î »ç¿ëÇÒ ¶§ÀÇ ¼±¾ðÀÔ´Ï´Ù. ¹°·Ð, ¸®´ª½º Ä¿³ÎÀÇ ¼±¾ðÀÌ ÀÌ·¸°Ô µÇ¾î ÀÖ´Ù´Â °ÍÀº ¾Æ´Õ´Ï´Ù.
ù¹ø° ¹è¿ ¼±¾ðÀÌ Â÷ÁöÇÏ´Â Å©±â¸¦ »ý°¢Çغ¸¸é 4MÀÌ°í, µÎ¹ø° ¹è¿ ¼±¾ðÀÌ Â÷ÁöÇÏ´Â Å©±â´Â 8kÀÔ´Ï´Ù.
0xC1234567À̶ó´Â ³í¸® ÁÖ¼Ò°¡ ÁÖ¾îÁ³À» ¶§ ½ÇÁ¦·Î CPU¿¡¼ ¾î¶»°Ô ½ÇÁ¦ ¸Þ¸ð¸®¸¦ ã¾Æ°¡´ÂÁö »ìÆ캸°Ú½À´Ï´Ù.
±×¸²3. ³í¸® ÁÖ¼Ò
0xC1234567À̶ó´Â 16 Áø¼ö¸¦ 2Áø¼ö·Î Ç®¾î¼ ¾²¸é 11000001001000110100010101100111À̸ç, À̸¦ °¢°¢ 10, 10, 12 ºñÆ®¾¿ ²÷À¸¸é À§ ±×¸²°ú °°´Ù.
±×¸²2¿¡ ³ª¿Â °Íó·³ CPU¿¡´Â CR3 ·¹Áö½ºÅÍ°¡ ÀÖÀ¸¸ç, ÀÌ ·¹Áö½ºÅÍ´Â ¸Þ¸ð¸® °ü¸®¸¦ À§ÇÑ ÆäÀÌÁöÀÇ Ãâ¹ßÁö Á¤º¸¸¦ °®°í ÀÖ´Ù. µû¶ó¼ CR3 ·¹Áö½ºÅÍÀÇ °ªÀ» ÀÐ¾î¼ ÆäÀÌÁö µð·ºÅ丮°¡ ½ÃÀÛÇÏ´Â À§Ä¡¸¦ ¾Ë¾Æ³»°í, »óÀ§ 10ºñÆ® 1100 0001 00¹ø°¿¡ ÇØ´çÇÏ´Â À§Ä¡·Î µð·ºÅ丮¿¡¼ À̵¿ÇÏ´Â °ÍÀÌ´Ù. 16Áø¼ö·Î´Â 0x304À̸ç, 10Áø¼ö·Î´Â 772°¡ µÈ´Ù. 772¶ó´Â Àǹ̴ ÆäÀÌÁö µð·ºÅ丮ÀÇ 1024°³ Áß¿¡¼ 772¹ø° Ç׸ñÀ» ÀǹÌÇÑ´Ù. ½ÇÁ¦·Î´Â 773¹ø°Áö¸¸, PC¿¡¼´Â °ªÀ» 0ºÎÅÍ ¼¼¾î³ª°¡±â ¶§¹®¿¡ È¥µ¿ÇÏÁö ¾Ê°Ô 0¹ø°, 1¹ø°, 2¹ø°, ó·³ 772¹ø°¶ó°í ÇÏ°Ú´Ù. ÇÑ Ç׸ñÀÌ 4¹ÙÀÌÆ®À̹ǷΠ772 * 4 = 3088 ·Î À̵¿ÇؾßÇÑ´Ù. ¿©±â¼ ÀоîµéÀÎ °ªÀº ´Ù½Ã ÆäÀÌÁö Å×À̺íÀÇ ½ÃÀÛÁÖ¼Ò¸¦ °¡¸®Å²´Ù. ÆäÀÌÁö Å×ÀÌºí¿¡ ÀúÀåµÈ °ª 1000 1101 00 = 0x234 = 567À̹ǷÎ, 567¹ø° Ç׸ñÀ¸·Î À̵¿ÇØ¾ß ÇÑ´Ù. ¸¶Âù°¡Áö·Î °¢ Ç׸ñÀÌ 4¹ÙÀÌÆ® À̹ǷΠ567 * 4 = 2256 À§Ä¡·Î À̵¿Çؼ ¹°¸® ÇÁ·¹ÀÓÀÇ ¸Þ¸ð¸® ÁÖ¼Ò¸¦ ¾Ë¾Æ³½´Ù. ¸¶Áö¸· ¿ÀÇÁ¼ÂÀº ¿©±â¼ ¾Ë¾Æ³½ ¸Þ¸ð¸® ÁÖ¼Ò °ª¿¡ ´ëÇÑ »ó´ëÀ§Ä¡¸¦ ³ªÅ¸³»´Â °ªÀ̱⠶§¹®¿¡ °ªÀ» ´Ü¼øÈ÷ ´õÇϱ⸸ ÇÏ¸é µÈ´Ù.
2256À§Ä¡¿¡¼ ÀоîµéÀÎ °ªÀÌ 0x40000ÀÌ°í, ¿ÀÇÁ¼ÂÀÇ °ªÀÌ 1383ÀÌ¸é ½ÇÁ¦ ¸Þ¸ð¸® ÁÖ¼ÒÀÇ À§Ä¡´Â 0x41383ÀÌ µÈ´Ù.
¸®´ª½º Ä¿³ÎÀÇ ¸Þ¸ð¸® ¸ðµ¨
¸®´ª½º Ä¿³ÎÀº 64ºñÆ® ¼±Çü ÁÖ¼Ò¸¦ »ç¿ëÇÑ´Ù. Ä¿³Î¿¡¼ 64ºñÆ® ÁÖ¼Ò¸¦ »ç¿ëÇÏ´Â ÀÌÀ¯´Â Alpha CPU¿Í °°ÀÌ 64ºñÆ® ÁÖ¼Ò¸¦ »ç¿ëÇÏ´Â ½Ã½ºÅÛÀ» Áö¿øÇϱâ À§ÇؼÀÌ´Ù.
±×¸²4. ¸®´ª½º Ä¿³ÎÀÇ ¸Þ¸ð¸® ¸ðµ¨
¸®´ª¼ Ä¿³Îµµ x86 CPU¿Í ¸¶Âù°¡Áö·Î ¸Þ¸ð¸® °ü¸®ÀÇ È¿À²¼ºÀ» À§ÇØ ÆäÀÌÁö µð·ºÅ丮¸¦ ±Û·Î¹ú µð·ºÅ丮¿Í ¹Ìµé µð·ºÅ丮·Î ³ª´©¾î¼ °ü¸®ÇÑ´Ù. Áï, x86 CPU¿¡¼ 2´Ü°è ÆäÀÌ¡À» »ç¿ëÇÑ´Ù¸é Ä¿³Î¿¡¼´Â 3´Ü°è ÆäÀÌ¡À» »ç¿ëÇÏ´Â °ÍÀÌ Â÷ÀÌÁ¡ÀÌ´Ù.
±Û·Î¹ú µð·ºÅ丮´Â pgd_t, ¹Ìµé µð·ºÅ丮´Â pmd_t, ÆäÀÌÁö Å×À̺íÀº pte_t·Î ³ªÅ¸³»¸ç, ¿ÀÇÁ¼ÂÀº »ó´ëÀ§Ä¡À̱⠶§¹®¿¡ µû·Î ³ªÅ¸³¾ ÇÊ¿ä´Â ¾ø´Ù.
x86¿¡¼´Â 2´Ü°è¸¦ »ç¿ëÇÏ°í, ¸®´ª½º Ä¿³Î¿¡¼´Â 3´Ü°è¸¦ »ç¿ëÇÑ´Ù¸é Ä¿³ÎÀº x86 ȯ°æ¿¡¼´Â ¾î¶»°Ô ÇؾßÇÒ±î? x86 CPU¸¦ Áö¿øÇϱâ À§ÇØ º°µµ·Î 2´Ü°è ÆäÀÌ¡À» ¸¸µé¾î¾ß ÇÒ±î? ¶ó°í »ý°¢ÇÒ ¼ö Àִµ¥ ½ÇÁ¦·Î Ä¿³ÎÀº À§ ±¸Á¶¸¦ ±×´ë·Î À¯ÁöÇÏ¸é¼ 2´Ü°è ÆäÀÌ¡À» Áö¿øÇÏ´Â ¹æ¹ýÀ» ÅÃÇß´Ù. Áï, ¹Ìµé µð·ºÅ͸®¸¦ 1°³¸¸ »ç¿ëÇÏ´Â °ÍÀÌ´Ù. ÀÌ·¸°Ô Çϸé Ä¿³ÎÀÇ Äڵ带 Å©°Ô º¯°æÇÏÁö ¾ÊÀ¸¸é¼ 64ºñÆ® ȯ°æ°ú 32ºñÆ® ȯ°æÀ» ½±°Ô Áö¿øÇÒ ¼ö ÀÖ´Ù.
°¢ ½Ã½ºÅÛ¸¶´Ù ¸Þ¸ð¸® °ü¸®¸¦ À§ÇØ »ç¿ëÇÏ´Â ºñÆ®¼ö´Â ´Ù¸£±â ¶§¹®¿¡ À§ ±×¸²¿¡¼ ¸î ºñÆ®¾¿ »ç¿ëÇÏ´ÂÁö ¸í½ÃÇÏÁö ¾Ê¾Ò´Ù. ¹°·Ð, ƯÁ¤ Ç÷§Æû¸¶´ÙÀÇ ºñÆ®¼ö¸¦ Àû´Â´Ù¸é ÀûÀ» ¼ö ÀÖÁö¸¸ ¿©±â¼´Â ±×·¸°Ô ÇÏÁö ¾Ê¾Ò´Ù.
x86 CPU¿Í Ä¿³Î¿¡¼ ¸Þ¸ð¸®¸¦ ã´Â ¹æ¹ýÀ» º¸¸é ¸ÕÀú CR3 ·¹Áö½ºÅÍ¿¡¼ ±Û·Î¹ú µð·ºÅ͸®ÀÇ ½ÃÀÛ ÁÖ¼Ò¸¦ ¾Ë¾Æ³»°í, ±Û·Î¹ú µð·ºÅ丮¿¡¼ ¸î¹ø° À§Ä¡ÀÎÁö ¾Ë¾Æ³½´Ù°í Çß´Ù. ¿©±â¿¡ ¾²ÀÌ´Â ÇÔ¼ö°¡ pgd_offset()ÀÌ´Ù. ¸¶Âù°¡Áö·Î ¹Ìµé µð·ºÅ丮¿¡¼ÀÇ À§Ä¡¸¦ ¾Ë¾Æ³»´Â °ÍÀº pmd_offset, ÆäÀÌÁö Å×ÀÌºí¿¡¼ÀÇ À§Ä¡¸¦ ¾Ë¾Æ³»´Â °ÍÀº pte_offsetÀÌ´Ù. pgd_offset, pmd_offset, pte_offsetÀº ¸ðµÎ 2°³ÀÇ ÀÎÀÚ¸¦ °®´Â´Ù.
pgd_offset(mm, address)Àε¥ mmÀº ¸Þ¸ð¸® °ü¸®¸¦ À§ÇÑ ±¸Á¶·Î °¢ ÇÁ·Î¼¼½º¸¶´Ù 1°³¾¿ °®°í ÀÖ´Ù. Áï, ÆäÀÌÁö ±Û·Î¹ú µð·ºÅ丮ÀÇ ½ÃÀÛ À§Ä¡°¡ µÇ¸ç, address´Â ÆäÀÌÁö ±Û·Î¹ú µð·ºÅ͸®¿¡¼ ¸î ¹ø° À§Ä¡¶ó´Â °ÍÀ» ³ªÅ¸³½´Ù. ¸¶Âù°¡Áö·Î pmd_offsetÀÇ Ã¹¹ø° ÀÎÀÚ´Â ÆäÀÌÁö ¹Ìµé µð·ºÅ丮ÀÇ ½ÃÀÛÀ§Ä¡¸¦, µÎ¹ø° ÀÎÀÚ´Â ÆäÀÌÁö ¹Ìµéµð·ºÅ丮ÀÇ ¸î¹ø° ÆäÀÌÁö¸¦ ÀÎÀÚ·Î ¹Þ´Â´Ù. pte_offsetµµ µ¿ÀÏÇÏ´Ù. Redhat 9¿¡ Æ÷ÇÔµÈ Ä¿³Î 2.4.20-8 ¹öÀü¿¡¼´Â pte_offset ´ë½Å¿¡ pte_offset_kernelÀ» »ç¿ëÇÏ¸é µÈ´Ù. »óÀ§ ¹öÀüÀÇ Ä¿³Î¿¡¼´Â pte_offsetÀ¸·Î ÀÌ¿ëÇÒ ¼ö ÀÖ´Ù.
À̵é ÇÔ¼ö(Á¤È®È÷´Â ¸ÅÅ©·Î)¸¦ ÀÌ¿ëÇϸé ÇÁ·Î¼¼½º°¡ ½ÇÁ¦·Î ÀÌ¿ëÇÏ°í ÀÖ´Â ¹°¸® ¸Þ¸ð¸®¸¦ ¾Ë¾Æ³¾ ¼ö ÀÖ´Ù. ÀÌµé ¸ÅÅ©·Î´Â arch/asm-i386/pgtable.h, pgtable-3level.h¿¡¼ ã¾Æº¼ ¼ö ÀÖ´Ù. Âü°í·Î ½ÇÁ¦·Î Á¸ÀçÇÏÁö ¾Ê´Â ÆäÀÌÁö ±Û·Î¹ú µð·ºÅ丮, ¹Ìµé µð·ºÅ丮 µîÀ» ¾×¼¼½ºÇÏ·ÁÇϸé Áß´ëÇÑ Ä¿³Î ¿À·ù°¡ ¹ß»ýÇÒ ¼ö ÀÖ´Ù. µû¶ó¼, ÆäÀÌÁö¸¦ ¾×¼¼½ºÇϱâ Àü¿¡ °¢°¢ pgd_present, pmd_present, pte_present¸¦ »ç¿ëÇؼ ½ÇÁ¦ ÆäÀÌÁö°¡ ÀÖ´ÂÁö È®ÀÎÇÏ°í »ç¿ëÇØ¾ß ÇÑ´Ù.
ÇÁ·Î¼¼½º¿¡¼ ¹Ù¶óº» ¸Þ¸ð¸®
ÇÁ·Î¼¼½º¸¶´Ù 4GÀÇ °¡»ó °ø°£À» »ç¿ëÇÑ´Ù°í ¾ê±âÇß´Ù. ±×¸®°í, ÇÁ·Î¼¼½º¸¶´Ù ¸Þ¸ð¸® °ü¸®¸¦ Çϱâ À§ÇØ ÆäÀÌÁö ±Û·Î¹ú µð·ºÅ丮, ÆäÀÌÁö Å×À̺í°ú °°Àº ±¸Á¶¸¦ °®°í ÀÖ´Ù°í Çß´Ù. ÇÁ·Î¼¼½º¸¦ ³ªÅ¸³»´Â ±¸Á¶Ã¼´Â task_structÀ̸ç, ¿©±â¿¡´Â ¸Þ¸ð¸® ±¸Á¶¸¦ ³ªÅ¸³»´Â mm_struct mmÀÌ ÀÖ´Ù. mmÀº ¸Þ¸ð¸® °ü¸®¸¦ À§ÇÑ ±¸Á¶Ã¼À̸ç, pgd_t* pgd´Â ÆäÀÌÁö ±Û·Î¹ú µð·ºÅ丮ÀÇ ½ÃÀÛ À§Ä¡¸¦ °¡¸®Å²´Ù. Áï, pgd°¡ °¡¸®Å°´Â °ª°ú CR3 ·¹Áö½ºÅÍ°¡ °¡¸®Å°´Â °ªÀÌ °°´Ù. ±× ÀÌÈĺÎÅÍ´Â ¾Õ¿¡¼ ¼³¸íÇÑ °Íó·³ °¢ ÆäÀÌÁöº°·Î ÁÖ¼Ò¸¦ ã¾Æ¼ ½ÇÁ¦ ¸Þ¸ð¸®»óÀÇ ÇÁ·¹ÀÓÀ» ã¾Æ°£´Ù.
±×¸²5. ÇÁ·Î¼¼½º¿¡¼ ¹Ù¶óº» ¸Þ¸ð¸®
À̸¦ ÀÚ¼¼ÇÏ°Ô Ç¥ÇöÇÏ¸é ±×¸²6°ú °°½À´Ï´Ù. °¢°¢ÀÇ ÇÁ·Î¼¼½º´Â task_struct ±¸Á¶Ã¼·Î Ç¥ÇöµÇ¸ç, À̸¦ °£´ÜÈ÷ PCB(Process Context Block, ÄÁÅؽºÆ® ¹®¸Æ)À̶ó°í À̾߱âÇÑ´Ù. Ä¿³Î¿¡´Â ÇÁ·Î¼¼½º ID·Î ÇØ´ç PCB¸¦ ã¾Æ³»´Â ÇÔ¼ö°¡ Àִµ¥ ÀÌ ÇÔ¼ö°¡ find_task_by_pid(pid)ÀÌ´Ù. ÀÌ ÇÔ¼ö´Â ÇÁ·Î¼¼½º ID, PID¸¦ ÀÎÀÚ·Î ³Ñ°Ü ¹ÞÀ¸¸é task_struct¿¡ ´ëÇÑ °ÍÀ» ¹ÝȯÇØÁØ´Ù.
¹°·Ð, ÇöÀç ÇÁ·Î¼¼½º´Â current·Î Á¢±ÙÇÒ ¼ö ÀÖÁö¸¸, ´Ù¸¥ ÇÁ·Î¼¼½º¿¡ ´ëÇÑ task_struct¸¦ ¾ò¾î¿À·Á¸é find_task_by_pid¸¦ »ç¿ëÇØ¾ß ÇÑ´Ù. task_struct¿¡´Â mmÀÌ ÀÖ°í, ÀÌ mmÀÌ mm_sturct ÀڷᱸÁ¶¸¦ °¡¸®Å²´Ù.
±×¸²1À» »ý°¢Çغ¸¸é ÇÁ·Î¼¼½º´Â ¿¬¼ÓÀûÀÎ °¡»ó ¸Þ¸ð¸®¸¦ ÇÒ´ç ¹Þ´Â °Íµµ ¾Æ´Ï¶ó ¿©·¯ °³ÀÇ °¡»ó ¸Þ¸ð¸® ºí·ÏÀ» ÇÒ´ç¹Þ´Â´Ù. Áï, ¿¬¼ÓÀûÀ¸·Î ÇÒ´ç ¹ÞÀ» ¼öµµ ÀÖ°í, µû·Îµû·Î ÇÒ´ç ¹ÞÀ» ¼öµµ ÀÖ´Ù´Â ¾ê±â´Ù. À̸¦ À§Çؼ mm_struct¿¡ º¸¸é °¢°¢ÀÇ °¡»ó ¸Þ¸ð¸® ºí·ÏÀ» °ü¸®ÇÏ´Â vm_area_struct ±¸Á¶Ã¼°¡ ÀÖ´Ù. ±×¸®°í vm_area_struct¿¡´Â °¢°¢ vm_start¿Í vm_end°¡ Àִµ¥ ÀÌ´Â °¡»ó ¸Þ¸ð¸® °ø°£¿¡¼ÀÇ ½ÃÀÛ À§Ä¡¿Í ¸¶Áö¸· À§Ä¡¸¦ °¡¸®Å²´Ù. ¶ÇÇÑ vm_area_sturct* vm_next´Â ÀڽŰú °°Àº ÇüÅÂÀÇ ±¸Á¶Ã¼¸¦ ´Ù½Ã °¡¸®Å°°í Àִµ¥, ÀÌ´Â ´Ù¸¥ °¡»ó ¸Þ¸ð¸® ºí·ÏÀ» °¡¸®Å²´Ù. Áï, ´ÜÀÏ ¿¬°á ¸®½ºÆ®(Singly Linked List)·Î ¿¬°áµÇ¾î ÀÖ´Ù. vm_next¸¦ µû¶ó ÇÁ·Î¼¼½º°¡ »ç¿ëÇÏ´Â Àüü °¡»ó ¸Þ¸ð¸® °ø°£À» ¾Ë¾Æ³¾ ¼ö ÀÖ´Ù. ¸¸¾à, vm_next°¡ NULLÀÎÁö ¾Æ´ÑÁö¸¦ ¾Ë¾Æ³»¸é °¡»ó ¸Þ¸ð¸® ºí·ÏÀÇ ³¡À» ¾Ë¾Æ³¾ ¼ö ÀÖ´Ù.
<img src="http://pds2.egloos.com/pds/1/200609/06/08/d0029308_1153222.jpg" alt="" width="568" height="450" /> ±×¸²6. ÇÁ·Î¼¼½º¿¡¼ ¹Ù¶óº» ¸Þ¸ð¸® °ü¸®
¸¶Áö¸·À¸·Î task_struct¿¡´Â mm_struct·Î ¼±¾ðµÈ º¯¼ö°¡ µÎ °¡Áö°¡ ÀÖ´Ù. Çϳª´Â mmÀÌ°í, ´Ù¸¥ Çϳª´Â active_mmÀÌ´Ù. mmÀº ÇÁ·Î¼¼½º°¡ »ç¿ëÇÏ´Â ¸Þ¸ð¸® °ø°£À» ³ªÅ¸³»°í, active_mmÀº CPU¿¡ ÀÇÇØ ÇöÀç Á¦¾îÁßÀÎ ÁÖ¼Ò°ø°£À» °¡¸®Å²´Ù. ÇÁ·Î¼¼½º A¿¡°Ô ÀÖ¾î¼ mm°ú active_mmÀº °°´Ù. Áï, A->mm == A->active_mmÀÌ´Ù. ±×·¯³ª, Ä¿³Î ½º·¹µå¿¡¼´Â mmÀº NULLÀ̸ç, Ä¿³Î ½º·¹µå°¡ »ç¿ëÁßÀÎ ¸Þ¸ð¸®´Â active_mmÀ¸·Î Ç¥ÇöµÈ´Ù.
Linux Ä¿³ÎÀÇ ¾Æ¹öÁöÀÎ Linus´Â ¸Þ¸ð¸® °ø°£À» ½ÇÁÖ¼Ò°ø°£(Real Address Spaces)°ú À͸íÁÖ¼Ò°ø°£(Anonymous Address Spaces)·Î ³ª´«´Ù. »ç¿ëÀÚ ÇÁ·Î¼¼½º°¡ »ç¿ëÇÏ´Â ÁÖ¼Ò °ø°£À» ½ÇÁÖ¼Ò°ø°£¾Æ¸®ÇÏ°í, Ä¿³Î ½º·¹µå°¡ »ç¿ëÇÏ´Â °ø°£À» À͸íÁÖ¼Ò°ø°£À̶ó ÇÏ´Â °ÍÀÌ´Ù.
¸ðµç Ä¿³Î ½º·¹µå´Â À͸íÁÖ¼Ò°ø°£À» »ç¿ëÇϸç, »ç¿ëÀÚ ÇÁ·Î¼¼½º°¡ »ç¿ëÇÏ´Â ½ÇÁÖ¼Ò°ø°£¿¡ ´ëÇؼ´Â °ü¿©ÇÏÁö ¾Ê´Â´Ù.
foo¶ó´Â ÇÁ·Î¼¼½º A¸¦ ½ÇÇàÇÑ´Ù°í ÇÏÀÚ. ÀÌ °æ¿ì A->mm == A->active_mm = fooÀÏ °ÍÀÌ´Ù. À̶§ Ä¿³Î ½º·¹µå B¿¡ ÀÇÇØ ¼±Á¡´çÇÑ °æ¿ì B->mm = NULLÀÌÁö¸¸, A->active_mm = foo¸¦ ¿©ÀüÈ÷ °¡¸®Å°°Ô µÈ´Ù. Áï, Ä¿³Î ½º·¹µå´Â ½ÇÁÖ¼Ò°ø°£À» ½Å°æ¾²Áö ¾ÊÁö¸¸, ÀÛ¾÷ A°¡ ´Ù½Ã ·ÎµåµÇ¾úÀ» ¶§ mmÀ» ´Ù½Ã ·ÎµåÇÏÁö ¾Ê±â À§ÇØ active_mmÀ» »ç¿ëÇÏ´Â °ÍÀÌ´Ù.
½º¿Ò
½ÇÁ¦ ¸Þ¸ð¸® »ç¿ë·®º¸´Ù ´õ Å« ¸Þ¸ð¸®°¡ ÇÊ¿äÇÑ ÇÁ·Î±×·¥À» ½ÇÇàÇÒ ¼ö ÀÖ´Â °ÍÀº °¡»ó ¸Þ¸ð¸® ´öºÐÀÌ´Ù. ¾Õ¿¡¼´Â °¡»ó ¸Þ¸ð¸®¿¡ ´ëÇؼ »ìÆ캸¾Ò´Âµ¥, »ç¿ëÁßÀÌÁö ¾ÊÀº ºÎºÐÀº ½º¿ÒÀ¸·Î ÀúÀåÇؼ ¸Þ¸ð¸®¿¡ ¿©À¯°ø°£À» È®º¸ÇÏ´Â °ÍÀÌ ½º¿ÒÀÇ ¿ªÇÒÀÌ´Ù.
¾ÕÀÇ ±×¸²5¿¡¼ »ìÆ캻 °Íó·³ ½º¿ÒÀ» ÇÑ´Ù´Â °ÍÀº ½ÇÁ¦ ¸Þ¸ð¸®ÀÇ ÇÁ·¹ÀÓÀ» µð½ºÅ©·Î ÀúÀåÇÏ´Â °ÍÀ» ÀǹÌÇÑ´Ù. ½ÇÁ¦ ¸Þ¸ð¸® ÇÁ·¹ÀÓÀ» ã±â À§Çؼ´Â ÆäÀÌÁö Å×À̺íÀÇ À§Ä¡¸¦ ¾Ë¾Æ¾ßÇÏ°í, ÆäÀÌÁö Å×À̺íÀÇ À§Ä¡¸¦ ¾Ë±â À§Çؼ´Â ÆäÀÌÁö ¹Ìµé µð·ºÅ丮ÀÇ À§Ä¡¸¦ ¾Ë¾Æ¾ßÇÑ´Ù. ¸¶Âù°¡Áö·Î, ÆäÀÌÁö ¹Ìµé µð·ºÅ丮ÀÇ À§Ä¡¸¦ ¾Ë±â À§Çؼ´Â ÆäÀÌÁö ±Û·Î¹ú µð·ºÅ丮ÀÇ À§Ä¡¸¦ ¾Ë¾Æ¾ß ÇÑ´Ù. À̵é ÇÁ·Î¼¼½º´Â °¡»ó ¸Þ¸ð¸®·Î °ü¸®µÇ°í ÀÖÀ¸´Ï °¡»ó ¸Þ¸ð¸® ±¸Á¶¸¦ ã¾ÆºÁ¾ßÇÏ°í, ´Ù½Ã ½ÇÁ¦ ¸Þ¸ð¸® °ø°£µµ ã¾ÆºÁ¾ß ÇÑ´Ù. Áï, swap_out ÇÔ¼ö´Â ÀÌ·¯ÇÑ ¼ø¼µéÀ» ã¾Æ°¡¸ç ½ÇÁ¦ ¸Þ¸ð¸® ÇÁ·¹ÀÓÀ» ã¾Æ°¡´Â ¿ªÇÒÀ» ÇÏ°í, ¸Þ¸ð¸® ÇÁ·¹ÀÓÀ» µð½ºÅ©¿¡ ÀúÀåÇÏ´Â °ÍÀº try_to_swap_out ÇÔ¼öÀÇ ¿ªÇÒÀÌ´Ù.
<img src="http://pds2.egloos.com/pds/1/200609/06/08/d0029308_1155336.jpg" alt="" width="486" height="506" /> ±×¸²7. ½º¿ÒÀÇ È帧
kswapd ÇÔ¼ö´Â daemonize ÇÔ¼ö¸¦ È£ÃâÇؼ ÀÚ½ÅÀ» µ¥¸óÀ¸·Î µî·Ï½ÃÅ°°í, ¹«ÇÑ ·çÇÁ¸¦ µ¹¸é¼ kwapd_can_sleep ÇÔ¼ö¸¦ È£ÃâÇÑ´Ù. ÀÌ ÇÔ¼ö´Â Áö±Ý ½º¿Ò ÀÛ¾÷À» Çصµ µÇ´ÂÁö ¾Æ´ÑÁö¸¦ ÆǺ°Çϸç, À̸¦ ÆǺ°Çϱâ À§Çؼ´Â ´Ù½Ã kswapd_can_sleep_pgdat¸¦ È£ÃâÇؼ ÆäÀÌÁö ±Û·Î¹ú µð·ºÅ丮¿¡¼ ½º¿ÒÀÌ ÇÊ¿äÇÑ ÆäÀÌÁö°¡ ÀÖ´ÂÁö ¾ø´ÂÁö¸¦ ÆǺ°ÇÑ´Ù. ½º¿ÒÀÌ ÇÊ¿äÇÑ ÆäÀÌÁö°¡ Çϳª¶óµµ ÀÖÀ¸¸é kswapd_balance¸¦ È£ÃâÇÑ´Ù. kwapd_balance´Â ¸Þ¸ð¸®ÀÇ ±ÕÇüÀ» ¸ÂÃçÁØ´Ù. ¸¶Âù°¡Áö·Î ÀÌ ÇÔ¼öµµ kswapd_balance_pgdat¸¦ È£ÃâÇÏ¿© ÆäÀÌÁö ±Û·Î¹ú µð·ºÅ丮¸¦ È®ÀÎÇÑ´Ù. try_to_free_pages ÇÔ¼ö¿¡¼ try_to_free_pages_zoneÀ» È£ÃâÇؼ »ç¿ëÇÒ ¼ö ÀÖ´Â ÆäÀÌÁö ¿µ¿ªÀ» ã¾Æº¸°í, »ç¿ëÇÒ ¼ö ÀÖ´Â ÆäÀÌÁö°¡ ºÎÁ·ÇÑ °æ¿ì¿¡´Â ÇÊ¿äÇÑ ÆäÀÌÁö¸¦ È®º¸Çϱâ À§ÇØ shrink_caches¸¦ È£ÃâÇÑ´Ù. shrink_caches´Â ij½ÃµéÀ» µ¹¾Æ´Ù´Ï¸ç ºñ¿ï ¼ö Àִ ij½ÃÀÎÁö ÆǺ°Çϱâ À§ÇØ shrink_cache ÇÔ¼ö¸¦ »ç¿ëÇÑ´Ù.
ÀüüÀûÀÎ È帧Àº ÀÌ·¸°Ô µÇ¾î ÀÖÀ¸¸ç, °¢ ÇÁ·Î¼¼½º¿¡¼ »ç¿ëÁßÀÎ ½º¿Ò °ø°£Àº task_structÀÇ swap_address·Î ¾Ë ¼ö ÀÖ´Ù.
½º¿Ò Á¤Ã¥
Ä¿³ÎÀÇ ½º¿Ò Á¤Ã¥¿¡¼ »ç¿ëÇÒ ¼ö ÀÖ´Â ¹æ¹ýÀº ¿©·¯°¡Áö°¡ ÀÖÁö¸¸, ¸®´ª½º Ä¿³Î¿¡¼´Â LRU(Least Recently Used) Á¤Ã¥À» »ç¿ëÇÑ´Ù°í ¾Ë·ÁÁ® ÀÖ´Ù. LRU´Â °¡Àå Àû°Ô »ç¿ëµÈ ÆäÀÌÁö¸¦ ½º¿ÒÀ¸·Î ´ëü½ÃÅ°´Â °ÍÀÌ´Ù.
¸Þ¸ð¸® ÆäÀÌÁö¸¦ LRU Á¤Ã¥¿¡ µû¶ó ½º¿Ò½ÃÅ°·Á¸é ÇØ´ç ¸Þ¸ð¸® ÆäÀÌÁö°¡ ¾×¼¼½º µÈ ÀûÀÌ ÀÖ´ÂÁö ¾Ë¾Æ³¾ ¼ö ÀÖ´Â ¹æ¹ýÀÌ ÀÖ¾î¾ß ÇÑ´Ù. °¢ ÆäÀÌÁö°¡ ¾×¼¼½º µÈ ½Ã°£À» ±â·ÏÇؼ, ¡®¾Æ, ÀÌ ÆäÀÌÁö´Â 1½Ã°£ Àü¿¡ ¾×¼¼½ºÇß°í, ÀÌ ÆäÀÌÁö´Â 5ºÐÀü¿¡ ¾×¼¼½ºÇ߳ס¯¶ó´Â »ç½ÇÀ» ÀÌ¿ëÇÒ ¼öµµ ÀÖÀ» °ÍÀÌ´Ù. ´Ü, ÀÌ·¸°Ô ÇÑ´Ù¸é ¾×¼¼½º µÉ ¶§¸¶´Ù ½Ã°£À» ±â·ÏÇÏ°í, °¢ ÆäÀÌÁöÀÇ ½Ã°£À» ±â·ÏÇÏ°í À¯ÁöÇÏ´Â °Í¸¸À¸·Îµµ ±²ÀåÈ÷ ³ôÀº ÀÛ¾÷ºÎÇÏ°¡ °É¸± °ÍÀ̶ó°í ¿¹»óÇÒ ¼ö ÀÖÀ» °ÍÀÌ´Ù. ÀÌ·± ½º¿Ò Á¤Ã¥Àº OS°¡ ´Üµ¶À¸·Î Çϱ⿣ ¾î·Á¿î ºÎºÐÀÌ´Ù. CPU¿¡¼´Â À̸¦ À§ÇØ ¾×¼¼½º ºñÆ®(Access Bit)¸¦ Á¦°øÇÑ´Ù. ÀÌ ºñÆ®´Â ÀÌ ÆäÀÌÁö°¡ Á¢±ÙµÈ ÀûÀÌ ¾øÀ¸¸é 0, ÀÖÀ¸¸é 1·Î ¼³Á¤µÈ´Ù. ±×¸²8¿¡¼ A°¡ ¾×¼¼½º ºñÆ®¸¦ ³ªÅ¸³½´Ù. ¾×¼¼½º ºñÆ®´Â ÆäÀÌÁö¿¡ Á¢±ÙÇÒ ¶§ CPU¿¡¼ ÀÚµ¿À¸·Î 1·Î ¼³Á¤ÇÏÁö¸¸, CPU°¡ À̸¦ ´Ù½Ã 0À¸·Î ¼³Á¤ÇÒ ¼ö´Â ¾ø´Ù. 0À¸·Î ¼³Á¤ÇÒ ¼ö ÀÖ´Â °ÍÀº ¿ÀÁ÷ Ä¿³Î »ÓÀÌ´Ù.
<img src="http://pds2.egloos.com/pds/1/200609/06/08/d0029308_1161024.jpg" alt="" width="561" height="194" /> ±×¸²8. ÆäÀÌÁö ¿£Æ®¸®
U/S´Â »ç¿ëÀÚ ÇÁ·Î¼¼½º°¡ Á¢±ÙÇÒ ¼ö ÀÖÀ¸¸é 1ÀÌ°í, Ä¿³Î¸¸ Á¢±ÙÇÒ ¼ö ÀÖÀ¸¸é 0À¸·Î ¼³Á¤µÈ´Ù. R/W´Â 0À̸é Àб⸸ °¡´ÉÇÏ°í, 1À̸é Àбâ/¾²±â°¡ ¸ðµÎ °¡´ÉÇÏ´Ù. P´Â Present Bit¶ó´Â °ÍÀ¸·Î ÆäÀÌÁö°¡ ¸Þ¸ð¸®»ó¿¡ Á¸ÀçÇÏ´ÂÁö¸¦ ³ªÅ¸³½´Ù. Áï, ÆäÀÌÁö°¡ µð½ºÅ©·Î ½º¿Ò µÇ¾úÀ¸¸é 0ÀÌ µÈ´Ù. ÇÁ·Î¼¼½º°¡ ÀÌ ÆäÀÌÁö¸¦ Á¢±ÙÇÏ·ÁÇϸé P ºñÆ®°¡ 0À̱⠶§¹®¿¡ ÆäÀÌÁö ÆúÆ® ÀÎÅÍ·´Æ® #14°¡ ¹ß»ýÇÏ°í, µð½ºÅ©¿¡¼ ´Ù½Ã ¸Þ¸ð¸®·Î ÀÌ ÆäÀÌÁö¸¦ ÀоîµéÀÌ°í, P ºñÆ®¸¦ 1·Î ¼³Á¤ÇÏ°Ô µÈ´Ù.
¸Þ¸ð¸® °ü¸®¿Í °ü·ÃµÈ ºÎºÐÀº OS°¡ µ¶´ÜÀ¸·Î °áÁ¤ÇÒ ¼ö ÀÖ´Â °ÍÀÌ ¾Æ´Ï¸ç, CPU¿Í OS°¡ ¼·Î Á¶È¸¦ ÀÌ·ç¾î°¡¸ç °ü¸®ÇÏ´Â ºÎºÐÀÌ´Ù.
ÄÚµå·Î º¸´Â ¸®´ª½º
8086 ½Ã½ºÅÛÀº °ú°Å¿¡ 20°³ÀÇ ¾îµå·¹½º ÇÉÀ» °¡Áø 16ºñÆ® ½Ã½ºÅÛÀ̾ú´Ù. Áï, 2^20 = 1M±îÁö »ç¿ëÇÒ ¼ö ÀÖ´Â ½Ã½ºÅÛÀ̾ú´Ù. ÀÌ Àǹ̴ 1M ÀÌ»óÀÇ ¸Þ¸ð¸®¸¦ »ç¿ëÇÒ ¼ö ¾ø´Ù´Â °ÍÀÌ´Ù. 1M + 1¹ø°¸¦ Á¢±ÙÇÏ·Á Çϸé 1¹ø°·Î Á¢±ÙÇÏ°Ô µÈ´Ù. ÀÌ´Â ¸¶Ä¡ ÇÁ·Î±×·¡¹Ö ¾ð¾î¿¡¼ ¸¸³ª´Â Á¤¼ö ¿À¹öÇ÷οì¿Í °°´Ù. 1M + 1 = 1·Î ¸¸µé·Á¸é ¾î¶»°Ô ÇÏ¸é µÉ±î? 2^20Àº 16Áø¼ö·Î 0x100000ÀÌ°í, 2Áø¼ö·Î´Â 100000000000000000000ÀÌ´Ù. 1M¸¦ ³Ñ¾î°¡´Â ºñÆ®°¡ °ø±³·Ó°Ôµµ °¡Àå ¸Ç ¾ÕÀÇ ºñÆ®ÀÌ´Ù. Áï, ¸Ç ¾ÕÀÇ 1À» 0À¸·Î ¸¸µé¾î Áֱ⸸ ÇÏ¸é µÈ´Ù. 11111111111111111111 + 1À» Çϸé 100000000000000000000ÀÌ µÇ¾î¾ß Çϴµ¥ 20¹ø° ºñÆ®¸¦ 0À¸·Î ¸¸µé¸é °á°ú °ªÀº 0ÀÌ µÈ´Ù. +2¸¦ ÇÏ¸é °á°ú°ªÀº 1ÀÌ µÉ °ÍÀÌ´Ù.
À̸¦ À§ÇØ 8086 ½Ã½ºÅÛ¿¡¼´Â 20¹ø° ÇÉÀ» Å°º¸µå ÀÎÅÍ·´Æ® Çڵ鷯ÀÎ 8042¿Í AND °ÔÀÌÆ®·Î ¿¬°áÇØ ³õ¾Ò´Ù. 20¹ø° ÇÉÀÌ ÄÑÁöÁö ¾ÊÀ¸¸é »ç¿ëÀÚ´Â Ç×»ó Àú ÁÖ¼Ò¸¦ ÀÌ¿ëÇÒ ¼ö ¾ø´Ù.
ÆæƼ¾ö 4¿¡¼ DOS¿ë ÀÀ¿ë ÇÁ·Î±×·¥À» ½ÇÇàÇÒ ¼ö ÀÖ´Ù´Â Àǹ̴ ÇÏÀ§ ȣȯ¼ºÀÌ ÁÁ´Ù´Â ÀǹÌÀ̱⵵ ÇÏÁö¸¸, À§¿Í °°Àº ´ÜÁ¡µµ °í½º¶õÈ÷ ¹°·Á¹Þ¾Ò´Ù´Â Àǹ̰¡ µÈ´Ù.
¿äÁò°ú °°ÀÌ 512M ·¥À» »ç¿ëÇϴµ¥, Àú°É ¾Ë¾Æ¼ ¹¹ÇØ¿ä? ¶ó°í µÇ¹°À»¼öµµ ÀÖ´Ù. ±×·¯³ª A20À» ÄÑÁÖÁö ¾ÊÀ¸¸é 20¹ø° ºñÆ®°¡ Ç×»ó 0ÀÌ µÇ±â ¶§¹®¿¡ 1M = 0ÀÌ µÇ°í, 3M = 0ÀÌ µÈ´Ù. Áï, 1M¿¡ ÇØ´çÇÏ´Â ¸Þ¸ð¸® ÁÖ¼Ò¸¦ CPU°¡ ¾×¼¼½ºÇÏ·ÁÇϸé 0¹ø°¸¦ °¡¸®Å°°Ô µÈ´Ù. »ç¿ëÀÚ´Â 1, 3, 5, 7¡¦°ú °°ÀÌ È¦¼ö¹ø° ¸Þ¸ð¸®¸¦ ÀüÇô »ç¿ëÇÒ ¼ö ¾ø°Ô µÈ´Ù. ±×·¸°Ô ¶§¹®¿¡ ºÎÆà °úÁ¤¿¡¼ CPU°¡ ¸®¾ó ¸ðµå¿¡¼ º¸È£ ¸ðµå·Î ³Ñ¾î°¡±âÀü¿¡ ¹Ýµå½Ã A20 °ÔÀÌÆ®¸¦ ÄѾßÇÑ´Ù.
<img src="http://pds2.egloos.com/pds/1/200609/06/08/d0029308_1162915.jpg" alt="" width="462" height="380" />
¸®´ª½º Ä¿³ÎÀÇ ¼Ò½º Äڵ带 º¸¸é ±×·± ºÎºÐÀÌ ÀÖ´Ù. movb $0xDF, %alÀÌ ÀÖ°í, ¿·¿¡´Â ÁÖ¼®À¸·Î A20 °ÔÀÌÆ®¸¦ ÄÒ´Ù°í µÇ¾î ÀÖ´Ù. ÀÌ ºÎºÐÀÇ °ªÀº ¸ô¶óµµ µÈ´Ù. Àú°ÍÀº CPU ¸Å´º¾ó¿¡ Àִ ƯÁ¤ÇÑ ¸í·É¾îÀÎ °ÍÀÌ´Ù.
<img src="http://pds2.egloos.com/pds/1/200609/06/08/d0029308_1164781.jpg" alt="" width="499" height="155" />
¿©±â¼´Â lgdt gdt_48À» º¼ ¼ö ÀÖ´Ù. lgdt ¸í·É¾î´Â Àüü Ä¿³Î ¼Ò½º¿¡¼ ´Ü Çѹø¸¸ »ç¿ëµÈ´Ù. CPU´Â ¸®¾ó ¸ðµå¿¡¼ º¸È£ ¸ðµå·Î ³Ñ¾î°¡±âÀü¿¡ ±Û·Î¹ú µð½ºÅ©¸³ÅÍ(Global Descriptor)¸¦ ÀÛ¼ºÇØ¾ß ÇÑ´Ù. Áï, 4G¿¡ ÇØ´çÇÏ´Â ¸Þ¸ð¸®¸¦ ¾î¶»°Ô »ç¿ëÇϰڴ°¡¸¦ ¼³°èÇÏ´Â ¸í¼¼¼¿Í °°Àº ¿ªÇÒÀ» ÇÑ´Ù. ÄÚµå ¼¼±×¸ÕÆ® µð½ºÅ©¸³ÅÍ, µ¥ÀÌÅÍ ¼¼±×¸ÕÆ® µð½ºÅ©¸³ÅÍ, ºñµð¿À ¼¼±×¸ÕÆ® µð½ºÅ©¸³Å͵îÀ» ÁöÁ¤ÇÒ ¼ö ÀÖ´Ù. gdt_48Àº ¸í·É¾î°¡ ¾Æ´Ï¶ó ÀÌ·¯ÇÑ µð½ºÅ©¸³Å͸¦ Àû¾î³õÀº °÷À¸·Î C¾ð¾îÀÇ struct¿Í °°Àº °ÍÀÌ´Ù.
¸®¾ó ¸ðµå¿¡¼ º¸È£ ¸ðµå·Î ³Ñ¾î°¡´Â ¼ø¼´Â 1. µð½ºÅ©¸³Å͸¦ Á¤ÀÇÇÑ´Ù. 2. lgdt ¸í·É¾î·Î µð½ºÅ©¸³Å͸¦ ·ÎµåÇÏ°í º¸È£¸ðµå·Î ÀüȯÇÑ´Ù. ÀÌ´Ù.
CPU¿¡´Â ¸í·É¾î¸¦ ½ÇÇàÇÏ´Â ºÎºÐÀÌ 3°¡Áö·Î ³ª´©¾îÁ® ÀÖ´Ù. ù¹ø°´Â ¸í·É¾î¸¦ ÀоîµéÀÌ´Â ºÎºÐ, µÎ¹ø°´Â ¸í·É¾î¸¦ Çؼ®ÇÏ´Â ºÎºÐ, ¼¼¹ø°´Â ¸í·É¾î¸¦ ½ÇÇàÇÏ´Â ºÎºÐÀÌ´Ù.
Áï, lgdt ¸í·É¾î¸¦ ½ÇÇàÇÏ°Ô µÇ´Â ¼ø°£¿¡ Àбâ À¯´Ö, Çؼ® À¯´Ö¿¡ ÀÌ¹Ì 2°³ÀÇ ¸í·É¾î°¡ µé¾î°¡ ÀÖ´Ù. º¸È£¸ðµå·Î ÀüȯµÈ ´ÙÀ½¿¡ ¸®¾ó ¸ðµå¿¡¼ µé¾î°¡ ÀÖ´ø ¸í·É¾î°¡ ½ÇÇàµÇ¸é ¾ÈµÇ´Ï±î ÃÖ¼ÒÇÑ Àбâ, Çؼ® À¯´ÖÀÇ ¸í·ÉÀ» ¹«½ÃÇϱâ À§ÇØ µÎ ½ºÅÜÀ» ½¬¾îÁÙ ÇÊ¿ä°¡ ÀÖ´Ù. µû¶ó¼, lgdt ¸í·É¾î¸¦ ½ÇÇàÇÑ ´ÙÀ½¿¡ ¾î¼Àºí¸®·Î nop(No Operation: ¾Æ¹«Àϵµ ÇÏÁö¸¶!)¸¦ 2¹ø ½ÇÇàÇØÁÖ´Â °ÍÀÌ °ü·Ê´Ù. ±×·±µ¥, Ä¿³Î ¼Ò½º¿¡¼± nop ´ë½Å¿¡ call delay¸¦ »ç¿ëÇÏ´Â °Í °°´Ù°í ³ª¸§´ë·Î ÃßÃøÇÒ ¼ö ÀÖ¾ú´Ù. nop ¸í·É¾î¸¦ Ä¿³Î¿¡¼± »ç¿ëÇÏÁö ¾Ê´Â´Ù.
´ÙÀ½À¸·Î ù¹ø° ÁÙÀ» º¸¸é lidt ¸í·ÉÀÌ ÀÖ´Ù. ÀÌ°ÍÀº ÀÎÅÍ·´Æ® µð½ºÅ©¸³Å͸¦ ·ÎµåÇÑ´Ù. Áï, Devide By Zero(ÀÎÅÍ·´ÅÍ 0¹ø)À̶óµç°¡, ÆäÀÌÁö ÆúÆ®(ÀÎÅÍ·´ÅÍ 14¹ø) °°Àº ÀÎÅÍ·´Æ®°¡ ¹ß»ýÇßÀ» ¶§ À̸¦ ó¸®ÇÒ ·çƾÀÇ À§Ä¡¸¦ ÁöÁ¤ÇÏ´Â ºÎºÐÀÌ idt_48ÀÌ°í, lidt´Â À̸¦ ¸Þ¸ð¸®¿¡ ·ÎµåÇØÁÖ´Â °ÍÀÌ´Ù.
±»ÀÌ ÀÌ·¸°Ô GDT¸¦ ²¨³»µç ÀÌÀ¯´Â <<¸®´ª½º Ä¿³ÎÀÇ ÀÌÇØ>>ÀÇ 2Àå ¸Þ¸ð¸® °ü¸® ºÎºÐÀÇ Ã³À½ 1/2 Á¤µµ°¡ ÀüºÎ ÀÌ GDT ±¸Á¶¸¦ ¼³¸íÇϴµ¥ ÇҾֵǾî ÀÖ´Ù°í ´À²¼±â ¶§¹®ÀÌ´Ù. Ã¥¸¸ ÆîÄ¡¸é ÀáÀÌ ½ñ¾ÆÁú ¸¸Å Á¹¸°µ¥, ÀÌ´Â ¾î¼Àºí¸®¿Í CPU ±¸Á¶¿¡ ´ëÇÑ ÀÌÇØÁ¶Â÷ ¾øÀ̴ åÀ» ÀÌÇØÇϱ⠾î·Æ±â ¶§¹®À̶ó »ý°¢Çß´Ù. Áï, ³»°øÀÌ ºÎÁ·ÇÑ ³»°¡ º¸±â¿£ ¾î·Á¿î Ã¥ÀÌ´Ù.
ÀÌµé ¾î¼Àºí¸® ÄÚµå´Â arch/i386/boot¿¡ ÀÖÀ¸¸ç, ºñµð¿À µð½ºÅ©¸³ÅÍ´Â video.S¿¡ Á¤ÀǵǾî ÀÖ´Ù.
<img src="http://pds2.egloos.com/pds/1/200609/06/08/d0029308_117457.jpg" alt="" width="327" height="91" /> À§ ÄÚµåó·³ 0xC0000000°¡ 3G ¿µ¿ªÀ» °¡¸®Å²´Ù. Ä¿³ÎÀÌ 3GÀ§ÀÇ ¿µ¿ªÀ» »ç¿ëÇѴٴµ¥ ½ÇÁ¦·Î ±× °ªÀÌ ÀÖ´ÂÁö È®ÀÎÇØ º» ºÎºÐÀÌ´Ù.
<img src="http://pds2.egloos.com/pds/1/200609/06/08/d0029308_1171796.jpg" alt="" width="532" height="330" /> ¿©±â¼´Â ¾Õ¿¡ CR4 ·¹Áö½ºÅÍ°¡ º¸ÀδÙ. CPU¿¡´Â CR0-CR4±îÁöÀÇ ·¹Áö½ºÅÍ°¡ ÀÖ´Ù. ÀÌÁß¿¡¼ CR3´Â ÆäÀÌÁö ±Û·Î¹ú µð·ºÅ丮ÀÇ À§Ä¡¸¦ °¡¸®Å°¸ç, CR4 ·¹Áö½ºÅÍ´Â PAE È®ÀåÀ» »ç¿ëÇÒ °ÍÀΰ¡¸¦ ¼³Á¤ÇÑ´Ù. ÆæƼ¾ö ÇÁ·Î ÀÌÈÄ¿¡´Â ¾îµå·¹½º ÇÉÀÌ 4°³°¡ ´õ Ãß°¡µÇ¾î¼ 4G°¡ ¾Æ´Ï¶ó 64G±îÁö »ç¿ëÇÒ ¼ö ÀÖ°Ô ÇØÁØ´Ù. µû¶ó¼, ÀÌ °ªÀÌ ¼³Á¤µÈ °æ¿ì¿¡ CR4 ºñÆ®¸¦ 1·Î ¼³Á¤Çؼ PAE È®ÀåÀ» »ç¿ëÇÏ°Ô ¼³Á¤ÇØ ÁÖ´Â ºÎºÐÀÌ´Ù.
<img src="http://pds2.egloos.com/pds/1/200609/06/08/d0029308_1173467.jpg" alt="" width="473" height="275" /> movl %eax, %cr3¿¡¼ ÆäÀÌÁö Å×À̺íÀÌ ½ÃÀÛÇÏ´Â À§Ä¡¸¦ CR3 ·¹Áö½ºÅÍ¿¡ ÀúÀåÇÏ°í ÀÖ´Ù.(GAS, GNU Assembler´Â AT&T ½ºÅ¸ÀÏÀ» µû¸£°í ÀÖ¾î¼ ¾î¼Àºí¸® ¸í·É¾î ÀÎÀÚ À§Ä¡°¡ ¼·Î ¹Ý´ë´Ù. mov a, b´Â BÀÇ °ªÀ» A¿¡ ³Ö´Â´ÙÀÌÁö¸¸ AT&T ½ºÅ¸ÀÏ¿¡¼´Â AÀÇ °ªÀ» B¿¡ ³Ö´Â´Ù°¡ µÈ´Ù)
¸¶Ä¡¸ç
¾ÆÁ÷Àº Ä¿³ÎÀ» Àß ¾ËÁö ¸øÇÏ°í Ä¿³ÎÀ» °øºÎÇÏ´Â ÀÔÀå¿¡¼ ÁغñµÈ ±ÛÀÔ´Ï´Ù. ±¹³»¿¡ ³ª¿ÍÀÖ´Â ´Ù¾çÇÑ Ä¿³Î Ã¥µéÀ» ¸¹ÀÌ Âü°íÇß½À´Ï´Ù. ¾ÆÁ÷ ´Ù·çÁö ¸øÇÑ ºÎºÐµéÀÌ ¸¹½À´Ï´Ù. Ä¿³Î ¼Ò½º¿¡ ´ëÇÑ ¼¼¼¼ÇÑ ¼³¸íº¸´Ù´Â Ä¿³ÎÀÇ ÀüüÀûÀÎ È帧À» ´Ù·ç´Â °ÍÀÌ ¼¼¹Ì³ª¿¡´Â ´õ ÀûÇÕÇÏ´Ù°í ÆÇ´ÜÇؼ ÀüüÀûÀÎ È帧À» ´Ù·ç´Âµ¥ ÁßÁ¡À» µÎ¾ú½À´Ï´Ù. kmalloc°ú vmallocÀÇ Â÷ÀÌÁ¡À» ´Ù·ç´Â °Í º¸´Ù´Â ÀüüÀûÀÎ È帧ÀÌ ´õ Áß¿äÇÏ´Ù°í »ý°¢Çß½À´Ï´Ù. È帧¿¡ ´ëÇÑ ÀÌÇظ¦ ¹ÙÅÁÀ¸·Î ¼Ò½º Äڵ带 »ìÆ캸´Â °ÍÀÌ ÀÌÇØ¿¡ ´õ µµ¿òÀÌ µÈ´Ù°í »ý°¢ÇÕ´Ï´Ù.
·¹ÆÛ·±½º
°¢°¢ÀÇ Ã¥¸¶´Ù °°Àº ºÎºÐÀ» º¸¾Æµµ ¼³¸íÀ̳ª º¸¿©ÁÖ´Â ºÎºÐÀÌ ´Ù¸¨´Ï´Ù. °á±¹, ÀúÀÚ°¡ Ä¿³ÎÀ» ¹Ù¶óº¸´Â ¹æ½Ä¿¡ ´ëÇØ »ý°¢Çغ¸´Â ±âȸµµ µÇ°í, Ã¥À» °¡À̵å»ï¾Æ Ä¿³ÎÀ» Á÷Á¢ ã¾Æº¸¸ç Àüü¸¦ ¹Ù¶óº¼ ¼ö ÀÖ´Â ¾È¸ñÀ» ±â¸£´Â °ÍÀº ÀÚ½ÅÀÇ ¸òÀ̶ó »ý°¢µË´Ï´Ù. ÁÖ·Î ¸®´ª½º Ä¿³Î ÇÁ·Î±×·¡¹ÖÀ» ¸¹ÀÌ Âü°íÇßÀ¸¸ç, ¸®´ª½º Ä¿³Î ½ÉÃþ ºÐ¼®Àº Ä¿³Î API ÀÌÇØ¿¡ ¸¹Àº µµ¿òÀÌ µÇ¾ú½À´Ï´Ù. Operating System Concepts´Â ¿î¿µÃ¼Á¦°¡ ½Ã½ºÅÛÀ» °ü¸®ÇÏ´Â ´Ù¾çÇÑ ¹æ¹ý°ú ¾Ë°í¸®Áò¿¡ ´ëÇÑ Çؼ³ÀÌ Áß½ÉÀÌ°í À̸¦ Åä´ë·Î ¸®´ª½º Ä¿³ÎÀÌ Ã¤ÅÃÇÑ ¹æ¹ýÀ» »ìÆ캸´Â µ¥ ÁÁÀº Âü°í°¡ µË´Ï´Ù. ¸®´ª½º Ä¿³ÎÀÇ ¾î¼Àºí¸® ÄÚµå ºÎºÐÀº ¸¸µé¸é¼ ¹è¿ì´Â OS Ä¿³ÎÀÇ ±¸Á¶¿Í ¿ø¸®¿¡¼ ¸¹Àº ºÎºÐÀ» ÂüÁ¶Çß½À´Ï´Ù.
Ãâó : http://network.hanbitbook.co.kr/view.php?bi_id=1113