I don't think most of it was originally implemented in C.
> at OS API level
That's the problem. Keep the original non-protected-memory APIs and you can't have memory protection; add memory protection, and it can't be API-compatible.
It's catch 22.
IIRC, AmigaDOS was written in BCPL and later moved to C.
> Keep the original non-protected-memory APIs and you can't have memory protection;
Kind of - you can always give the process the illusion it's running alone (or alongside the processes it started).
I don't think most of it was originally implemented in C.
> at OS API level
That's the problem. Keep the original non-protected-memory APIs and you can't have memory protection; add memory protection, and it can't be API-compatible.
It's catch 22.