Path: utzoo!attcan!uunet!maverick.ksu.ksu.edu!altair!jxf From: jxf@altair.cis.ksu.edu (Jerry Frain) Newsgroups: comp.arch Subject: Re: How wrong is MS-DOS? (or: OS generalizations) Message-ID: <1991Jan13.070039.12473@maverick.ksu.ksu.edu> Date: 13 Jan 91 07:00:39 GMT References: <11255@lanl.gov> Sender: news@maverick.ksu.ksu.edu (The News Guru) Organization: Kansas State University Lines: 74 [ Temptation to change the subject line stifled, as many readers have probably gone to the trouble of placing the current subject in their kill files ] jlg@lanl.gov (Jim Giles) writes: >In the modern sense of the term, UNIX doesn't provide multitasking >either. It provides multiprocessing. Pipes are a weak subset of >the general concept of interprocess communication. >For the benefit of those that don't have a multitasking system, I will >describe the difference. Multiprocessing is the use of timesharing >or other techniques to do (or at least simulate) several independent >processes simultaneously. Such processes _may_ communicate with each >other through the operating system. The standard model for this is to >treat interprocess communication as a type of I/O. Multitasking is >the use of several CPUs on an individual process in order to speed >the turnaround of that process. The above definitions of the terms "multiprocessing," "multitasking," and "time-sharing" are not consistent with current graduate-level operating systems teachings. Nor are they consistent with most operating system text-book definitions which I have seen. Multiprogramming is when several instances or programs (processes) reside in (main, or primary) memory (storage), and the processor switches between programs. Time-sharing is essentially multiprogramming, except now users have on-line terminals. The CPU provides interactive service to terminal users while larger batch-type jobs are executed in the background. Multiprocessing is when more than one processor cooperate together to execute programs (processes). Multitasking is typically described in the context of a programming language. Multitasking languages, like Ada and Concurrent C, allow the programmer to specify separate threads of execution (tasks). Given these definitions, we can see that most forms of Unix provide (a) multiprogramming, and (b) time-sharing. Whether or not Unix supports multiprocessing is dependent upon your particular implementation (there of course versions that _do_ support multiple processors). Lastly, if you have a compiler for a multitasking language on your Unix system (we have both Concurrent C and Ada), then it supports multitasking. > Differrent tasks communicate with each >other without having to pass the information through the system. The >usual method here depends upon the mutual exclusion instructions and >general archetecture of the hardware in use. The Cray, for example, >provides shared memory access between CPUs, shared registers, and >hardware semaphores. To be sure, before the wide availability >of multiple CPU machines, the two terms were used interchangably. These are fine and very appropriate IPC mechanisms for shared-memory model operating systems. However, the general trend today is to move away from mutual exclusion mechanisms which are dependent on shared-memory, due to the rapidly increasing popularity of distributed systems. Regards, --Jerry -- Jerry Frain -- Systems Programmer Kansas State University Department of Computing & Info Sciences Internet : jxf@cis.ksu.edu Manhattan, Kansas UUCP : ...!rutgers!ksuvax1!jxf