Terminal paging in the kernel

Dave Ihnat, Chicago, IL ignatz at ihuxx.UUCP
Tue Mar 6 19:30:32 AEST 1984


In response to Steve Zimmerman's defense of page mode in the kernel
driver:

Steve, you've answered a number of objections cleanly and
convincingly.  I would like to take this opportunity to point out two
important items:

	- ANY time anyone talks about adding *anything* to the Unix(Tm)
	  kernel, it's most emphatically a subject for protracted
	  discussion.  One of the most important things Unix forced on an
	  operating system was excision of 'features' that weren't
	  critically required in the kernel, e.g., record maintenance in
	  the file system).  Any move to add something to the kernel is a
	  move in the other direction; thus, whether they yelped for an
	  intelligent, reasoned reason or from dogmatism, those who questioned
	  your move were *RIGHT* to do so.  Their, and your, following
	  discussions justify or invalidate the change.

	-When considering such modifications to the kernel, you have to
	 consider if the benefits, as analyzed by either you or the user
	 community, is a real benefit because of the quality of your
	 change, or because of the shortcomings of Unix!

Why did I bring up such self-obvious questions?  Simply because I
still believe you're wrong to put such code in the kernel.  Why?
First, the kernel should only contain code that manages critical
system resources--and the paging of your terminal isn't a critical
system resource.  (Why?  Because the system is already managing access
to your terminal, which *is* a critical resource.  Why is raw/cooked
in the kernel, if paging shouldn't be?  To be honest, I'm not totally
certain that it belongs there!)

So, what are the reasons you *shouldn't* put such things in the 
kernel?  Because of just exactly the type of thing you mention--the
arguments that came up when full-screen editors began to proliferate.
*You* are making assumptions about what a terminal is, in a piece of
common code--that it's 24 lines long, and maybe 80 characters wide.
Are there other types of terminals?  Is there not a trend toward
larger screens, or bitmapped, variable font terminals??  Maybe...so
do you change the kernel code---again and again---or make this
performance-critical piece of code dependent on conditional tests,
external config files, etc.?  You mention the expense of all the
'more' processes--totally true!!  But doesn't this point to a need
for a better way of handling the use of identical processes on Unix,
rather than embedding more necessarily hardware- or assumption-dependent
code in the kernel??  (Like, maybe shared-text process slots for
system-wide shared text?  Or whatever.)

I guess the end of all of this is that it's horribly easy to add twenty or
thirty lines of code to the kernel to handle a special case.  But,
eventually, this way lies the large, over-specialized OS's of the
sixties and early seventies, such as OS-360 or even  GCOS-6.  We've
already got the problem of divergent Unix systems:  Berkeley and Bell.
(DON'T get me started on BSD...)  Let's not stumble BACK into the
errors made 20 years ago!

			Glad to accept mail on this topic,

				Dave Ihnat
				ihuxx!ignatz



More information about the Comp.unix.wizards mailing list