ȦЫۮߴǴմ޴۴ӀӲȵ: PivotVM 卧 Չ ۀүү旴մүϵ* * A Dynamically Customizable Virtual Machine used as a Substratum in Heterogeneous Distributed Environments: PivotVM Noritaka OSAWA and Toshitsugu YUBA, Graduate School of Information Systems, the University of Electro-Communications Ҵۃ벨۵ێPDA洑Ҵﴌմ ۂȦ״ʹϴۮߴǴմ޴۴Ӏ Ӳȵ PivotVMۘۑPivotVMմ̴Ӳȵۂۢې ۵뇴ȴ̴ۘۉۘۮۘ耐 ۑӀۂۢۑӲȵ´մ̴ۘˆۑCISCRISC ՍҡՍӲȵ鴻մՍۘۮۑ 뇀ۏۮ߲Ӏۂۢۑˊۘ 뇀ۏۮۏۮێۓۮۑۘۑմ鴐뇹 ۘӀЀ״뼨ۊ̱ۂ״д̴ᴗ ۘꮡۑ 1. ۇ World Wide Web (WWW) 냇ۏ ۮܴ۴ۯ뫯Չۮۑ ێȦۂ״ ϵ۵ۓۮۑȦۂ ۊ¡ۮۉ״ ۘۂۑ¸ۂۢۑ СۇӲȵ(VM)ۘۑ ҏۂۢۑ PascalP-Codeێ Smalltalk[1] Java[2] ۂVM۵ۓۮ ۑۓێ̀Չۇ ۓۮۑۇՉ ۵ێȬۑۇ貨۵洂 ܴ۴ۯۧVMӇۨ VM롆蹐ۑ Ӹ۬ێۓۑۂ۸ۓ ܱۂۑۏۑ¸ۂۢۑ ۮۘۂۑ ۉۂۢۑ ̀ۼ ۘ톃ۮۑӲȵ OmniVM[3] ۢۑ JavaVMۃՉȯVM CISC(Complex Instruction Set Computer)״ ۧۂۑOmniVM RISC(Reduced Instruction Set Computer) ȴ̴ۘۮۑۃێۮۉ ۸ۓێVM뇴ȴ̴ۇ ˮەۓۮۑۓϴ ˧۬ۘ۸޴ʹϴ衜 ۼۮۑێ۬ێۓۑ ʹϴۂ꿁ۘҏۘ Ǵմ޴۴ۂۑVMۘ璲ۮ Smart Virtual Machine (SVM) ۅۑծ ۂۑPivotVMմ̴SVM 롓ۂۢۑVMPivotVM뫯ۘ 1蹬 1: ӲȵPivotVM뫯 Ҵۃ벨۵ێ Personal Digital Assistant(PDA)洑Ҵ ﴌ(PC)մᴍ(WS) ۂ Ȧ״ʹϴ ۮߴǴմ޴۴ӀӲȵ PivotVMۘۑPivotVMۂۢ ې۵뇴ȴ̴ۘۮۻې ϴۏۑ̀ۘҏۮ ̀ϴǴմ޴۴ۘۮ ۑ PivotVM۵뇴ȴ̴ۘۀۂ ۸ۂRISCۂۢۑǴմ޴۴ ۏۮՉۘۑۂ մ޴۴ CISCۂۢۑۀېPivotVM RISCCISCՍۘVM ۂۑ VMմۘո۱ۮ ۬ۑۂۑոVMۑ 뇴ʹ޴̴ۂۢۑ빕 ۸ۂۢۑۘ ۑVMոۂ ۢPivotVMոۧۂۢۑ 뫯ۘ2蹬 2: ӲȵӀ ˇۂ˧톃ۀۮۑ۸ۓ ۮˇۂո ۀۮˉۑ۸諯ۮ ۇۘ 2. ˧톃 PivotVM ˧톃ӹېۂۢۑ 1. С 2. ˮ߲ 3. Ђ߲ ۼȦۂPivotVM״ ۘۂۑۏۑ톃 ۂۢۑPivotVM벌ӹ̅ۑ ϴˮ± ۂۑ¸۬ۑ變 Ђۘۂۑۏۑ ۉ톃ۂۢۑ ˧톃ۘۑۇ ۮ끻˧ۘۇ 1. Ӏ 2. 3. ՍӸ ۼӹ벹ۘۂ ۑۏӀۘېۓۑ ̀״ۑ ۏۮՍۘێۓۼ Ӏۏۮ̣˨Ӏۑۂۏ ې膵ۘۀVMۑ PivotVMҵϵ ۘˡϫӸۂۑ۱Սۑ 3. ո PivotVMۂVM€ˆմ̴ۘ ۑVMۘ˸ۑۏۮմ̴ۘ ˨ۑۂۑ˸뇴ȴ̴ ۵ۓۑ˸Ǵմ޴۴ۘ ۏۮմ̴ۑ뇴ȴ ۘۑۂۑ մ̴ۘVMۮۂ ۴ۏۮۑۉӀ ۂۢۑۘۑ PivotVMۂۑ۴ۂ VMۂۑ ꄴմۢې۸ꄲۘ ێ۬ێۓմ̴ې۬봻 ̴ۑ۸ۂPivotVMۂ ꄴմۘ۴մ̴VMۘ ۑ PivotVMմզ 뇴ȴ̴馛ۘۀ۸ۓێ뫯ۘ3 蹬 3: ӲȵҮ뫯 մ״Ǵϴ(PC) մ̴۴(SP)ʹ۴(FP) ۓۑ զۘۉӹۉ逴ۂۑ ۏ()샊վۑ զPivotVM(մ̴) ۂ۵ۓۑ«ۂۢۑ(OSۮ մۘۑՍ闦ۂۑ) PivotVM봢̴ᴗ̱ܴ۴(8 ̴)ۂۢۑ 뇴ȴ̴馛ۏۮ 逴냙¦۱ێۓۑ PivotVM봻1ܴ۴̱ۘۑ Ӏ愀ۂۢۑMSB(Most Significant Bit)ۏۮۘ(1)뇀 ۏۮۼۉێ 1: Ӏ愀뇴ʹ޴̴ 4. մ琁ߴ մ޴۴ҡҊۧۀۮ̱ˉ ۑ 4.1. մ̴爼(pushpop swap)膁汎爼(addsubtractand or )«爼(branchjump)«ۓۑ ۮPivotVMۂӀۂۢ ېۂۢۑ 2: 뇴Ǵմ޴۴ ȸ౎۬ۮ 뇴Ǵմ޴۴(2) ۊմ̴ (3)«ۓۑOS 琁ۑۉۓۑ 뇦̾봻۸ۮ VMۂۂۢۑ张Ӏ VMۏۮېۑ ״ᴍ״ۘ ۑ逴뇦̾봻 ۘۑ逴뇦մ̴ۂ ۵ۓۑմ̴۫ۑ闦Ѓ ۱ێۓۑ 4.2. մ琁 PivotVMVMOSۘՍۮۻې մ琁ۑ ۮۑVMϴ ࡓ۴ʹۘۉۘ ۑۘ톁ۮۑOS ȵ릦ۘۑۉۂۢې ϴ۸벌봸ʹϴմ (逴)ۏۮӲȵۘոۑ ۉۂۢۑۉմۉ״ ۮۘۑʹϴۂո ۑVMۻۮմۘ ۑ 4.3. ߴǴմ޴۴ PivotVM뇀Ӏۂۢۑ 뼠鴻򴎴 ۵Ӳۘȯۑ۴ (ȵ) մ޴۴ۘۑۏۮմ ۊ״ᴍۀՉۘVM ۑۂۑܱ߫ۘ4蹬 뇀뼠ˊۘ ۂۧӀۂۢۑܴ 쀐뗮ۂۉӀۂۢۑ 4: մ PivotVMܱ߫ PivotVMۊ뀐ۘ ״ӀۘVM蹏ېۓ ۬ۑۂۑ ״ې꫅۴ʹ ۇᴗۃ ۂ״琁ۑۉ PivotVMۻ۱ۑۂۢۑۏې 爼Ӏۮۑ 4.4. ҡҊۧ ҡҊۧۇ ҡҊܱۧۑ̀ ۘе촗ۘ ۑۏۮۑۀې ҡՍ۵ۓۮۑ ۵ۓ뇹̾ۂҡۑӀ ۢۑ۵ۓۂҡ ۬ۮҡ촗ۘµ۬۱ۓێ ۲Սۢۑҡ촗ۘ۬۱ۓ ҡ븏ȬۑӀۢۑ 5. PivotVMۘWWWۃȦЫ ۮۑۏۮ̀ ۑմˮՉՉ ЂۘӀۂܱۑ ۂۑմۘոۂۑˇۂ PivotVM̀ۘҏۀۮˉ ۑ 5.1. С PivotVMǴմ޴۴ۏۮ ۘꮡۑۂۑ۵ ۘۘۓۏ Ǵմ޴۴Ӳۘۑێ Չۘ״ۘ뇴 ̴״(+մ琁 )愫ۑ(մ״۴ᴗۅ) Ӏۂۢېӹۉۂۑ Ђ߲ՈۂۑۏӲۘ ۴ۑ( Ҵ۴)ۏۮۘۀۀՉӸ ۘۑӀۂۢۑ۵ێ۴ ێӲۯۘۑ ۏۮ۴״ ۘۑۂۑۉӀۂۢۑ մ޴۴µۘꮡۑ۬ PCIܴ۴BIOS (Basic I/O System)ۃ ۓۑPentiumܴ۴մ۴ܴ ێPivotVMۯPowerPCۯۘ ۑۏۮPowerPCꄴ۴ܴ ۮۑӀۑۓێ ۬ۘ5蹬 5: PivotVMۻ۱ۑ愫 5.2. ߲ Ȗ۫ۂۘՉۇۑ ۏۮ׵ӱۘ۵ۑӀ ۂۢۑ۵ۓۑۘۮ ۑۏۮۂۑ۬ 1ܴ۴ۂۑ 紗۵(call + address)ۏې ۮۉȸӀۂۢۑ Չۘۑۏ ۮۘՉۇۑۂҴ ˨ۘۂۑ۬ 紗뀐״ ۘ1ȸۑۂۑ۵ ێۃۘ ۘ˨ۮۑۉۂۑ 5.3. մ鴐뇹 WWWۃۻ۱ۑۻۮ״ 롓¹۵ۓ߁ۂ۸ۘ ۂۑ۹ێ۴ ۘȸۂۑێۂۢۑ 뇴Ǵմ޴۴ۘۮˊۘ ۇۼۘۅ繡 ۂ״ۘ˨ۑӀۂۢۑ ۓۏۮ紗ˊۘ ۑۧۂӀۂۢۑ ێۓۮۘ۸޹ ˏˊۘ۹ۘմ 뇹ۅ մ鴐뇹 踍Ѐ״ۘۼۀۑ ۬ێۓۑմ鴐뇹ۏۮ ۘۢێۇۇۮۻ 洢ۘۑۂ ۘۑӀۑ ״ۘҍۮۑۂ WWWۂ̾̂ۑՍ ۑۘۮۻۮ ۈ ״ۻۮдۘ ۏۮӲۘӘ ۮۉӀۂۢۑд PivotVMۏې ۉ(ᴗ) ۘVM諃۱ۓێې Ȭۑ 5.4. ۂ뇹 ˊۘۂۼ̱ۂ ۘۃێۓۮ ۑۻۮۉۂۢۑ Broadcast Disk[4] ۃۏۮۊ ێۓ۸ۓۏۮӱ 벨۵۵ۘۻۑۻۮ ۘд̴ᴗۑ¸ۂۢۑ PivotVM뇀ۘۑۏ ۮ̱ۂд̴ᴗӀ ۑۂ뇀۵ۓۮ ۑۑ̾뗡沌ӱ ۢۓۘێې ێۑӀۂۢۑӱ ²ۉۼۀۘۑ Ӏۂۢۑӱ¸ۢۓд ᴗ۵ۓۘۮՉ踏ۂۑ VMۻۮۉ紗뀐 ۵ۓۮۑۃۘێۘۇ ۑӀۂۢۑ鸲 뫀ۂ״ۘ輔˨ۑ ֫״ۘꏫۂۑ 紤̴봻̴ۘ۱ۓ ێ 5.5. ȵᴧᴍ ȵᴧᴍۘՉӸۑۇ ۮDirect Execution[5]ۢۑ ۓᴧᴍܲۘՉ 愫۸ۓۘҴ۴ۑۏۮ ᴧᴍՉӸۘۑۉۂۢۑ ՉۘۑՍ愫 ՉەېPivotVM ۘۑۏۮ ۏۑᴧᴍՉӸꮡۑ ێ ۯ뀲ˆ愫ۘۏۮ ״ȴ̴д紋愫ۘ ۑ̾ۂ뼂ӸۉӀ ۑ 5.6. 뇴ȴ̴ۏۑ ˸۵ۓVM(մ̴)Ӏ ȴ̴ۘ˧ۂۑۘۮմ 琁ۑۘVM˩ۑ ۂۑ(۬ʹ۴爼릯ȧ)VM ۘǴմ޴۴ҡ״ۘ ۑۏۮҡ״ۏۑ ˵爼ۘۡۂۑ 6. VM롆Ђ߲Ӏ愀뇫ۀ ۮ̱ۓۑ 6.1. PivotVM۴״뼔˨ꮡۂۢۑ ۵뇴ȴ̴ۘۀVMҴ ۑۂۑ 봐Ҵۊܴۧ۴ۃȖ ˩¦۵ۈՉȯ VMۨۑ۬ۑPivotVMۂۢۓ ̱뇴ȴ̴۴״ ۧۘۈۏۮ ۘ۵ۂۑ 6.2. Ђ߲ ȖЃ櫀ۻۮӲۘ ۴愫()ۑۏۮ ՉЂۘۑӀۂۢۑVMۏۑ ۘՉӸۑۇߴҴ۴ϵ SelfJavaۘۇۮ۵ۓۮۑ[6,7] ۏې큻ߴҴ۴ۀۮ ۉϵ۵ۓۮۑ[8,9,10] VMߴҴ۴鮱ۮ PivotVMߴҴ۴ۘ˨ۑۉ Ӏۂۢۑ̱ۘۑ ۏۮۘ۴ ۑꮡۂۑ̾ۯ ҡێۻۏ̾ێҡۯ ¼Ӹۘꮡۑ մ̴ۘۑPivotVMێ RISCۏregister/registerд紋 (load/storeд紋)봓մۘ ۑ۴ۑ Ӏۂۢۑմ̴ۂۢۑ ʹۂ뼂ۉۑʹȴ̴ۘ ۸۵ۘմվۮۑ ۏۮ۬ۘ ҊېۮӀۑ 6.3. Ӏ愀뇫 Ӏ愀뫃Ӡۂۢۑ뇴 ۉۼۓۂ۵ۓۑՍ 洂ոۢۑ ӸۑՍ߫鴓 ۘ˩ۑۏ۱ۓێ Ӏ愀ո±߁˩Ӡۂۢ ۑ 7. ϵ 硸ۏȦۻ۱ۑ ۘۑۇVMϵ۵ۓۮۑ Ҵ۴뼠̾Ӏ ۘۑϵۉ۵ۓۮۑ[11] ۸ۓێۮ뇴ȴ̴ۘ ۀۉۂۢېPivotVMۏӀۘ ۑۉۂӀۘ۬ۑۇ ۴۵ۓۮ 洎۴ꮡۂ ϴӀۘۑ ۮ޴۴ۂ۴״ۘиۮ ۴״´ۘۑ۴״ ȵۢۑ[12]PivotVMۏ Ǵմ޴۴ۑ逐۵ۓ ۘۂۂۑۉۂ 8. ۻەې ծۂێմᴍ ۂϴۘ ۑߴǴմ޴۴ӀӲӱ ȵPivotVMۘ˧톃ո ۀۮˉۘ 뫀Ӹۻۏܱۂۑۏ VMӀۘˮ諀ܱۂ ۻۀЂ߲ۇۑ¸ ۬ۑPivotVMӀՍӸ ۘۮ˧۵ۓۮۻېCISCRISC ՍҡՍȵOSՍ 3Սۘۮۑ PivotVMӀ߲ۘ Ѐۘۗˡ ۘۑ¼Ӡۂۢۑ