Annotation of 43BSDReno/share/doc/ps2/01.cacm/p5, revision 1.1

1.1     ! root        1: .\"    @(#)p5  6.1 (Berkeley) 4/24/86
        !             2: .\"
        !             3: .SH
        !             4: VII. TRAPS
        !             5: .PP
        !             6: The \*sPDP\*n-11 hardware detects a number of program faults,
        !             7: such as references to non-existent memory, unimplemented instructions,
        !             8: and odd addresses used where an even address is required.
        !             9: Such faults cause the processor to trap to a system routine.
        !            10: Unless other arrangements have been made,
        !            11: an illegal action causes the system
        !            12: to terminate the process and to write its
        !            13: image
        !            14: on file
        !            15: .UL core
        !            16: in the current directory.
        !            17: A debugger can be used to determine
        !            18: the state of the program at the time of the fault.
        !            19: .PP
        !            20: Programs that are looping, that produce unwanted output, or about which
        !            21: the user has second thoughts may be halted by the use of the
        !            22: .UL interrupt
        !            23: signal, which is generated by typing the ``delete''
        !            24: character.
        !            25: Unless special action has been taken, this
        !            26: signal simply causes the program to cease execution
        !            27: without producing a
        !            28: .UL core
        !            29: file.
        !            30: There is also a
        !            31: .UL quit
        !            32: signal
        !            33: used to force an image file to be produced.
        !            34: Thus programs that loop unexpectedly may be
        !            35: halted and the remains inspected without prearrangement.
        !            36: .PP
        !            37: The hardware-generated faults
        !            38: and the interrupt and quit signals
        !            39: can, by request, be either ignored or caught by a process.
        !            40: For example,
        !            41: the \&shell ignores quits to prevent
        !            42: a quit from logging the user out.
        !            43: The editor catches interrupts and returns
        !            44: to its command level.
        !            45: This is useful for stopping long printouts
        !            46: without losing work in progress (the editor
        !            47: manipulates a copy of the file it is editing).
        !            48: In systems without floating-point hardware,
        !            49: unimplemented instructions are caught
        !            50: and floating-point instructions are
        !            51: interpreted.
        !            52: .SH
        !            53: VIII. PERSPECTIVE
        !            54: .PP
        !            55: Perhaps paradoxically,
        !            56: the success of
        !            57: the
        !            58: .UX
        !            59: system
        !            60: is largely due to the fact that it was not
        !            61: designed to meet any
        !            62: predefined objectives.
        !            63: The first version was written when one of us
        !            64: (Thompson),
        !            65: dissatisfied with the available computer facilities,
        !            66: discovered a little-used \*sPDP\*n-7
        !            67: and set out to create a more
        !            68: hospitable environment.
        !            69: This (essentially personal) effort was
        !            70: sufficiently successful
        !            71: to gain the interest of the other author
        !            72: and several colleagues,
        !            73: and later to justify the acquisition
        !            74: of the \*sPDP\*n-11/20, specifically to support
        !            75: a text editing and formatting system.
        !            76: When in turn the 11/20 was outgrown,
        !            77: the system
        !            78: had proved useful enough to persuade management to
        !            79: invest in the \*sPDP\*n-11/45,
        !            80: and later in the
        !            81: \*sPDP\*n-11/70 and Interdata 8/32 machines,
        !            82: upon which it developed to its present form.
        !            83: Our goals throughout the effort,
        !            84: when articulated at all, have always been to build
        !            85: a comfortable relationship with the machine
        !            86: and to explore ideas and inventions in operating systems
        !            87: and other software.
        !            88: We have not been faced with the need to satisfy someone
        !            89: else's requirements,
        !            90: and for this freedom we are grateful.
        !            91: .PP
        !            92: Three considerations that influenced the design of
        !            93: .UX
        !            94: are visible in retrospect.
        !            95: .PP
        !            96: First:
        !            97: because we are programmers,
        !            98: we naturally designed the system to make it easy to
        !            99: write, test, and run programs.
        !           100: The most important expression of our desire for
        !           101: programming convenience
        !           102: was that the system
        !           103: was arranged for interactive use,
        !           104: even though the original version only
        !           105: supported one user.
        !           106: We believe that a properly designed
        !           107: interactive system is much more
        !           108: productive
        !           109: and satisfying to use than a ``batch'' system.
        !           110: Moreover, such a system is rather easily
        !           111: adaptable to noninteractive use, while the converse is not true.
        !           112: .PP
        !           113: Second:
        !           114: there have always been fairly severe size constraints
        !           115: on the system and its software.
        !           116: Given the partially antagonistic desires for reasonable efficiency and
        !           117: expressive power,
        !           118: the size constraint has encouraged
        !           119: not only economy, but also a certain elegance of design.
        !           120: This may be a thinly disguised version of the ``salvation
        !           121: through suffering'' philosophy,
        !           122: but in our case it worked.
        !           123: .PP
        !           124: Third: nearly from the start, the system was able to, and did, maintain itself.
        !           125: This fact is more important than it might seem.
        !           126: If designers of a system are forced to use that system,
        !           127: they quickly become aware of its functional and superficial deficiencies
        !           128: and are strongly motivated to correct them before it is too late.
        !           129: Because all source programs were always available
        !           130: and easily modified on-line,
        !           131: we were willing to revise and rewrite the system and its software
        !           132: when new ideas were invented, discovered,
        !           133: or suggested by others.
        !           134: .PP
        !           135: The aspects of
        !           136: .UX
        !           137: discussed in this paper exhibit clearly
        !           138: at least the first two of these
        !           139: design considerations.
        !           140: The interface to the file
        !           141: system, for example, is extremely convenient from
        !           142: a programming standpoint.
        !           143: The lowest possible interface level is designed
        !           144: to eliminate distinctions
        !           145: between
        !           146: the various devices and files and between
        !           147: direct and sequential access.
        !           148: No large ``access method'' routines
        !           149: are required
        !           150: to insulate the programmer from the
        !           151: system calls;
        !           152: in fact, all user programs either call the system
        !           153: directly or
        !           154: use a small library program, less than a page long,
        !           155: that buffers a number of characters
        !           156: and reads or writes them all at once.
        !           157: .PP
        !           158: Another important aspect of programming
        !           159: convenience is that there are no ``control blocks''
        !           160: with a complicated structure partially maintained by
        !           161: and depended on by the file system or other system calls.
        !           162: Generally speaking, the contents of a program's address space
        !           163: are the property of the program, and we have tried to
        !           164: avoid placing restrictions
        !           165: on the data structures within that address space.
        !           166: .PP
        !           167: Given the requirement
        !           168: that all programs should be usable with any file or
        !           169: device as input or output,
        !           170: it is also desirable
        !           171: to push device-dependent considerations
        !           172: into the operating system itself.
        !           173: The only alternatives seem to be to load,
        !           174: with all programs,
        !           175: routines for dealing with each device,
        !           176: which is expensive in space,
        !           177: or to depend on some means of dynamically linking to
        !           178: the routine appropriate to each device when it is actually
        !           179: needed,
        !           180: which is expensive either in overhead or in hardware.
        !           181: .PP
        !           182: Likewise,
        !           183: the process-control scheme and the command interface
        !           184: have proved both convenient and efficient.
        !           185: Because the \&shell operates as an ordinary, swappable
        !           186: user program,
        !           187: it consumes no ``wired-down'' space in the system proper,
        !           188: and it may be made as powerful as desired
        !           189: at little cost.
        !           190: In particular,
        !           191: given the framework in which the \&shell executes
        !           192: as a process that spawns other processes to
        !           193: perform commands,
        !           194: the notions of I/O redirection, background processes,
        !           195: command files, and user-selectable system interfaces
        !           196: all become essentially trivial to implement.
        !           197: .SH
        !           198: Influences
        !           199: .PP
        !           200: The success of
        !           201: .UX
        !           202: lies
        !           203: not so much in new inventions
        !           204: but rather in the full exploitation of a carefully selected
        !           205: set of fertile ideas,
        !           206: and especially in showing that
        !           207: they can be keys to the implementation of a small
        !           208: yet powerful operating system.
        !           209: .PP
        !           210: The
        !           211: .UL fork
        !           212: operation, essentially as we implemented it, was
        !           213: present in the \*sGENIE\*n time-sharing system.
        !           214: .[
        !           215: lampson deutsch 930 manual 1965 system preliminary
        !           216: .]
        !           217: On a number of points we were influenced by Multics,
        !           218: which suggested the particular form of the I/O system calls
        !           219: .[
        !           220: multics input output feiertag organick
        !           221: .]
        !           222: and both the name of the \&shell and its general functions.
        !           223: The notion that the \&shell should create a process
        !           224: for each command was also suggested to us by
        !           225: the early design of Multics, although in that
        !           226: system it was later dropped for efficiency reasons.
        !           227: A similar scheme is used by \*sTENEX\*n.
        !           228: .[
        !           229: bobrow burchfiel tenex
        !           230: .]

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.