On 2016-03-21 15:41, Anton Aylward wrote:
On 03/21/2016 11:10 AM, Dave Howorth wrote:
On 2016-03-20 20:25, Anton Aylward wrote:
In the days of the TTY a single user UNIX would give priority to keybaord interrupts, and in the return from the interrupt the scheduler would let the process blocked waiting for the keystroke (an editor perhaps) wake up and process the input.
Those days are long gone. By the time the Consent Decree let UNIX source be available and ported to the early 16-bit micros UNIX was already doing a lot of multi-tasking.
I'm not sure what you meant here. It seems to imply there was a time when UNIX was not multitasking, let alone multiuser. When was that?
In absolute terms, yes, probably V1 or V2.
The full name of V1 was "UNIX Time-Sharing System First Edition (V1)" November 3, 1971 as far as I know. The system was written from the outset to be multiuser according to Ritchie: http://www.read.seas.harvard.edu/~kohler/class/aosref/ritchie84evolution.pdf and one of the first components to be built, before the operating system (UNICS) was completed, was the notion of process. Ritchie may explain what you're talking about when he says the machine was not multiprogrammed, meaning that it swapped out one program before swapping in and running another. But it was multitasking in that multiple programs could be executing, with all but one waiting for the CPU.
The point I'm trying to make is that the Linux we run today is a long way removed from the UNIX that the public first say back in the 1970s. We're running a LOT of other threads and processes, we're networked and dealing with other IO sources. We're dealing with a lot more asynchronous events. The V6/v7 UNIX was very simple. You only have to read the Lyon's book to appreciate that.
I fully agree that Linux today is very different to UNIX in the 70s but that's mainly in terms of hardware capabilities (capacities and speeds) and software developments to exploit those capabilities. The big attraction of UNIX initially was that it could run multiple processes, it could network via UUCP, and it could handle multiple devices including ones for which you wrote the drivers yourself. Plus it came with oodles of software.
We can argue about the differences between multi-tasking and multi-processing,
Multiprocessing is different. That's about how many CPUs (processORs) the system has, not how many processes.
but lets recall to start with that even back in the days of PC-DOS 1.1 there was a add-in that sat on the keyboard interrupt vector that let something else run while waiting for a keystroke. The real difference between that and UNIX V6/V7 was that UNIX had a proper scheduler and process priority queue and saved task state and could dynamically create (and destroy) processes while others were running. That's REAL multiprocessing! All DOS had was the Transient Programme Area and a primitive loader. A one-at-a-time approach. That model dates back to OS8 and to a large degree DEC continued that though into the VAX, where, in effect, there was a 'stack' of TPAs. we saw a similar thing with some S-100 machines based around the 8080 and Z80 where the 'stack' was switched by hardware. The virtual memory just added a layer on top of that. IIR VAX really wasn't good at dynamic process creation/destruction. You had to have a special privileged for that, whereas the fork and/or execl is quite normal in UNIX/Linux.
Maybe I missed the point. UNIX was a real operating system; DOS wasn't.
Even UNICS was multiprocessing, wasn't it?
Do you mean MULTICS?
No, MULTICS was clearly multi-user, multi-tasking, multi-processing and earlier. UNICS was the precursor to UNIX. Ritchie says it had exactly two processes - one for each terminal - so that may be what you're thinking of. Cheers, Dave -- To unsubscribe, e-mail: opensuse+unsubscribe@opensuse.org To contact the owner, e-mail: opensuse+owner@opensuse.org