ΥڡϤƤʥ֥åޡɲΥڡޤϤƤʥ֥åޡ Υڡlivedoor åפɲΥڡޤlivedoor å

ܼ

ץ¹˥ԥ塼ˤȤäͽ¬Ƥʤä餫λ֤뤳Ȥ롣㤨Хϡɥΰ۾桼Υǡϡʥ桼ưϥԥ塼ˤȤäͽ¬ǽˡ餫Υ顼ʤɤǤ롣֤ȯȤˤϤ줾λ֤бǤץबƤӽФ褦ˤʤäƤ롣ȤĤޤꡢߤȤϰǤȡֲפȤ롣

ߤȡԥ塼ϤޤǼ¹ԤƤޥ̿Ǥ롣ߤäꤵȡ̿ˤꡢɬפʿʥޥ̿Υɥ쥹ץ५󥿡˽񤭹ޤ롣׵бץबư졢꤬褵ȡԥ塼ϳ˹ԤäƤޥ̿Ȥ櫓

ߤλȤߤΤǡץबưʤ饷ƥѼԤܡȤäϤꡢOSϥͥåȥǡꤹ뤳ȤǤ롣ǥI/Oäʤɤˤϡɥߤ롣

ѡХ

ѡХSuper Visor CallSVCȤϡƥλ񸻤Фưμǰ˥ʤ󶡤ΤǤ롣ƥॳsystem callȤƤФ롣

ѡХ¹Ԥ̤ȤơΤ褦ʾ礬󤲤롣

  • եϤξ
    • եΥץ䥯եΥ꡼ɤ饤Ȥʤ
  • ̿ξ
    • ͥγΩʤ
  • ʥץξ
    • ҥץKILLɥ⥸塼μ¹Ԥʤ

ѡХϡŪʼ³ʴؿƤӽФˤη롣񤷤Τǡ饤֥ؿDZäƤꡢ桼ФƤϴʰפʥ󥿡ե󶡤뤳Ȥ¿

ȥѡХ

ץåø⡼ɤø⡼ɤ2ĤΥ⡼ɤưƤ롣

  • ø⡼ɡʥͥ⡼ɡѡХ⡼ɡޥ⡼ɡ
    • ֤֤ʤɤΥƥλ񸻤˥Ǥ⡼ɤΤȡ
    • ʳΥ⡼ɤưƤ륿ƥλ񸻤˥ϡѡХˤäCPUø⡼ɤڤؤɬפ롣
  • ø⡼ɡʥ桼⡼ɡץ⡼ɡ졼֥⡼ɡ
    • ԥ塼λ񸻤˥Ǥʤ⡼ɤΤȡ
    • ø⡼ɤ饷ƥλ񸻤˥ϡѡХ¹Ԥ뤳Ȥǥǽˤʤ롣

ߵǽɤ

ߵǽɤϡޥεǽ夫餫ʤפʰ̣äƤꡢĤƤCPUʤ뤴Ȥ˳ߵǽβ줿ΤȯɽƤä

㤨СIntel 8085Ǥ8080٤ơüҤ5üҤä˳ߵǽ졢ޥ٥γߤǽȤʤäƤ롣

ߤȥ֥롼ΰ㤤

ɤץ̤Υץ¹Ԥ뤬֥롼Ϥ餫ͽƤΤʤΤФơߤCPUˤȤäƤޤäͽۤƤʤΤǤ롣ϩCPUưȤޤä̵ط˳׵΅ФơήѤƤޤΤǤ롣ȡCPUϺ¹ԤƤץǤơߤƤץ˼ݤ롣ơ줬СƤӸΥץ椫Ϥ롣

ߤμ¸

ߤ¸ˡ̤ȥեȥŪʳߤȥϡɥŪʳߤ롣

CʤɤǤforifʸǤޤռʤ֥٥ǤGOTOʸ̿ǥפ롣 ޤGOTOʸʤƤ⡢ϡɥŪ˳𤷤ƶŪ˥פ뤳ȤǤ롣

եȥϡɥΤˤ衢ߤȯȡ餫ޤä˥פ櫓Ǥ롣ȡפɥ쥹񤭹ޤ줿쥸˾񤭤롣㤨С100msȤ˳ƥץबڤؤäꤹ롣ʤ顢ʹ֤ˤȤäƤϸޥưƤ褦˸櫓

ʤCPUץƥʤƤ褤ʤ顢ޡߤȤϡɥʤƤOS˽äƤ롣

[]Windows 95Ǥϡץ곫ȯ¦ָOSڤؤ롼虜虜ץ˵Ҥ褦ʻͤǤä

ߥ٥ơ֥

ץǼ̿Ȥȡեȥߤȯ롣

int 21H

ޤܡɾüʥ򲡤ꤹ뤳Ȥǥϡɥߤȯ롣ϳߥȥȤåפ椵롣

ߤȯȡ߼¹Υ롼ϰߤ롣ߤΥե饰֤򥹥å¸PUSHFˡ
ˡ¿ųߤɻߤ뤿ˡIFʳߵĥե饰ˤ򥯥ꥢ*1ޤTFʥȥåץե饰ˤ򥯥ꥢ*2
ߤϾǤCSIP򥹥å¸롣ϳߥ롼󤫤Ͼˤʤ롣

եȥߤȥϡɥߤϹפ256¸ߤ롣Ϥ줾00FFֹ椬꿶Ƥ롣γֹ椫饢Ϥ׻롣
㤨С8086CPUǤϡ03FFϡ10ʿ01,023ϡˤ˳߽Υɥ쥹ʼºݤˤϥեåȡˤξ󤬤롣Υɥ쥹ߥ٥ȸƤФ졢ߥ٥νޤߥ٥ơ֥Ȥ

1ʬΥǡϡIPѥեåȡפȡCSѥեåȡפι4ХȤƤƤ롣int 21HפǤС84Hϡʡ21H4ˤ˥롣ȡֳ21HѤIPѥեåȡסֳ21HѤCSѥեåȡפΤ뤳ȤǤ롣߽롼Ϥ׻˥פߤƤ¸롣

ߤʬ

ޥ֥ߤȥΥޥ֥

ǽŪ˳ߤʬहȡΤ褦ʬव롣

  • Υޥ֥ߡnon-maskable interrupt
    • ĤǤߤդ롣
  • ޥ֥ߡmaskable interrupt
    • ¹Υץब߼դĤꤷȤդ롣

ߤȳ

߽ϡ̾ΤװʸˤƳФƤ

  • ߡinternal interruptˡ¹Υץब
    • ץߡʱ黻㳰ߡ
      • 夢դʥСեˤ䥼ˤʤɤȯߡ
      • 㡧Сե䥼ꡢ۵ΥڡԺߡ絭֤εݸȿ
    • ڡե
      • ۵ˤơ¸ߤʤڡإԤäȤˤäȯߡ
    • ȥ졼
      • ǥХåʤɤˤơ̿¹Ԥ뤴Ȥȯߡ
    • ø̿ȿ
      • ø⡼ɤˤơѡХ¹Ԥ褦ȤȤˤߡ
    • ̿ᥳɰ۾
      • ¸ߤʤ̿μ¹Ԥˤäȯߡ
    • SVCߡʥѡХߡƻץƤӽФߡƥॳ
      • ѡХˤäȯߡ
      • γߤCPUȯΤץबտޤȯȤ¾ߤȰۤʤ롣ǥѡХˤߤΤȤäФtrapȸƤ֡
      • 㡧ץफSVƤӽФ졢ø̿¹Ԥ
  • ߡexternal interruptˡ¹Υץʳγθ
    • ʥޥ˥å
      • ϡɥΰ۾CPUΤ餻ߡ
      • 㡧絭֤ξ㳲ϡɥθξ㡢Ÿ۾
    • ϳ
      • Ϥλȯߡ
      • ϳߤˤäơ֤֤¹ưǽȤʤ롣ޥץߥ󥰤ȴط롣
      • 㡧֤ưλڤ졦ڤʤɤ
    • ޡ
      • 饦ɥӥޤ¿ԤˤơCPUֻѤȯߡ
      • 㡧줿֤᤮
    • 󥽡
      • 㡧ڥ졼ߥå򲡤

ߤθˡ

ߤθˡȤƤϡCPUߤǧȤޤdz׵ο٥ݻʤФʤʤΡ׵ѥ륹Ω夬ΥåǸФΡӤξԤȤ߹碌Τʤɤ롣

ߤͥ

ͤ㤤ͥ٤⤤Ȥ̣롣

  1. Ÿ۾
  2. SVC
  3. ץ
  4. ϳ

ߤΥޥ

ߤػߡĤˤޥ쥸ե饰쥸Ѥ롣

  • ޥ쥸
    • ߤݤꤹ쥸
    • ʳߤʤˤǼդ롣
  • ե饰쥸
    • 黻̿¹ԤȤμ¹Է̤ξ֤ݻ֥쥸ȡޥץåȤξ֤򼨤

֥쥸쥸Ϥ˼Τ褦˺ʬ롣

  • ֥쥸
    • ꡼ե饰Carry
      • ѱ黻̿Ǥϡ黻̤˥꡼ܥˡ꡼ե饰򥻥åȤ롣
      • եȱ黻̿ǤϡեȡʺžˤξMSBMost Significant Bitˤ򡢱եȡʱžˤξLSBLeast Significant Bitˤ򥭥꡼ե饰ݻ롣
      • 黻̿䥹å̿ξ硢꡼ե饰򥯥ꥢ롣
    • Сեե饰Overflow
      • ѱ黻̿Ǥϡ黻̤˷夢դ줬硢Сեե饰򥻥åȤ롣
      • 黻̿Ǥϡɬꥢ롣
      • եȱ黻̿Ǥϡ黻ȱ黻ӥåȤۤʤССեե饰򥻥åȤ롣
    • ե饰Zero
      • 黻̿¹Ը塢α黻̤ǤХե饰򥻥åȤ롣
    • ե饰Sign
      • 黻̿¹Ը塢α黻̤2ɽǡοǤСե饰򥻥åȤ롣
    • ĥե饰Int. Enable
      • ޥץåꤳߤĤ뤫ݤ򼨤
      • 1dzߤĤ롣
    • ѡХ桼ե饰S/U
      • ץåơ򼨤

ߤǧ

Linuxξ

  • ߤvmstatǸ뤳ȤǤ롣

Windowsξ

  • ѥեޥ󥹥˥ProcessorˤInterrupt/sec*3οͤǸǧǤ롣

ߤȥ֥롼ΰ㤤

ɤץ̤Υץ¹Ԥ뤬֥롼Ϥ餫ͽƤΤʤΤФơߤCPUˤȤäƤޤäͽۤƤʤΤǤ롣ϩCPUưȤޤä̵ط˳׵΅ФơήѤƤޤΤǤ롣ȡCPϺ¹ԤƤץǤơߤƤץ˼ݤ롣ơ줬СƤӸΥץ椫Ϥ롣

ʸ

  • ؿǥֵ
  • إޥ翴ġ
  • ؼԥ塼ƥ
  • ɬTK85dzؤ֡ޥȥ֥
  • إեȥȯѼԡʥå󥷥ϥɥ֥å
  • 1֤ʬܾ󵻽ѼԽ楼ߡڸԡۡ2006ս
  • OSȥ졼ͥåȡ
  • عץޤΤΥ֥


*1 IF򥻥åȤȳγߤĤ롣
*2 TF򥻥åȤȥ󥰥륹ƥåץ⡼ɤˤʤ롣
*3 ʤбåΥ󥿤ɲäɽ褦Ǥ롣