fostel (04/21/83)
Its funny how hardware technology influences peoples thoughts of what is "good". Unix was born and nurtured on a limited address space cradle of 64k bytes. Did that environment produce a criple? No. Rather it produced the so called "UNIX Style", of a minimal OS kernal, and collections of small useful programs which the OS could "connect" at run-time. These ideas are generally accepted as good, independent of any cpu architecture. Indeed, one need merely look at OS/370 and the s/370 architecture to see that the ideas are not a direct result of the address space limits. The s/370 operates most of the time in a world of 12 bit addressing -- all that will fit into the 12 bit displacement field. More expansive addressing requires trick use of address constants, arithmetic, multiple base registers and all manner or other stuff. Did this result in the "UNIX Style"? Is OS/370 a minimal kernal? Are OS programs typically small, sleek and robust? Comments about the strangling confines of the 8086 are a load of ____ disguising the deep down lack of understanding or faith in the UNIX style. Sure its nice to have a zillion byte address space. Sure that makes it easier to address a 200K array. (Funny, I've never used one.) Sure tis easier to have a magabyte process image. I'd rather have a set of smaller, cleanly interfaced programs which are "linked" at run time by the OS, then a big lumbering OS/370 "subsystem". Lets all have a moment of silence for the passing of the thing that brought UNIX into the world and nurtured its early philosophy. And give thanks that K.T. and D.R. didn't have a 68000 15 years ago. ----GaryFostel----
guy (04/22/83)
Its funny how hardware technology influences peoples thoughts of what is "good". Unix was born and nurtured on a limited address space cradle of 64k bytes. Did that environment produce a criple? No. Nobody said it was a "cripple" (two "p"s, please). There are some applications that REQUIRE more than 64kB of data/stack and/or 64kB of code. Why did Zilog have a segmented version of their chip? Why did Motorola and National Semiconductor come out with a chip with a large address space? Why, for that matter, did *Intel* provide some (not great, but some) support for 32-bit pointers on the 8086? Why did DEC come out with the VAX? And so on. Rather it produced the so called "UNIX Style", of a minimal OS kernal, and collections of small useful programs which the OS could "connect" at run-time. These ideas are generally accepted as good, independent of any cpu architecture. They are, indeed, good ideas; HOWEVER, NOT every application can be written that way! Why have some many other operating systems implemented overlaying and virtual arrays? Why have so many people added overlaying to PDP-11 UNIX? Indeed, one need merely look at OS/370 and the s/370 architecture to see that the ideas are not a direct result of the address space limits. The s/370 operates most of the time in a world of 12 bit addressing -- all that will fit into the 12 bit displacement field. More expansive addressing requires trick use of address constants, arithmetic, multiple base registers and all manner or other stuff. Did this result in the "UNIX Style"? Is OS/370 a minimal kernal? Are OS programs typically small, sleek and robust? Comments about the strangling confines of the 8086 are a load of ____ disguising the deep down lack of understanding or faith in the UNIX style. Sure its nice to have a zillion byte address space. Sure that makes it easier to address a 200K array. (Funny, I've never used one.) Sure tis easier to have a magabyte process image. I'd rather have a set of smaller, cleanly interfaced programs which are "linked" at run time by the OS, then a big lumbering OS/370 "subsystem". Bull____, to put it bluntly. Many, if not most, of us have PERSONAL EXPERIENCE of programs which suffer greatly in being confined in a small address space. Take PDP-11 INGRES. (Sorry, no Henny Youngman lines here.) It was composed of 7 processes which communicated through pipes. It seems that the UNIX style didn't fit INGRES very well. The VAX-11 INGRES is faster, and much of that is due to the fact that it is *one* process. The fact that YOU have never used a 200K array doesn't mean that NOBODY uses them; I wrote some scientific programs on a PDP-11 on RT-11, and I had to overlay them up a blue streak in order to get them to fit. The "UNIX style" (if people start thinking that ALL UNIX programs MUST be written in that style, a lot of the UNIX market will dry up and blow away) works great IF the program divides neatly along multiple-process lines. Scientific data analysis frequently, for example, doesn't. I'm sure the people from Sun can give many more examples of applications that are a LOT happier if they don't have to contort to fit a limited address space. I have faith that the UNIX style works with applications that it works with. I have written my share of clean "UNIX-style" programs, so I resent the implication that I am a Philistine who can't do so. Lets all have a moment of silence for the passing of the thing that brought UNIX into the world and nurtured its early philosophy. And give thanks that K.T. and D.R. didn't have a 68000 15 years ago. I hate to disappoint you, but I believe D.R.'s current machine is (oh apostasy) a VAX-11/780. Should Dennis put on the hairshirt, pick up the sackcloth and ashes, and do penance for daring to question the wisdom of using machines with a small address space? If UNIX can't advance with technology, I suspect it really couldn't be called a good modern operating system. However, the fact that it has adapted to small single-user machines, workstations like the SUN, and big VAXes indicates that its strengths lie as much with its adaptability and portability as with some Procrustean bed of a "style" which it enforces on applications written for it. As for the particular application that I have trouble with a 16-bit address space for, it's a word processor. NOTE that Syntrex's word processor, running on an 8086, requires overlaying, so there's one limitation on the address space (physical as well as logical) right there. Furthermore, the spelling checker code in our word processor is completely integrated with the editor. Yes, you could hive it off into another process. If we kept the current user interface - which is VERY nice, since you can define a block and run the spelling checker on that block while editing - the changes needed to make it multiple processes would be rather kludgy. We would have to keep a "speller" process around in the background (the overhead for a fork and exec would be too much if the user only wanted to check one word), and we would have to construct a complex protocol to pass information between the speller and the editor. The alternative is to separate the editor and the speller. This would be wonderful - penalize the user because of the address space limitations of the machine! Sorry, a user interface involving an editor and a speller which were two separate programs would be LOUSY. There is NO argument to the contrary. (And I'm not the only person to say that; several reports, such as those in "The Seybold Report on Office Systems", repeatedly complain about systems where you do have to switch between the editor and the spelling checker. The company from whom we bought the spelling checker also indicate that one of the biggest complaints they receive is that it is hard to integrate the editor and the checker.) If you don't take careful aim before blasting away, you may end up shooting yourself in the foot... Guy Harris RLG Corporation {seismo,mcnc,we13}!rlgvax!guy
mat (04/22/83)
Well, I have to reply to this one. Yes, UN*X was born on a 64k/process machine. (Actually, 128k if you use sep I&D. Actually, it was on a PDP7 of unknown properties ...) And YES, that was a problem. I have seen UN*X run on a PDP11 with only 32 Kword (64 kbyte), ONE rk05, and it did run while supporting 17 users. It ran SLOW. And the compilers are two pass, with multiple images and extra temp files; this loaded down the disks, the buffer cache, and the bus. And vi just barely fits on a PDP11. And ... . Yes, suffering leads to self improvement. But rather than saying ``make all programs and programmers work in 64k so that they will write lean mean clean and to-the-point'', why can't we teach ourselves to ask ourselves ``Is the amount of resource this program uses commensurate with its contribution to the well being of the users, the system, and the world?'' ? This is a much better way to go. Teach effective program design and implementation with Kernighan&Plaugher's ELEMENTS. Teach it by example, by reviews (ugh), by requiring programmers to be well--lettered, or good poker players, or fluent in PDP15 assembler, or whatever, but PLEASE don't go enforcing arbitary absolutes because you like to make people suffer. We are programmers, by the great Massbuss adaptor, not Marines. We don't need boot camp at work. -!hou5e!mat Mark Terribile (Duke of deNet)
CCVAX.gil@nosc-cc.arpa (04/27/83)
From: Jim Gilbreath <CCVAX.gil@nosc-cc.arpa> criple is a cripple, Unix is neither.
greep@su-dsn.arpa (04/29/83)
"The s/370 operates most of the time in a world of 12 bit addressing -- all that will fit into the 12 bit displacement field." This is somewhat misleading. Since every memory reference instruction can designate a base register plus the 12-bit offset, with some instructions having provisions for a separate index register as well, and since it is standard practice to use several base registers pointing to consecutive memory areas, programs are in practice not limited to a 12-bit address space. That is, it is not necessary to break up a program larger than 4k bytes into subroutines in order to make use of multiple base registers; the assembler knows to use the right one, assuming you tell it that you're setting them up. Fortunately, nobody designs new machines like this any more.
billw@sri-unix.UUCP (07/08/83)
#R:ncsu:-118900:sri-unix:16000010:000:272 sri-unix!billw Apr 27 12:01:00 1983 Hey, we all agree that the 8086 64K segment limitation is not really so bad when you are dealing with Code. Inter-segment calls and jumps and things handle all that relatively nicely. the 8086 and its ilk are just a pain to use if you have LARGE data structures... BillW
speaker.umcp-cs%udel-relay@sri-unix.UUCP (07/11/83)
From: Speaker-To-Animals <speaker.umcp-cs@udel-relay> the 8086 and its ilk are just a pain to use if you have LARGE data structures... Ah...and what if your data structure is a colour graphics board? Now you REALLY have fun. Either you must anticipate where the bounarys will occur or you must test the offset pointer to make sure you havn't run over into the next segment! BLECH! "And you thought Z8000 was grody!" - Speaker