Á¦¸ñ : - Hard Disk °ü¸® ¾È³çÇϼ¼¿ä Ç㸣¹ÌÀÔ´Ï´Ù. ¿À´ÃÀº V.System ÀÇ µÎ¹ø° ºÎºÐÀÎ HardDisk ¸¦ ÀÌ¿ëÇÏ´Â ºÎºÐÀ» ¾Ë¾Æº¸µµ·Ï ÇÏ°ÚÀ¾´Ï´Ù. º¸ Åë ¿ì¸®´Â Disk-Based Editor ¶ó´Â ¸»À» ¸¹ÀÌ µè½À´Ï´Ù. ¿©±â¼­ Disk-Based ¶ó´Â ¸»Àº Disk ¸¦ ´ë»óÀ¸·Î ÆíÁýÀ» ÇÑ´Ù´Â ¶æÀÔ´Ï ´Ù. µû¶ó¼­ Memory-Based Only ¿¡ ºñÇؼ­ ÈξÀ ³ÐÀº °ø°£À» »ç¿ë ÇÒ ¼ö ÀÖ°Ô µÇ´Â °ÅÁÒ. ´ë½Å ¼Óµµ°¡ ¸¹ÀÌ ¶³¾îÁö´Â °ÍÀ» °¨¼öÇØ ¾ß ÇÕ´Ï´Ù. °¡Àå ÁÁÀº °ÍÀ̶ó¸é ¾öû³ª°Ô Å« ¸Þ¸ð¸®¸¦ »ç¿ëÇÏ´Â °ÍÀÌÁö¸¸ ¿ª½Ã ¸Þ¸ð¸®»çÁ¤ÀÌ º°·Î ÁÁÁö ¾Ê´Ù¸é Çϵåµð½ºÅ©¸¸À» ½º¿þÇÎ ¿µ¿ªÀ¸·Î ¾µ ¼ö ¹Û¿¡´Â ¾øÁÒ. Çϵåµð½ºÅ©´Â ±× ¿ë·®ÀÌ ¸Þ ¸ð¸®¿Í ºñ±³ÇÒ¶§ ¾öû³ª°Ô Å®´Ï´Ù. ¶ÇÇÑ ¿äÁîÀ½ÀÇ ´ë¿ë·®Çϵåµð ½ºÅ©µéÀº µð½ºÅ© ij½¬¿Í ´õºÒ¾î »ç¿ëÇÒ¶§ ±× ¼Óµµ°¡ »ó´çÈ÷ ºü¸£ ¹Ç·Î ½º¿þÇοµ¿ªÀ¸·Î ±×¸® ºÎÁ·ÇÏÁö´Â ¾Ê½À´Ï´Ù. V.System ¿¡¼­ ÀÇ ¿ì¼±¼øÀ§´Â °¡Àå ³·Áö¸¸ (Conven. > EMM > HardDisk) 286 À» »ç¿ëÇÏ°í EMM À» º°·Î »ç¿ëÇÏÁö ¸øÇÑ´Ù¸é HardDisk ¸¦ ¸¹ÀÌ »ç¿ë ÇÏ°Ô µÉ °ÍÀÔ´Ï´Ù. Àú¹ø °­Á¸¦ ÀÚ¼¼È÷ Àо½Å ºÐÀ̶ó¸é HardDisk °ü¸®ºÎºÐÀ» ÀÌ ÇØÇϴµ¥ º° ¹«¸®°¡ ¾øÀ»°Ì´Ï´Ù. ¿Ö³ÄÇÏ¸é »ç½Ç °ÅÀÇ °°´Ù°í º¸ ¸é µË´Ï´Ù. ÀÌ°ÍÀº Àü¿ª¹öÆÛ¿Í LogicHandle ÀÇ µµÀÔÀ¸·Î Resource °£ÀÇ Â÷À̸¦ ÁÙÀ̱â À§ÇØ ³ë·ÂÇ߱⠶§¹®ÀÔ´Ï´Ù. ºñ½ÁÇÑ ±¸Á¶ÀÇ Table À» »ç¿ëÇϸç À̵éÀº LogicHandle ¿¡ ÀÇÇؼ­ ÂüÁ¶µË ´Ï´Ù. ´Ù¸¸ Swapping ÇÒ¶§ È­ÀÏ·Î ¾ï¼¼½º ÇÑ´Ù´Â °ÍÀÌ ´Ù¸¨´Ï´Ù. ±×·³ ÇϳªÇϳª »ìÆ캸°ÚÀ¾´Ï´Ù. ¿ì¼± LogicHandle °ú È®º¸¿µ¿ªÀ» ÀúÀåÇϱâ À§ÇÑ Table À» Á¤ÀÇÇØ¾ß ÇÕ´Ï´Ù. ±× Table ÀÇ ±¸Á¶´Â ´ÙÀ½°ú °°½À´Ï´Ù. /* buff number limit */ #define MAX_HARD_BUFF 100 byte hardfile[MAX_HARD_BUFF][12]; int hardpos=0; /* init pos */ struct hard { int logichandle; unsigned size; } hard_table[MAX_HARD_BUFF] = { {0,0}, }; Áï »ç¿ëÀÚ°¡ Çϵ忡 È®º¸ÇÏ°íÀÚ Çϸé Àüü °ü¸®ºÎºÐÀÌ Àû´çÇÑ LogicHandle À» ºÎ¿©ÇÒ °ÍÀÌ°í ±× LogicHandle À» ÀÌ Å×ÀÌºí¿¡ ÀúÀåÇÏ°Ô µÇ´Â °ÍÀÔ´Ï´Ù. CM (Conventional Memory) ºÎºÐ°ú °°ÀÌ Logichandle = 0 ÀÎ ºÎºÐÀº ºñ¾ú´Ù°í °¡Á¤ÇÕ´Ï´Ù. logichandle ·Î Table ¹øÈ£¸¦ ¸®ÅÏÇØÁÖ´Â ÇÔ¼ö´Â ´ÙÀ½°ú °°½À´Ï´Ù. int findhardtable(int logichandle) { int i; for (i=0;itype=HARD; p->logichandle=l; for (i=0;ilogichandle); if (i==-1) return; deletelogichandle((*p)->logichandle); hard_table[i].logichandle=0; /* free */ unlink(hardfile[i]); hardsize+=(unsigned long)hard_table[i].size; free(*p); } ±×·¯¸é ÀÌÁ¦ Swapping Out,Swapping In ÇÔ¼ö¸¸ÀÌ ³²¾ÆÀÖÀ¾´Ï´Ù. ÀÌ ÇÔ¼öµéÀº ¸Å¿ì °£´ÜÇÕ´Ï´Ù. filename,size ÀÌ Á¤ÇØÁ® ÀÖÀ¸¹Ç ·Î Swapping Out ÀÇ °æ¿ì´Â vgbuff ¸¦ filename ÀÇ È­ÀÏ¿¡ size ¸¸Å­ ½áÁÖ¸é µË´Ï´Ù.¿©±â¿¡¼­´Â Turbo-C ÀÇ Ç¥ÁØÇÔ¼öÀÎ fwrite ¸¦ »ç¿ëÇßÀ¾´Ï´Ù.fopen ÇÒ¶§ wb ¸ðµå¸¦ »ç¿ëÇÏ¿© Binary ·Î Open À» ÇÑ°ÍÀ» ÁÖÀÇÇØ º¸¼¼¿ä. V.System Àº ±âº»ÀûÀ¸·Î ¹ÙÀÌÆ® Æ÷ÀÎ ÅÍ,Áï unsigned char * ÇüÀÇ Àü¿ª¹öÆÛ¸¦ ´Ù·ç¹Ç·Î Binary Mode ·Î Open Çؾ߸¸ ÇÕ´Ï´Ù. void hgVSaveBuffHARD(VMEM *p) { int i; FILE *fpt; i=findhardtable(p->logichandle); fpt=fopen(hardfile[i],"wb"); fwrite(vgbuff,hard_table[i].size,1,fpt); fclose(fpt); } Swapping In ÀÇ °æ¿ì´Â fread ¸¦ »ç¿ëÇÕ´Ï´Ù. *fpt; i=findhardtable(p->logichandle); fpt=fopen(hardfile[i],"rb"); fread(vgbuff,hard_table[i].size,1,fpt); fclose(fpt); } ±×·³ HardDisk ¿¡ ´ëÇؼ­ Swapping In,Swapping Out À» ÇÒ ¼ö ÀÖ °Ô µÇ¾úÀ¾´Ï´Ù. Âü°í·Î Çö Disk ÀÇ ³²Àº ¿ë·®À» ¾Ë¾Æ³»´Â ÇÔ¼ö¸¦ º¸°ÚÀ¾´Ï´Ù. ÇÔ¼öÁßÀÇ hardflag ´Â hardflag=getdisk()-1; ·Î Á¤ÀǵǴ °ªÀÔ´Ï´Ù. unsigned long hgVGetFreeHARD() { struct dfree dsk; unsigned long size; getdfree(hardflag+2,&dsk); size=(unsigned long) dsk.df_avail * dsk.df_sclus * dsk.df_bsec; return size; } ±×·³ ÀÌÁ¦ °¡Àå ´Ù·ç±â°¡ ¾î·Á¿ì¸é¼­µµ V.System ÀÇ ÇÙ½ÉÀÎ EMM ºÎºÐÀÌ ³²¾ÒÀ¾´Ï´Ù. ¿ø·¡ ÀÌ ºÎºÐÀº LIM 4.0 Ç¥ÁØÀ» ¼³¸íÇØ ³õÀº ±âÇÑÀç¿¡¼­ ³ª¿Â 'È®Àå¸Þ¸ð¸® »ç¿ë¹ý' À̶ó´Â Ã¥ÀÇ EMS function À» »ç¿ëÇÏ¿´±â ¶§¹®¿¡ EMS function ¿¡ ´ëÇÑ ¼³¸íÀÌ ¸ÕÀú µû¶ó¾ß ÇÒ °ÍÀÔ´Ï´Ù. ¶ÇÇÑ Low-level System ¿¡¼­ÀÇ ¾ÈÁ¤¼ºÀ» À§Çؼ­ ó À½¿¡ ¼³°èÇß´ø ±â´ÉÀ» ¸¹ÀÌ Ãà¼ÒÇ߱⠶§¹®¿¡ EMS ÀÇ ÀåÁ¡À» ÃÖ´ë ·Î »ì·È´Ù°í´Â ¸»ÇÒ¼ö ¾øÀ¾´Ï´Ù¸¸ EMS ¿¡ ´ëÇؼ­ ¾Ë¾Æº»´Ù´Â °Í Àº ³ª¸§´ë·Î ¶æÀÌ ÀÖÀ¸¸®¶ó »ý°¢ÇÕ´Ï´Ù. ±×·³..Ç㸣¹Ì.