It was our last best hope for peace...
P T Withington
ptw@pobox.com
Thu, 8 Oct 1998 15:34:21 -0400
On 10/7/98 18:19, Ray Dillinger wrote:
>In other systems, like the BeOS, there is exactly ONE mapping of
>physical memory to addresses, and every process uses it. Thus,
>different processes are implemented as what in UNIX would be
>called different threads. This makes context switching a lot
>easier, allows much finer-grained parallelism, gets more use out
>of multiple processors, and a bunch of other nice things. But
>in such an operating system, how do you keep a buggy program
>from writing a random value into the middle of another's data
>(or code!!) causing crashes?
You could require that all your programs be written in a safe language.
That wouldn't prevent someone from intentionally making unsafe operations
(they could write their own assembler, etc.) which is why you need
hardware support to make a system secure againts malicious users. But in
a cooperative/friendly environment it would prevent someone from
accidentally breaking things.
I don't know how Be do it, since I thought they just programmed in C++,
which makes it very easy to unintentionally screw up.
Hardware pointer security doesn't have to mean separate address spaces.
Capability machines provide hardware pointer security, essentially on an
object-by-object basis.