ãããããIntel x86ã³ã³ãã¥ãŒã¿ãŒã§å®è¡ãããã¢ããªã±ãŒã·ã§ã³ã®æ©èœã¯å¶éãããŠãããäžéšã®ã¢ã¯ã·ã§ã³ã¯ãªãã¬ãŒãã£ã³ã°ã·ã¹ãã ã®ã¿ã§å®è¡ã§ããããšãçŽæçã«æšæž¬ããã§ãããã ãããããããå®éã«ã©ã®ããã«æ©èœãããç¥ã£ãŠããŸããïŒ ãã®æçš¿ã§ã¯ãx86ç¹æš©ã¬ãã«ã«ã€ããŠèª¬æããŸããx86ç¹æš©ã¬ãã«ã¯ãOSãšããã»ããµãé£æºããŠããŠãŒã¶ãŒã¢ãŒãã¢ããªã±ãŒã·ã§ã³ãå®è¡ã§ããããšãå¶éããã¡ã«ããºã ã§ãã
Gustavo Duarteèšäºã®ç¿»èš³ïŒ CPUãªã³ã°ãç¹æš©ãããã³ä¿è·4ã€ã®ç¹æš©ã¬ãã«ãããã0ïŒæé«ç¹æš©ã¬ãã«ïŒã3ïŒæäœç¹æš©ã¬ãã«ïŒãããã³ããã»ããµãŒä¿è·ã¡ã«ããºã ã«ãã£ãŠä¿è·ããã3çš®é¡ã®ãªãœãŒã¹ïŒã¡ã¢ãªãŒãI / OããŒããç¹å®ã®åœä»€ãå®è¡ããæ©èœïŒããçªå·ãä»ããããŠããŸãã ãã€ã§ããx86ããã»ããµã¯ç¹å®ã®ç¹æš©ã¬ãã«ã§å®è¡ãããã³ãŒããã§ããããšãšã§ããªãããšã«ãã£ãŠç°ãªããŸãã ç¹æš©ã¬ãã«ã¯ãä¿è·ãªã³ã°ãšãåŒã°ããå
¥ãåã®åãšããŠè¡šãããŸãã æãç¹æš©ã¬ãã«ã¯ããã¹ãã®åºŠåããæãé«ããµãŒã¯ã«ã«å¯Ÿå¿ããŸãã ææ°ã®x86ã³ã¢ã®ã»ãšãã©ã¯ã0ãš3ã®2ã€ã®ç¹æš©ã¬ãã«ã®ã¿ã䜿çšããŠããŸãã
é åº15åœä»€ïŒããã³æ°ããŒã¹ïŒã®å®è¡ã¯ããªã³ã°0ã§ã®ã¿å¯èœã§ããä»ã®åœä»€ã«ã¯ãæå¹ãªãªãã©ã³ãã«é¢é£ããå¶éããããŸãã ãããã®å¶éãååšããªãå Žåãä¿è·ã¡ã«ããºã ã®æ©èœãä¿èšŒããããšã¯äžå¯èœã§ãã ãããã®æ瀺ã¯ããããåé¿ããããä»ã®è² ã®çµæãããããå¯èœæ§ããããŸãã å¶éãååšããåœä»€ã¯ãã«ãŒãã«ã³ãŒãã§ã®ã¿äœ¿çšã§ããŸãã ãŒããªã³ã°ã®å€åŽã§ããããå®è¡ããããšãããšãïŒGPïŒäžè¬ä¿è·äŸå€ïŒäŸå€ãçºçããŸãã ããšãã°ãããã°ã©ã ãç¡å¹ãªã¡ã¢ãªã¢ãã¬ã¹ã«ã¢ã¯ã»ã¹ããããšããå Žåãªã©ããŸã£ããåãäŸå€ãçºçããŸãã åæ§ã«ãç¹æš©ã¬ãã«ã«å¿ããŠãã¡ã¢ãªããã³I / OããŒããžã®ã¢ã¯ã»ã¹ãå¶éãããŸãã
ã»ãã¥ãªãã£ã¡ã«ããºã ãèŠãåã«ãããã»ããµãçŸåšã®ç¹æš©ã¬ãã«ãç£èŠããæ¹æ³ãèŠãŠã¿ãŸãããã 以åã®æçš¿ã§èª¿ã¹ãã»ã°ã¡ã³ãã»ã¬ã¯ã¿ãŒã¯ãããã«çŽæ¥é¢é£ããŠããŸãã ããã«ãããŸãïŒ
ããã°ã©ããŒã¯ãç¹å®ã®åœä»€ã䜿çšããŠãããŒã¿ã»ã°ã¡ã³ãã®ã»ã°ã¡ã³ãã»ã¬ã¯ã¿ãŒãããŒã¿ã®ã»ã°ã¡ã³ãã¬ãžã¹ã¿ïŒSSãDSãªã©ïŒã®ããããã«ããŒãããŸãã ãã®å ŽåãèŠæ±ãããç¹æš©ã¬ãã«ïŒRPLïŒãã£ãŒã«ããå«ãã»ã°ã¡ã³ãã»ã¬ã¯ã¿ãŒã®å
容å
šäœãããŒããããŸãããã®ç®çã«ã€ããŠã¯ãããå°ã詳ãã説æããŸãã CSã¬ãžã¹ã¿ã«é¢ããŠã¯ãããã§ã¯ãã¹ãŠãå°ãç°ãªããŸãã ãŸããmovãªã©ã®ããŒãåœä»€ãçŽæ¥äœ¿çšããŠããã®ã¬ãžã¹ã¿ã«ã»ã¬ã¯ã¿ãŒãããŒãããããšã¯ã§ããŸããã 代ããã«ãã¬ãžã¹ã¿ã®å
容ã¯ããã¡ãŒã³ãŒã«ãªã©ã®å®è¡ãããŒãå¶åŸ¡ããåœä»€ãå®è¡ããçµæãšããŠã®ã¿å€æŽã§ããŸãã 第äºã«ãããã¯ç§ãã¡ã«ãšã£ãŠéåžžã«éèŠã§ããããã°ã©ãã«ãã£ãŠå€ã決å®ãããRPLãã£ãŒã«ãã®ä»£ããã«ãCSã¬ãžã¹ã¿ã®ã»ã¬ã¯ã¿ã«ã¯çŸåšã®ç¹æš©ã¬ãã«ïŒCPLïŒãã£ãŒã«ããããããã®å€ã¯ããã»ããµèªäœã«ãã£ãŠèšå®ããã³å¶åŸ¡ãããŸãã CSã¬ãžã¹ã¿ã®2ãããCPLãã£ãŒã«ãã¯ãåžžã«ããã»ããµãåäœããçŸåšã®ç¹æš©ã¬ãã«ãåæ ããŠããŸãã ã€ã³ã¿ãŒãããã§å
¬éãããŠãããã®ãå«ãIntelããã¯ã§ã¯ããã®åé¡ã«éããããå ŽåããããŸããããã®äºå®ã¯ç©äºã®æ¬è³ªãæ£ç¢ºã«åæ ããŠããŸãã ãã€ã§ããããã»ããµèªäœã§çºçããªãããã«ãCSã¬ãžã¹ã¿ã®CPLãã£ãŒã«ãã®å€ãèŠãŠãã³ãŒããå®è¡ãããçŸåšã®ç¹æš©ã¬ãã«ãåžžã«èŠã€ããŸãã
ããã»ããµã®çŸåšã®ç¹æš©ã¬ãã«ã¯ããªãã¬ãŒãã£ã³ã°ã·ã¹ãã ã®ãŠãŒã¶ãŒã«ããç¹æš©ãšã¯é¢ä¿ããªãããšã«æ³šæããŠãã ããã rootã管çè
ãã²ã¹ããäžè¬ãŠãŒã¶ãŒãªã©ãã©ã®ã¢ã«ãŠã³ãã§äœæ¥ããŠãããã¯é¢ä¿ãããŸããã ãã¹ãŠã®ãŠãŒã¶ãŒã¢ããªã±ãŒã·ã§ã³ã®ã³ãŒãã¯ãªã³ã°3ã§å®è¡ãããã«ãŒãã«ã«é¢é£ããã³ãŒãã¯ãªã³ã°0ã§å®è¡ãããŸããã«ãŒãã«ã«å
žåçãªäžéšã®ã¿ã¹ã¯ã¯ãŠãŒã¶ãŒã¹ããŒã¹ã«è»¢éã§ããŸããããšãã°ãäžéšã®ãã©ã€ããŒã¯Windows Vistaã§å®è£
ãããŸãããããã¯ãç¹å¥ãªçš®é¡ã®ããã»ã¹ãã«ãŒãã«ã«å¯ŸããŠäœããã®äœæ¥ãè¡ãå Žåã«ã®ã¿ãç¹å¥ãªã±ãŒã¹ãšèŠãªãããšãã§ããŸãã éåžžã圌ãã¯æ·±å»ãªçµæãªãã«æ®ºãããããšãã§ããŸãã
ã¡ã¢ãªããã³å
¥å/åºåããŒããžã®ã¢ã¯ã»ã¹ã«é¢ããæ¢åã®å¶éã«ããããŠãŒã¶ãŒã¢ãŒãã§å®è¡ãããããã°ã©ã ã¯å®éã«ã¯ãç°å¢ãã«åœ±é¿ãäžããããšãã§ãããã«ãŒãã«ã®å©ããªãã§ã¯äœãã§ããŸããã ãã®ãããªããã°ã©ã ã¯ããã¡ã€ã«ãéãããããããã¯ãŒã¯ãã±ãããéä¿¡ããããããã¹ãè¡ã衚瀺ããããèªèº«ã«ã¡ã¢ãªãå²ãåœãŠããããããšã¯ã§ããŸããã ãŠãŒã¶ãŒããã»ã¹ã¯ãããŒããªã³ã°ãªããŒããªã³ã°ãã«ãã£ãŠæºåããããæ ¹æ¬çã«åãæšãŠãããæ©èœãæã€äžçš®ã®ãµã³ãããã¯ã¹ã§å®è¡ããããšèšããŸãã ãããã£ãŠãããã»ã¹ãåå ã§ã¡ã¢ãªãªãŒã¯ãçºçããå Žåãããã»ã¹ã®åç¶æéäžã«éããããã¡ã€ã«ãå®äºåŸãéããããŸãŸã«ãªããªãããã«ãããã»ã¹èªäœã«èããããšãã§ããŸããã ãã®ãããªããšãå¶åŸ¡ããããã«äœ¿çšããããã¹ãŠã®ããŒã¿æ§é ïŒå²ãåœãŠãããã¡ã¢ãªãéããŠãããã¡ã€ã«ïŒã¯ããŠãŒã¶ãŒã³ãŒãã§ã¯äœ¿çšã§ããŸããã ããã°ã©ã ã®å®è¡ãå®äºãããšããã«ããã®ããµã³ãããã¯ã¹ãã¯ã«ãŒãã«ã«ãã£ãŠç Žå£ãããŸãã ããããææ°ã®ãµãŒããŒã600æéã®çšŒåæéãæã€ããšãã§ããçç±ã§ã-ããŒããŠã§ã¢ãŸãã¯ã«ãŒãã«ã«é害ããªããã°ããã¹ãŠãæ°žä¹
ã«æ©èœããŸãã ãšããã§ããããWindows 95/98ãé »ç¹ã«ã¯ã©ãã·ã¥ããçç±ã§ãããããããM $ãæªãããšããçç±ã§ã¯ãããŸãããäžäœäºææ§ã確ä¿ããããã ãã«ãéèŠãªããŒã¿æ§é ããŠãŒã¶ãŒã¢ãŒãã¢ããªã±ãŒã·ã§ã³ã§äœ¿çšå¯èœã§ãã åœæãããã¯ãããã劥åœãªåŠ¥åæ¡ã§ããããéåžžã«é«äŸ¡ã§ãã
ããã»ããµã¯ã2ã€ã®æŠç¥çãªãã€ã³ãã§ã¡ã¢ãªãä¿è·ããŸããã»ã°ã¡ã³ãã»ã¬ã¯ã¿ãã¬ãžã¹ã¿ã«ããŒãããããšãããšããããã³ã¡ã¢ãªããŒãžã«ã¢ã¯ã»ã¹ãããšãã§ãã ãããã£ãŠãä¿è·ã¡ã«ããºã ã¯ãã¢ãã¬ã¹å€æã®äž»èŠãªæ®µéãåæ ããŠãããã»ã°ã¡ã³ããŒã·ã§ã³ãšããŒãžã³ã°ãå«ãŸããŸãã ã»ã°ã¡ã³ãã»ã¬ã¯ã¿ãŒãããŒãããããšãããšã次ã®ãã§ãã¯ãè¡ãããŸãã
æ°å€ã倧ããã»ã©ãããã瀺ãç¹æš©ã¬ãã«ã¯äœããªããŸãã ãããã£ãŠãMAXïŒïŒé¢æ°ã¯ãæå°ç¹æš©ã¬ãã«ïŒCPLãŸãã¯RPLïŒãè¡šãå€ãéžæããã¿ãŒã²ããèšè¿°åïŒDPLïŒã®ç¹æš©ã¬ãã«ãšæ¯èŒããŸãã DPLã以äžã®å Žåãã¢ã¯ã»ã¹ãèš±å¯ãããŸãã ãã®åŒã§RPLã䜿çšããå
šäœã®ãã€ã³ãã¯ãå¿
èŠã«å¿ããŠã«ãŒãã«ãæå³çã«äœãç¹æš©ã¬ãã«ã§ã»ã°ã¡ã³ãã«ã¢ã¯ã»ã¹ã§ããããã«ããããšã§ãã ããšãã°ãäžéšã®æäœããŠãŒã¶ãŒã¢ãŒãã®ããŒã¿ã»ã°ã¡ã³ãã§ã®ã¿æ©èœããããã«å¶éããããã«ãRPLã3ã«èšå®ãããŠããã»ã¬ã¯ã¿ãŒã䜿çšã§ããŸãã ã»ã¬ã¯ã¿ãSSã¬ãžã¹ã¿ã«ããŒããããšãã®ãã§ãã¯ã¯ç°ãªããŸããããã§ã¯ãæ£åžžã«ééããã«ã¯ãCPLãRPLãããã³DPLã®3ã€ã®å€ããã¹ãŠäžèŽããå¿
èŠããããŸãã
å®éã«ã¯ãã»ã°ã¡ã³ãã¬ãã«ã§ã®ä¿è·ã¯ç¹å¥ãªåœ¹å²ãæãããŸãããããã¯ãææ°ã®ã«ãŒãã«ãããŠãŒã¶ãŒã¢ãŒãã»ã°ã¡ã³ããå©çšå¯èœãªãã¹ãŠã®ç©çã¢ãã¬ã¹ç©ºéãã«ããŒããããã©ãããªãã¡ã¢ãªæ§æã¢ãã«ã䜿çšããããã§ãã ç·åœ¢ã¢ãã¬ã¹ãç©çã¢ãã¬ã¹ã«å€æãããšãã«ãããŒãžã³ã°ãŠãããã§ããã€ãã®æçšãªã¡ã¢ãªä¿è·ãæäŸãããŸãã ã¡ã¢ãªã®åããŒãžã¯äžé£ã®ãã€ãã§ãããããŒãžããŒãã«ã®ãšã³ããªã«ãã£ãŠèšè¿°ãããŸãã ãã®ãšã³ããªã§ã¯ã2ã€ã®ãã£ãŒã«ããã€ãŸãã¹ãŒããŒãã€ã¶ãã©ã°ãšèªã¿åã/æžã蟌ã¿ãã©ã°ãã»ãã¥ãªãã£ã¡ã«ããºã ã«é¢é£ããŠããŸãã ã¹ãŒããŒãã€ã¶ãã©ã°ã¯ãææ°ã®ã«ãŒãã«ã§äœ¿çšãããäž»èŠãªé²åŸ¡ã¡ã«ããºã ã§ãã ãã®ãã©ã°ãã¯ãªã¢ãããšããªã³ã°3ããããŒãžã«ã¢ã¯ã»ã¹ã§ããªããªããŸããèªã¿åã/æžã蟌ã¿ãã©ã°ã¯ç¹æš©ã®ãã§ãã¯ã«ã¯äœã®åœ¹å²ãæãããŸããããããã§ãèå³æ·±ãã¢ããªã±ãŒã·ã§ã³ãèŠã€ããŸãã ããã°ã©ã ãå®è¡ã®ããã«ã¡ã¢ãªã«ããŒãããããšãããã°ã©ã ã®å®è¡å¯èœã€ã¡ãŒãžãæ ŒçŽããã¡ã¢ãªããŒãžã¯èªã¿åãå°çšãšããŠããŒã¯ãããŸãã ããã«ããããã€ã³ã¿ãŒã䜿çšãããšãã«ãšã©ãŒããã£ããã§ããŸãããšã©ãŒã䜿çšãããšããããã®ããŒãžãžã®æžã蟌ã¿ãè©Šè¡ãããŸãã èªã¿åã/æžã蟌ã¿ãã©ã°ã¯ãUnixã©ã€ã¯ãªãªãã¬ãŒãã£ã³ã°ã·ã¹ãã ã§forkïŒïŒã·ã¹ãã ã³ãŒã«ã䜿çšããŠåããã»ã¹ãäœæãããšãã«ãã³ããŒãªã³ã©ã€ãã¡ã«ããºã ãå®è£
ããããã«ã䜿çšãããŸãã ãã©ãŒã¯ãäœæããããšã芪ããã»ã¹ã®ã¡ã¢ãªããŒãžã¯èªã¿åãå°çšãšããŠããŒã¯ãããŸãã åããã»ã¹ã¯ãæåã¯èŠªããã»ã¹ãšåãã¡ã¢ãªããŒãžã䜿çšããŸãã ãããã®ãããããã¡ã¢ãªããŒãžã«æžã蟌ãããšãããšãããã»ããµããã©ãŒã«ããéå§ããã«ãŒãã«ã¯æ¬¡ã®ããã«ãããå®è¡ããŸã-ããŒãžã®ç¬èªã®ã³ããŒãæžã蟌ãããšããããã»ã¹çšã«äœæãããã®ããŒãžã®èªã¿åã/æžã蟌ã¿æš©éãèšå®ããŸãã
ã©ãã CPUãç°ãªãç¹æš©ã¬ãã«ãåãæ¿ããããšãã§ããã¡ã«ããºã ãå¿
èŠã§ãã ãªã³ã°3ã§å®è¡ãããŠããã³ãŒããã«ãŒãã«å
ã®ä»»æã®å Žæã«å¶åŸ¡ã転éã§ããå Žåãééã£ãïŒãŸãã¯æ£ããïŒïŒã¢ãã¬ã¹ã§jmpãå®è¡ããã ãã§ããªãã¬ãŒãã£ã³ã°ã·ã¹ãã ã®ä¿è·ã¡ã«ããºã ãç°¡åã«ãã€ãã¹ã§ããŸãã ãããé²ãã«ã¯ãå®è¡ãããŒã®å¶åŸ¡ããã転éãæäŸããã¡ã«ããºã ãå¿
èŠã§ãã ããããã«åºã¥ããŠå®è£
ãããŸãã ã²ãŒãèšè¿°åãŸãã¯sysenteråœä»€ã ã²ãŒãèšè¿°åã¯ãã¿ã€ããã·ã¹ãã ãã®ã»ã°ã¡ã³ãèšè¿°åã§ãã ã³ãŒã«ã²ãŒããå²ã蟌ã¿ã²ãŒãããã©ããã²ãŒããã¿ã¹ã¯ã²ãŒãèšè¿°åã®4çš®é¡ããããŸãã ã³ãŒã«ã²ãŒãèšè¿°åãä»ããŠãã«ãŒãã«ã¯ããã¡ãŒã³ãŒã«ããã¡ãŒãžã£ã³ããªã©ã®éåžžã®åœä»€ã§äœ¿çšã§ãããšã³ããªãã€ã³ããæäŸã§ããŸãã åŒã³åºãã²ãŒãèšè¿°åã¯ããŸã䜿çšãããªãããããããã«ã€ããŠã¯èª¬æããŸããã ã¿ã¹ã¯ã²ãŒãèšè¿°åãããŸãé¢å¿ããããŸããïŒLinuxã§ã¯ãéåžžã¯ã«ãŒãã«ãŸãã¯ããŒããŠã§ã¢ã®åé¡ãåå ã§çºçããäºéé害ãåŠçããå Žåã«ã®ã¿äœ¿çšãããŸãïŒã
ããã«2ã€ã®èå³æ·±ãã¿ã€ãã®èšè¿°åãæ®ããŸããããŒããŠã§ã¢å²ã蟌ã¿ïŒããŒããŒããã¿ã€ããŒããã£ã¹ã¯ïŒãšäŸå€ïŒããŒãžéåããŒãé€ç®ïŒãåŠçããããã«äœ¿çšãããå²ã蟌ã¿ã²ãŒããšãã©ããã²ãŒãã ãããã®ã¿ã€ãã®ã¡ã«ããºã ã®äž¡æ¹ã¯ãç§ãåæã«ãå²ã蟌ã¿ããšåŒã³ãŸãã ãã®ã¿ã€ãã®èšè¿°åã¯ãå²ã蟌ã¿èšè¿°åããŒãã«ïŒIDTïŒã«æ ŒçŽãããŸãã åå²ã蟌ã¿ã«ã¯ããã¯ãã«ãšåŒã°ãã0ã255ã®èå¥çªå·ãå²ãåœãŠãããŸãã å²ã蟌ã¿ã®åŠçã«äœ¿çšããèšè¿°åã決å®ããå¿
èŠãããå Žåãããã»ããµã¯IDTã®èšè¿°åãžã®ãã€ã³ã¿ãšããŠãã¯ãã«ã䜿çšããŸãã å²ã蟌ã¿ã²ãŒãããã³ãã©ããã²ãŒãèšè¿°åã®åœ¢åŒã¯å®è³ªçã«åãã§ãã ãã®åœ¢åŒãšãå²ã蟌ã¿ãçºçãããšãã«å®è¡ãããç¹æš©ãã§ãã¯ãå³ã«ç€ºããŸãã ããã€ãã®èšè¿°åãã£ãŒã«ãã«ãLinuxã«ãŒãã«ãä»æ§ãè¿œå ããããã«äžè¬çã«äœ¿çšããå€ãå
¥åããŸããã
ã¢ã¯ã»ã¹ã¯ãã¿ãŒã²ããã»ã°ã¡ã³ãã®çŸåšã®CPLãšDPLã«åºã¥ããŠå¶åŸ¡ããããšã³ããªãã€ã³ãã¯ãã²ãŒãèšè¿°åã®ã»ã¬ã¯ã¿ãšãªãã»ãããã£ãŒã«ãã«åºã¥ããŠæ±ºå®ãããŸãã çŸä»£ã®ã«ãŒãã«ã§ã¯ãéåžžãã²ãŒãèšè¿°åã®å¯Ÿå¿ãããã£ãŒã«ãã«å«ãŸããã»ã°ã¡ã³ãã»ã¬ã¯ã¿ãŒãã«ãŒãã«ã®ã³ãŒãã»ã°ã¡ã³ããéžæããŸãã å²ã蟌ã¿ã¡ã«ããºã ã¯ãããç¹æš©ã®ãããªã³ã°ããç¹æš©ã®äœããªã³ã°ã«å¶åŸ¡ã転éããããã«äœ¿çšã§ããªãããã«èšèšãããŠããŸãã ç¹æš©ã¬ãã«ã¯åããŸãŸã«ããããå¢ããå¿
èŠããããŸãïŒããšãã°ãã¢ããªã±ãŒã·ã§ã³ã®ãŠãŒã¶ãŒã¢ãŒããäžæãããå Žåã«çºçããŸãïŒã ãããã®å Žåã§ããæ°ããCPLå€ã¯ã¿ãŒã²ããã³ãŒãã»ã°ã¡ã³ãã®DPLãšçãããªããŸãã CPLãå€æŽãããç¶æ³ã§ã¯ãã¹ã¿ãã¯ã»ã°ã¡ã³ããèªåçã«åãæ¿ãããŸãã å²ã蟌ã¿ãããã°ã©ã çãªå ŽåïŒããšãã°ãINT nåœä»€ã®å®è¡ã«ããïŒãããã«1ã€ã®ãã§ãã¯ãå®è¡ãããŸããã²ãŒãDPLã¯å
ã®CPL以äžã§ããå¿
èŠããããŸãã ãã®ãã¹ãã¯ããŠãŒã¶ãŒã³ãŒããã¢ã¯ã»ã¹ã§ããªãå²ã蟌ã¿ãã³ãã©ãŒãåŒã³åºãããã«èšèšãããŠããŸãã Linuxã§ã¯ããã¹ãŠã®å²ã蟌ã¿ãã³ãã©ãŒã¯ãªã³ã°0ã§å®è¡ãããŸãã
åæåäžã«ãLinuxã«ãŒãã«é¢æ°setup_idtïŒïŒã¯ãèšè¿°åã«ç¹å®ã®ãšã³ããªãã€ã³ããæå®ããã«IDTããŒãã«ãäœæããŸãã 次ã«ã/ asm-x86 / desc.hããã³arch / x86 / kernel / traps_32.cãªã©ã®ãã¡ã€ã«ã®å
容ã«åŸã£ãŠãèšè¿°åã«ããŒã¿ãæžã蟌ãŸããŸãã Linuxã®çšèªã§ã¯ãååã«ãã·ã¹ãã ããšããèªãå«ãŸããèšè¿°åã¯ããŠãŒã¶ãŒã¢ãŒãã³ãŒãã§äœ¿çšã§ããŸãããŸããDPLã²ãŒãã¯3ã«èšå®ãããŸãããã·ã¹ãã ã²ãŒããã¯ããŠãŒã¶ãŒã¢ãŒãã³ãŒãã§äœ¿çšã§ããã€ã³ããªãžã§ã³ããã©ããã²ãŒãã§ãã ããã«ãçšèªã®éãã¯ãããããŸããã ããŒããŠã§ã¢å²ã蟌ã¿ã¯ããã§ã¯ãªãã察å¿ãããã©ã€ããŒã§æ§æãããŸãã
ãŠãŒã¶ãŒã¢ãŒãã§ã¯3ã€ã®ã²ãŒãã䜿çšã§ããŸãããã¯ã¿ãŒ3ãš4ã¯ãããããæ°å€ãªãŒããŒãããŒã®ãããã°ãšãã§ãã¯ã«äœ¿çšãããŸãã 次ã«ãSYSCALL_VECTORå®æ°ã®å€ã«çããIDãæã€ã·ã¹ãã ã²ãŒãããããŸããx86ã¢ãŒããã¯ãã£ã®å Žåã¯0x80ã§ãã 以åã¯ãããã¯ã·ã¹ãã ã³ãŒã«ãè¡ããšãã«ã«ãŒãã«ã«å¶åŸ¡ã移ãããã®äž»èŠãªã¡ã«ããºã ã§ããã ãint 0x80ããšããæåã®å¶æªç¯çªå·ãå¿
èŠãªãšãããããŸããã Pentium Proãããã·ã¹ãã ã³ãŒã«ãé«éåããããã«èšèšãããæ°ããsysenteråœä»€ãè¿œå ãããŸããã ãã®åœä»€ã¯ãã³ãŒãã»ã°ã¡ã³ãããšã³ããªãã€ã³ããªã©ã«é¢ããæ
å ±ãæ ŒçŽããç¹æ®ã¬ãžã¹ã¿ã䜿çšããŸãã sysenteråœä»€ãå®è¡ããããšãç¹æš©ã¬ãã«ã¯ãã§ãã¯ããããããã»ããµã¯ããã«CPL 0ã«åãæ¿ããã察å¿ããå€ãã³ãŒããšã¹ã¿ãã¯ïŒCSãEIPãSSãããã³ESPïŒã«é¢é£ããã¬ãžã¹ã¿ã«ããŒãããŸãã sysenteråœä»€ã䜿çšããã¬ãžã¹ã¿ãŒãžã®å€ã®ããŒãã¯ããªã³ã°0ããã®ã¿å¯èœã§ãããenable_sep_cpuïŒïŒé¢æ°ã«ãã£ãŠå®è¡ãããŸãã
æåŸã«ããªã³ã°3ã«æ»ããšããã«ãŒãã«ã¯IRETãŸãã¯SYSEXITåœä»€ã䜿çšããŠãå²ã蟌ã¿ãŸãã¯ã·ã¹ãã ã³ãŒã«ãããããåŠçããåŸã«å¶åŸ¡ãåãæ»ããŸãã ãã®çµæããªã³ã°0ã®ãŸãŸã«ãªããCPLã3ã®ãŠãŒã¶ãŒã¢ãŒãã³ãŒããåéãããŸããVimã¯ãåèªæ°ãæ¢ã«1900ã«è¿ãããšãæããŠãããŸãã ãæž
èŽããããšãããããŸããïŒ