On Tue, Jun 24, 2008 at 08:56:13AM +0200, Eric J Korpela wrote:
MC68000 versions of TRIPOS (including AmigaDOS)
definitely had no
interprocess memory protection. I don't know if later versions of
AmigaDOS implemented protection if a hardware MMU was available or
even whether they were still considered TRIPOS derivatives.
AmigaDOS itself never used the MMU for memory protection, but there
was a tool available _with_ AmigaDOS (first for developers, then for
everyone) called "Enforcer" that would set up some basic memory
protection between all processes and sensitive parts of the OS.
The basic memory protection scheme was to write-protect low
mem so a random process wouldn't scribble on $00000000 or $0000004
(reads/writes to $00000000 usually meant that your code was
trying to dereference a null pointer - the reaction to which
is implementation specific - it's usually safe to treat a
null pointer as if it were a pointer to a null (zero-length
string), but it's equally valid for the code to puke from
trying it; reads of $00000004 are absolutely required on
the Amiga because that's how you find all the libraries
and system structures. _Writes_ however are very bad and
can crash the machine in under a second).
I don't think there ever was any attempt to prevent one
process from scribbling on another process, though.
Enforcer just kept you out of the OS-required area
and kept you from accidentally writing to unallocated
memory (falling off the ends of buffers, etc). Malicious
writes into other process space wouldn't have been
stopped.
-ethan
--
Ethan Dicks, A-333-S Current South Pole Weather at 24-Jun-2008 at 07:30 Z
South Pole Station
PSC 468 Box 400 Temp -79.4 F (-61.9 C) Windchill -113.8 F (-81.0 C)
APO AP 96598 Wind 8.4 kts Grid 21 Barometer 676.1 mb (10776 ft)
Ethan.Dicks at
usap.gov http://penguincentral.com/penguincentral.html