Walter did yo realy go Ohhhh?

Nick Sabalausky a at a.a
Tue Jun 17 00:57:58 PDT 2008


"David Jeske" <davidj at gmail.com> wrote in message 
news:g37coj$2q9u$1 at digitalmars.com...
> Nick Sabalausky Wrote:
>> ... From the security perspective, for instance, there are differences
>> (With a VM, you can sanbox whatever you want, however you want,
>> without requiring a physical CPU that supports the appropriate security
>> features.)
>
> It seems that security/verifiability, and ease of executing on an unknown 
> target processor are the two major benefits of a VM.
>
> However, you might be interested in looking at software based fault 
> isolation if you have not seen it. It may make you reconsider how much you 
> need a VM to implement code security. There is a pretty simple explanation 
> here:
>
>  http://www.cs.unm.edu/~riesen/prop/node16.html
>
>


Thanks. Interesting read.

Although expanding *every* write/jump/(and maybe read) from one instruction 
each into five instructions each kinda makes me cringe (But maybe it 
wouldn't need to be a 1-to-5 on every single write/jump after some sort of 
optimizing-compiler-style magic?). I know that paper claims an overhead of 
only 4.3% (I wish it had a link to an online copy of the benchmark 
tests/results), but it was written ten years ago and, as I understand it, 
pipelining and cache concerns make a far larger speed difference today than 
they did back then. And, while I'm no x86 asm expert, what they're proposing 
strikes me as something that might be rather pipeline/cache-unfriendly.

Plus, maybe this has changed in recent years, but back when I was doing x86 
asm (also about ten or so years ago), the x86 had *very* few general-purpose 
registers. Like 4 or 5, IIRC. If that's still the case, that would just make 
performance worse since the 5-6 extra registers this paper suggests would 
turn into additional memory access (And I imagine they'd be cache-killing 
accesses). I'm not sure that they mean by i860, though, 
Intel-something-or-other probably, but I assume i860 isn't the same as 
i86/x86.

Granted, I know performance is a secondary, at best, concern for the types 
of situations where you would want a sandbox. But, I can't help thinking 
about rasterized drawing, video decompression, and other things Flash does, 
and wonder what Flash would be like if the browser placed the flash plugin 
(I mean the actual browser plugin, not an SWF) into this style of sandbox.

Of course, VMs have overhead too (though I doubt Flash's rendering is done 
in a VM), but I'm not up-to-date enough on all the modern VM implementation 
details to know how a modern VM's overhead would compare to this. Maybe I'm 
just confused, but I wonder if a just-in-time-compiled VM would have the 
potential to be faster than this, simply because the VM's bytecode 
(presumably) has no way of expressing unsafe behaviors, and therefore 
anything translated by the VM itself from that "safe" bytecode to real 
native code would not need those extra runtime checks. (Hmm, kinda weird to 
think of a VM potentially being *faster* than native code for something).





More information about the Digitalmars-d mailing list