°Ô½Ã¹° 23°Ç
   
[ETC] Ãʺ¸ÀÚ¸¦ À§ÇÑ Ä¿³ÎÀÇ ¸Þ¸ð¸® °ü¸®
±Û¾´ÀÌ : ÃÖÀå¼· ³¯Â¥ : 2014-09-01 (¿ù) 13:16 Á¶È¸ : 3940

Ãʺ¸ÀÚ¸¦ À§ÇÑ ¸®´ª½º Ä¿³ÎÀÇ ¸Þ¸ð¸® °ü¸®

 

ÀúÀÚ: Çѵ¿ÈÆ(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¿¡ Á¤ÀǵǾî ÀÖ´Ù.

&lt;img src="http://pds2.egloos.com/pds/1/200609/06/08/d0029308_117457.jpg" alt="" width="327" height="91" /&gt;

À§ ÄÚµåó·³ 0xC0000000°¡ 3G ¿µ¿ªÀ» °¡¸®Å²´Ù. Ä¿³ÎÀÌ 3GÀ§ÀÇ ¿µ¿ªÀ» »ç¿ëÇѴٴµ¥ ½ÇÁ¦·Î ±× °ªÀÌ ÀÖ´ÂÁö È®ÀÎÇØ º» ºÎºÐÀÌ´Ù.

&lt;img src="http://pds2.egloos.com/pds/1/200609/06/08/d0029308_1171796.jpg" alt="" width="532" height="330" /&gt;

¿©±â¼­´Â ¾Õ¿¡ CR4 ·¹Áö½ºÅÍ°¡ º¸ÀδÙ. CPU¿¡´Â CR0-CR4±îÁöÀÇ ·¹Áö½ºÅÍ°¡ ÀÖ´Ù. ÀÌÁß¿¡¼­ CR3´Â ÆäÀÌÁö ±Û·Î¹ú µð·ºÅ丮ÀÇ À§Ä¡¸¦ °¡¸®Å°¸ç, CR4 ·¹Áö½ºÅÍ´Â PAE È®ÀåÀ» »ç¿ëÇÒ °ÍÀΰ¡¸¦ ¼³Á¤ÇÑ´Ù. ÆæƼ¾ö ÇÁ·Î ÀÌÈÄ¿¡´Â ¾îµå·¹½º ÇÉÀÌ 4°³°¡ ´õ Ãß°¡µÇ¾î¼­ 4G°¡ ¾Æ´Ï¶ó 64G±îÁö »ç¿ëÇÒ ¼ö ÀÖ°Ô ÇØÁØ´Ù. µû¶ó¼­, ÀÌ °ªÀÌ ¼³Á¤µÈ °æ¿ì¿¡ CR4 ºñÆ®¸¦ 1·Î ¼³Á¤Çؼ­ PAE È®ÀåÀ» »ç¿ëÇÏ°Ô ¼³Á¤ÇØ ÁÖ´Â ºÎºÐÀÌ´Ù.

&lt;img src="http://pds2.egloos.com/pds/1/200609/06/08/d0029308_1173467.jpg" alt="" width="473" height="275" /&gt;

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



À̸§ Æнº¿öµå
ºñ¹Ð±Û (üũÇÏ¸é ±Û¾´À̸¸ ³»¿ëÀ» È®ÀÎÇÒ ¼ö ÀÖ½À´Ï´Ù.)
¿ÞÂÊÀÇ ±ÛÀÚ¸¦ ÀÔ·ÂÇϼ¼¿ä.
   

miwit.com sir.co.kr DNS Powered by DNSEver.com DNS Powered by DNSEver.com