en:docs:mvm:index

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Next revision
Previous revision
en:docs:mvm:index [2023/11/26 14:09] – created prokusheven:docs:mvm:index [2024/05/08 04:21] (current) prokushev
Line 1: Line 1:
-===== MVM/DOS personality =====+===== MVM/DOS/Win16 personality =====
  
-This is an infrastructure for running VM's with unmodified OS's+This is an infrastructure for running VM's with modified/unmodified OS's
  
 ==== MVM server ==== ==== MVM server ====
Line 7: Line 7:
 The MVM server is a central server of the MVM personality -- the infrastructure for running multiple virtual machines on top of L4 microkernel. It is almost separate from OS/2 personality, but can be controlled by OS/2 programs via DosOpenVDD/DosCloseVDD/DosRequestVDD API's.  The MVM server is a central server of the MVM personality -- the infrastructure for running multiple virtual machines on top of L4 microkernel. It is almost separate from OS/2 personality, but can be controlled by OS/2 programs via DosOpenVDD/DosCloseVDD/DosRequestVDD API's. 
  
-So, the MVM server exposes some interfaces to other OS personalities to be controlled by them. Also, it starts VM's, which are executed in the context of a VM monitor, running a guest OS (DOS, for example). The VM environment is defined by the VDD's ((Virtual Device Drivers)) loaded. The MVM server loads VDD's, which are a kind of plugins. Also, it exports some helper API's for VDD's via [[en:docs:os2:modules:mvdm|MVDM.DLL]].+So, the MVM server exposes some interfaces to other OS personalities to be controlled by them. Also, it starts VM's, which are executed in the context of a VM monitor, running a guest OS (DOS, for example). The VM environment is defined by the VDD's ((Virtual Device Drivers)) loaded. The MVM server loads VDD's, which are a kind of plugins.
  
 ==== Virtual Device Drivers (VDD's) ==== ==== Virtual Device Drivers (VDD's) ====
  
-A VDD is like a plugin for MVM Server, and it can communicate with outside programs via request API (DosRequestVDD for OS/2 programs). On the other side, from the VM point of view, the VDD emulates some BIOS services/Option ROM's, a hardware devices of guest platform. It installs interrupt handlers, catches I/O ports or MMIO registers accesses from inside the guest OS. A VDD implements its services based on VDD helpers API, served by the MVM server.+A VDD is like a plugin for MVM Server, and it can communicate with outside programs via request API (DosRequestVDD for OS/2 programs). On the other side, from the VM point of view, the VDD emulates some BIOS services/Option ROM's, a hardware devices of guest platform. It installs interrupt handlers, catches I/O ports or MMIO registers accesses from inside the guest OS. A VDD implements its services based on VDD helpers API, served by the MVM server. It exports helper API's for VDD's via [[en:docs:os2:modules:mvdm|MVDM.DLL]].
  
 Originally, the MV(D)M were used to emulate a 8086 machine with BIOS and DOS/Win 3.1. But now it is a trend for many OS'es to have the kernel virtual machines, like kvm in Linux or VirtualPC in WinNT. Our MVM personality is our solution of the same kind, but it not so monolithic like qemu/kvm -- it decomposed to several parts, in best IBM solutions design traditions. The VDD's are like plugins for MVM server, allowing to extend the MVM environment. They're loadable modules (DLL's).  Originally, the MV(D)M were used to emulate a 8086 machine with BIOS and DOS/Win 3.1. But now it is a trend for many OS'es to have the kernel virtual machines, like kvm in Linux or VirtualPC in WinNT. Our MVM personality is our solution of the same kind, but it not so monolithic like qemu/kvm -- it decomposed to several parts, in best IBM solutions design traditions. The VDD's are like plugins for MVM server, allowing to extend the MVM environment. They're loadable modules (DLL's). 
Line 31: Line 31:
 ==== The DOS emulation kernel (doskrnl) ==== ==== The DOS emulation kernel (doskrnl) ====
  
-The DOS emulation kernel is a special rehosted DOS kernel working via OS/2 (or PN ((Personality Neutral))) services. For example, file system API's of int 21h are implemented via OS/2 (or PN) file API's. Access to OS/2 API's done via [[en:docs:mvm:api|SVC API]] (supervisor call?) which is trap of HLT instruction followed by call number and inverted call number. Also DOSKRNL provides MVM specific API for DOS applications. See [[en:docs:kernel:doskrnl|DOSKRNL]] documentation for more info.+The DOS emulation kernel is a special rehosted DOS kernel (para-virtualized) working via OS/2 (or PN ((Personality Neutral))) services. For example, file system API's of int 21h are implemented via OS/2 (or PN) file API's. Access to OS/2 API's done via [[en:docs:mvm:api|SVC API]] (supervisor call?) which is trap of HLT instruction followed by call number and inverted call number. Also DOSKRNL provides MVM specific API for DOS applications. See [[en:docs:kernel:doskrnl|DOSKRNL]] documentation for more info. It is not required to use DOS emulation kernel. Standard DOS kernel (FreeDOS, for example) can be used, but access to host file systems will be limited.
  
 ==== Instruction Set Translator (IST) ==== ==== Instruction Set Translator (IST) ====
Line 48: Line 48:
  
 Microkernels and Hypervisors are very similar things. Microkernels implement similar features. For example, the Fiasco.OC microkernel supports SVM and VT-x and allows to run unmodified Linux in very thin VM's. This feature can be utilized in our MVM personality too. Microkernels and Hypervisors are very similar things. Microkernels implement similar features. For example, the Fiasco.OC microkernel supports SVM and VT-x and allows to run unmodified Linux in very thin VM's. This feature can be utilized in our MVM personality too.
 +
 +==== Other kernels ====
 +
 +It is possible to rehost (para-virtualize) other kernels, like CP/M-86, to MVM enviroment. It can be achieved via SVC interface,
 +
 +==== API ====
 +
 +  * [[en:docs:mvm:api|SVC API]]
 +  * [[en:docs:bios:api|BIOS API]]
  
  
 ~~DISCUSSION~~ ~~DISCUSSION~~