Á¦¸ñ : - Conventional Memory °ü¸® ¾È³çÇϼ¼¿ä Ç㸣¹ÌÀÔ´Ï´Ù. ¿À´ÃÀº Virtual System Áß Conventional Memory °ü¸®ºÎºÐ¿¡ ´ëÇؼ­ ¾Ë¾Æº¸µµ·Ï ÇÏ°ÚÀ¾´Ï´Ù. ÀÌ ºÎºÐÀ» ¾Ë¾Æº¸±â À§Çؼ­ ¿ì¼± ÃʱâÈ­ ºÎºÐ,±×¸®°í LogicHandle ¿¡ ´ëÇؼ­ ¸ÕÀú ¾Ë¾Æº¸µµ·Ï ÇսôÙ. Virtual System À» ÃʱâÈ­ ÇÏ´Â ÇÔ¼öÀÎ hgVMEMInit() ÇÔ¼öÀÇ ³»ºÎ¸¦ Àá±ñ º¸¸é ´ÙÀ½°ú °°½À´Ï´Ù. void hgVMEMInit() { vgbuff=(byte *)malloc((size_t)0xffff); vgseg=FP_SEG(vgbuff); vgoff=FP_OFF(vgbuff); . . . } vgbuff ¶ó´Â Global Buff ¸¦ È®º¸ÇÏ°í ÀÖÀ¸¸ç (0xffff = 64 KB) vgseg,vgoff ¶ó´Â Àü¿ªº¯¼ö (unsigned Çü) ¿¡ vgbuff ÀÇ segment,offset °ªÀ» ¾ò¾î¿À°í ÀÖÀ¾´Ï´Ù. ÇÁ·Î±×·¥À» ³¡³¾¶§´Â vgbuff ¸¦ ÇØÁ¦ÇØ¾ß ÇÕ´Ï´Ù. Áï void hgVMEMEnd() { free(vgbuff); } À§ÀÇ ÇÔ¼ö°¡ Virtual Memory System À» ³¡³¾¶§ ¾²´Â ÇÔ¼öÀÔ´Ï´Ù. ±×·³ À§ÀÇ ÇÔ¼öµé¿¡ ÀÇÇؼ­ ÀÏ´Ü vgbuff ¸¦ ´Ù·ç±â À§ÇÑ Áغñ´Â ¸ðµÎ ³¡³µÀ¾´Ï´Ù. ±×·³ logic Handle ¿¡ ´ëÇؼ­ Á¶±Ý ¾Ë¾Æº¾½Ã ´Ù. logic Handle Àº È®º¸µÇ´Â ¼ø¼­¿¡ µû¶ó¼­ 1 ºÎÅÍ ¼ø¼­°¡ ¸Å °ÜÁöÁö¸¸ ¾î¶²°ÍÀÌ hgVFree µÇ¾úÀ»¶§´Â ±× LogicHandle µµ ÀÚ¸® ¸¦ ºñ¿ì°Ô µË´Ï´Ù. ±× ´ÙÀ½ LogicHandle À» È®º¸ÇÏ·Á´Â ¿äûÀÌ µé¾î¿À¸é Á¦ÀÏ Ã³À½ ºñ¾îÀÖ´Â ºÎºÐÀ» ¾Ë¾Æ¼­ ¸®ÅÏÇϹǷΠÁß°£¿¡ ºñ°Ô µÇ´Â °æ¿ì¸¦ ÁÙÀÌ°í ÀÖÀ¾´Ï´Ù. Logic Handle ¿¡ ´ëÇÑ ºÎºÐ ÀÇ ¼Ò½º¸¦ º¸°ÚÀ¾´Ï´Ù. #define MAX_LOGICHANDLE 500 byte logic[MAX_LOGICHANDLE] = {0, }; int findlogichandle() { int i; for (i=0;ilogichandle); if (i==-1) return; deletelogichandle(con_table[i].logichandle); con_table[i].logichandle=0; /* free */ free(conbuff[i]); free(*p); consize+=(unsigned long)con_table[i].size; } ¼Ò½º¿¡¼­ º¸½Ã¸é ¾Ë°ÚÁö¸¸ ¿ì¼± findcontable ÇÔ¼ö·Î logichandle À» key ·Î Çؼ­ con_table ¿¡¼­ÀÇ À§Ä¡¸¦ ã¾Æ³À´Ï ´Ù. ±× con_table À» logic_handle À» 0 À¸·Î ÇÔÀ¸·Î Çؼ­ ºñ¿ó ´Ï´Ù. ±×¸®°í logic_handle À» ÇØÁ¦ÇÕ´Ï´Ù. ¶Ç conbuff,Áï CM ¿¡ ¼­ÀÇ ¹öÆÛ¸¦ free ·Î ÇØÁ¦ÇÕ´Ï´Ù. VMEM ÇüÀÇ Æ÷ÀÎÅ͵µ ÇØÁ¦ÇØÁÝ ´Ï´Ù. ¸¶Áö¸·À¸·Î consize,Áï CM È®º¸Á¦ÇÑ ¿µ¿ªÀ» ÇØÁ¦ÇØÁÝ´Ï´Ù. º°´Ù¸¥ °ÍÀº ¾øÁö¸¸ º¸Åë free ÇÔ¼ö¿Í´Â ´Þ¸® **p,Áï ÀÌÁß Æ÷ÀÎ Å͸¦ ¾´ °ÍÀ» º¸½Ç ¼ö ÀÖÀ» °Ì´Ï´Ù. ÀÌÁß Æ÷ÀÎÅ͸¦ ¾´ ÀÌÀ¯¶ó¸é Æ÷ÀÎÅÍ ÀÚüÀÇ °ªÀ» º¯°æ½ÃÅ°±â ¶§¹®ÀÔ´Ï´Ù. º¸Åë Æ÷ÀÎÅÍ°¡ °¡¸® Å°´Â °ªÀ» ¹Ù²Ü¶§´Â Æ÷ÀÎÅ͸¦ ³Ñ°ÜÁÖ°í,Æ÷ÀÎÅÍ ÀÚü¸¦ ¹Ù²Ü¶§´Â Æ÷ÀÎÅÍÀÇ Æ÷ÀÎÅ͸¦ ³Ñ°ÜÁÖ´Â °ÍÀ̱⠶§¹®ÀÔ´Ï´Ù. Æ÷ÀÎÅÍÀÇ Æ÷ÀÎ ÅͶó°í Çؼ­ º¹ÀâÇÑ °ÍÀº ¾Æ´Ï°í ½ÇÁ¦·Î´Â ´ÙÀ½°ú °°ÀÌ ¾²ÀÔ´Ï ´Ù. VMEM *p; p=(VMEM *)hgVMallocCON((unsigned)size); . . hgVFreeCON(&p); Áï & ¸¦ Æ÷ÀÎÅÍ ¾Õ¿¡ ºÙ¿©ÁÖ¸é µÇ´Â °ÍÀÌÁÒ. ±×·³ ÀÌÁ¦ Swapping ÇÔ¼öµéÀ» ¾Ë¾Æº¸°ÚÀ¾´Ï´Ù. ¿ì¼± vgbuff ¸¦ conbuff,Áï CM °ü¸® ³»ºÎ ¹öÆÛ¿¡ º¹»çÇÏ´Â °úÁ¤À» º¸°ÚÀ¾´Ï´Ù. ¾Õ¼­ con_table ¿¡´Â ³»ºÎ¹öÆÛÀÇ segment,offset,±×¸®°í size °¡ ±â·ÏµÇ¾î ÀÖÀ¸¹Ç·Î vgbuff ÀÇ ÁÖ¼Ò°¡ ±â·ÏµÈ vgseg,vgoff ¿¡¼­ ÀÌ con_table ¿¡¼­ ãÀº ³»ºÎ¹öÆÛÀÇ ÁÖ¼Ò·Î movedata ¸í·ÉÀ¸·Î Àü¼ÛÇÏ¸é µÇ´Â °ÍÀÔ´Ï´Ù. Áï ´ÙÀ½°ú °°ÀÌ µË´Ï´Ù. void hgVSaveBuffCON(VMEM *p) { int i; i=findcontable(p->logichandle); movedata(vgseg,vgoff,con_table[i].segment,con_table[ i].offset,con_table[i].size); } findcontable ÇÔ¼ö´Â ¾Õ¼­ ³ª¿Ô¾úÁö¸¸ logichandle °ªÀ¸·Î con_table À» ÂüÁ¶ÇÒ ¼ö ÀÖ°Ô ÇØÁÖ´Â ÇÔ¼öÀÔ´Ï´Ù. »ç¿ëÀÚ´Â VMEM * ÇüÀÇ Æ÷ÀÎÅÍ,Áï logichandle,devicetype À» ¸â¹ö·Î ÇÏ´Â ±¸Á¶ ü Æ÷ÀÎÅ͸¦ °¡Áö°í ³í¸®ÀûÀÎ °ü¸®¸¦ ÇÏ°Ô µÇ¹Ç·Î º° ½Å°æÀ» ¾µ ÇÊ¿ä´Â ¾ø°ÚÀ¾´Ï´Ù. ±× ´ÙÀ½Àº conbuff,Áï ³»ºÎ ¹öÆÛ¿¡¼­ ´Ù½Ã vgbuff ·Î ¿Å°ÜÁÖ´Â ÇÔ¼öÀÔ´Ï´Ù. ÀÌ°Í ¿ª½Ã logichandle ÀÇ ÂüÁ¶·Î ÇØ°áÇÒ ¼ö ÀÖ°ÚÀ¾ ´Ï´Ù. ´ÜÁö Àü¼Û¹æÇ⸸ÀÌ ¹Ù²î¾úÀ» »ÓÀÔ´Ï´Ù. void hgVSetBuffCON(VMEM *p) { int i; i=findcontable(p->logichandle); movedata(con_table[i].segment,con_table[i].offset,vg seg,vgoff,con_table[i].size); } Conventional Memory ÀÇ °æ¿ì vgbuff ¿Í °°Àº ¹æ¹ýÀ¸·Î °ü¸®°¡ °¡´ÉÇϹǷΠSwapping ÀÌ ¹«Ã´ °£´ÜÇÏ´Ù´Â °ÍÀ» ¾Ë ¼ö ÀÖÀ¾´Ï´Ù. ÇÏÁö¸¸ Table ¿¡ ÀÇÇÑ Ã³¸®¹æ¹ý,LogicHandle ±â·Ï¹ýµîÀº ´Ù¸¥ ÇÔ ¼ö,Áï EMM °ú HardDisk ¸¦ ´Ù·ç´Â ÇÔ¼ö¿¡¼­µµ µ¿ÀÏÇÏ´Ï Àß º¸½Ç ÇÊ¿ä°¡ ÀÖÀ» °ÍÀÔ´Ï´Ù. ±×¸®°í »ç½Ç ÇÁ·Î±×·¥À» ÇÏ´Ùº¸¸é HardDisk ¿Í °°Àº Device ´Â FileWrite,FileRead ¿¡ ÀÇÇÑ Swapping À» Çϱ⠶§¹®¿¡ ¾ÈÀü¼ºÀÌ ¶Ù¾î³ªÁö¸¸ Memory Allocation ¿¡ ´ëÇÑ °ÍÀº »ó´çÈ÷ ¼¼½ÉÇÑ ÁÖÀǸ¦ ±â¿ï¿©¾ß¸¸ ÇÕ´Ï ´Ù. Conventional Memory ¿Í °°Àº °ÍÀº Å« ÇÁ·Î±×·¥¿¡¼­´Â Á¶±Ý ¸¸ À߸ø½áµµ..(¿¹¸¦ µé¸é ³¡ºÎºÐÀÌ 0 ÀÌ ¾Æ´Ñ ½ºÆ®¸µÀ» strcpy Çß´ÙµçÁö..) ±Ý¹æ ÄÄÀÌ ´Ù¿îµÇ°í ¸¿´Ï´Ù. EMM Àº Conventional Memory º¸´Ù´Â ¾ÈÁ¤ÇÑ°Í °°Áö¸¸ (Àû¾îµµ Á¦ Å×½ºÆ®¿¡¼­´Â) ±× Á¦ ¾î°¡ CM º¸´Ù´Â ÈξÀ º¹ÀâÇϱ⠶§¹®¿¡ ´Ù·ç±â ¾î·Æ´Ù´Â ´ÜÁ¡ÀÌ ÀÖÁÒ. ±×·³. CM °ü¸® ºÎºÐÀ» ¸ðµÎ ¸¶Ä¡°í ´ÙÀ½¿¡´Â HardDisk °ü ¸®ºÎºÐÀ» ÇÁ·Î±×·¡¹ÖÇغ¸µµ·Ï ÇÏ°ÚÀ¾´Ï´Ù. Ç㸣¹Ì...