Title: LilyVM ??????
1LilyVM ??????
- ?? ??
- lthdk_2_at_users.sourceforge.netgt
2??
- ??
- LilyVM
- ???? VM ????????? OS
- CPU ??? VM ?????
31 ????????? OS ??????
- OS ??? (Mac OS 9 ? Mac OS X)
- ?????????????(Windows ? NetBSD)
- ?????
- ??
- ??
41 ????????? OS ??????
- ????? (VM) (Type-I, Type-II)
- ?????? OS
- VM ?????? OS
5????? (VM) (Type-I)
- ??? OS ???????????????
- ? VMware ESX Server, Xen
sh
Guest OS kernel
Virtual Machine Monitor
??????
6????? (VM) (Type-II)
- ????OS???????????????????(???OS)??????????????????
- ? Bochs, VMware Workstation, QEMU
sh
Guest OS kernel
sh
VM
Host OS kernel
??????
7?????? OS
- OS ???????????????
- ???? OS ???????????
- ? User-mode Linux(UML)
sh
sh
?????? OS kernel
Host OS kernel
??????
8VM ?????? OS
- VM ??????????????????????????????????
- LilyVM http//lilyvm.sf.net
- ???????????????????????????????
- ?????? OS ???? ???? ??????
- ??? OS NetBSD, FreeBSD, Linux
- ??? OS NetBSD, FreeBSD, Linux 2.4
sh
sh
?????? OS kernel
VM
Host OS kernel
??????
9NetBSD ? LilyVM
- ??? OS ? ptrace() ????????????????
- PTRACE_SYSEMU(??? PTRACE_SYSCALL)
- ?????? cr2???????????????????????????
- ????????????!
10LilyVM ?????
- ???
- ???????
- MMU ???
- ??????
- AMD64, Power PC ??????
11???? VM ????????? OS
- VMware
- Bochs
- QEMU
- Plex86
- Xen
- User-mode Linux
- coLinux
12??
VM VM ?????? OS VM ????????? VM ????????? ??? ???
VMware QEMU, Bochs User-mode Linux LilyVM Plex86 Xen coLinux
VM ?????????????? ?? ?? ?? ?? ?? Xen ??
??? OS ??? ?? ?? ?? (?) ?? ?? ?? (?) ??(?)
??? OS ???? ? ? ? ? ? ? ??
?????????? ? ?? ?? ? ? ? ?
??? x86 x86, PPC ? x86, PPC ? x86 x86 x86 x86
????? ?? LGPL GPL GPL LGPL GPL GPL
13VMware
- x86 ? VM ?????????
- ????
- ring 3 ??????????????????????????ring 0
???????????...
14Bochs
- CPU ????????????????
- ??????
- ?????????????
sh
Guest OS kernel
sh
Bochs
Host OS kernel
??????
15QEMU
- CPU ????????????????
- ??????????????????????????
- ???????????????????????????
sh
Guest OS kernel
sh
QEMU
Host OS kernel
??????
16Plex86
- CPU ?????????????????
- ??? OS ????????????????
- ???????????????????????????
sh
Modified Linux
sh
Plex86
Host OS kernel module
??????
17Xen
- ??? OS ? Xen ??????????????
- ??????????? Linux ??????
sh
Guest OS kernel
Xen
??????
18coLinux
- ??? OS ???????????? Linux ??????
- MMU ?????????????????????
- ????????
sh
sh
coLinux kernel
Windows or Linux kernel
??????
19User-mode Linux
- Linux ???????????????? Linux ????????
- ptrace() ?? OS ???????????????????
sh
sh
User-mode Linuxkernel
Linux kernel
??????
20??
VM VM ?????? OS VM ????????? VM ????????? ??? ???
VMware QEMU, Bochs User-mode Linux LilyVM Plex86 Xen coLinux
VM ?????????????? ?? ?? ?? ?? ?? Xen ??
??? OS ??? ?? ?? ?? (?) ?? ?? ?? (?) ??(?)
??? OS ???? ? ? ? ? ? ? ??
?????????? ? ?? ?? ? ? ? ?
??? x86 x86, PPC ? x86, PPC ? x86 x86 x86 x86
????? ?? LGPL GPL GPL LGPL GPL GPL
21CPU ??? VM ?????
- ??
- VM ?????????????
- ??? IA-32 ???? VM ??????(????????????????)
- VMM ???????????? IA-32 ???
- Intel Virtualization Technology
- AMD64 Pacifica
22Intel Virtualization Technology
- Virtual Machine Control data Structure (VMCS)
?????????????? - MMU ?? physical-address extension ?
Guest 0
Guest 1
VMEntry
VM Exit
VM Exit
VMM
VMXON
VMXOFF
Intel Virtualization Technology Specification for
the IA-32 Intel Architecture(C97063-002) Figure
1-1 ????
23AMD64 Pacifica
- Intel ??????????????
- Intel ??????????????
24CPU ??? VM ??????????
- ?????????????????
- I/O ???????????????????????????
25CPU ??? VM ???????????? LilyVM
- ????????????????...
- ??????
- I/O ?????????????????????????
- ??? OS ????????????????????????
- ??? OS ?????? OS ??????
26CPU ??? VM ???????????? ???? VM
- VMware ????
- Bochs ?????
- QEMU x86 on x86 ?????????
- Plex86 ?
- Xen ??????Windows ??
- User-mode Linux ?????
- coLinux ?????
27???
- LilyVM http//lilyvm.sf.net
- ??????????
- NetBSD ??????
- ???? VM ????????? OS
- CPU ??? VM ?????