Hi,
I love what you guys are doing. The world *REALLY* needs
a virtual machine capability in the open source operating
system arena.
A friend of mine and I were trying for a while to start a
company to develop and sell virtual machine technology based
on FreeBSD Unix. However, we missed the bubble and it didn't
happen.
What I'd like to do is offer the work I did and the ideas
I had to FreeMWare.
I think the nicest idea I had was one that permits the
efficient implementation of what ends up looking like an
execute bit in the page tables of an x86. (The actual
x86 hardware does not have a separate execute bit on the
page tables.)
The advantage of having an execute bit is that you can
turn it off, and get a catchable fault if a process tries
to branch to and start executing on a page where you are not
prepared to have execution take place.
So, you essentially end up with three bits per page:
a read bit, a write bit, and an execute bit. You can
have a page enabled for reading and writing, but not for
executing. So, it is possible to smooth the transition
between having a page contain writable "data" and having
it contain executable code. (When an operating system
starts a process or does paging, this is exactly what
happens: it writes bits to a page, and later fetches
are performed on the page to execute the bits as instructions.)
My approach entails operating system kernel modifications;
it is not solely an application-level technique.
Would people be interested in my sending the description
of this idea to the FreeVMWare mailing list? Or perhaps to
some specific individual?
The other thing I spent a fair amount of time on was
modifying a (paid-for) copy of Bochs so that instead of
interpreting instructions it would use system calls to
modify the address space of another process and create
directly executable basic blocks. So, you ended up with
a sort of hybrid interpretation-based x86 instruction
emulator and virtual machine. when a given basic block
could be safely, provably translated into directly executable
machine code it would be so translated. Subsequent
executions of that basic block would happen in the
other process at full machine-execution speeds.
Would people be interested in my sending that (now
rather old) source code?
Thanks and keep up the great work,
Greg Johnson
[EMAIL PROTECTED]
ps - I submitted a request to be added to the majordomo
mailing list, but have not yet received confirmation.
This e-mail may fall into the bit bucket as a result.
__________________________________________________
Do You Yahoo!?
Talk to your friends online with Yahoo! Messenger.
http://im.yahoo.com