OK, big derailment time. Maybe we can get back to the topic later, though I suspect enough has been said on that already anyway.
linguofreak wrote:
Schol-R-LEA wrote:
Since most Amiga models had no hardware memory protection (and the OS didn't support it at first when it did come around with the 68030 and 68040 models), process protection was entirely in software - a buggy process could scribble on any part of memory, and more than a few would.
This touches on an assertion that I've always found suspect: Hardcore Amiga fans seem to like to make a point of the fact that the OS was pre-emptively multitasked before any other microcomputer OS was.
Which isn't really true, of course; it was simply one of the first to be the primary OS for such a system, and the first to really gain widespread recognition, I suppose.
Aside from the Sinclair QL as mentioned by iansjack, there were a number of microcomputer operating systems which were preemptively multitasking going back to the very earliest days - there was a 1976 article in
Dr. Dobbs' Journal (which I'd read in the early 1990s, the library at the university I first went to had all the old DDJ annual reprint collections) about CHAOS, a homebrew timesharing OS for the Altair used by a high school in southern California. I even found
a program from 1979 written in BASIC for that system.
Anyway, as for commercial systems, well,
OS-9,
MP/M, and
Microsoft Xenix all came out in 1979-80, among others. While none of them were the default OS for the platforms they ran on, as I understand it OS-9 did eventually become the dominant OS for the Tandy Color Computer, though not until late into the CoCo's product life.
linguofreak wrote:
While technically, yes, any program could be preempted by the timer interrupt, in my book, you don't get to call yourself preemptively multitasked if anybody who wants to can scribble on the timer interrupt vector
Well, keep in mind that this applied to almost every small computer - including several minis - prior to 1990 or so, and still applies to many modern microcontrollers as well - a number of RTOSes don't assume the presence of an MMU, and some don't use it even when present. I know that the original
QNX could run on an 8088 with no MMU, for example. I imagine some of the embedded developers here could say more on this.
Oh, and the
first several versions of UNIX ran on
PDP-7 and
PDP-11 systems with no MMU, as well, though they were quick to adopt it when the KS-11 add-on came around. The lack of an MMU was one of the 'vital parts' from Multics whose absence led to the operating system's punny name, If I am not mistaken.
IIUC, Minix 2.x still supported running on a bare-bones 8088 XT well into the 1990s. Both the
LSI-11 and PC versions of
Xinu ran without memory management, too. Hell, pretty much every OS textbook I read in the 1980s and 1990s basically assumed that there was no MMU available, despite MMUs being a key feature in mainframes since the late 1960s.
While hardware memory protection was possible through add-ons even in the early 1980s (usually through an MMU from the chip manufacturer and designed in conjunction with the CPU's development, though infamously the Qua! Machine had a homebrew MMU scheme which Massalin developed herself), these were expensive, tended to have significant performance penalties, and weren't seen as being very useful for systems which rarely loaded more than 64KiB-128KiB of memory.
Indeed, one of the touted advantages of the microkernel design when people like Tannenbaum started really promoting it was that it "didn't need" hardware memory protection, since it was vastly better at both process isolation (due to using message passing for IPC rather than shared memory sections and manually-managed semaphores) and system stability (since a hung driver could be shut down and restarted without affecting the kernel itself).
My point is that, given that
most of the various pre-emptive multitasking systems ever written were on systems with no MMU, saying that they weren't pre-emptive multitasking systems at all is a hard sell.