============================================================== Á¦¸ñ : º¸È£¸ðµå ÇÁ·Î±×·¡¹Ö°ú ¿î¿µÃ¼Á¦ÀÇ °³¹ß ¿øÀúÀÚ : Jeff Thompson(Mythrandir) ÀÛ¼ºÀÚ : edward ÀÛ¼ºÀÏÀÚ : 2003. 08. 02 ºÐ¼®¹×¹ø¿ª: edward_frswz ºÐ¼®¹öÁ¯ : ver 0.0.1 ¶óÀ̼¾½º : GPL ȨÆäÀÌÁö : http://OSx86.ORG or http://osx86.org ============================================================== ======================================================= - Áغñ¹° - ¿ä±¸Áö½Ä ¸®¾ó¸ðµå¿Í º¸È£¸ðµåÀÇ ±âº»ÀûÀÎ Áö½Ä x86 ¾î¼Àºí¸® ¾ð¾î ±âÃÊ Æ²¸° ³»¿ëÀ̳ª ÀÌ»óÇÑ ³»¿ëÀº ¹Ù·Î ¸ÞÀÏ·Î ¾Ã¾îÁÖ¼¼¿ä. Á¦°¡ °ËÁõ ÈÄ ¹Ù·Î °íÃļ­ ¾÷µ¥ÀÌÆ® ÇϰڽÀ´Ï´Ù. email : osx86@osx86.org ======================================================= 0-A. ±ÛÀ» ½ÃÀÛÇϱ⿡ ¾Õ¼­ ... ³ª´Â ´ë·« µÎ´ÞÀü¿¡ ¿î¿µÃ¼Á¦ °³¹ß¿¡ ´ëÇØ ¸Ç¶¥¿¡¼­ºÎÅÍ ¹è¿ì±â ½ÃÀÛÇØ¾ß°Ú´Ù°í °á½ÉÀ» Çß½À´Ï´Ù. ÇÏÁö¸¸ ÀÌ°Ô Ã³À½Àº ¾Æ´ÏÁÒ. 2³âÁ¤µµ ÀüºÎÅÍ Áö±Ý±îÁö ¿î¿µÃ¼Á¦ °³¹ß¿¡ °ü¿©Çϰí ÀÖ¾úÁö¸¸ Ç×»ó ÀÌ¹Ì Á¸ÀçÇÏ´ø ¿î¿µÃ¼Á¦¸¦ »ç¿ëÇÑ ÀÛ¾÷À̾ú½À´Ï´Ù. ±×µ¿¾È µå¶óÀ̹ö ¸ðµ¨¿¡ ´ëÇØ ¹èȸÇϰí, ½ºÆ®¸² ±¸Çö¿¡ ´ëÇØ ÇØµ¶ÇÏ´Â °ÍµéÀ» Çß¾úÁÒ. ÇÏÁö¸¸ µå¶óÀ̹ö ¸ðµ¨Àº ÁÁ¾Ò°í, ¾ÏÈ£ÇØµ¶Àº Á¤¸» ½Ã·¯ÇÕ´Ï´Ù. (% edward : ¹º°¡ ¸ð¸¦ ¿øÇÑÀÌ ´À²¸Áö´Â hate ´Â Àß ¾È¾²´Âµ¥ -_-;; ¿©Æ° ¹¹ ½Å¼±ÇÏ°í »õ·Ó°Ô ÇØº¸°í½Í´Ù³×¿ä ) ÀÌ ±ÛÀº ¿ì¼± ¿î¿µÃ¼Á¦ °³¹ß¿¡ ´ëÇÑ ½ÃÇèÀ» ÇÏ´Â ´Ü°è¿¡¼­ ½ÃÀÛÇÕ´Ï´Ù. À̱ÛÀÇ ÁÖµÈ ÃÊÁ¡Àº ¾ÆÁÖ Á¶±×¸¶ÇÑ Ä¿³ÎÀ» ÅëÇØ ½Ã½ºÅÛÀ» º¸È£¸ðµå·Î ¸¸µé°í µ¿ÀÛÇÏ°Ô ÇÏ´Â °ÍÀϰ̴ϴÙ. ³ª´Â °è¼ÓÀûÀ¸·Î ³ª¸¸ÀÇ ¿î¿µÃ¼Á¦ÀÇ µðÀÚÀÎÀ» ¹Ù·¨½À´Ï´Ù. .. (% edward : Àǹ̾ø´Ù »ý°¢µÇ¾î »ý·«Çß½À´Ï´Ù. ¼­µÎ°¡ ¹«Ã´À̳ª ±æ±º¿ä) 0-B. °£·«ÇÑ ¼Ò°³ ÀÌ ¹®¼­¸¦ Àд µ¶ÀÚµéÀº ¾î´ÀÁ¤µµ ·¹º§ÀÇ ´ÙÀ½°ú °°Àº Áö½ÄÀ» °®Ãß°í ÀÖ´Ù°í °¡Á¤ÇÏ°í ¾²¿©Áø °ÍÀÔ´Ï´Ù. ±× Áö½ÄÀº c ¿Í ¾î¼Àºí¸® ¾ð¾î ÇÁ·Î±×·¡¹Ö, ±×¸®°í x86 ¾ÆÅ°ÅØÃÄÀÔ´Ï´Ù. GuildOS °³¹ßÀ» À§ÇØ ÇÊ¿äÇÑ °ÍµéÀº ´ÙÀ½°ú °°½À´Ï´Ù. (% edward : ÇÊÀÚÀÇ ´õ¹Ì OS ÀÎ µí ..) ====================================================================== ELF ÄÄÆÄÀÏ·¯ : Àú´Â gnu ÀÇ ¸®´ª½º ±â¹Ý ELF ÄÄÆÄÀÏ·¯¸¦ »ç¿ëÇß½À´Ï´Ù. ÀÌ´Â ´Ù¸¥ ½Ã½ºÅÛ¿¡¼­ ELF Å©·Î½º ÄÄÆÄÀÏ·¯ÀÇ »ç¿ëÀÌ °¡´ÉÇÕ´Ï´Ù. a386 ¾î¼Àºí·¯ : Á¤¸» ¸ÚÁø ¾î¼Àºí·¯ÀÔ´Ï´Ù. ¶ÇÇÑ ºÎÆ®·Î´õ ¾î¼Àºí¸® Äڵ带 ´Ù¸¥ ¾î¼Àºí·¯¿ëÀ¸·Î º¯È¯µµ °¡´ÉÇÏÁö¿ä. 486+ ¸Ó½Å : OS¸¦ À§ÇÑ Å×½ºÆ®¸¦ ÇϱâÀ§ÇØ ¸Ó½ÅÀº ¹Ýµå½Ã ÀÖ¾î¾ß °ÚÁÒ. (% edward : ¹¹ ²À ±×·¸Áö´Â ¾ÊÁö¸¸ ±×·¸´Ù°í ÇØµÎÁÒ.) ====================================================================== ¾Æ·¡ÀÇ ¹®¼­µéÀ» ÀÐ¾î µÎ´Â°Íµµ ÁÁÀ¸¸®¶ó »ý°¢µË´Ï´Ù. : Protected Mode Software Architecture by Tom Shanley from MindShare, Inc. ISBN 0-201-55447-X $29.95 US ÀÌ Ã¥Àº x86 ±â¹ÝÀÇ º¸È£¸ðµå ¾ÆÅ°ÅØÃÄ¿¡ ´ëÇØ ´Ù·ç°í ÀÖÀ¸¸ç, ¸®¾ó ¸ðµå¿Í º¸È£¸ðµå ÇÁ·Î±×·¡¹ÖÀÇ Â÷ÀÌ¿¡ ´ëÇØ¼­µµ ¼³¸íÇϰí ÀÖÁö¿ä. ¶ÇÇÑ ÀÌ Ã¥Àº ÀÎÅÚ ¿î¿µÃ¼Á¦ °³¹ßÀÚ °¡À̵åÀÇ ¿ªÇÒµµ ÇÒ ¼ö ÀÖ½À´Ï´Ù. (% edward : ÀÌ Ã¥¿¡ ´ëÇØ¼­´Â ´ë°³ »ó¹ÝµÈ ÀǰßÀ» °®°í ÀÖ´õ±º¿ä. ÆäÀÌÁö¿¡ ºñÇØ ¹æ´ëÇÑ ¹üÀ§¸¦ ¼³¸íÇÏ·ÁÇÑ´Ù. ¶ó´Â°Í°ú ÀÎÅÚ ¸Þ´º¾óÀ» À籸¼ºÇسõ¾Ò´Ù´Â ȤÆòÀÌ ÀÖ´õ±º¿ä.) Developing Your Own 32-Bit Operating System by Richard A. Burgess from SAMS Publishing. ISBN 0-672-30655-7 ÀÌ Ã¥Àº 32 ºñÆ® OSÀÇ ÀüüÀûÀÎ °³¹ß¿¡ ´ëÇØ ´Ù·ç°í ÀÖÀ¸¸ç, ÀúÀÚ´Â ÀÚ½ÅÀÇ 32ºñÆ® ¾î¼Àºí·¯¿Í ÄÄÆÄÀÏ·¯ ¶ÇÇÑ ¸¸µì´Ï´Ù. »ó´çÈ÷ ¸¹Àº ºÎºÐÀÌ ¾î¼Àºí¸® ¾ð¾î·Î ÀÛ¼ºµÇ¾úÁö¸¸ ¿©ÀüÈ÷ C´Â ¾²°í ÀÖÁÒ. (% edward : À§ÀÇ Ã¥Àº ÀýÆÇ µÇ¾ú½À´Ï´Ù. ±× ÈļÓÀ¸·Î ³ª¿Â°Ô MMURTL ÀÌÁÒ. ÀúÀÚµµ °°½À´Ï´Ù. Richard A. Burgess ·Î ¸»ÀÔ´Ï´Ù.) ±× ¿Ü¿¡µµ ÀÎÅÚ ¾ÆÅ°ÅØÃÄ ½Ã¸®Áî Àüü¿Í ÀÎÅÚ OS °³¹ßÀÚ °¡À̵å´Â ±×µéÀÇ À¥»çÀÌÆ®¿¡¼­ ¹«·á·Î Á¦°øµÇ°í ÀÖ½À´Ï´Ù. Á¦ 1Àå - º¸È£¸ðµå·ÎÀÇ ºÎÆÃ x86 ¾ÆÅ°ÅØÃÄ¿¡¼­ ¿î¿µÃ¼Á¦ ¼Â¾÷ÀÇ Ã¹¹øÂ° ´Ü°è´Â ¸Ó½ÅÀ» º¸È£¸ðµå·Î ÀüȯÇÏ´Â °ÍÀÔ´Ï´Ù. º¸È£¸ðµå´Â ¿î¿µÃ¼Á¦ ·¹º§ÀÇ º¸¾ÈÀ» Á¦°øÇϱâ À§ÇÑ Çϵå¿þ¾î º¸È£ °³³äÀÇ »ç¿ëÀ» µµ¿ÍÁØ´Ù. ³»°¡ °¡Àå ¸ÕÀú ½ÃÀÛÇß´ø ºÎÆ® ·Î´õ´Â JeffOS/loader/first ¿¡ ÀÖ´Ù. ù ÀÛ¾÷ÀÎ ºÎÆ®·Î´õ´Â Ç÷ÎÇÇÀÇ Ã¹¹øÂ° ¼½ÅÍ¿¡ À§Ä¡ÇÏ°Ô µÇ¾ú°í, °¢°¢ÀÇ ¼½ÅÍ´Â 512 ¹ÙÀÌÆ®·Î ÀÌ·ç¾îÁ® ÀÖ´Ù. ÇÏÁö¸¸ º¸È£¸ðµå·Î ºÎÆ®½Ã۱âÀ§ÇØ ÇÊ¿äÇÑ Äڵ带 ÀûÀç½Ã۱â À§ÇÑ °ø°£ Ä¡°í´Â Çù¼ÒÇÏ´Ù. µû¶ó¼­ ³ª´Â ºÎÆ®·Î´õ¸¦ µÎ°³ÀÇ ÆÄÆ®·Î ³ª´©¾ú´Ù. ±×°ÍÀÌ first stage ¿Í second stage ÀÌ´Ù. (% edward : first stage ¿Í second stage ´Â ¹¹ Ưº°ÇÑ Àǹ̰¡ Àִٱ⺸´Ü ÀڱⰡ ºÎÆ®·Î´õ¸¦ µÎ ÆÄÆ®·Î ³ª´³´Âµ¥ ±×Áß ¼±Çà µÇ¾î¾ß ÇÒ°ÍÀÌ first °í ¸ðÀÚ¶õ °ø°£¶§¹®¿¡ Á¡ÇÁÇÒ Äڵ尡 second ¶ó´Â ¸»À̰ÚÁö¿ä. ;-p ) (% edward : Âü°í·Î ÀúÀÚÀÇ È¨ÆäÀÌÁö°¡ ¾ø¾îÁ³´õ±º¿ä. Çϱä 5³âÀÌ Áö³µÀ¸´Ï ±×·¡¼­ Á¦°¡ À¥¿¡¼­ JeffOS ¸¦ ã¾Æ¼­ ¸µÅ© ÇØµÎ¾ú½À´Ï´Ù. URL : http://www.osx86.org/data/ossrc/jeffos/JeffOS[ver0.1].tgz Àú ÆÄÀÏÀ» ¿­¾î¼­ ¾ÐÃàÀ» Ç®°ÔµÇ¸é /loader/first ¿Í /loader/second °¡ ÀÖ´ä´Ï´Ù. ±×¸®°í ±× ¾ÐÃàÆÄÀÏÀÇ Å©±â ¶ÇÇÑ 30KB ¹Û¿¡ µÇÁö ¾Ê´õ±º¿ä. ) POST(Power On Self-Test) ÈÄ¿¡ ù¹øÂ° ¼½ÅÍ´Â ¸Þ¸ð¸® À§Ä¡ 0000:7C00 À¸·Î ·ÎµåµÇ°í, Ç÷ÎÇÇ ºÎÆ® ·Î´õÀÇ first stage´Â ½ÇÇàµÇ¾î¾ß ÇÒ ¸ðµç ÆÄÀϵéÀ» ¸Þ¸ð¸®·Î ·ÎµåÇϰԲû µðÀÚÀÎ µÇ¾úÀ¸¸ç, ºÎÆ®·Î´õÀÇ Ã¹¹øÂ° ¸í·ÉÀº ºÎÆ® ÄÚµå·Î Á¡ÇÁÇ϶ó´Â °ÍÀÌ´Ù. ÇÏÁö¸¸, jump ÄÚµå¿Í ºÎÆ® ÄÚµå »çÀÌ¿¡´Â ¸î°¡Áö ÀڷᱸÁ¶°¡ ÀÖ´Ù. ÀÌ Áß Ã¹¹øÂ° ¼½¼ÇÀº µð½ºÅ© ÆÄ¶ó¸ÞÅÍÀÌ´Ù. ÇöÀç µð½ºÅ© ÆÄ¶ó¸ÞÅÍ¿¡ ´ëÇÑ Á¤º¸¸¦ »ç¿ëÇÏÁö ¾ÊÁö¸¸ ´ÙÀ½ ¹öÁ¯À» À§ÇÑ °ÍÀÌ´Ù. ´ÙÀ½ ±¸Á¶ÀÇ ÁýÇÕÀº Ç÷ÎÇÇ µð½ºÅ©ÀÇ ´Ù¸¥ µ¥ÀÌÅÍ ÆÄÀÏ¿¡ ´ëÇÑ Á¤º¸ÀÌ´Ù. °¢°¢ÀÇ ±¸Á¶´Â ¾î¼Àºí¸® ó·³ º¸ÀδÙ. ========================================================================= #(%edward : ¾Æ·¡ °ÍµéÀÌ AP ·Î ½ÃÀÛÇÑ´Ù ÇÏ¿© APxx ¶ó°í ¼³¸íÇϰí ÀÖ½À´Ï´Ù.) APCX DW 0000h ; ÀÎÅÍ·´Æ® 13h ¹ÙÀÌ¿À½º ·çƾÀ» À§ÇÑ CX °ª APDX DW 0000h ; DX °ª APES DW 0000h ; ES °ª APBX DW 0000h ; BX °ª APSZ DB 0h ; ÀоîµéÀ̰íÀÚ ÇÏ´Â ¼½ÅÍÀÇ ¹øÈ£ APSZ2 DB 0h ; »ç¿ëµÇÁö ¾ÊÀ½ ========================================================================= (% edward : APxx ¸¸ ÀÖ´Â°Ô ¾Æ´Ï¶ó BPxx, CPxx, DPxx ±îÁö ÀÖ½À´Ï´Ù.) ÀÎÅÍ·´Æ® 13h ¹ÙÀÌ¿À½º ÄÝÀº ´ÙÀ½°ú °°Àº ÀÎÀÚ¸¦ °®´Â´Ù. (% edward : Ưº°È÷ argument¿Í parameter ¸¦ ´Ù¸¥ Àǹ̷Π¼³¸íÇÏÁö´Â ¾Ê°Ú½À´Ï´Ù. ¾ÕÀ¸·ÎÀÇ ¹®¼­µµ ¸¶Âù°¡ÁöÀÔ´Ï´Ù.) ======================================================= ch: Àб⠽ÃÀÛÇÒ ½Ç¸°´õ ¹øÈ£ cl: ½ÃÀÛ ¼½Å͹øÈ£ dh: Àб⠽ÃÀÛÇÒ µå¶óÀ̺ê Çìµå ¹øÈ£ (1.44M Ç÷ÎÇÇ µð½ºÅ© µå¶óÀ̺ê´Â 00h ¶Ç´Â 01h ) dl: µå¶óÀÌºê ¹øÈ£(µð½ºÅ© A = 00h) es: ¼½Å͸¦ Àоî ÀúÀåÇÒ ¼¼±×¸ÕÆ® bx: ¼½Å͸¦ Àбâ À§ÇÑ ¼¼±×¸ÕÆ®ÀÇ ¿É¼Â ah: ÀоîµéÀ̱â À§ÇÑ ¼½ÅÍ ¹øÈ£ al: ÀÎÅÍ·´Æ® 13h ÇÔ¼ö ¹øÈ£ (02h = µð½ºÅ©·Î ºÎÅÍ ÀÐ¾î µéÀ̱â À§ÇÑ ÇÔ¼ö¹øÈ£) ======================================================= ³ª´Â second stage ºÎÆ® ·Î´õ¸¦ ·ÎµåÇϱâÀ§ÇØ APxx »ç¿ëÇϰí, BPxx ´Â first stage Ä¿³Î ·Î´õ¸¦ ·ÎµåÇϱâÀ§ÇØ »ç¿ëÇß°í, CPxx ´Â °£´ÜÇÑ À¯Àú ÇÁ·Î±×·¥À» ·ÎµåÇϱâÀ§ÇØ »ç¿ëÇϸç, DPxx ´Â Ä¿³ÎÀ» ·ÎµåÇϴµ¥ »ç¿ëÇß½À´Ï´Ù. ´ÙÀ½¿¡ ³ª¿À´Â ·Î´õÀÇ ±¸Á¶´Â Àӽà µ¥ÀÌÅÍ ÀúÀå¿¡ »ç¿ëµÇ´Â µÎ°³ÀÇ unused byte·Î ÀÌ·ç¾îÁö´Âµ¥, SIZE(APSZ) ´Â »ç¿ëµÇÁö¸¸ SIZE2(APSZ2) ´Â ÇöÀç »ç¿ëµÇÁö ¾Ê½À´Ï´Ù. ºÎÆ® ÄÚµå´Â ÀÌ·¯ÇÑ ±¸Á¶¸¦ °¡Áö¸ç, ÀÌ ºÎÆ® ÄÚµå´Â ½º½º·Î¸¦ ¸Þ¸ð¸®ÀÇ ´Ù¸¥ ¼½¼Ç (¼±ÇüÁÖ¼Ò °ø°£ 9000:0000 ¶Ç´Â 90000h)À¸·Î ½º½º·Î Àç¹èÄ¡ ½Ã۴µ¥, ÀÏ´Ü Àç¹èÄ¡µÇ°í ³ª¸é, ºÎÆ® ÄÚµå´Â ¸Þ¸ð¸®¿¡ ¸ðµç ÆÄÀÏÀ» ·ÎµåÇϰí, second stage ºÎÆ® ·Î´õÀÇ ½ÃÀÛÁ¡À¸·Î Á¡ÇÁÇÕ´Ï´Ù. second stage ºÎÆ® ·Î´õÀÇ Ã¹¹øÂ° ºÎºÐÀº GDT(Global Decriptor Table) ¿£Æ®¸®¸¦ ½±°Ô Á¤ÀÇÇϴµ¥ »ç¿ëµÉ ¸ÅÅ©·ÎµéÀ» Æ÷ÇÔÇϰí ÀÖ½À´Ï´Ù. º¸È£ ¸ðµå¿¡¼­ GDT´Â ¼¿·ºÅÍ¿¡ Á¤º¸¸¦ ÀúÀåÇϴµ¥ »ç¿ëµÇ¸ç º¸È£ ¸ðµå¿¡¼­ ¼¿·ºÅÍ´Â ¾î¶² ¼¼±×¸ÕÆ® ·¹Áö½ºÅÍ¿¡ ÀúÀåµÈ ¹øÈ£¿¡ ÀÇÇØ ÂüÁ¶µÇ°Ô µÇ¸ç, ¼¿·°ÅÍ´Â ´ÙÀ½°ú °°Àº Çü½ÄÀ» °®½À´Ï´Ù. ============================================ ºñÆ® ¿ëµµ -------------------------------------------- 15 - 3 µð½ºÅ©¸³ÅÍ Å×À̺í À妽º 2 Å×À̺í Áö½ÃÀÚ(TI) 1 - 0 ¿ä±¸ Ư±Ç ·¹º§(RPL) ============================================ µð½ºÅ©¸³ÅÍ Å×À̺í À妽º ¶Ç´Â (DT)´Â GDT ¿¡ ´ëÇÑ À妽ºÀÔ´Ï´Ù. GDT ÀÇ Ã¹ ¹øÂ° ¿£Æ®¸®´Â 00h ÀÌ¸ç µÎ ¹øÂ°´Â 08h, ±× ´ÙÀ½Àº 10h ¿Í °°ÀÌ µÇ´Âµ¥, GDT ÀÇ ¿£Æ®¸®°¡ ÀÌ¿Í °°Àº Çü½ÄÀ¸·Î ÁøÇàµÇ´Â°ÍÀº Àû¾îµµ 3°³ÀÇ LSB °¡ ´Ù¸¥ Á¤º¸¸¦ À§ÇØ »ç¿ëµÇ±â ¶§¹®ÀÔ´Ï´Ù. ±×·¡¼­ GDT ¿¡ ´ëÇÑ À妽º¸¦ ã±â À§Çؼ­´Â Segment & 0xfff8 (DT = Selector & 0xfff8) ¿Í °°Àº °ø½ÄÀ» »ç¿ëÇØ¾ß ÇÕ´Ï´Ù. Å×À̺í Áö½ÃÀÚ(TI) ´Â ¿©·¯ºÐÀÌ GDT ȤÀº LDT(Local Descriptor Table) Áß ¾î¶² °ÍÀ» ¼±ÅÃÇÒ Áö¸¦ °áÁ¤ÇÏ°Ô µË´Ï´Ù. ³ª´Â ¾ÆÁ÷±îÁö LDT ¸¦ »ç¿ëÇØ¾ßÇÒ ÀÌÀ¯°¡ ¾ø¾ú±â ¶§¹®¿¡ ÀÌ¿¡ ´ëÇØ¼­´Â ¾ð±ÞÇÏÁö ¾ÊÀ» °ÍÀ̹ǷΠ¿©·¯ºÐ ½º½º·Î Á¶»çÇØº¸±â ¹Ù¶ø´Ï´Ù. ¸¶Áö¸·À¸·Î ¿ä±¸ Ư±Ç ·¹º§(RPL)Àº ¼¿·ºÅͰ¡ Á¢±ÙÇϱ⸦ ¿øÇÏ´Â ·¹º§ÀÌ ¾î´À°ÍÀÎÁö ÇÁ·Î¼¼¼­¿¡°Ô ¾Ë·ÁÁÖ±â À§ÇØ »ç¿ëµË´Ï´Ù. ==================================================== 0 = ¿î¿µÃ¼Á¦ ·¹º§ 1 = ¿î¿µÃ¼Á¦ ·¹º§(0º¸´Ù ³·Àº Ư±Ç ·¹º§À» °®½À´Ï´Ù.) 2 = ¿î¿µÃ¼Á¦ ·¹º§ (1º¸´Ù ³·Àº Ư±Ç ·¹º§À» °®½À´Ï´Ù.) 3 = »ç¿ëÀÚ ·¹º§ ==================================================== (% edward : RPL ºñÆ® °ª¿¡ ´ëÇÑ ¼³¸íÀÌÁÒ. ¿ø·¡´Â À§¿Í°°ÀÌ 4°¡Áö Ư±Ç ·¹º§À» i386+ ÇÁ·Î¼¼¼­¿¡¼­´Â Áö¿øÇÏÁö¸¸ ¿ì¸®¿Í Ä£¼÷ÇÑ ¸®´ª½º´Â 2°¡Áö Ư±Ç ·¹º§¸¸ »ç¿ëÇÏ´Â °É·Î ±â¾ïµË´Ï´Ù. ±× ¿Ü¿¡µµ ¸¹Àº OS µéÀÌ Àú ¸¹Àº ·¹º§À» ´Ù ºÐ¸®ÇÏ¿© °ü¸® ÇÏÁö´Â ¾ÊÁÒ. ÆäÀÌ¡µµ i386+ ÀÌ Áö¿øÇÏ´Â ¸ðµç ±â´ÉÀ» ¾²Áö´Â ¾ÊÁÒ.) Åë»óÀûÀ¸·Î Çö´ëÀÇ ¿î¿µÃ¼Á¦´Â ·¹º§ 0 ±×¸®°í 3 ¸¸À» »ç¿ëÇϰï ÇÕ´Ï´Ù. (% edward : Àç¼ö·Î ¸ÂÃá°Ç°¡ º¸³×¿ä. ^^;) GDT ¿£Æ®¸®µéÀº ´ÙÀ½°ú °°Àº Çü½ÄÀÇ ´Ù¾çÇÑ ¼¼±×¸ÕÆ® ŸÀÔÀ» ±â¼úÇÕ´Ï´Ù. ============================================= 63 - 56 Base AddressÀÇ »óÀ§ ¹ÙÀÌÆ® 55 Granularity(G) Bit 54 Default Bit 53 0 52 Available for Use (free bit) 51 - 48 ¸®¹ÌÆ®(Limit)ÀÇ »óÀ§ Digit 47 ¼¼±×¸ÕÆ® Present(P) Bit 46 - 45 DPL(Descriptor Privilege Level) 44 System Bit 43 Data/Code Bit 42 Conforming Bit 41 Readable bit 40 Accessed bit 39 - 32 Base Address ¼¼ ¹øÂ° ¹ÙÀÌÆ® 31 - 24 Base Address µÎ ¹øÂ° ¹ÙÀÌÆ® 23 - 16 Base Address ù ¹øÂ° ¹ÙÀÌÆ® 15 - 8 ¸®¹ÌÆ®(Limit)ÀÇ µÎ ¹øÂ° ¹ÙÀÌÆ® 7 - 0 ¸®¹ÌÆ®(Limit)ÀÇ Ã¹ ¹øÂ° ¹ÙÀÌÆ® ============================================= Base Address ´Â (ÄÚµå ¶Ç´Â µ¥ÀÌÅÍ) ¼¼±×¸ÕÆ® µð½ºÅ©¸³ÅÍÀÇ ½ÃÀÛ À§Ä¡ÀÔ´Ï´Ù. ¸®¹ÌÆ®´Â ¹ÙÀÌÆ®ÀÇ ¼ö ¶Ç´Â 4k ÆäÀÌÁöÀÔ´Ï´Ù. ÀÌ ¶§ ¹ÙÀÌÆ® ÀÎÁö 4k page ÀÎÁö´Â Granularity ºñÆ®¿¡ µû¶ó °áÁ¤µË´Ï´Ù. ¸¸¾à Granularity(G) ºñÆ®°¡ 0À̸é limit ´Â ¹ÙÀÌÆ®ÀÇ ±æÀ̸¦ ³ªÅ¸³»°í, G ºñÆ®°¡ 1ÀÌ¸é ¸®¹ÌÆ®´Â 4K ÆäÀÌÁöÀÇ ¼¼±×¸ÕÆ®ÀÇ ±æÀ̸¦ ³ªÅ¸³À´Ï´Ù. Default ºñÆ®´Â ÄÚµå ¼¼±×¸ÕÆ®°¡ 16ºñÆ® ¶Ç´Â 32ºñÆ® ÀÎÁö¸¦ ³ªÅ¸³À´Ï´Ù. Default ºñÆ®°¡ 0 À̸é ÄÚµå ¼¼±×¸ÕÆ®´Â 16ºñÆ®°¡ µÇ°í 1À̸é 32ºñÆ®°¡ µË´Ï´Ù. Present ºñÆ®´Â ¼¼±×¸ÕÆ®°¡ ÇöÀç ¸Þ¸ð¸®¿¡ ÀÖÀ¸¸é 1·Î ¼¼Æ®µÇ¸ç, ÀÌ´Â °¡»ó ÆäÀÌ¡¿¡¼­ »ç¿ëµË´Ï´Ù. DPL Àº RPL °ú ºñ½ÁÇÕ´Ï´Ù. DPL Àº ¼¼±×¸ÕÆ®ÀÇ º¸È£ ·¹º§ÀÌ ¾î´À°ÍÀÎÁö ¾Ë·ÁÁÖ°Ô µÇ´Âµ¥, DPL ÀÇ °ªÀº RPL ÀÇ °ª°ú µ¿ÀÏÇÑ Àǹ̸¦ °®½À´Ï´Ù. (% edward : Ư±Ç·¹º§ÀÌ ³ôÀ½ - 0 < 1 < 2 < 3 - ³·À½ ) System ºñÆ®´Â ¼¼±×¸ÕÆ®°¡ ½Ã½ºÅÛ ¼¼±×¸ÕÆ®¸¦ °®´ÂÁö ¾Ë·ÁÁִµ¥ »ç¿ëµË´Ï´Ù. ¸¸¾à System(OS) ¼¼±×¸ÕÆ®¶ó¸é System ºñÆ®´Â 0 ÀÌ µË´Ï´Ù. data/code ºñÆ®´Â ¼¼±×¸ÕÆ®°¡ code ¼¼±×¸ÕÆ®·Î »ç¿ëµÉ °ÍÀÎÁö data ¼¼±×¸ÕÆ®·Î »ç¿ëµÉ °ÍÀÎÁö¸¦ ¾Ë·ÁÁִµ¥ »ç¿ëµË´Ï´Ù. code ¼¼±×¸ÕÆ®´Â ¾²±â°¡ ºÒ°¡´ÉÇÏ¸ç ½ÇÇàÀ» À§ÇÑ Äڵ忡 »ç¿ëµÇ¸ç data ¼¼±×¸ÕÆ®´Â ½ºÅðú ÇÁ·Î±×·¥ µ¥ÀÌÅÍÀÇ ¿ëµµ·Î »ç¿ëµÉ ¼ö ÀÖ½À´Ï´Ù. ÀÌ´Â À§¿¡¼­ ¹¦»çÇÑ °Í°ú´Â ¾à°£ ´Ù¸£´ä´Ï´Ù. Readable ºñÆ®´Â Á¤º¸¸¦ ¼¼±×¸ÕÆ®·Î ºÎÅÍ ÀÐÀ» ¼ö ÀÖ´ÂÁö ȤÀº ½ÇÇุ °¡´ÉÇÑÁö¸¦ ¾Ë·ÁÁÖ±â À§ÇØ »ç¿ëµË´Ï´Ù. second stage Ç÷ÎÇÇ ºÎÆ®·Î´õÀÇ ´ÙÀ½ ÆÄÆ®´Â A20 Address ¶óÀÎÀ» »ç¿ë°¡´ÉÇÏ°Ô ¸¸µå´Â Äڵ带 Æ÷ÇÔÇϰí ÀÖ½À´Ï´Ù. A20 Address ¶óÀÎÀº ¿©·¯ºÐÀÌ ÀϹÝÀûÀÎ DOS ¸®¾ó ¸ðµå ¿¡¼­ 1MB ÇѰè ÀÌ»óÀ» ³Ñ¾î¼­¼­ ¸Þ¸ð¸® ¿¢¼¼½º¸¦ °¡´ÉÇÏ°Ô ÇÕ´Ï´Ù. A20 Address ¶óÀο¡ ´ëÇÑ ÀÚ¼¼ÇÑ ³»¿ëÀº Intel ¾ÆÅ°ÅØÃÄ Ã¥À» ÂüÁ¶ÇØÁÖ¼¼¿ä. (% edward : IASDM 3 ÀÇ 7.6.4.3, 16.1.1, 18.29, À» ÂüÁ¶Çϼ¼¿ä.) ÀÏ´Ü GDT °¡ »ç¿ë°¡´ÉÇÏ°Ô µÇ¸é, ¾î¼Àºí¸® ÆÄÀÏÀÇ ³¡ºÎºÐ¿¡ Á¸ÀçÇÏ´Â µ¥ÀÌÅͰ¡ GDT ·¹Áö½ºÅÍ·Î ·ÎµåµË´Ï´Ù. ÀÌ´Â ¹Ýµå½Ã º¸È£¸ðµå·Î ÀüȯÇϱâÀü¿¡ ¿Ï·áÇØ¾ß ÇÕ´Ï´Ù. ¸¸¾à ±×·¸Áö ¾ÊÀ¸¸é ¾î¶² ¸Þ¸ð¸®¿¡ ´ëÇÑ Á¢±ÙÀº ÀûÀýÇÑ ¼¿·ºÅ͸¦ °®Áö ¸øÇÏ°Ô µÉ°ÍÀÌ°í µû¶ó¼­ À̵鿡 ÀÇÇØ fault °¡ ¹ß»ýÇÏ°Ô µÉ°Ì´Ï´Ù. (ÀÌ´Â °æÇè¿¡ ÀÇÇØ ¾òÀº °ÍÀÔ´Ï´Ù.) ÀÏ´Ü ÀÌ·± µ¥ÀÌÅ͸¦ GDT ·¹Áö½ºÅÍ·Î ·ÎµåÇÏ°í ¸ðµç µ¿ÀÛÀÌ ¿Ï·áµÇ¸é, CR0 ·¹Áö½ºÅÍÀÇ º¸È£¸ðµå ºñÆ®¸¦ 1·Î ¸¸µé¾î º¸È£¸ðµå·Î ÁøÀÔÇÏ°Ô µË´Ï´Ù. ±× ´ÙÀ½¿¡ ³ª¿À´Â ÄÚµå´Â º¸È£¸ðµå¸¦ »ç¿ë°¡´ÉÇÏ°Ô ¸¸µå´Â °ÍÀ̸ç, °Å±â¿¡´Â second stage ºÎÆ® ·Î´õÀÇ ´ÙÀ½ ºÎºÐÀ¸·Î fal call ÇÏ´Â µ¥ÀÌÅͰ¡ ÀÖ½À´Ï´Ù. ÀÌ´Â Á¤ÀǵÇÁö ¾ÊÀº ¼¼±×¸ÕÆ®¿Í ´ë¸³ÇÏ´Â CS ¸¦ À§Çؼ­ »ç¿ëµÉ »õ·Î¿î ¼¿·ºÅ͸¦ ¹ß»ý½Ãŵ´Ï´Ù. ±×¸®°í ÄÚµå´Â ´Ü¼øÈ÷ µ¥ÀÌÅÍ ¼¼±×¸ÕÆ®¸¦ À§ÇÑ ´Ù¾çÇÑ ¼¿·ºÅ͸¦ ¼Â¾÷ÇÏ´Â °÷À¸·Î Á¡ÇÁÇÏ°Ô µÇ°í, Á¡ÇÁÇÑ °÷¿¡´Â È­¸é¿¡ Ãâ·ÂÀ» ÇÏ´Â ¸î°¡Áö ´Ü¼øÇÑ µð¹ö±ë Äڵ尡 ÀÖ½À´Ï´Ù. ÀÌ´Â Á¦°¡ »ç¿ëÇϱâ À§ÇÑ ¿ëµµ·Î ¸¸µç °ÍÀÌ´Ï »èÁ¦µÇ¾îµµ »ó°ü ¾ø½À´Ï´Ù. ±×¸®°í ³ª¼­ ½ºÅà ¼¼±×¸ÕÆ®´Â ½ºÅà Æ÷ÀÎÅÍ¿¡ µû¶ó ¼Â¾÷ µÇ¸ç, Àú´Â ½ºÅÃÀ» 90000h ¿¡ À§Ä¡½ÃÄ×½À´Ï´Ù. ¸¶Áö¸·À¸·Î Ä¿³Î¿¡ ÀÇÇØ ȸº¹µÇ¾î¾ß ÇÒ ½ºÅÃÀ» À§ÇÑ °ªÀ» ½ºÅÿ¡ push Çϰí, first stage ·Î´õ¿¡ ÀÖ´Â Ä¿³ÎÀ» À§ÇÑ ¼±ÇüÁÖ¼Ò 100080h ¸¦ È£ÃâÇÏ°Ô µË´Ï´Ù. (% edward : Á» ½¬¾ú´Ù°¡ À½ ... ÀλýÀÇ °íµ¶À» ¾ÃÀ¸¸ç ´ã¹èµµ ÇÑ´ë ÇÇ¿ì°í ³ë·¡µµ ÇÑ°î ºÎ¸£°í °è¼Ó ÇØ¾ß°Ú½À´Ï´Ù. ) Á¦ 2 Àå - first stage Ä¿³Î ºÎÆ® ·Î´õ first stage Ä¿³Î ºÎÆ® ·Î´õ´Â \boot ¿¡ À§Ä¡ÇØ ÀÖ½À´Ï´Ù. ºÎÆ® ·Î´õ´Â ELF ¿¡¼­ TEXT ¼½¼ÇÀÇ ÁÖ¼Ò¸¦ ¼öÁýÇÏ¿© Á¡ÇÁÇÏ°í ½ÇÇà ÇÒ°ÍÀÔ´Ï´Ù. (% edward : ¿©±â¼­ Text ´Â Àý´ë ¹®¼­³ª ±×·±°ÍÀÌ ¾Æ´Ï¶ó Elf Æ÷¸ËÀÇ ÇÑ ¼½¼ÇÀÔ´Ï´Ù. ÀÚ¼¼ÇÑ ³»¿ëÀº Á¦°¡ ¹ø¿ª, ºÐ¼®ÇÑ ELF ¹®¼­³ª ELF ½ºÆåÀ» ÂüÁ¶ÇϽñ⠹ٶø´Ï´Ù.) makefile ¿¡¼­ text ÀÇ ÁÖ¼Ò¸¦ 10080h ·Î Àâ¾Æ µÎ¾úÀ¸¹Ç·Î, 10080h °¡ µÉ°ÍÀÔ´Ï´Ù. (% edward : JeffOS ÀÇ boot µð·ºÅ丮ÀÇ ¸ÞÀÌÅ© ÆÄÀϾÈÀ» º¸¸é ¾Æ·¡¿Í °°ÀÌ LD ·Î ¸µÅ· ÀÛ¾÷À» Çϰí ÀÖ½À´Ï´Ù. $(LD) -o $@ $(OBJS) -dN -Ttext 0x10080 ) ù ¹øÂ° 80h ¹ÙÀÌÆ®´Â ELF Çì´õ¿¡¼­ »ç¿ëµÇ°í, ³ª´Â ÀÌ Á¤º¸¸¦ ¿ÏÀüÈ÷ ¹«½ÃÇϰí, ¹Ù·Î ¼±Çü ¸Þ¸ð¸® ÁÖ¼ÒÀÎ 10080h ·Î Á¡ÇÁÇÕ´Ï´Ù. ÀÌ´Â ³»°¡ »õ·Î¿î ¹öÁ¯ÀÇ ELF ÄÄÆÄÀÏ·¯°¡ ¾à°£ ´Ù¸¥ Çì´õÀÇ ±æÀ̸¦ °¡Áö¸ç ÀÌ·¯ÇÑ °ªÀº ¼öÁ¤µÇ¾î¾ß ÇÒ Çʿ䰡 ÀÖÀ»Áöµµ ¸ð¸¥´Ù°í »ý°¢Çϰí Àֱ⠶§¹®À̸ç, TEXT ¼¼±×¸ÕÆ®ÀÇ ½ÃÀÛÀ» ¾îµð·Î ÇØ¾ßÇÒ Áö DOSÀÇ DEBUG¿Í °°Àº ¿ª¾î¼Àºí·¯¸¦ »ç¿ëÇØ °áÁ¤ ÇÒ¼öµµ Àֱ⠶§¹®ÀÔ´Ï´Ù. ºÎÆ® ·Î´õ¸¦ À§ÇÑ Áß¿äÇÑ µÎ°³ÀÇ ÆÄÀϵéÀº main.c ¿Í mem.c ÀÔ´Ï´Ù. main.c ´Â "void _start(unsigned long blh);" ÇÔ¼ö¸¦ Æ÷ÇÔÇϰí ÀÖÀ¸¸ç, ÀÌ ÇÔ¼ö´Â ¹Ýµå½Ã ù ¹øÂ° ÇÔ¼ö·Î ¸µÅ©µÇ¾î¾ß ÇÕ´Ï´Ù. µû¶ó¼­ main.c ´Â ¹Ýµå½Ã ¸µÅ©µÈ ù ¹øÂ° file À̾î¾ß Çϸç, _start() ´Â ¹Ýµå½Ã ù ¹øÂ° ÇÔ¼ö°¡ µÇ¾î¾ß ÇÕ´Ï´Ù. ÀÌ·¯ÇÑ Á¡¿¡ ´ëÇÑ º¸ÁõÀº 10080h ÀÇ À§Ä¡¿¡¼­ ½ÃÀÛÇÏ´Â °ÍÀÌ µÉ °ÍÀÔ´Ï´Ù. ÆÄ¶ó¸ÞÅÍ blh ´Â second stage ºÎÆ® ·Î´õ¿¡ ÀÇÇØ push µÇ´Â °ªÀÔ´Ï´Ù. _start ÀÇ Ã¹ ¹øÂ° °úÁ¦´Â ¸Þ¸ð¸®¸¦ ÃʱâÈ­ÇÏ´Â ·çƾÀÎ kinit_MemMgmt ¸¦ È£ÃâÇÏ´Â °ÍÀÔ´Ï´Ù. ù ¹øÂ° °úÁ¦ÀÎ kinit_MemMgmt °¡ ÇÏ´Â ÀÏÀº nMemMax ¸¦ 0xfffff·Î ¸¸µå´Â °ÍÀ̸ç, ÀÌ 16Áø °ªÀº 1MB·Î ½Ã½ºÅÛÀÇ ÃÖ´ë ¹ÙÀÌÆ® ¼ö¸¦ Á¤ÇÏ´Â °ÍÀÔ´Ï´Ù. ±×¸®°í ³ª¼­ kinit_MemMgmt ´Â ½Ã½ºÅÛ »ó¿¡ free ÇÑ ¸Þ¸ð¸®ÀÇ ¾çÀ» °è»êÇϱâ À§ÇÑ ÇÔ¼ö ÀÎ kmemcount ¸¦ È£Ãâ ÇÕ´Ï´Ù. ÀϹÝÀûÀ¸·Î ÀÌ ·çƾÀº ÀûÀýÇÏ°Ô µ¿ÀÛÇÏÁö ¾Ê°í, ½Ã½ºÅÛ¿¡ ´ëÃæ 2MB ÀÇ Free memory °¡ ÀÖ´Â °ÍÀ¸·Î °¡Á¤Çعö¸³´Ï´Ù. ÀÌ Á¤µµ¸é Áö±ÝÀº ÃæºÐÇÏÁö¸¸ ³ªÁß¿¡´Â ¼öÁ¤µÇ¾î¾ß ÇÒ Çʿ䰡 ÀÖÀ»Áöµµ ¸ð¸£°Ú±º¿ä. ±×¸®°í ³ª¼­ kinit_MemMgmt ´Â Ä¿³ÎÀ» À§ÇÑ ÆäÀÌÁö Å×À̺íÀ» ¼¼Æ®ÇÏ´Â kinit_page ÇÔ¼ö¸¦ È£ÃâÇÕ´Ï´Ù. ÆäÀÌ¡Àº ŽºÅ©°¡ ¿¢¼¼½º ÇÒ ¼ö ÀÖ´Â ¸Þ¸ð¸®¸¦ °áÁ¤Çϱâ À§ÇØ »ç¿ëµÇ´Â ¸ÞÄ¿´ÏÁòÀÔ´Ï´Ù.(% edward : -_-;) À̴ ŽºÅ©°¡ ¿¢¼¼½º ÇÒ "virtual (°¡»ó)" ¸Þ¸ð¸® °ø°£À» »ý¼ºÇÏ°Ô µË´Ï´Ù. ¸Þ¸ð¸® ¿¢¼¼½º°¡ ¹ß»ýÇÒ¶§ ¸¶´Ù, ÇÁ·Î¼¼¼­´Â "½ÇÁ¦(real)" ¹°¸®Àû ¸Þ¸ð¸®°¡ ¾î¶² ¸Þ¸ð¸® À§Ä¡¿¡ Á¸ÀçÇÏ´ÂÁö ¾Ë±â À§ÇØ ÆäÀÌÁö Å×À̺íÀ» Á¶»çÇÕ´Ï´Ù. ¿¹¸¦ µé¸é, Ä¿³ÎÀº °¢°¢ÀÇ Å½ºÅ©°¡ ½ºÅÿ뵵·Î »ç¿ëÇϱâ À§ÇÑ ¸Þ¸ð¸®ÀÇ 32k(8°³ÀÇ ÆäÀÌÁö)¸¦ °¡¸®±æ ¼ö ÀÖ½À´Ï´Ù. ¸¸¾à ÆäÀÌ¡ µÈ ¸Þ¸ð¸®¸¦ »ç¿ëÇÏÁö ¾Ê¾Ò´Ù¸é ÀÌ·¯ÇÑ °¢°¢ÀÇ ¸Þ¸ð¸® À§Ä¡´Â ½ÇÁ¦ ÁÖ¼Ò¿Í´Â ´Ù¸£°Ô µÇ¾î ¹ö¸±¼öµµ ÀÖ½À´Ï´Ù. ±×¸®°í ÆäÀÌ¡À» »ç¿ëÇÒ ¶§ ÀÌ·¯ÇÑ °¢°¢ÀÇ ¹°¸®ÀûÀÎ ¸Þ¸ð¸®ÀÇ ÇÒ´çÀ» µ¿ÀÏÇÑ À§Ä¡¿¡¼­ ¹ß»ýÇÒ ¼ö ÀÖ´Â ÀÀ¿ë ¶ÇÇÑ Çã¿ëÇÒ ¼ö ÀÖ´Â ÆäÀÌ¡ µÈ ÁÖ¼Ò·Î ¸ÅÇνÃų ¼ö ÀÖ½À´Ï´Ù. (% edward : Ⱦ¼³ ¼ö¼³ -_-; ¹¹ ½±°Ô À̾߱â ÇÏ¸é ½ÇÁ¦ ¹°¸®Àû ÁÖ¼Ò¸¦ ¾²´Â °Íº¸´Ù´Â ÆäÀÌ¡ µÈ ÁÖ¼Ò¸¦ ¾µ¶§ ¸Þ¸ð¸®¸¦ °øÀ¯Çϱ⵵ ÆíÇÏ´Ù´Â À̾߱â ÀÎ µíÇϳ׿ä. °ü¸®Çϱ⵵ ÆíÇÏ°í ¸»¿¹¿ä. ) ÆäÀÌÁö Å×À̺íµéÀº ´ÙÀ½°ú °°Àº Çü½ÄÀ¸·Î ±¸¼ºµË´Ï´Ù. ¿ì¼±Àº ÆäÀÌÁö µð·ºÅ丮 Àε¥, ÆäÀÌÁö µð·ºÅ丮´Â 1024°³ÀÇ ¿£Æ®¸®·Î ±¸¼ºµÇ¸ç ¾Æ·¡¿Í °°Àº ¼Ó¼ºÀ» °®½À´Ï´Ù. ====================================== 31 - 12 Page Table Base Address 11 - 9 Unused (Free bits) 8 0 7 Page Size Bit 6 0 5 Accessed Bit 4 Page Cache Disable Bit 3 Page Write Through Bit 2 User/Supervisor Bit 1 Read/Write Bit 0 Page Present Bit ====================================== (% edward : ¾ÆÈæ ~ ¤Ì.¤Ì ¶Ç ÆäÀÌ¡ °ü·Ã Ç¥±º¿ä. ¸Ç³¯ ±×¸®°Ô µÇ³×¿ä ¤Ì.¤Ì ¾ÆÈæ ¾ÆÈæ ... ¼³¸íÀÌ ºÎÁ·ÇÏ´Ù°í »ý°¢ µÇ½Ã´Â ºÐµéÀº ÀÌÀü±ÛÀ» ÂüÁ¶Çϼ¼¿ä. Àúµµ À̰ŠÀÚ²Ù ¾²´Ï±î Áö°ã³×¿ä. ) Page Table Base Address ´Â ¸Þ¸ð¸® À§Ä¡¿¡ ´ëÇÑ Á¤º¸¸¦ Æ÷ÇÔÇÏ´Â ÆäÀÌÁö Å×À̺íÀÇ À妽º ÀÔ´Ï´Ù. ¸Þ¸ð¸® À§Ä¡°¡ ¿¢¼¼½º µÉ¶§ ÀÌ Áß Most Significant 10 ºñÆ®´Â ÆäÀÌÁö µð·ºÅ丮¿¡¼­ 1024 °³ÀÇ ¿£Æ®¸®Áß Çϳª¸¦ ÂüÁ¶Çϴµ¥ »ç¿ëµË´Ï´Ù. ÀÌ ¿£Æ®¸®´Â Page Table Base Address ¿Í ÀÏÄ¡ÇÏ´Â ¹°¸®Àû ¸Þ¸ð¸® ÁÖ¼Ò¸¦ °®´Â ÆäÀÌÁö Å×À̺íÀ» °¡¸®Åµ´Ï´Ù. ±×¸®°í ³ª¼­ ÀÌ Å×À̺íÀº ¸Þ¸ð¸® ÁÖ¼ÒÀÇ 12~21 ºñÆ®¿¡ ÀÇÇØ 1024°³ÀÇ ¿£Æ®¸®Áß Çϳª¸¦ ÂüÁ¶ÇÕ´Ï´Ù. (% edward : ¹¹ Ç×»ó °°Àº°ÍÀÌ ¾Æ´Ï±â ¶§¹®¿¡ ÀÌ ºÎºÐ¿¡ ´ëÇØ ÀüüÀûÀ¸·Î ¾Ë°í ½ÍÀ¸½Ã´Ù¸é... IASDM 3 ¸¦ ÂüÁ¶ÇϽô°ÍÀÌ ÁÁÀ» µí ¿©·¯°¡Áö º¯ÇüÀÌ Á¸ÀçÇϹǷΠ²À ÀÌ·¸´Ù ¶ó°í ÇÒ ¼ø ¾øÁö¿ä. ÀÌ »ç¶÷Àº ±×·¸°Ô Çß´Ù ¶ó°í Çϳ׿ä.) Page Size Bit ´Â °¢°¢ÀÇ ÆäÀÌÁö°¡ (Bit = 0)4kb ÀÎÁö ¶Ç´Â (Bit = 1) 4MB ÀÎÁö ¾Ë·ÁÁÖ´Â ¿ªÇÒÀ» ÇÕ´Ï´Ù. (% edward : Àüü °¡»ó ¸Þ¸ð¸®ÀÇ Å©±â¸¦ °áÁ¤ÇÏ´Â Áß¿äÇÑ ºñÆ®ÁÒ.) Acessed bit ´Â ÆäÀÌÁö°¡ ¿¢¼¼½º µÈ ÀûÀÌ ÀÖ´ÂÁö ¾Ë·ÁÁÖ´Â ¿ªÇÒÀ» ÇÕ´Ï´Ù. ÀÏ´Ü 1·Î ¼¼Æ®µÇ¸é OS´Â ¹Ýµå½Ã ±×°ÍÀ» 0À¸·Î ¸®¼ÂÇØ¾ß ÇÕ´Ï´Ù. ÀÌ´Â °¡»ó ÆäÀÌ¡¿¡¼­ »ç¿ëµË´Ï´Ù. Page Cache Disable Bit ¿Í Page Write Bit ´Â Á¤ÀÇ ÇÏÁö ¾Ê¾ÒÀ¸¸ç ÇöÀç »ç¿ëÇÏÁö ¾Ê½À´Ï´Ù. User/Supervisor ºñÆ®´Â ÆäÀÌÁö Å×À̺íÀÌ Æ¯±Ç·¹º§ 0,1,2 ¶Ç´Â 3 À» »ç¿ëÇϴ ŽºÅ©¿¡ ÀÇÇÑ ¿¢¼¼½º¸¦ Á¦ÇÑÇϱâ À§ÇØ ±â¼úµÈ ºñÆ®ÀÔ´Ï´Ù. ¸¸¾à ÀÌ ºñÆ®°¡ 0À¸·Î ¼¼Æ®µÇ¸é Ư±Ç ·¹º§ 0, 1, 2 ¸¦ »ç¿ëÇϴ ŽºÅ© ¸¸ÀÌ ÆäÀÌÁö Å×À̺íÀ» ¿¢¼¼½º ÇÒ ¼ö ÀÖÀ¸¸ç ÀÌ ºñÆ®°¡ 1·Î ¼¼Æ®µÇ¸é, ÀÌ ÆäÀÌÁö Å×À̺íÀº Ư±Ç ·¹º§ 0, 1, 2, 3 À» °®´Â ¸ðµç ŽºÅ©°¡ ¿¢¼¼½º ÇÒ ¼ö ÀÖ½À´Ï´Ù. Read/Write ºñÆ®´Â À¯Àú ·¹º§ ŽºÅ©°¡ ÀÌ ÆäÀÌÁö Å×ÀÌºí¿¡ ¾²±â°¡ °¡´ÉÇÑÁö °áÁ¤ÇÏ´Â ºñÆ®ÀÔ´Ï´Ù. ¸¸¾à ÀÌ ºñÆ®°¡ 0À̶ó¸é "À¯Àú(User)" ŽºÅ©´Â ÆäÀÌÁö Å×ÀÌºí¿¡ ´ëÇØ Àб⸸ÀÌ °¡´ÉÇϰí ÀÌ ºñÆ®°¡ 1À̶ó¸é ¸ðµç ŽºÅ©¿¡ ´ëÇØ Àб⠾²±â°¡ °¡´ÉÇÕ´Ï´Ù. ¸¶Áö¸·À¸·Î Present ºñÆ®´Â ÆäÀÌÁö Å×À̺íÀÌ ÇöÀç ¸Þ¸ð¸®¿¡ ÀÖ´ÂÁö ¾Ë±â À§ÇØ »ç¿ëµË´Ï´Ù. ¸¸¾à ÀÌ ºñÆ®°¡ 1ÀÌ¸é ¸Þ¸ð¸®¿¡ ÀÖÀ½À» ³ªÅ¸³À´Ï´Ù. ÀÏ´Ü ÆäÀÌÁö µð·ºÅ丮°¡ ÂüÁ¶µÇ°í ³ª¸é ÆäÀÌÁö Å×ÀÌºí ³»ÀÇ offset Àº ¼±Åõ˴ϴÙ. ´ÙÀ½ÀÇ ¸Þ¸ð¸® ÂüÁ¶ÀÇ 10 ºñÆ®¸¦ »ç¿ëÇÏ°Ô µÇÁö¿ä. °¢°¢ÀÇ ÆäÀÌÁö Å×À̺íÀº 1024 °³ÀÇ ¿£Æ®¸®¸¦ °®°í °¢°¢ÀÇ ¿£Æ®¸®´Â ´ÙÀ½°ú °°Àº ±¸Á¶·Î µÇ¾î ÀÖ½À´Ï´Ù. =================================== 31 - 12 Page Base Address 11 - 9 Unused (Free bits) 8 - 7 0 6 Dirty Bit 5 Accessed Bit 4 Page Cache Disable Bit 3 Page Write Through Bit 2 User/Supervisor Bit 1 Read/Write Bit 0 Page Present Bit =================================== Page Base Address ´Â ¿¢¼¼½ºµÉ ¸Þ¸ð¸®¿¡ ´ëÇÑ ¹°¸®Àû ¸Þ¸ð¸®ÀÇ »óÀ§ 20ºñÆ®¸¦ °¡¸®Åµ´Ï´Ù. ÇÏÀ§ 12ºñÆ®´Â ¼±Çü ¸Þ¸ð¸® ¿¢¼¼½º·Î ºÎÅÍ ¾ò°Ô µÇÁÒ. Dirty, Accessed, Page Cache, ±×¸®°í Page Write Through ºñÆ®´Â ¸ðµÎ °¡»ó ¸Þ¸ð¸®¿Í ¾ÆÁ÷Àº °ü¿©ÇÑ ÀûÀÌ ¾ø´Â ´Ù¸¥ ¿µ¿ª¿¡ ÀÇÇØ »ç¿ëµÇ´Â ºñÆ®ÀÔ´Ï´Ù. ±×¿Ü¿¡ ³ª¸ÓÁö 3ºñÆ®´Â ÆäÀÌÁö µð·ºÅ丮¿¡ »ç¿ëµÈ´Ù. ¸ðµç Ä¿³Î ÆäÀÌÁöµéÀº Supervisor, Read/Write, Page Present ºñÆ®°¡ ¼¼Æ®µÇ°í, À¯Àú ÆäÀÌÁö´Â Superviosr ºñÆ®°¡ ¼¼Æ®µÇÁö ¾Ê½À´Ï´Ù. kinit_page ÄÚµå´Â 3°³ÀÇ ¹°¸®Àû ÆäÀÌÁöÁß Ã¹¹øÂ° ÆäÀÌÁö¿¡ ÆäÀÌÁö µð·ºÅ丮¸¦ »ý¼º½Ãŵ´Ï´Ù. ´ÙÀ½ ÆäÀÌÁö´Â 4MB (1024°³ÀÇ ÆäÀÌÁö Å×ÀÌºí ¿£Æ®¸® Áß Çϳª°¡ 1024°³ÀÇ 4KB Å©±âÀÇ ÆäÀÌÁö¸¦ °¡¸®Å°¹Ç·Î 4MB)ÀÇ À¯Àú ¸Þ¸ð¸® ¿µ¿ª(low)À» »ý¼º ½Ã۴µ¥ »ç¿ëµË´Ï´Ù. ¼¼ ¹øÂ° ÆäÀÌÁö´Â OS(high) ¸Þ¸ð¸® ¿µ¿ªÀ» °¡¸®Å°´Âµ¥ »ç¿ëµË´Ï´Ù. (% edward : ·Î¿ì¿Í ÇÏÀÌ ¸Þ¸ð¸® ¿µ¿ª ÄÚµå ... ================================================================== // Map in the first 4MB as one to one addresses into low PageTbl flat[1024 + i] = 4096 * i | 3; // Map in 10 pages into high memory which are the kernel flat[2048 + i] = i > 10 ? 0 : ((uint32)0x70000 + 4096 * i) | 3; ==================================================================) kinit_page ÇÔ¼ö´Â ¸ðµç low ÆäÀÌÁö ¸Þ¸ð¸®¸¦ ¹°¸®Àû ¸Þ¸ð¸® ¿µ¿ªÀ¸·Î ¼¼Æ® ½Ãŵ´Ï´Ù. À̰ÍÀÇ Àǹ̴ ù 4MB ÀÇ ¸Þ¸ð¸®°¡ ÆäÀÌÁö µÈ ¸Þ¸ð¸®¿Í 1:1·Î »óÈ£°ü°è¸¦ °®´Â´Ù´Â °ÍÀÔ´Ï´Ù. ±×¸®°í ³ª¼­ kinit_page ´Â ¼±ÇüÁÖ¼Ò 0x80000000 ¿¡¼­ 70000h ÁöÁ¡ºÎÅÍ ½ÃÀÛÇÏ´Â 10°³ÀÇ ÆäÀÌÁö¸¦ ¸ÞÇÎÇÕ´Ï´Ù. ÆäÀÌÁö µð·ºÅ丮ÀÇ ¿£Æ®¸® ¹øÈ£ 0 Àº low(À¯Àú) ÆäÀÌÁö Å×À̺íÀ» °¡¸®Å°°Ô µÇ°í, ÆäÀÌÁö µð·ºÅ丮ÀÇ ¿£Æ®¸® ¹øÈ£ 512 ´Â high(OS) ÆäÀÌÁö Å×À̺íÀ» °¡¸®Å°°Ô µË´Ï´Ù. ¸¶Áö¸·À¸·Î kinit_page ÇÔ¼ö´Â ÆäÀÌÁö µð·ºÅ丮ÀÇ ÁÖ¼Ò¸¦ cr3 ·¹Áö½ºÅÍ¿¡ ³Ö°Ô µÇ°í, ÀÌ´Â ÇÁ·Î¼¼¼­¿¡°Ô ÆäÀÌÁö Å×À̺íÀ» ¾îµð¼­ ã¾Æ¾ß µÉÁö ¾Ë·ÁÁÖ´Â °ÍÀÌ µË´Ï´Ù. (% edward : cr3 °¡ ÆäÀÌÁö Å×À̺íÀÇ ÁÖ¼Ò¸¦ °¡¸®Å°°Ô µÈ´Ù´Â°ÅÁÒ .) ±×¸®°í cr0 ´Â ÇÁ·Î¼¼¼­¿¡°Ô Á÷Á¢ ¹°¸®Àû ¸Þ¸ð¸® Á¢±ÙÀ» Çϱ⠺¸´Ù´Â ÆäÀÌÁö Å×À̺íÀ» ÅëÇØ¼­ ¸Þ¸ð¸® Á¢±ÙÀ» Ç϶ó°í ¾Ë¸®´Â ÆäÀÌ¡ ºñÆ®¸¦ ¼¼Æ®½ÃŰ°Ô µË´Ï´Ù. ÀÌ ÈÄ¿¡ _start ÇÔ¼ö·Î µ¹¾Æ¿À°í k_start() ¸¦ È£ÃâÇÏ¿© ¸ÞÀÎ Ä¿³Î¿¡ _start() ¸¦ °¡¸®Å°´Â 0x80000080 À¸·Î ¼¼Æ®µË´Ï´Ù. ºÎÆ® ÄÚµåÀÎ _start() ÇÔ¼ö´Â k_start() ÇÔ¼ö¸¦ È£ÃâÇÏ¿© ¸®¾ó¸ðµå Ä¿³ÎÀ» ³»¸°´Ù´Â ÀǹÌÀÔ´Ï´Ù. (% edward : ÆäÀÌ¡À» ¿Ï·áÇÑµÚ ½ÇÁ¦ Ä¿³ÎÀ» k_start() ÇÔ¼ö¸¦ È£ÃâÇÏ´Â°Ç ´ç¿¬ÇϰÚÁÒ. ½ÇÁ¦ Ä¿³ÎÀº kernel µð·ºÅ丮 ¹Ø¿¡ ÀÖ½À´Ï´Ù. Áö±ÝºÎÅÍ ³ª¿À´Â ³»¿ëÀº kernel µð·ºÅ丮 ¹Ø¿¡ ÀÖ´Â main.c ¿Í mem.c ÀÔ´Ï´Ù. void (*k_start)(void) = (void (*)(void)) 0x80000080; ) Á¦ 3Àå - Ä¿³Î Ä¿³ÎÀº Á¤¸» ¸ðµç Àç¹ÌÀÇ ½ÃÀÛÀÔ´Ï´Ù. Ä¿³Î ºÎÆ® ·Î´õ´Â Ä¿³Î ÆäÀÌÁö Å×À̺íÀ» »ý¼ºÇϰí, Ä¿³ÎÀÇ _start(); ·Î Á¡ÇÁÇÏ°Ô µË´Ï´Ù. ±×¸®°í ³ª¼­ _start() ÇÔ¼ö´Â ÄܼÖÀ» ¼Â¾÷Çϰí, Ŭ¸®¾î ½ÃŲ µÚ "Main kernel loaded" ¶ó´Â ¸Þ½ÃÁö¸¦ Ãâ·ÂÇÏ°Ô µË´Ï´Ù. ÀÏ´Ü ÀÌ·¯ÇÑ ÀÛ¾÷µéÀÌ ¿Ï·áµÇ°í ³ª¸é ¸Þ¸ð¸® °ü¸®ÀÚ ÃʱâÈ­ ·çƾÀÎ kinit_page() À» ½ÇÇàÇÏ°Ô µË´Ï´Ù. ¸Þ¸ð¸® °ü¸®ÀÚ ÃʱâÈ­ ·çƾÀº PMAT ¶ó ºÒ¸®´Â ±¸Á¶¸¦ ÃʱâÈ­·Î ½ÃÀ۵ǰí, PMAT ´Â °¢°¢ÀÇ ºñÆ®°¡ ¹°¸®Àû ¸Þ¸ð¸® ÇϳªÀÇ ÆäÀÌÁö·Î Ç¥ÇöµÇ´Â 2048 ¹ÙÀÌÆ® Å©±â¸¦ °®´Â °Å´ëÇÑ ºñÆ® Çʵå·Î ±¸¼ºµË´Ï´Ù. ¸¸¾à ºñÆ®°¡ 1·Î ¼¼Æ® µÇ¸é, ¸Þ¸ð¸®ÀÇ ÆäÀÌÁö´Â Allocate µÉ°ÍÀÌ¸ç ºñÆ®°¡ 0À¸·Î ¼¼Æ®µÇ¸é Unallocate µÉ °ÍÀÔ´Ï´Ù. ÀÌ·± ¹è¿­Àº ÀÌ¹Ì »ç¿ëÁßÀÎ ¹°¸®Àû ¸Þ¸ð¸® Á¶°¢ ÀÎ ¸Þ¸ð¸® °ü¸® Äڵ带 ÃʱâÈ­ ÇÏ°Ô µÇ°í, ½Ã½ºÅÛ BUS ¸Þ¸ð¸® ¿µ¿ª »Ó¸¸ ¾Æ´Ï¶ó ¹°¸®Àû ¸Þ¸ð¸® »óÀÇ Ä¿³Î ÀÚü À§Ä¡¸¦ Æ÷ÇÔÇÏ°Ô µË´Ï´Ù. ÀÌ ¸Þ¸ð¸® °ü¸®ÀÚ°¡ _start() ÇÔ¼ö·Î ¸®ÅÏÇÏ°Ô µÇ°í, Ä¿³Î ÃʱâÈ­½Ã¿¡ ÇÔ²² ÁøÇàµË´Ï´Ù. ±×¸®°í ³ª¼­ _start() ÇÔ¼ö´Â first stage Ç÷ÎÇÇ ·Î´õ¿¡ ÀÇÇØ »ç¿ëÀÚ ÇÁ·Î±×·¥À» ·ÎµùÇϴµ¥ »ç¿ë µÉ ¸Þ¸ð¸® ÇÒ´çÀ» À§Çؼ­ »ç¿ëÇÒ Àӽà ÇÔ¼ö¸¦ È£ÃâÇÑ´Ù. ÀÌ ÇÔ¼ö´Â ¹°¸®Àû ¸Þ¸ð¸® À§Ä¡ 20000h ÀÇ ¼±ÇüÁÖ¼Ò °ø°£¿¡ ¼¼Æ®µÈ´Ù. ±âº» ¸Þ¸ð¸® ½Ã½ºÅÛÀÌ ¼Â¾÷µÇ°í, _start() ÇÔ¼ö´Â kinit_task() ÇÔ¼ö¸¦ È£ÃâÇÑ´Ù. kinit_task() ´Â ½Ã½ºÅÛ »óÀÇ ÇÁ·Î¼¼½º º¸´Ù´Â ŽºÅ©¸¦ ¼öÇàÇϱâ À§ÇÑ Ä¿³Î ŽºÅ©¸¦ ¼Â¾÷ÇÑ´Ù. kinit_tast()´Â kinit_gdt() ¿Í kinit_ktask() ¶ó´Â µÎ°³ÀÇ ´Ù¸¥ ÇÔ¼ö¸¦ È£ÃâÇÏ´Â ½ÇÁ¦ ½© ÇÔ¼öÀÔ´Ï´Ù. kinit_gdt()´Â second stage Ç÷ÎÇÇ ºÎÆ® ·Î´õ¿¡ ÀÇÇØ ¼Â¾÷µÇ´Â Àӽà Ŀ³ÎÀÌ ¾Æ´Ñ »õ·Î¿î Ä¿³Î¿¡ »ç¿ëµÉ GDT ¸¦ ÃʱâÈ­ÇÕ´Ï´Ù. ÀÏ´Ü GDT ¸¦ À§ÇÑ »õ·Î¿î À§Ä¡´Â ¿©·¯°³ÀÇ ¼¿·ºÅÍ·Î ¿¬°áµÈ ¸Þ¸ð¸®¿Í ¸ÅÇεǰí, Ä¿³Î ÄÚµå¿Í µ¥ÀÌÅÍ ¼¿·ºÅ͵µ Ãß°¡µÇ¸ç, À¯Àú ÄÚµå¿Í µ¥ÀÌÅÍ ¼¿·ºÅ͵µ Ãß°¡µË´Ï´Ù. ÀÌ·¯ÇÑ ¼¿·ºÅ͵éÀÌ Æ¯Á¤ÇÑ À§Ä¡¿¡ ³õÀÌ°Ô µÇ¸é, »õ·Î¿î GDT ´Â »ç¿ëµÉ ¼ö ÀÖ°Ô ²û ÇÁ·Î¼¼¼­ÀÇ GDT ·¹Áö½ºÅÍ¿¡ ³õÀÌ°Ô µÈ´ä´Ï´Ù. ±×¸®°í´Â kinit_task() ´Â kinit_ktask() ÇÔ¼ö¸¦ È£ÃâÇÕ´Ï´Ù. ÀÌ Å½ºÅ©´Â Ä¿³Î Äڵ尡 ½ÇÇàµÉ ŽºÅ©¸¦ »ý¼ºÇÕ´Ï´Ù. ÀÌ ÇÔ¼ö°¡ ù°·Î ÇÏ´Â °ÍÀº Ä¿³Î ŽºÅ© ¸®½ºÆ®¸¦ ºñ¿ì°í, ÀÌ ¸®½ºÆ®¿¡´Â ½Ã½ºÅÛ »óÀÇ Å½ºÅ©ÀÇ ¸ñ·ÏÀ» Æ÷ÇÔ½Ãŵ´Ï´Ù. ´ÙÀ½ÀÇ 4k ÆäÀÌÁö´Â Ä¿³Î ŽºÅ© ¼¼±×¸ÕÆ®¸¦ À§ÇØ ÇÒ´çµË´Ï´Ù. ±×¸®°í ³ª¼­ ÇöÀç ½ÇÇàÁßÀΠŽºÅ©´Â Ä¿³Î ŽºÅ©·Î ¼³Á¤µÇ°í, ´ÙÀ½ ŽºÅ© ¼¼±×¸ÕÆ®´Â GDT ¿¡ Ãß°¡ µË´Ï´Ù. Ãß°¡µÈ ŽºÅ© ¼¼±×¸ÕÆ®´Â ´ÙÀ½ÀÇ ±¸Á¶¸¦ °¡Áö¸ç, Á¦°¡ ÀǵµÇÑ °ªÀ» »ç¿ëÇØ Ä¿³ÎÀ» ä¿ì°Ô µË´Ï´Ù. »ç½Ç»ó ÀÌ ¼³Á¤À¸·Î ¸ðµç ŽºÅ©´Â ½ÃÀÛµÇ°Ô µË´Ï´Ù. ======================================================================== struct TSS { ushort link; // set to 0 ushort unused0; ulong esp0; // set to the end of the task segment page ushort ss0; // set to SEL_KDATA (Kernel Data segment) ushort unused1; ulong esp1; // set to 0 ushort ss1; // set to 0 ushort unused2; ulong esp2; // set to 0 ushort ss2; // set to 0 ushort unused3; ulong cr3; // set to the physical address of this tasks page // tables ulong eip; // set to the entry point to this tasks code ulong eflags; // set to 0x4202 ulong eax, ecx, edx, ebx, esp, ebp, esi, edi; // set to garbage values ushort es; // set to SEL_KDATA (Kernel data segment) ushort unused4; ushort cs; // set to SEL_KCODE (Kernel code segment) ushort unused5; ushort ss; // set to SEL_KDATA ushort unused6; ushort ds; // set to SEL_KDATA ushort unused7; ushort fs; // set to SEL_KDATA ushort unused8; ushort gs; // set to SEL_KDATA ushort unused9; ushort ldt; // set to 0 ushort unused10; ushort debugtrap; // set to 0 ushort iomapbase; // set to 0 }; ======================================================================== ÀÎÅÍ·´Æ®°¡ È£ÃâµÇ¾úÀ»¶§ ¸µÅ©(link) Çʵå´Â ÇÁ·Î¼¼¼­¿¡ ÀÇÇØ »ç¿ëµË´Ï´Ù. ÇÁ·Î¼¼¼­´Â Á»´õ ³ôÀº ¿ì¼±¼øÀ§¸¦ °®°í ¼öÇàÁßÀÌ´ø ÀÎÅÍ·´Æ® ÀΠŽºÅ© ¼¼±×¸ÕÆ®¿¡ Æ÷ÀÎÅ͸¦ µÓ´Ï´Ù. À̴ ȣÃâÇÑ ÇÁ·Î¼¼½º ±â¹ÝÀÇ Á¢±Ù ±ÇÇÑÀ» °áÁ¤Çϴµ¥ ¸Å¿ì À¯¿ëÇÕ´Ï´Ù. espx ¿Í ssx ÆÄ¶ó¸ÞÅÍ´Â ÇÏÀ§ Ư±Ç ·¹º§À» »ç¿ëÇϴ ŽºÅ©°¡ »óÀ§ Ư±Ç ·¹º§ ¿µ¿ªÀ» ¿¢¼¼½º ÇÏ·Á°í ÇÒ¶§ »ç¿ëµÉ ½ºÅÃÀ» °¡¸®Å°±â À§ÇØ ÁÖ¼Ò¸¦ ÀúÀåÇÏ´Â ¿ëµµ·Î ¾²ÀÔ´Ï´Ù. cr3 ÆÄ¶ó¸ÞÅʹ ŽºÅ©µéÀ» À§ÇÑ ÆäÀÌÁö Å×À̺íÀÇ ¹°¸®Àû ÁÖ¼Ò¸¦ °¡¸®Å°±â À§ÇÑ ¿ëµµ·Î »ç¿ëµË´Ï´Ù. ŽºÅ©°¡ ½ºÀ§Ä¡ µÉ¶§¸¶´Ù ÇÁ·Î¼¼¼­´Â cr3 ¿¡ ÀúÀåµÈ °ªÀ» cr3 ·¹Áö½ºÅÍ·Î ·ÎµåÇÕ´Ï´Ù. À̸»ÀÇ Àǹ̴ °¢°¢ÀÇ Å½ºÅ©°¡ µ¶Æ¯ÇÑ ÆäÀÌÁö Å×À̺í°ú ¸ÅÇÎÀ» °¡Áø´Ù´Â °ÍÀÌÁö¿ä. eax, ebx, ... µîÀÇ ·¹Áö½ºÅ͵éÀº Çѹø »ç¿ëµÇ°í, ÃʱâÈ­ µÇÁö ¾ÊÀ» ¸ðµç ¹«ÀǹÌÇÑ °ªµéÀ» ¼¼Æ® ½Ãŵ´Ï´Ù. ÇÁ·Î¼¼¼­°¡ ŽºÅ© ÀüȯÀ» ÇÒ¶§, ÀÌ·¯ÇÑ ÆÄ¶ó¸ÞÅ͵éÀº ±×µé °¢°¢ÀÇ ÇÁ·Î¼¼¼­ ·¹Áö½ºÅÍ·Î ·ÎµåµË´Ï´Ù. cs,es,ss,ds,fs ±×¸®°í gs ÆÄ¶ó¸ÞÅʹ ŽºÅ©°¡ ÀüȯµÉ¶§ ±×µé °¢°¢ÀÇ ÇÁ·Î¼¼¼­ ·¹Áö½ºÅÍ·Î ·ÎµåµÇ¾î¾ß ÇÒ Áß¿äÇÑ °ªÀ¸·Î ¼¼Æ®µË´Ï´Ù. Àú´Â ·ÎÄà µð½ºÅ©¸³ÅÍ(LD)¸¦ »ç¿ëÇÏÁö ¾Ê¾ÒÀ¸¹Ç·Î, ÀÌ ÆÄ¶ó¸ÞÅ͸¦ debugtrap °ú iomapbase ÆÄ¶ó¸ÞÅÍ¿Í ÇÔ²² 0À¸·Î ¼¼Æ® ½ÃÄ×½À´Ï´Ù. ´Ã ³»°¡ ¾ð±ÞÇßÁö¸¸, ŽºÅ©°¡ ÀüȯµÉ¶§ ÇÁ·Î¼¼¼­´Â ŽºÅ© ¼¼±×¸ÕÆ®·Î ºÎÅÍ ¸ðµç ÆÄ¶ó¸ÞÅ͸¦ ÀоîµéÀ̰í, ±×µé °¢°¢ÀÇ ·¹Áö½ºÅÍ·Î ·ÎµåµÈ´Ù. »Ó¸¸ ¾Æ´Ï¶ó µ¿ÀÛ ÁßÀÌ´ø ŽºÅ©°¡ ÀüȯµÇ¾î¼­ ÁßÁöµÇ°Ô µÇ¸é, ¸ðµç ·¹Áö½ºÅÍ´Â ±×µé °¢°¢ÀÇ ÆÄ¶ó¸ÞÅÍ·Î ÀúÀåµÇ°Ô µÇ°í, ŽºÅ©´Â suspend ¸ðµå³ª restart ¸¦ À§ÇÑ ¸ðµå·Î ºüÁö°Ô µÈ´Ù. ŽºÅ©ÀÇ Àüȯ(½ºÀ§Äª)Àº ÀÌÈÄ¿¡ Ä¿³Î ºÎºÐÁß Å½ºÅ© ½ºÀ§Äª¿¡ µµ´ÞÇÏ°Ô µÇ¸é ¼³¸íÇÏ°Ô µÉ °ÍÀÔ´Ï´Ù. ÀÏ´Ü ÀÌ Å½ºÅ© »óÅ ¼¼±×¸ÕÆ®(TSS) °¡ »ý¼ºµÇ°í, TSS ´Â ŽºÅ© ¼¼±×¸ÕÆ®¸¦ °¡¸®Å°±â À§ÇÑ GDT ¿£Æ®¸®¸¦ »ý¼ºÇϱâ À§Çؼ­ ²À ÇÊ¿äÇÑ °ÍÀÔ´Ï´Ù. TSS ÀÇ 64 ºñÆ® ¿£Æ®¸® Æ÷¸ËÀº ´ÙÀ½°ú °°½À´Ï´Ù. ======================================== 63 - 56 Base AddressÀÇ ³× ¹øÂ° ¹ÙÀÌÆ® 55 Granularity(G) ºñÆ® 54 - 53 0 52 Available for use (free bit) 51 - 48 Upper Nibble of Size 47 Present in Memory Bit 46 - 45 µð½ºÅ©¸³ÅÍ Æ¯±Ç ·¹º§(DPL) 44 System Built 43 16/32 ºñÆ® 42 0 41 Busy ºñÆ® 40 1 39 - 32 Base AddressÀÇ ¼¼ ¹øÂ° ¹ÙÀÌÆ® 31 - 24 Base AddressÀÇ µÎ ¹øÂ° ¹ÙÀÌÆ® 23 - 16 Base AddressÀÇ Ã¹ ¹øÂ° ¹ÙÀÌÆ® 15 - 8 Segment SizeÀÇ µÎ ¹øÂ° ¹ÙÀÌÆ® 7 - 0 Segment SizeÀÇ Ã¹ ¹øÂ° ¹ÙÀÌÆ® ======================================== ÀÌ¹Ì º»¹Ù°¡ ÀÖ°ÚÁö¸¸, ÀÌ ±¸Á¶´Â ÄÚµå ¼¼±×¸ÕÆ® µð½ºÅ©¸³ÅÍ¿Í ¸Å¿ì Èí»çÇÕ´Ï´Ù. Â÷À̰¡ ÀÖ´Ù¸é 16/32 ºñÆ®, ±×¸®°í Busy ºñÆ® ÀÔ´Ï´Ù. 16/32 ºñÆ®´Â TSS °¡ 16 ºñÆ® ÀÎÁö 32 ºñÆ®ÀÎÁö¸¦ ¾Ë·ÁÁÝ´Ï´Ù. ¿ì¸®´Â 32BIT ŽºÅ© ¼¼±×¸ÕÆ®¸¸À» »ç¿ëÇÒ °ÍÀ̹ǷΠÀÌ ºñÆ®´Â 1 ÀÌ µË´Ï´Ù. 16ºñÆ® TSS ´Â 286À» À§Çؼ­ »ç¿ëµÇ´Âµ¥, 386 ÀÌ»óÀÇ ¸Ó½Å¿¡¼­´Â 32ºñÆ® TSS ·Î ´ëÄ¡ µÇ¾ú½À´Ï´Ù. Busy ºñÆ®´Â ŽºÅ©°¡ ÇöÀç busy »óÅÂÀÎÁö¸¦ ±â¼úÇÕ´Ï´Ù. ÀÏ´Ü Ä¿³Î ŽºÅ©°¡ ÇÒ´çµÇ°í ³ª¸é »õ Ä¿³Î ½ºÅÃÀÌ ÇÒ´çµÇ°í, µ¿ÀÛÇÒ ¼ö ÀÖ´Â »óŰ¡ µË´Ï´Ù. ÀÌ¿Í °°Àº ÀÛ¾÷Àº ¾Ë·ÁÁø ½ºÅÃÀÌ Ä¿³ÎÀÇ ¸Þ¸ð¸® °ü¸®ÀÚ¸¦ »ç¿ëÇÏ¿© ƯÁ¤À§Ä¡¿¡ ¸ÅÇÎ µÉ ¼ö ÀÖ°Ô ÇØÁÝ´Ï´Ù. ±×¸®°í ³ª¼­ À¯Àú ŽºÅ©´Â Ä¿³Î ŽºÅ©¿Í ºñ½ÁÇÑ ÇüÅ·Π»ý¼ºµË´Ï´Ù. ÇöÀçÀÇ ±¸ÇöÀ¸·Î´Â À¯Àú ŽºÅ©°¡ 0x20000¿¡ À§Ä¡ÇÏ°Ô µÇ°í, À¯Àú ŽºÅ©ÀÇ ½ºÅÃÀº 0x2107c ¿¡ À§Ä¡ÇÏ°Ô µË´Ï´Ù. ÀϹÝÀûÀ¸·Î, ÀÌ À¯Àú ŽºÅ©´Â OS ·¹º§ÀÇ Æ¯±ÇÀ» °®°í µ¿ÀÛÇÕ´Ï´Ù. ÀÌ OS Ư±Ç ·¹º§À» °®´Â À¯Àú ŽºÅ©ÀÇ ¼¿·ºÅ͸¦ GDT ÀÇ À¯Àú ¿£Æ®¸®·Î º¯°æÇÒ ¶§ ³ª´Â ¸î°¡Áö ¹®Á¦Á¡¿¡ Á÷¸éÇÏ°Ô µÇ¾ú´ä´Ï´Ù. ³»°¡ ÀÌ ¹®Á¦Á¡À» °íÄ¡°Ô µÇ¸é ³» À¥ »çÀÌÆ®¿¡ ¼öÁ¤ºÎºÐÀ» Æ÷½ºÆ® ÇÏ°Ô µÉ°Ì´Ï´Ù. ¿©ÇÏÆ° À¯Àú ŽºÅ©°¡ »ý¼ºµÈ ÈÄ¿¡ À¯Àú ŽºÅ©´Â ½ºÄÉÁì·¯°¡ ½ÃÀÛµÇ¾î ´Ù¸¥ ŽºÅ©¿ÍÀÇ ÀüȯÀ» À§Çؼ­ ŽºÅ© Å¥¿¡ Ãß°¡ µË´Ï´Ù. ÀÌÁ¦ Ä¿³Î ŽºÅ©¿Í (ºñ·Ï Ä¿³Î Ư±Ç ·¹º§À» °®°í µ¿ÀÛÇÏ´Â À¯Àú ŽºÅ© ÀÌÁö¸¸) À¯Àú ŽºÅ©´Â »ý¼ºÀÌ ¿Ï·á µÇ¾ú´Âµ¥ ÀÌ´Â ÀÎÅÍ·´Æ® Å×À̺íÀ» ¼Â¾÷Çϱâ À§Çؼ­´Â ÇʼöÀûÀÎ ÀÛ¾÷ÀÔ´Ï´Ù. ÀÎÅÍ·´Æ® Å×À̺íÀ» ¼Â¾÷ÇÏ´Â ÀÛ¾÷Àº kinit_idt() ÇÔ¼ö¿¡ È£Ãâ¿¡ ÀÇÇØ ¿Ï·á µË´Ï´Ù. kinit_idt() ´Â null ÀÎÅÍ·´Æ® ÇÔ¼ö¸¦ °¡¸®Å°±â À§ÇÑ ¸ðµç ÀÎÅÍ·´Æ®ÀÇ ¼¼ÆÃÀ¸·Î ºÎÅÍ ½ÃÀ۵˴ϴÙ. null ÀÎÅÍ·´Æ® ÇÔ¼öÀÇ Àǹ̴ ´ëºÎºÐÀÇ ÀÎÅÍ·´Æ®°¡ ´Ü¼øÈ÷ return ÇÏ´Â ¿ªÇÒ¸¸ ÇÑ´Ù´Â ÀǹÌÀÔ´Ï´Ù. ÇÏÁö¸¸ ŸÀÌ¸Ó¿Í ÇϳªÀÇ ½Ã½ºÅÛ ÄÝÀ» À§ÇÑ ÀÎÅÍ·´Æ® Çڵ鷯´Â ÀÖ¾î¾ß µÇ°ÚÁö¿ä. ¶ÇÇÑ ÀÎÅÍ·´Æ®´Â ´Ù¾çÇÑ ¿¹¿Ü¸¦ ó¸®Çϱâ À§ÇØ ¼Â¾÷µË´Ï´Ù. ÀÏ´Ü ÀÌ Å×À̺íÀÌ Ã¤¿öÁö¸é ÀÎÅÍ·´Æ® µð½ºÅ©¸³ÅÍ Å×À̺í(IDT)Àº idt ·¹Áö½ºÅÍ·Î ·ÎµåµË´Ï´Ù. ±×¸®°í ÀÎÅÍ·´Æ®µéÀº ±×µéÀÌ È£ÃâµÉ ¼ö ÀÖµµ·Ï »ç¿ë°¡´ÉÇÑ »óŰ¡ µË´Ï´Ù. ŸÀÌ¸Ó ÀÎÅÍ·´Æ® Çڵ鷯´Â Çϵå¿þ¾î ŸÀ̸Ӱ¡ µ¿ÀÛÇÏ´Â ¸Å ½Ã°£ ¸¶´Ù ŽºÅ© ÀüȯÀ» ¹ß»ý½ÃŰ´Â °£´ÜÇÑ ÇÔ¼öÀÔ´Ï´Ù. ½Ã½ºÅÛ ÄÝ(ÀÎÅÍ·´Æ® 22h)Àº È£ÃâµÇ°í, Çڵ鷯´Â eax ·¹Áö½ºÅͰ¡ °¡¸®Å°´Â °÷ÀÇ ¹®ÀÚ¿­À» Äֿܼ¡ Ãâ·ÂÇÒ °ÍÀÔ´Ï´Ù. ¿¹¿Ü Çڵ鸵 ·çƾÀº ŽºÅ© ·¹Áö½ºÅÍ·Î ´ýÇÁµÉ °ÍÀ̰í, ½Ã½ºÅÛÀº hang(Á¤ÁöµÈ) »óŰ¡ µË´Ï´Ù. JeffOS/kernel/ ¿¡ ÀÖ´Â jump.S ÆÄÀÏÀº ÀÎÅÍ·´Æ®°¡ ¹ß»ýµÉ ¶§ È£ÃâµÇ´Â ¾î¼Àºí¸® ·¡ÆÛ¸¦ Æ÷ÇÔÇϰí ÀÖ½À´Ï´Ù. ÀÌ ·¡ÆÛ ÇÔ¼öµéÀº C Çڵ鷯 ÇÔ¼ö¸¦ È£ÃâÇÕ´Ï´Ù. ÀÌÁ¦ IDT ´Â ¼Â¾÷ µÇ¾ú°í, ÀÎÅÍ·´Æ®°¡ ¹ß»ýÇÏ´Â µ¿¾È ŽºÅ© ÀüȯÀÌ ÀϾ ¼ö ÀÖ½À´Ï´Ù. task.c ÆÄÀÏÀÇ swtch() ÇÔ¼ö°¡ È£ÃâµÉ¶§ ÀÌ·¯ÇÑ ÀÏÀÌ ¹ß»ýÇÕ´Ï´Ù. swtch() ÇÔ¼ö´Â ŽºÅ© Å¥ÀÇ ´ÙÀ½ ŽºÅ©·Î À§Ä¡½Ã۰í, »õ·Î¿î ŽºÅ©ÀÇ ¼¿·ºÅÍ ÁÖ¼Ò¸¦ È£ÃâÇÏ°Ô µË´Ï´Ù. ÀÌ·¯ÇÑ ÇàÀ§´Â ÇÁ·Î¼¼¼­°¡ ¼¿·ºÅ͸¦ ã°Ô Çϰí,»õ·Î¿î ŽºÅ©·Î Àüȯ µÇ°Ô µË´Ï´Ù. ¿©·¯ºÐÀº ÀÌÁ¦ ¸Å¿ì ´Ü¼øÇÑ ¸ÖƼ-ŽºÅ· Ä¿³Î¿¡ ´ëÇØ ¾Ë°Ô µÇ¾ú½À´Ï´Ù. Á¦ 4Àå - À¯Àú ·¹º§ ¶óÀ̺귯¸® À¯Àú ·¹º§ ¶óÀ̺귯¸®´Â Á¤¸» ´Ü¼øÇÕ´Ï´Ù. ¿©±â¿¡´Â 2°³ÀÇ ÆÄÀÏÀÌ ÀÖ½À´Ï´Ù. ù°·Î crt0.c ÆÄÀÏÀÌ Àִµ¥, ÀÌ ÆÄÀÏÀº _start() ÇÔ¼ö¸¦ Æ÷ÇÔÇϰí ÀÖ½À´Ï´Ù. _start() ÇÔ¼ö´Â À¯Àú Äڵ忡¼­ Á¤ÀÇµÉ main ÇÔ¼ö¸¦ È£ÃâÇÏ°Ô µÇ´Âµ¥, ÀÌ stub ÇÔ¼ö´Â ÇÁ·Î¼¼½ºÀÇ ½ÇÇàÀ» ½ÃÀÛÇϱâ À§Çؼ­ Ä¿³Î¿¡ ÀÇÇØ Á¡ÇÁµÇ¾î¾ß Çϴ ùºÎºÐ¿¡ Ç×»ó ¸µÅ©µÇ°Ô µË´Ï´Ù. µÎ ¹øÂ° ÆÄÀÏÀº syscall.c ÆÄÀÏÀÔ´Ï´Ù. ÀÌ ÆÄÀÏÀº ´Ü¼øÈ÷ ÀÎÅÍ·´Æ® 22¸¦ ¼öÇàÇÏ´Â ÇϳªÀÇ system call ÇÔ¼ö¸¦ Æ÷ÇÔÇÕ´Ï´Ù. ÀÎÅÍ·´Æ®´Â ÄÜ¼Ö ½Ã½ºÅÛ ÄÝÀ» È£ÃâÇÏ°Ô µÇ´Âµ¥, eax´Â ½Ã½ºÅÛ Äֿܼ¡ Ãâ·ÂµÉ ¹®ÀÚ¿­¿¡ ´ëÇÑ Æ÷ÀÎÅ͸¦ Àü´ÞÇÏ°Ô µË´Ï´Ù. ÀÌ·¯ÇÑ µÎ°³ÀÇ ¼Ò½º ÆÄÀÏÀº ÄÄÆÄÀÏ µÇ¾î¼­ »ç¿ëÀÚ Äڵ带 ¸µÅ©ÇÒ¶§ »ç¿ëµË´Ï´Ù. Á¦ 5Àå - À¯Àú ÄÚµå À¯Àú ÄÚµå´Â test.c ¶ó´Â ÆÄÀÏ¿¡ ÀúÀåµÇ°Ô µË´Ï´Ù. ÀÌ ÆÄÀÏÀº /user µð·ºÅ丮¿¡ À§Ä¡ÇØ ÀÖÀ¸¸ç, ¸ðµç ÄÚµå´Â ¶óÀ̺귯¸®¿¡ ÀÇÇØ Áö¿øµÇ´Â ÄÜ¼Ö ½Ã½ºÅÛ ÄÝ ÇÔ¼ö¸¦ È£ÃâÇÏ°Ô µÇ°í, ¾à°£ÀÇ ½Ã°£µ¿¾È ±â´Ù¸° ÈÄ ´Ù½Ã ½Ã½ºÅÛ ÄÝÀ» È£ÃâÇÏ°Ô µÇ´Â ¹«ÇÑ ·çÇÁ·Î ±¸¼ºµÇ¾î ÀÖ½À´Ï´Ù. (ŽºÅ© Á¾·á 󸮸¦ ÇÏÁö ¾Ê´Â°Ô ÁÁ´Ù°í »ý°¢ÇÕ´Ï´Ù.) ÀÌ À¯Àú ÇÁ·Î¼¼½º¸¦ ¼¼Æ® ÇÒ¶§ ¸µÅ·ÇÒ¶§ Áß¿äÇÑ °ÍÀº ¼±Çü ÁÖ¼Ò ¿µ¿ª 20000h ÀÇ text ¼¼±×¸ÕÆ®¸¦ °¡Á®¾ß ÇÑ´Ù´Â °ÍÀÔ´Ï´Ù. ±×¸®°í, crt0.o ¿Í syscall.o ÆÄÀÏ ¶ÇÇÑ ¸µÅ© µÇ¾î¾ß ÇÕ´Ï´Ù. Ä¿³Î¿¡ ÀÇÇØ Á¡ÇÁµÇ°Ô µÉ °ÍÀ̹ǷΠcrt0 ´Â ±× ÀÚüÀÇ _start() ÇÔ¼öÀÎ 20080h ¿¡ ¸µÅ©µÇ¾î¾ß ÇÕ´Ï´Ù. »ç½Ç _start() ´Â main() ÇÔ¼ö¿Í ´ë¸³µÇ´Â ½ÇÁ¦ ¸ÞÀÎ ÇÔ¼ö ÀÔ´Ï´Ù. (% edward : ½ÇÁ¦·Î main ÇÔ¼ö¿¡¼­ ½ÃÀÛÇÑ´Ù°í Âø°¢À» ÇϽô ºÐµéÀÌ °£È¤ °è½Åµ¥ _start() °¡ ¸Â´Â°É·Î ¾Ë°í ÀÖ½À´Ï´Ù. ÀÚ¼¼ÇÑ ³»¿ëÀº ½Ã°£³¯¶§ ºÐ¼® ¹®¼­¸¦ Çϳª ¸¸µé¾î º¸°Ú½À´Ï´Ù. ) ÀÌ ÄÚµå´Â »ý¼ºµÈ ŽºÅ©À̸ç, Ä¿³Î°ú ÇÔ²² ½ÇÇà µÇ°Ô µË´Ï´Ù. Á¦ 6Àå - ¹ÙÀ̳ʸ® µð½ºÅ© À̹ÌÁö »ý¼ºÇϱ⠸ðµç ¼Ò½ºµéÀÌ ¹ÙÀ̳ʸ®·Î ÄÄÆÄÀÏ µÇ°í, build µð·ºÅ丮¿¡ µÎ°³ÀÇ ÆÄÀÏÀ» »ý¼ºÇØ¾ß ÇÕ´Ï´Ù. ÀÌ ÆÄÀϵéÀº STUFF.BIN °ú STUFF2.BIN Àε¥ ´Ü¼øÈ÷ ´Ù¸¥ ¹ÙÀ̳ʸ®µéÀÇ Á¤·ÄÀ» À§Çؼ­ ºó °ø°£À» ä¿ì´Â ÄÁÅ×ÀÌ³Ê ¿ªÇÒÀ» ÇÕ´Ï´Ù. Ç÷ÎÇÇ ·Î´õ´Â 1K Å©±âÀÇ »ç¿ëÀÚ ÇÁ·Î±×·¥À» ¿ä±¸ÇÏ°Ô µË´Ï´Ù. ¸¸¾à »ç¿ëÀÚ ÇÁ·Î±×·¥ÀÌ Á¤È®ÇÏ°Ô 1K Å©±â¸¦ °®Áö ¾Ê´Â ´Ù¸é, STUFF2.BIN Àº »ý¼ºµÉ Çʿ䰡 ÀÖ°í, USER.BIN ¿¡ ¾î¶² Å©±â°¡ ºÎ°¡µÇ¾î 1024 ¹ÙÀÌÆ®°¡ µË´Ï´Ù. ¶ÇÇÑ Ç÷ÎÇÇ ºÎÆ® ·Î´õ´Â 3.5K(3584 ¹ÙÀÌÆ®) Å©±âÀÇ Ä¿³Î ºÎÆ® ·Î´õ¤Ñ¤© ¿ä±¸ÇÏ°Ô µË´Ï´Ù. STUFF.BIN Àº BOOT.BIN(Ä¿³Î ºÎÆ® ·Î´õ)ÀÇ Å©±â¿¡ Ãß°¡µÉ ¾î¶² ±æÀÌ·Î ¸¸µé¾îÁú Çʿ䰡 ÀÖ°í Ä¿³Î ºÎÆ® ·Î´õ ÆÄÀÏÀÇ Å©±â´Â 3584 ¹ÙÀÌÆ®°¡ µË´Ï´Ù. ³ªÁß¿¡ ÀÌ ÇÁ·Î¼¼½º¸¦ ÀÚµ¿È­ ÇÒ °ÍÀÌÁö¸¸ Áö±ÝÀº ÀÛ¾÷µéÀ» ´Ü¼øÈ­½ÃÄÑ ³õÀº ½© ÇÁ·Î±×·¥ÀÎ go¸¦ ½ÇÇàÇØ¾ß µË´Ï´Ù. go ½© ÇÁ·Î±×·¥Àº ¸ðµç ¹ÙÀ̳ʸ® ÆÄÀϵéÀ» ÅëÇØ os.bin À̶ó´Â ÆÄÀÏÀ» ¸¸µé°Ô µÉ°ÍÀ̰í, ÀÌ·¸°Ô ¸¸µé¾îÁø os.bin ÆÄÀÏÀº ´ÙÀ½ÀÇ µÎ°¡Áö ¹æ¹ýÀ» ÅëÇØ µð½ºÅ©¿¡ ¾µ ¼ö ÀÖ´Ù. ¸¸¾à ¿©·¯ºÐÀÇ È¯°æÀÌ ¸®´ª½º¶ó¸é ================================================ dd if=os.bin of=/dev/fd0 Ç÷ÎÇÇ µð½ºÅ©¿¡ os.bin À» ÀúÀå ================================================ µµ½º ȯ°æÀ̶ó¸é rawrite ¸¦ ½ÇÇàÇÏ¿© Áö½Ã¿¡ µû¸£¸é µË´Ï´Ù. --- °á·Ð ÀÌ Ä¿³ÎÀº ¿Ï¼º°ú´Â °Å¸®°¡ ¸ÖÁö¸¸ ´Ù¸¸ ½ÇÁ¦ º¸È£¸ðµå ¿î¿µÃ¼Á¦¸¦ »ý¼ºÇϱâÀ§ÇÑ ½ÃÀÛÀÏ »ÓÀÔ´Ï´Ù. ±×¸®°í º¸È£¸ðµå ¿î¿µÃ¼Á¦ Á¦ÀÛ¿¡ ´ëÇÑ ½ÃÀÛÀ» ¾î¶»°Ô ÇØ¾ß ÇÒÁö ÇÏ´Â Âü°íÀÚ·á·Î´Â ÃæºÐÇÏ´Ù°í º¾´Ï´Ù. ¸Ó ¾î¼±¸ Àú¼±¸ ³¯¹ã±î°í -_- ÁÂÀýµµ Çϰí À̸®Àú¸® °í»ýÀÌ ¸¹¾ÒÁö¸¸ ÀÌ ¸ðµç °ÍÀº ¸Å¿ì Àç¹Ì ÀÖ¾ú°í, ¿©·¯ºÐµéµµ ²À ¼º°øÇÏ±æ ¹Ù¶ø´Ï´Ù. Jeff Thompson ================================================================ edward ÀÇ ¹®¼­ ÀÛ¼ºÈıâ Á¤¸» µÎ¼­¾øÀÌ ³»¿ëÀÌ ³ª°¡°í Àִµ¥ ... Á¦°¡ ¾û¸ÁÀ¸·Î ¸¸µé°í Àִ°ÇÁö ÀÌ »ç¶÷ÀÌ ¿ø·¡ µÎ¼­ ¾øÀÌ ¾´°ÇÁö ¾Ë ¼ö°¡ ¾ø³×¿ä. Á¤¸» µÎ¼Õ µÎ¹ß ´Ù µé¾ú½À´Ï´Ù. ¸¶Ä§Ç¥ »©¸Ô´Â°Ç ±âº»À̰í, ÄÞ¸¶ »©¸Ô´Â°Ç À峭ó·³ ÇÏ´Â »ç¶÷À̱º¿ä. ¤Ì.¤Ì »ó½À¹üÀÔ´Ï´Ù. -_-)a ½ÉÇÑ Á¤µµ¸¦ ÃÊ¿ùÇÏ´Â »ç¶÷À̱º¿ä. ±Ø´ÜÀûÀÎ ¿¹¸¦µé¸é µ¿»ç°¡ ¾ø´Â ¹®Àåµµ ÀÌ ºÐÀº ôô ¸¸µé¾î ³»½Ê´Ï´Ù. -_-; ±×·¡µµ À̸¸Å­ ÀÌ¶óµµ ¹®¼­ÀÛ¾÷À» ÇØµÎ¾úÀ¸´Ï ÀúÈñ´Â °¨»çÇØ¾ß µÇ´Â ÀÔÀåÀ̰ÚÁÒ. ^^; ( ¤Ì.¤Ñ ) ================================================================