[comp.sys.amiga.tech] Amigas w/MMUs, Virtual Machines, Memory Protection...

jesup@cbmvax.commodore.com (Randell Jesup) (07/04/90)

In article <90171.212424LEEK@QUCDN.BITNET> LEEK@QUCDN.QueensU.CA writes:
>It would be nice to be able (to use the MMU) to run a VM session (coexisting
>with Amiga DOS) on a developement machine as a "protected" testing site.
>Illegal memory access and other things could be monitored and traced.  Even if
>the stuff inside VM guru, one do not have to reboot the whole machine.   Due to
>the additional overhead, VM might not be a suitable for real life usage (on the
>Amiga), but it is a variable tool for debugging & program developement work.
>Once the debugging is done, the resulting program can be run under (non-VM)
>Amiga DOS.

	The problem is that you must write special "VM" versions of every
library and device (or close to), which make traps to the "master" evironment
(and which, BTW, requires a lot of smarts on the other side to handle things
which must be atomic, or require ownblitter's, etc.)  The other option is to
trap every hardware access, and interpret them in software, with large amounts
of error checking.  We're talking (random wild guess) about 5-30 (most likely
10-20) man-years of time by people (us) working from the source code (and doing
nothing else).  And then, it probably would be so slow as to be unusuable
for most testing, do to all the extra overhead (especially for the second
idea).

	IBM mainframes are usually more divorced from using hardware directly,
plus 10 or 20 (or even 100) man-years doesn't really faze them (drop in the
bucket).  Commodore engineering staff is a little smaller than IBM's.
(Understatement of the year...)

	However, we're using the MMU more and more, especially for debugging
utilities for developers.  Debugging utilities are important for us.  One idea
(which to some degree developers could do for themselves, put on fish disks,
etc) is to add code at the beginning of each library entry to check all the
parameters, and destroy d1/a0/a1 (and d0 for VOID rtns) in most cases (some
Dos routines must return d0/d1 the same for old overlays to work).  Combine
this with the new memwall/memmung and enforcer/cpu trap, and you've got a
pretty good stress-test of an application.

	This could be done a library at a time, it isn't even hard to do
in a simple way.  Who's first?

-- 
Randell Jesup, Keeper of AmigaDos, Commodore Engineering.
{uunet|rutgers}!cbmvax!jesup, jesup@cbmvax.cbm.commodore.com  BIX: rjesup  
Common phrase heard at Amiga Devcon '89: "It's in there!"