Relay-Version: version B 2.10 5/3/83; site utzoo.UUCP Path: utzoo!watmath!clyde!rutgers!seismo!sundc!hqda-ai!merlin From: merlin@hqda-ai.UUCP Newsgroups: comp.os.minix Subject: MINIX extensions Message-ID: <252@hqda-ai.UUCP> Date: Sat, 24-Jan-87 05:45:49 EST Article-I.D.: hqda-ai.252 Posted: Sat Jan 24 05:45:49 1987 Date-Received: Sat, 24-Jan-87 16:04:25 EST Organization: Army AI Center, Pentagon Lines: 108 Keywords: shared swapped bernoulli jobs Summary: Suggestions for features to be added to MINIX. New device drivers, disk formatting, shared text, job control, and process swapping. Well, Tanenbaum's book hasn't even had time to let the ink dry, and here I am looking for extensions. I really love the idea of a more-or-less public domain OS, but it needs some work to be really useful. Here's a few suggestions. COMMENTS --> postnews FLAMES --> mail (I do read flame mail, but there's no reason everyone else has to.) 1. Device driver for the IOMEGA Bernoulli Box: I have a twin 20-meg bernoulli here. Sure would be nice to be able to use it... Seriously, the bernoulli is good, reliable, has a large capacity, and is relatively fast. Good candidate for a device driver. I'd like to have partitions (Sys5 slices) on the drive. With a floppy, there's no sense in partitioning the thing. It's just not big enough to worry about. But 20 megs is quite enough to do it with, and I want partitions for another extension. 2. Provide a way to format disks without going into MS-DOS. My system isn't used for MS-DOS, or won't be, as soon as I can get a hold of MINIX. I'd like to be able to format disks. I think the disk drivers should have another IOCTL for this. A format ioctl could chew up lots of space in the kernel, and it really won't get used that often. I think an ioctl to write a raw track, including all the format bytes, would be in order. It would be relatively small. The real work of figuring out how to format a disk can be left to a user-level program. 3. Share program text I see no reason why the same program should have to be loaded multiple times. The code segment is assumed to be read-only. I know there's no hardware protection for this, but in general I think it's a safe bet, and it would free up memory. Memory seems to be the limiting factor in MINIX. 4. Swap processes This is why I wanted partitions. At present, when MINIX runs out of core, no more process creations are allowed. Two things can be done about this: a) Rearrange processes in memory, to free up the unused space that may be lurking between processes. This may work, provided that MINIX processes are allowed to fiddle with their segment registers. Really, they can't even *refer* to the segment registers. The only reason for doing that is to reference something via the segment register. If the segment register might change later, that would invalidate the reference. b) Swap processes, or portions thereof, out to disk. Not so good on floppy, but acceptable on a bernoulli or winchester. This isn't really feasible unless (a) above is also ok. Assuming that we can reassign processes, we need a place to put them. The partition scheme provides an efficient place (a block device) for this storage. I would prefer to swap the text portion of a process out first. Only swap the data/stack segment if the text didn't free up enough memory. Reason: the stack area is read-write, so we must write it to swap space, and read it back in. The code segment is (presumably) read-only, so there's no need to write it out. It can be reloaded from the executable file. 5. Provide SIGSTOP/SIGTSTP and job control, ala 4.xBSD Modifications required to the terminal/keyboard drivers. Also, the shell would have to be told about this, to make it useful. This is not a particularly great idea unless 4 is also implemented. No point in background jobs unless there's memory to hold them. (God, I miss VM hardware :-( ) Well, that's my list so far. I should say that my machine is an AT. This set of extensions is probably too much for the garden-variety PC, but I've got the CPU cycles to support this sort of stuff (I hope). Why bother with all this? Why not just buy Sys-V for the PC? BECAUSE I WANT THE SOURCE, AND I DON'T LIKE AT&T. Also, I intend to run uucp mail and usenet news on this beast, and it'll need all the help it can get. Points for discussion: a) Are these useful? b) Can they be done? c) Does anyone want them? d) If they are done, how do I publish them without stepping all over Tanenbaum's rights? I think its OK to publish only the new stuff (you'd still have to pay Prentice-Hall for the basic OS), but I'd like a second, third, and fourth opinion. -- David S. Hayes, The Merlin of Avalon PhoneNet: (202) 694-6900 ARPA: merlin%hqda-ai.uucp@brl-smoke UUCP: ...!seismo!sundc!hqda-ai!merlin