Path: utzoo!utgpu!news-server.csri.toronto.edu!clyde.concordia.ca!uunet!samsung!xylogics!world!madd From: madd@world.std.com (jim frost) Newsgroups: comp.sys.apple2 Subject: Re: pipes (implementation thereof) Message-ID: <1990Mar25.025543.9364@world.std.com> Date: 25 Mar 90 02:55:43 GMT References: <2284@tellab5.tellabs.com> Organization: Saber Software Lines: 36 toth@tellab5.tellabs.com (Joseph G. Toth Jr.) writes: >First of all - in order to provide multi-tasking (which is refered to in > the articles), the OS/Shell would have to work using interrupts. No it wouldn't. Using a timer to reschedule processes is called "preemptive scheduling". When a process explicitly or implicitly gives up control so that a task switch can take place it's called "non-preemptive scheduling". The Mac multifinder uses the latter (it's not the first example of non-preemptive scheduling, but it's a familiar one that works pretty well). Most of the time non-preemptive OS's do task switching during system calls, which are very frequent in most interactive systems (such as the Mac). >Second - in order to make any gains provided by task switching, all I/O to > disk, etc. would require new hardware to allow interrupting I/O control > and/or DMA. No, although it certainly would help if you didn't have to sit around waiting for I/O all the time. Again, look at the Macintosh multifinder. Smarter hardware improves throughput (that's why the IBM 3090 has such fast I/O -- whole computers are used as periferals). All of these things are well covered in most operating systems texts; this stuff has been around for awhile. Also note that with some compiler help you can do protected memory on the 6502 by emulating indirect memory references and non-relative fetch, store, and jump functions. Slow, but possible. Happy hacking, jim frost saber software jimf@saber.com