Á¦¸ñ : - 640 KB ±Øº¹ ¾È³çÇϼ¼¿ä Ç㸣¹ÌÀÔ´Ï´Ù. ¿À´ÃÀº Virtual Memory ¿¡ ´ë ÇÑ °­Á¸¦ °è¼ÓÇϵµ·Ï ÇÏ°ÚÀ¾´Ï´Ù. Virtual Memory Library ´Â Å©°Ô ³×ºÎºÐÀ¸·Î ±¸¼ºµÇ¾î ÀÖÀ¾´Ï´Ù. Áï Conventional Memory °ü ¸®ºÎºÐ,EMM °ü¸®,HardDisk °ü¸® ºÎºÐ,±×¸®°í À̵éÀ» ¹­¾î¼­ Management ÇØÁÖ´Â ºÎºÐÀÔ´Ï´Ù. »ç¿ëÀÚ´Â Áö±Ý È®º¸µÇ¾î ¿î¿ëµÇ ´Â ¸Þ¸ð¸®°¡ EMM ÀÎÁö,HardDisk ÀÎÁö,Conventional Memory ÀÎÁö ¸¦ »ý°¢ÇÒ ÇÊ¿ä°¡ ¾øÀ¾´Ï´Ù. ÀüüÀûÀ¸·Î °ü¸®ÇØÁÖ´Â ·çƾÀÌ Àû´ç È÷ ¼±ÅÃÇØÁÝ´Ï´Ù. ¿ì¸®°¡ char *buff ¸¦ ¼±¾ðÇؼ­ char ÇüÀÇ Æ÷ ÀÎÅ͸¦ ´Ù·çµíÀÌ Virtual Memory ¶óÀ̺귯¸®¿¡¼­´Â LogicHandle À̶ó´Â °ÍÀ» µÎ¾î¼­ °ü¸®ÇÏ°Ô µË´Ï´Ù. Áï ÀϹݸ޸𸮿¡ È®º¸ÇÑ Æ÷ÀÎÅÍÀÎÁö,ÆäÀÌ¡°ú ¸ÅÇÎÀÌ ÇÊ¿äÇÑ EMM ¿¡ ÇÒ´çµÈ ¸Þ¸ð¸®ÀÎÁö, Çϵåµð½ºÅ©¿¡ Swapping ÇÏ´Â È­ÀÏÀÎÁö´Â ³»ºÎ¿¡¼­ ó¸®ÇØÁֹǷΠ»ç¿ëÀÚ°¡ hgVMalloc ÇÔ¼ö·Î È®º¸ÇÑ ¿µ¿ªÀº ¸ðµÎ LogicHandle ·Î Ç¥½ÃµË´Ï´Ù. ÀÌ LogicHandle ¹øÈ£´Â »ç¿ëÀÚ°¡ ½Å°æ¾µ ÇÊ¿ä°¡ ¾ø À¾´Ï´Ù. ³»ºÎ¿¡¼­ ÀÏ°ýÀûÀ¸·Î ó¸®Çϱâ À§ÇÑ ¹æ¹ýÀÏ »ÓÀÔ´Ï´Ù. ¿¹¸¦ µé¾îº¾½Ã´Ù. VMEM *p; <- VMEM ÇüÀÇ Æ÷ÀÎÅÍ ¼±¾ð. p=(VMEM *) hgVMalloc((unsigned)size); ÇÏ°í ¼±¾ðÇϸé p ´Â VMEM ÇüÀÇ Æ÷ÀÎÅÍ·Î ¼±¾ðµÇ°Ô µË´Ï´Ù. VMEM Àº Çì´õÈ­ÀÏ¿¡¼­ ´ÙÀ½°ú °°ÀÌ ¼±¾ðµÇ¾î ÀÖÀ¾´Ï´Ù. typedef struct vmem { int logichandle; int type; } VMEM; Áï °¢ VMEM * ÇüÀÇ ¹öÆÛ´Â logichandle °ú type À» °¡Áö°í ÀÖÀ¾ ´Ï´Ù. logichandle Àº ±× Resource ¿¡ °ü°è¾øÀÌ 1 ºÎÅÍ ºÙ¿©³ª°¡ ´Â ÀϷùøÈ£¿Í °°Àº °ÍÀÔ´Ï´Ù. type Àº #define CON 1 #define EMM 2 #define HARD 3 °ú °°ÀÌ Á¤ÀǵǾî ÀÖÀ¾´Ï´Ù. hgVMalloc ÇÔ¼ö¿¡¼­ ÇØÁÖ´Â ÀÏÀº ¹ö ÆÛ¸¦ ½ÇÁ¦·Î È®º¸ÇÏ´Â ÀÏÀÌ ¾Æ´Õ´Ï´Ù. logichandle À» ÇÒ´çÇØÁÖ °í type ¿¡ µû¶ó¼­ Àû´çÈ÷ ÃʱâÈ­ 󸮸¦ ÇØÁÖ´Â °ÍÀÔ´Ï´Ù. Virtual Memory System À» °£´ÜÇϳª¸¶ ±¸ÇöÇÏ´Â °ÍÀº ±× È¿¿ë¿¡ ºñÇØ ¼Ò½º°¡ °£´ÜÇÑ ÆíÀÔ´Ï´Ù. µû¶ó¼­ °­Á³»¿ë¿¡¼­ ÀÚ¼¼È÷ ºÐ¼® ÇØ º¼¸¸ÇÑ °¡Ä¡°¡ ÀÖ´Ù°í »ý°¢ÇÕ´Ï´Ù. ÇöÀç Ç㸣¹Ì 2.0 À¸·Î ¹ö Àü¾÷ÁßÀε¥ VGA ÀÇ Image °ü¸®¸¦ Virtual Memory ¸¦ µµÀÔÇؼ­ ÇØ ³»±â ¶§¹®¿¡ È­¸éÀüü¸¦ ¸¶±¸ ÀúÀå/º¹±ÍÇÏ´õ¶óµµ ¹«¸®¾øÀÌ ½ÇÇà µË´Ï´Ù. EMM ÀÌ ÀÖÀ¸¸é ±× ¿µ¿ªÀ» ¸ðµÎ¾²°í,¾øÀ¸¸é HardDisk ¸¦ Swap Çؼ­ ¿øÇÏ´Â °á°ú¸¦ ¾ò¾î³À´Ï´Ù. ±×·³ ÀÏ´Ü ÀüüÀûÀÎ ±¸¼º À» »ìÆ캸µµ·Ï ÇÏ°ÚÀ¾´Ï´Ù. 1. »ç¿ëÀÚ´Â VMEM * ÇüÀ» ¼±¾ð. 2. hgVMalloc ÇÔ¼ö¿¡ ¿øÇÏ´Â Size ¸¦ ³Ñ°ÜÁØ´Ù. 3. hgVMalloc ÇÔ¼ö¿¡¼­´Â ¸ÕÀú Conventional Memory ¸¦ Check ÇÑ´Ù. 4. -> Conventional Memory È®º¸·çƾ 5. 4 ¿¡¼­ ½ÇÆÐÇϸé -> EMM È®º¸·çƾ 6. 5 ¿¡¼­ ½ÇÆÐÇϸé -> HardDisk È®º¸·çƾ 7. return NULL; 7 ±îÁö °¥ °æ¿ì´Â °ÅÀÇ ¾ø´Ù°í º¾´Ï´Ù. HardDisk ´Â º¸Åë MEGA ´ÜÀ§·Î ³²°Ü³õÀ¸¹Ç·Î HardDisk ±îÁöµµ Swap ÀÌ ºÒ°¡´ÉÇϱâ¶õ ¾î ·Á¿î ÀÏÀ̱⠶§¹®ÀÔ´Ï´Ù. À§ÀÇ °£´ÜÇÑ È帧µµ´Â ½ÇÁ¦ ¼Ò½º¿¡¼­ ´ÙÀ½°ú °°ÀÌ º¸¿©Áý´Ï´Ù. VMEM *hgVMalloc(unsigned size) { VMEM *p; p=hgVMallocCON(size); if (p!=NULL) return p; p=hgVMallocEMM(size); if (p!=NULL) return p; p=hgVMallocHARD(size); if (p!=NULL) return p; return NULL; } hgVMallocCON À̶ó´Â Sub Function Àº ÀϹݸ޸𸮿¡ È®º¸ÇØÁÖ´Â ¿ªÇÒÀ» ÇÕ´Ï´Ù. hgVMallocEMM Àº EMM ¿¡ È®º¸,hgVMallocHARD ´Â HardDisk ¿¡ È®º¸ÇÏ´Â ¿ªÇÒÀ» ÇÕ´Ï´Ù. È®º¸¿¡ ½ÇÆÐÇÏ¸é °¢°¢Àº NULL À» ¸®ÅÏÇÕ´Ï´Ù. È®º¸°¡ µÇ¸é VMEM ÇüÀÇ Æ÷ÀÎÅ͸¦ ¸®ÅÏÇØÁÖ ´Âµ¥ ÀÌ Æ÷ÀÎÅÍ¿¡´Â LogicHandle ÀÇ °ª°ú Device Type ÀÇ °ªÀ» °¡Áö°í ÀÖÀ¾´Ï´Ù. LogicHandle Àº ±× ¹öÆÛ°¡ °¡Áö´Â °íÀ¯¹øÈ£·Î ½á °¢ Sub Function ¿¡¼­ ¾²ÀÌ´Â Table ÀÇ ±â·ÏÀÚ·á·Î ÀÌ¿ëµË´Ï ´Ù. Device Type Àº À§¿¡¼­ ¾ð±ÞÇßµíÀÌ Resource ÀÇ Á¾·ù¸¦ °¡¸® Å°´Â °ÍÀÌ°í¿ä. Ç㸣¹Ì V.System ÀÇ ¿î¿ëÇÙ½ÉÀº Global Buffer ÀÇ »ç¿ë°ú Swapping ¿¡ ÀÖÀ¾´Ï´Ù. V.System ¿¡¼­ µ¥ÀÌÅ͸¦ °ü¸® ÇÏ´Â ¹æ½ÄÀº Á¶±Ý Ư¼öÇÕ´Ï´Ù. »ç¿ëÀÚ´Â 64 KB ·Î È®º¸µÇ¾î ÀÖ´Â Global Buffer ¿¡¼­ ÀÛ¾÷À» ÇØ¾ß ÇÕ´Ï´Ù. Áï VGA ÀÇ À̹ÌÁö¸¦ Àú ÀåÇÑ´Ù°í ÇÒ¶§ ¿ø·¡´Â ¾Æ·¡¿Í °°ÀÌ Çß¾úÀ¾´Ï´Ù. char *buff; buff=(char *) ~~ -> È®º¸°úÁ¤ hgGetImage(x1,y1,x2,y2,buff); <- È®º¸ ÀÌ·¸°Ô µÇ¸é buff ¶ó´Â ¿µ¿ª¿¡ VGA ÀÇ À̹ÌÁö°¡ µé¾î°¡°Ô µÇÁÒ. ¸¸ÀÏ À̹ÌÁö¸¦ Çϳª ´õ ÀâÀ¸¸é ¾î¶»°Ô µÉ±î¿ä.. ¶Ç ÇϳªÀÇ ¹öÆÛ °¡ ÇÊ¿äÇÏ°ÚÁÒ.. Áï Conventional Memory ¸¸À» °è¼Ó ¾²°Ô µË´Ï ´Ù. ÀÌ°ÍÀ» ±Øº¹Çϱâ À§Çؼ­ V.System ¿¡¼­´Â vgbuff ¶ó´Â Àü¿ª ¹öÆÛ¸¦ ¹Ì¸® 64 KB ¸¸Å­ (ÇÑ ¹öÆÛ°¡ ÃëÇÒ ¼ö ÀÖ´Â ÃÖ´ëÅ©±âÀÓ.) È®º¸ÇØ µÓ´Ï´Ù. ÀÌ Àü¿ª¹öÆÛ¿¡ VGA ÀÇ À̹ÌÁö¸¦ ÀúÀåÇÏ´Â °ÍÀÔ´Ï ´Ù. Áï ´ÙÀ½°ú °°ÀÌ µË´Ï´Ù. hgGetImage(x1,y1,x2,y2,vgbuff); ÀÌ ¹öÆÛ¸¦ °¡Áö°í ´Ù½Ã hgPutImage µî¿¡ ÀÌ¿ëÇÒ ¼ö ÀÖ´Â °ÍÀº µÎ ¸»ÇÒ ³ªÀ§°¡ ¾øÀ¾´Ï´Ù. ±×·¸´Ù¸é À̹ÌÁö¸¦ Çϳª ´õ Àâ´Â´Ù¸é ¿ª ½Ã ÀÛ¾÷ ¿µ¿ªÀº vgbuff À̹ǷΠÀü¿¡ Àâ¾Ò´ø À̹ÌÁö°¡ Æı«µÇ°Ô µÇ°ÚÁÒ. ±×·¯¹Ç·Î ±× Àü¿¡ Àû´çÇÑ ¿µ¿ªÀ¸·Î Swapping À» ÇØÁÖ´Â °ÍÀÔ´Ï´Ù. Swapping À» Çϸé V.System ÀÌ Àû´çÇÑ °÷À¸·Î vgbuff ÀÇ ³»¿ëÀ» Swapping ÇÏ°Ô µÇ°í,±× ÈÄ¿¡´Â ´Ù½Ã hgGetImage ·Î vgbuff ¿¡ À̹ÌÁö 2 ¸¦ ÀúÀåÇÕ´Ï´Ù. À̵éÀº ´Ù½Ã SwappingIn,Áï vgbuff ·Î Àоîµé¿©Áú ¼ö Àִµ¥ ÇÊ¿äÇÒ¶§ Àû´çÇÑ °ÍÀ» vgbuff ·Î ÀÐ¾î µéÀδٸé À̹ÌÁöÀÇ ¼ö¿¡ °ü°è¾øÀÌ Conventional Memory ¿¡¼­´Â vgbuff ¸¸Å­,Áï Ç×»ó 64 KB ¸¸Å­¸¸À» ¾²°Ô µÇ¸ç À̹ÌÁö´Â ¸ðµÎ ÀúÀåÇÒ ¼ö ÀÖ°Ô µË´Ï´Ù. Áï µÎ°³ÀÇ À̹ÌÁö¸¦ ÀúÀåÇÏ·Á¸é ´Ù À½°ú °°ÀÌ µÇ°ÚÁÒ. µÎ°³ÀÇ À̹ÌÁöÁß ¾î´À°ÍÀ» ºÒ·¯¿ÃÁö¸¦ Á¤ÇÏ°í ¾îµð¿¡ ÀúÀåÇß´ÂÁö µîÀ» ±â¾ïÇϱâ À§Çؼ­´Â ¹öÆÛ°ü¸®¸¦ À§ÇÑ ÇÚ µéÀ» Á¤ÇÒ ÇÊ¿ä°¡ ÀÖÀ¾´Ï´Ù. ÀÚ²Ù¸¸ ¸»ÀÌ º¹ÀâÇØ Áö´Âµ¥ ¾Æ·¡ÀÇ ¿¹Á¦¸¦ º¾½Ã´Ù. VMEM *p1,*p2; p1=(VMEM *)hgVMalloc((unsigned)size1); p2=(VMEM *)hgVMalloc((unsigned)size2); hgGetImage(x1,y1,x2,y2,vgbuff); hgVSaveBuff(p1); hgGetImage(x1,y1,x2,y2,vgbuff); hgVSaveBuff(p2); À§ÀÇ ¿¹Á¦ÀÇ Ã¹ÁÙÀº LogicHandle,DeviceType À» ÀúÀåÇϱâ À§ÇÑ ÇÚµéÀÇ Æ÷ÀÎÅ͸¦ 2 °³ ¼±¾ðÇÕ´Ï´Ù. (p1,p2) ±×¾Æ·¡ µÎ ¹®ÀåÀº p1,p2 ¸¦ Àû´çÇÑ °÷¿¡ Allocate Çϱâ À§Çؼ­ LogicHandle , DeviceType À» V.System À¸·ÎºÎÅÍ ÇÒ´ç¹Þ½À´Ï´Ù. vgbuff ´Â Ãʱâ È­ ·çƾ¿¡¼­ ÀÌ¹Ì 64 KB ·Î È®º¸µÇ¾î ÀÖ´Â ¹öÆÛÀÌ°í hgGetImage ·Î ±× ¹öÆÛ¿¡ È­¸é À̹ÌÁö¸¦ ´ã¾Æ ¿É´Ï´Ù. hgVSaveBuff(p1) ¸í·É ¿¡ ÀÇÇؼ­ p1 ¿¡ ÇÒ´çµÈ ¿µ¿ª¿¡ vgbuff ÀÇ ³»¿ëÀ» Swapping ÇÕ´Ï ´Ù. Áï ù¹ø° hgGetImage ·Î ÀâÀº À̹ÌÁö¸¦ p1 ¿¡ Àû´çÈ÷ ÇÒ´ç µÈ °÷¿¡ ÀúÀåÇÏ´Â ¼ÀÀÌÁÒ. ±×´ÙÀ½¿¡ ´Ù½Ã hgGetImage ÇÔ¼ö·Î vgbuff ¿¡ À̹ÌÁö¸¦ ´ã¾Æ¿É´Ï´Ù. Àü¿¡ ´ã°ÜÀÖ´ø vgbuff ÀÇ ³»¿ë Àº Æı«µÇ¾úÁö¸¸ ÀÌ¹Ì ÀúÀåÇØ µÎ¾úÀ¸¹Ç·Î °ü°è´Â ¾øÀ¾´Ï´Ù. ´Ù½Ã hgVSaveBuff(p2) ÇÔ¼ö´Â »õ·Î´ã¾Æ¿Â vgbuff ÀÇ ³»¿ëÀ» p2 ¿¡ ÇÒ ´çµÈ ¹öÆÛ·Î Swapping ÇÕ´Ï´Ù. Áï vgbuff ÀÇ ³»¿ëÀ» p2 ¿¡ ÇÒ´ç µÈ ±â¾ïÀå¼Ò·Î ¿Å°ÜÁÖ´Â °ÍÀÔ´Ï´Ù. ±×·¸´Ù¸é ÀÌÁ¦ ¸Þ¸ð¸®ÀÇ ³»¿ë Àº ¾î¶»°Ô µÇ´Â °ÍÀϱî¿ä. vgbuff ´Â ¿©ÀüÈ÷ 64 KB Â¥¸® ¹öÆÛ·Î ³²¾ÆÀÖÀ¾´Ï´Ù. ÇÏÁö¸¸ È­¸é À̹ÌÁö 2 °³¸¦ ÀâÀº ¿µ¿ªÀº V.System ÀÌ ÇÒ´çÇØÁØ ¸Þ¸ð¸®¿¡ ÀúÀåµÇ¾î ÀÖ´Â °ÍÀÌ°í ±×µéÀº °¢°¢ °íÀ¯ÇÑ LogicHandle ¹øÈ£¸¦ °¡Áö¸é¼­ p1,p2 ·Î ÁöĪÇÒ ¼ö ÀÖ´Â °ÍÀÌÁÒ. ±×·¸´Ù¸é ÀÌÁ¦ ´Ù½Ã hgPutImage ·Î º¹±ÍÇÏ´Â ºÎºÐÀ» ÀÛ¼ºÇØ º¾½Ã ´Ù. À̸¦ À§Çؼ± ÀÏ´Ü p2 ¿¡ ÇÒ´çµÈ ºÎºÐÀ» vgbuff ·Î °¡Á®¿Â´Ù À½¿¡ vgbuff ÀÇ ³»¿ëÀ» È­¸é¿¡ º¹±ÍÇØÁÖ¸é µË´Ï´Ù. Áï hgVSetBuff(p2); hgPutImage(x1,y1,x2,y2,vgbuff); ±×´ÙÀ½¿¡ ´Ù½Ã p1 ¿¡ ÇÒ´çµÈ ºÎºÐÀ» vgbuff ·Î °¡Á®¿Â´ÙÀ½¿¡ vgbuff ÀÇ ³»¿ëÀ» È­¸é¿¡ º¹±ÍÇÕ´Ï´Ù. hgVSetBuff(p1); hgPutImage(x1,y1,x2,y2,vgbuff); °á±¹ vgbuff ¶ó´Â Áß°£ ¸Å°³ ¹öÆÛ¸¦ ÅëÇؼ­ ¿ì¸®´Â ÀÛ¾÷À» ÇÏ°í, ÇÊ¿äÇÒ¶§¸¶´Ù Swapping ÇÔÀ¸·Î½á º¸´Ù ¸¹Àº µ¥ÀÌÅ͸¦ ´Ù·ê ¼ö ÀÖ °Ô µÇ´Â °ÍÀÔ´Ï´Ù. ÀÌ·¯ÇÑ ¹æ½ÄÀÌ Virtual Memory System À» ±¸ ÇöÇÏ´Â µ¥ ÀÖ¾î À¯ÀÏÇÑ ¹æ¹ýÀº °áÄÚ ¾Æ´Õ´Ï´Ù. ±×·¯³ª Àü¿ª¹öÆÛ ¹æ½ÄÀ» »ç¿ëÇÏ°Ô µÇ¸é ¸î°¡Áö ÀåÁ¡°ú ´ÜÁ¡À» ÇÔ²² °¡Áö°Ô µÇ´Âµ¥ °£´ÜÈ÷ »ìÆ캸°ÚÀ¾´Ï´Ù. ¿ì¼± ´ÜÁ¡À» »ìÆ캸¸é Àü¿ª¹öÆÛ¿¡ ÇÊ¿äÇÑ 64 KB ¸¸Å­ÀÇ ¹öÆÛ¸¦ Conventional Memory ¿¡ Ç×»ó È®º¸ÇØ µÎ¾î¾ß ÇÑ´Ù´Â Á¡ÀÌ ÀÖÀ¾´Ï ´Ù. ¾Æ¹«¸® ¸Å°³ ¹öÆÛ¶ó°í´Â ÇÏÁö¸¸ 64 KB ÀÇ ¾çÀº ±×¸® ÀûÀº °Í ÀÌ ¾Æ´Ï¹Ç·Î ÇÁ·Î±×·¡¸Ó¿¡°Ô ºÎ´ãÀÌ µÇ´Â °ÍÀº »ç½ÇÀÔ´Ï´Ù. ¶ÇÇÏ ³ªÀÇ ´ÜÁ¡Àº ÀûÀýÇÑ ½Ã±â¿¡ Swapping À» ÇØ¾ß Çϴµ¥ ÀÌ ½Ã±â¸¦ °áÁ¤ÇϱⰡ ½±Áö ¾Ê´Ù´Â µ¥ ÀÖÀ¾´Ï´Ù. »ç½Ç Swapping ÀÇ ¼ö´Â °¡ ´ÉÇÑÇÑ ÁÙ¿©¾ß Virtual Memory Access °¡ »¡¶óÁú °ÍÀÔ´Ï´Ù. À§¿¡ ¼­ hgVSetBuff,hgVSaveBuff ÇÔ¼ö´Â ¸¸ÀÏ ´ë»óÀ» HardDisk ·Î ÇÑ ´Ù¸é ´À·ÁÁú °ÍÀ̹ǷΠSwapping À» ÀÚÁÖ ÇÒ ¼ö·Ï ÇÁ·Î±×·¥ÀÇ È¿ À²ÀÌ ¶³¾îÁö´Â °ÍÀº ´ç¿¬ÇÕ´Ï´Ù. °¡Àå Å« ´ÜÁ¡Àº Àü¿ª¹öÆÛ°¡ ÇÑ °³À̹ǷΠÇÁ·Î±×·¥ÀÌ ¾î·Á¿ö Áø´Ù´Â µ¥ ÀÖÀ¾´Ï´Ù. ¿¹¸¦ µé¾î µÎ °¡ÁöÀÇ µ¥ÀÌÅ͸¦ V.System À» ÀÌ¿ëÇؼ­ ÀúÀåÇÑ´Ù°í ÇսôÙ. µÎ°¡ ÁöÀÇ µ¥ÀÌÅ͸¦ ÀúÀåÇϱâ À§Çؼ­´Â ÀÏ´Ü Çϳª¸¦ Àо ÀúÀåÇÏ°í, ¶Ç Çϳª¸¦ Àо ÀúÀåÇØ¾ß ÇÕ´Ï´Ù. Áï ¼ø¼­´ë·Î ÇØ¾ß ÇÑ´Ù´Â °Í ÀÌÁÒ. µÎ°³¸¦ ´Ù Àо ÀúÀåÇÒ ¼ö ÀÖ´Â ¹æ¹ýÀÌ ¾øÀ¾´Ï´Ù. ¿Ö³Ä Çϸé vgbuff ´Â ÇϳªÀ̱⠶§¹®ÀÌÁÒ. ±×·³ ÀåÁ¡À» »ìÆ캸°ÚÀ¾´Ï ´Ù. °£´ÜÇÑ ¹æ¹ý,Áï Swapping À̶ó´Â ¹æ¹ýÀ» ÅëÇؼ­ ¼ö¸Þ°¡¿¡ ÀÌ ¸£´Â ¹æ´ëÇÑ ¿µ¿ªÀ» ¾µ ¼ö ÀÖ°Ô µË´Ï´Ù. ¶ÇÇÑ vgbuff ´Â 64 KB Â¥¸® ¹öÆÛÀ̹ǷΠ´ÜÀÏ ¹öÆÛ¸¦ ´ë»óÀ¸·Î ÇÁ·Î±×·¥À» ÇÏ°Ô µÇ¾î ÀÏ °ü¼ºÀÖ°í À¶Å뼺ÀÖ´Â ÇÁ·Î±×·¥À» ÇÒ ¼ö ÀÖ°Ô µÈ´Ù´Â Á¡ÀÌ ÀÖÀ¾´Ï ´Ù. ¶ÇÇÑ V.System ÀÇ ±¸Á¶°¡ °£´ÜÇØ Áø´Ù´Â °Íµµ ¸Å¿ì Å« ÀÕÁ¡ ÀÔ´Ï´Ù. ´ÜÁ¡ÀÌ ¸¹ÀÌ º¸ÀÌÁö¸¸ À̵éÀ» ÇØ°áÇÒ ¼ö ÀÖ´Â ¹æ¹ýÀÌ ¾ø´Â °ÍÀº ¾Æ´Õ´Ï´Ù. ¿ì¼± ù¹ø°,Áï 64 KB ÀÇ Àü¿ª¹öÆÛ¿¡ °üÇÑ ¹®Á¦´Â ±× ¸® °ÆÁ¤ÇÒ °ÍÀÌ ¾øÀ¾´Ï´Ù. ¿ÀÈ÷·Á 64 KB ¸¸Å­¸¸À» Conventional Memory ¸¦ ¾²°í ³ª¸ÓÁö´Â Àû´çÇÑ ¿µ¿ªÀ» Allocate ÇϹǷΠū ÇÁ ·Î±×·¥À» ÀÛ¼ºÇÒ¶§´Â ¿ÀÈ÷·Á ¸Þ¸ð¸®¸¦ Àý¾àÇÏ´Â ¼ÀÀÌ µË´Ï´Ù. ¶Ç ÇÑ Swapping ½Ã±â¹®Á¦´Â ÀÌ V.System À» ÀÌ¿ëÇÏ´Â ¹æ¹ýÀûÀÎ ¹®Á¦ À̹ǷΠÀÌ Virtual Library °­Á°¡ ³¡³¯¹«·Æ hr.exe (¹°º¸¶ó ÇÑ ±Û ¸®´õ) À» µðÀÚÀÎ Çϸ鼭 ¾òÀº °ÍÀ» ¼Ò°³ÇÏ°íÀÚ ÇÕ´Ï´Ù. ¸¶Áö ¸·À¸·Î µÎ°³ÀÇ µ¥ÀÌÅ͸¦ Çѹø¿¡ ´Ù·ê ¼ö ¾ø´Ù´Â °ÍÀε¥ ÀÌ°ÍÀº Swapping À» ÀûÀýÈ÷ ÀÌ¿ëÇϸé ÇØ°á ÇÒ ¼ö ÀÖ´Â ¹®Á¦ÀÔ´Ï´Ù. 64 KB ÀÇ vgbuff ¸¦ Swapping Çϴµ¥´Â HardDisk °¡ ¾Æ´Ñ ´ÙÀ½¿¡¾ß ¸Å¿ì ªÀº ½Ã°£¿¡ ÀÌ·ïÁö¹Ç·Î ¼Óµµ´Â Å©°Ô »ý°¢ÇÒ ÇÊ¿ä°¡ ¾øÀ¾´Ï ´Ù. ¶ÇÇÑ Á¦ Å×½ºÆ®·Î´Â HardDisk ¿¡¼­µµ ¸¸Á·½º·´°Ô µ¿ÀÛÇÏ´Â °ÍÀ» È®ÀÎÇßÀ¾´Ï´Ù. Ç㸣¹Ì ÇÑ±Û ¶óÀ̺귯¸® 2.0 ¿¡¼­´Â È­¸é ÀÌ ¹ÌÁö °ü¸®¸¦ À§Çؼ­ Virtual Library ¸¦ µµÀÔÇÏ¿´À¾´Ï´Ù. ÀÌ°æ¿ì À̹ÌÁö ÀúÀåÇÔ¼öÀÇ ³»ºÎ¿¡¼­´Â ¾ðÁ¦³ª Àû´çÇÑ Virtual Buffer ¸¦ È®º¸ÇÏ¿© ÇÒ´çÇÏ°í Swapping ÇصӴϴÙ. À̹ÌÁö º¹±ÍÇÔ¼ö¿¡¼­´Â ´Ù½Ã vgbuff ·Î ÀúÀå³»¿ëÀ» ¿Å±äÈÄ È­¸é¿¡ Ç¥½ÃÇÏ°Ô µÇ¹Ç·Î Swapping À» ÇÁ·Î±×·¡¸Ó°¡ »ý°¢ÇÏÁö ¾Ê¾Æµµ µÇ°Ô µÇ¾î ÀÖÀ¾´Ï´Ù. hr.exe ¿Í °°Àº ÇÁ·Î±×·¥Àº À̹ÌÁö ÀúÀ常ÀÌ ¾Æ´Ï¶ó Ãâ·Â Text µµ Virtual Memory ¿¡ ¿Ã·Á³õ´Â ¹æ¹ýÀ» Á¦½ÃÇÏ°í ÀÖÀ¾´Ï´Ù. ¿ª½Ã ÀÚ¼¼ÇÑ ÀÀ¿ë¹ýÀº Virtual ÀÇ °­Á°¡ ³¡³¯¹«·Æ ´Ù½Ã Á¦½ÃÇϵµ·Ï ÇÏ°ÚÀ¾´Ï´Ù. ±×·³ ´ÙÀ½ °­Á ºÎÅÍ´Â Conventional,HardDisk,Emm ÀÇ ¼øÀ¸·Î SubFunction À» »ìÆ캸°Ô µÉÅÙµ¥ À̸¦ À§Çؼ­ ±âº»Àû ÀÎ »çÇ×À» Á¶±Ý º»ÈÄ¿¡ À̹ø °­Á¸¦ ³¡³»µµ·Ï ÇÏ°ÚÀ¾´Ï´Ù. ¿ì¼± Segment,Offset ÀÇ °³³äÀÔ´Ï´Ù. 80x86 °è¿­ÀÇ CPU µéÀº ÀûÀº bit ¼öÀÇ ÁÖ¼Ò ·¹Áö½ºÅÍ·Î º¸´Ù ¸¹ Àº ¿µ¿ªÀ» Addressing Çϱâ À§Çؼ­ Segment,Offset À̶ó´Â °³³ä À» µµÀÔÇßÀ¾´Ï´Ù. 1 MB ±îÁöÀÇ ¸Þ¸ð¸® °ø°£Àº ÀÌ Segment,Offset ¿¡ ÀÇÇؼ­ ¾î´À°÷À̵ç ÁöÀûÀÌ °¡´ÉÇÕ´Ï´Ù. Áï Segment,Offset ¸¸ ÀÖÀ¸¸é ¾î´À ÇÑ°÷ÀÇ ÁÖ¼Ò¸¦ °¡¸®Å³ ¼ö ÀÖ´Ù´Â °ÍÀÌÁÒ. º¸Åë Far pointer ¶ó°í ¸»ÇÏ´Â °ÍÀº Segment ¿Í Offset °ªÀ» °¡Áö°í ÀÖ¾î ¼­ ¸Þ¸ð¸®ÀÇ ¾î´À°÷À̳ª °¡¸®Å³ ¼ö ÀÖÀ¾´Ï´Ù. ÇÏÁö¸¸ Near Pointer ¶ó´Â °ÍÀº Offset °ª¸¸À» °¡Áø °ÍÀ¸·Î½á Segment ´Â Ư Á¤ Segment Register ÀÇ °ªÀ» ÂüÁ¶ÇÏ¿© Segment:Offset ÀÇ ÁÖ¼Ò ¸¦ ±¸ÇÏ´Â ¹æ½ÄÀ¸·Î½á Segment °ªÀÌ ¹Ù²ñ¿¡ µû¶ó ´Ù¸¥ ÁÖ¼Ò¸¦ °¡ ¸®Å³ ¼öµµ Àִٴµ¥ ÁÖÀÇÇØ¾ß ÇÕ´Ï´Ù. ÇÏÁö¸¸ ¼Óµµ´Â Far Pointer ¿¡ ºñÇؼ­ ºü¸¨´Ï´Ù. Segment ¿Í Offset Àº ´ÙÀ½°ú °°Àº °ü°è¸¦ Áö´Ï°í ÀÖÀ¾´Ï´Ù. Áï 1 MB ¸¦ Ç¥ÇöÇϱâ À§Çؼ­´Â 20 bit °¡ ÇÊ¿äÇѵ¥.. ÀÌÁß ¾ÕÀÇ 16 bit ¸¦ Segment Register °¡ °¡¸®Å° °í,µÚÀÇ 16 bit ¸¦ Offset Register °¡ °¡¸®Å°°Ô µË´Ï´Ù. Áï A000 <- Segment + 0100 <- Offset ---------- A0100 ó·³ µÇ¾î¼­ A000:0100 (Segment:OFfset À¸·Î º¸Åë ¾¸) Àº A0100 À̶ó´Â 20 bit ÁÖ¼Ò¸¦ °¡¸®Å°°Ô µÇ´Â ¼ÀÀÌ µË´Ï´Ù. 2^20 = 1 MB À̹ǷΠÀÌ·¯ÇÑ ¹æ½ÄÀ¸·Î ÃÖ´ë ÁÖ¼Ò ÁöÁ¤ °¡´É ¹üÀ§´Â 1 MB ÀÎ ¼À ÀÔ´Ï´Ù. V.System ¿¡¼­´Â Conventional Memory ¸¦ ´Ù·ç´Âµ¥ ÀÖ¾î ¼­ ÀÌ Segment,Offset ¸¦ ÀúÀåÇÔÀ¸·Î½á ¹öÆÛÀÇ À§Ä¡¸¦ ¾Ë¾Æ³»´Â µ¥ »ç¿ëÇÏ°í ÀÖÀ¾´Ï´Ù. ÀÚ¼¼ÇÑ °ÍÀº ´ÙÀ½ °­ÁÂÆí¿¡ ³ª¿À°ÚÁö¸¸ ÀÌ Segment,Offset ÀÌ 20 ºñÆ®ÀÇ ÁÖ¼ÒÁß¿¡¼­ ÀÓÀÇÀÇ À§Ä¡¸¦ °¡¸® Å°´Âµ¥ »ç¿ëÇÑ´Ù´Â °ÍÀ» ¾Ë¾ÆµÎ¼¼¿ä. ±×´ÙÀ½¿¡.. EMM À» »ç¿ëÇÏ ±â À§Çؼ­´Â config.sys ¿¡ emm386.exe ¸¦ ³Ö¾îµÎ¾î¾ß ÇÕ´Ï´Ù. (80386 ÀÇ °æ¿ì) µÚ¿¡´Â KB ·Î Size °ªÀÌ ¿É´Ï´Ù. Áï device=emm386.exe 1024 Çϸé 1024 KB , Áï 1 ¸Þ°¡¸¦ emm À¸·Î ¾²°Ú´Ù´Â ¼±¾ðÀÌ µÇ°ÚÁÒ. ÀÏ´Ü ÀÌ·¸°Ô ¼±¾ðÇØ µÎ¸é µµ½º Ä¿¸Çµå¿¡¼­ emm386 OFF Çϸé emm À» ÀϽÃÀûÀ¸·Î Unable ÇÏ°Ô Çϸç emm386 ON ÇÏ¸é ´Ù½Ã Able ÇÏ°Ô ÇØÁÝ´Ï´Ù. 286 ÀÇ °æ¿ì¿¡´Â ±×¿¡ ¸Â´Â Àû´ç ÇÑ LIM 4.0 ±Ô°ÝÀÇ EMM driver ¸¦ ¾²½Ã¸é µË´Ï´Ù. ¸¶Áö¸·À¸·Î.. HardDisk ¿¡¼­´Â º¸Åë DiskCache ¸¦ ¾¹´Ï´Ù. ÀÌ DiskCache ´Â È¿ À²ÀÌ ÁÁÀº°ÍÀ» ¾²¸é HardDisk Swapping ¼Óµµ¸¦ Çâ»ó½ÃÄÑÁÝ´Ï´Ù. ¸Þ¸ð¸®°¡ ÃæºÐÇÏÁö ¾ÊÀº °æ¿ì EMM °ú DiskCache ¿µ¿ªÀ» Àû´çÈ÷ Àâ¾ÆÁÖ¾î¾ß °ÚÁÒ. V.System ¿¡¼­´Â Borland C++ 2.0 ÀÇ built-in Function ÀÎ fread ¿Í fwrite ¸¦ ½á¼­ ¹öÆÛ¸¦ Çϵåµð½ºÅ©¿¡ ÀÏ°ý Àü¼Û/Àб⸦ ÇÏ°í ÀÖÀ¾´Ï´Ù. ÀÌ ÇÔ¼ö´Â ºí·°´ÜÀ§·Î Àü¼ÛÀ» ÇÏ¹Ç ·Î ºü¸£°Ô µ¿ÀÛÇϸç DiskCache ·Î È¿À²À» ³ôÀÏ ¼ö ÀÖÀ¾´Ï´Ù. ¹° ·Ð EMM À̳ª Conventional º¸´Ù´Â ´À¸®°ÚÁö¸¸ V.System ÀÇ Å×½º Æ® °úÁ¤¿¡¼­ HardDisk µµ »ó´çÈ÷ ¾µ¸¸ÇÑ ±â¾ï°ø°£ÀÌ µÉ ¼ö ÀÖ´Ù ´Â °ÍÀ» ´À²¼À¾´Ï´Ù. »ç½Ç Memory ¿¡¼­´Â 1,2 ¸Þ°¡°¡ Å« ¾çÀÌÁö ¸¸ Çϵåµð½ºÅ©¿¡¼­´Â ÀÛÀº ¾çÀÌÀݾƿä ? Çϵåµð½ºÅ©¸¦ »ç¿ëÇؼ­ Swapping ÇÑ´Ù´Â °Íµµ Àû´çÇÑ ¶§ ¾²¸é ±× È¿¿ë¼ºÀº ´ë´ÜÇÑ °ÍÀÔ ´Ï´Ù. V.System ÀÇ ÃÖ´ë ÀåÁ¡ÀÌ Resource ¸¦ ÀÚµ¿¼±ÅÃ,¶Ç´Â ÇÑ°¡ Áö ÁöÁ¤¼±ÅõîÀÌ °¡´ÉÇϱ⠶§¹®¿¡ ÀûÀýÈ÷ Resource ¸¦ »ç¿ëÇÒ ¼ö ÀÖ´Ù´Â Á¡ÀÔ´Ï´Ù. ±×·³. ¹«Ã´ °³¿ä¿¡ °üÇÑ ºÎºÐÀÌ ±æ¾îÁ³´Âµ¥.. ´ÙÀ½ °­Á¿¡´Â Conventional Memory °ü¸®ºÎºÐÀ» ¼³°ÔÇØ º¸µµ·Ï ÇÏ°ÚÀ¾´Ï´Ù. ±×·³. Ç㸣¹Ì!