Annotation of 43BSDReno/share/doc/smm/13.kchanges/sys.t, revision 1.1

1.1     ! root        1: .\" Copyright (c) 1986 Regents of the University of California.
        !             2: .\" All rights reserved.  The Berkeley software License Agreement
        !             3: .\" specifies the terms and conditions for redistribution.
        !             4: .\"
        !             5: .\"    @(#)sys.t       1.7 (Berkeley) 4/11/86
        !             6: .\"
        !             7: .NH
        !             8: Changes in the kernel proper
        !             9: .PP
        !            10: The next several sections describe changes in the parts of the kernel
        !            11: that reside in \fB/sys/sys\fP.
        !            12: This section summarizes several of the changes that impact
        !            13: several different areas.
        !            14: .NH 2
        !            15: Process table management
        !            16: .PP
        !            17: Although the process table has grown considerably since its original
        !            18: design, its use was largely the same as in its first incarnation.
        !            19: Several parts of the system used a linear search of the entire
        !            20: table to locate a process, a group of processes, or group of processes
        !            21: in a certain state.
        !            22: 4.2BSD maintained linkages between the children of each parent process,
        !            23: but made no use of these pointers.
        !            24: In order to reduce the time spent examining the process table,
        !            25: several changes have been made.
        !            26: The first is to place all process table entries onto one of three 
        !            27: doubly-linked lists,
        !            28: one each for entries in use by existing processes (\fIallproc\fP),
        !            29: entries for zombie processes (\fIzombproc\fP), and free entries 
        !            30: (\fIfreeproc\fP).
        !            31: This allows the scheduler and other facilities that must examine all
        !            32: existing processes to limit their search to those entries actually in use.
        !            33: Other searches are avoided by using the linkage among the children
        !            34: of each process and by noting a range of usable process ID's when searching
        !            35: for a new unique ID.
        !            36: .NH 2
        !            37: Signals
        !            38: .PP
        !            39: One of the major incompatibilities introduced in 4.2BSD
        !            40: was that system calls interrupted by a caught signal were restarted.
        !            41: This facility, while necessary for many programs that use signals to drive
        !            42: background activities without disrupting the foreground processing,
        !            43: caused problems for other, more naive, programs.
        !            44: In order to resolve this difficulty, the 4.2BSD signal model has been
        !            45: extended to allow signal handlers to specify whether or not the signal
        !            46: is to abort or to resume interrupted system calls.
        !            47: This option is specified with the \fIsigvec\fP call used to specify the handler.
        !            48: The \fIsv_onstack\fP field has been usurped for a flag field,
        !            49: with flags available to indicate whether the handler should be invoked
        !            50: on the signal stack and whether it should interrupt pending system calls
        !            51: on its return.
        !            52: As a result of this change, those system calls that may be restarted
        !            53: and that therefore take control over system call interruptions
        !            54: must be modified to support this new behavior.
        !            55: The calls affected in 4.3BSD are \fIopen\fP, \fIread\fP/\fIwrite\fP,
        !            56: \fIioctl\fP, \fIflock\fP and \fIwait\fP.
        !            57: .PP
        !            58: Another change in signal usage in 4.3BSD affects fewer programs
        !            59: and less kernel code.
        !            60: In 4.2BSD, invocation of a signal handler on the signal stack caused
        !            61: some of the saved status to be pushed onto the normal stack before
        !            62: switching to the signal stack to build the call frame.
        !            63: The status information on the normal stack included the saved PC and PSL;
        !            64: this allowed a user-mode \fIrei\fP instruction to be used in implementing
        !            65: the return to the interrupted context.
        !            66: In order to avoid changes to the normal runtime stack when switching to
        !            67: the signal stack, the return procedure has been changed.
        !            68: As the return mechanism requires a special system call for restoring
        !            69: the signal state, that system call was replaced with a new call,
        !            70: \fIsigreturn\fP, that implements the complete return to the previous context.
        !            71: The old call, number 139, remains in 4.3BSD for binary compatibility with
        !            72: the 4.2BSD version of \fIlongjmp\fP.
        !            73: .NH 2
        !            74: Open file handling
        !            75: .PP
        !            76: Previous versions of
        !            77: .UX
        !            78: have traditionally limited each process
        !            79: to at most 20 files open simultaneously.
        !            80: In 4.2BSD, that limit could not be increased past 30,
        !            81: as a 5-bit field in the page table entry was used to specify
        !            82: either a file number or the reserved values PGTEXT or PGZERO
        !            83: (fill from text file or zero fill).
        !            84: However, the file mapping facility that previously used this field
        !            85: no longer existed, and its replacement is unlikely to require this low
        !            86: limit.
        !            87: Accordingly, the internal virtual memory system support for mapped files
        !            88: has been removed and the number of open files increased.
        !            89: The standard limit is 64, but this may easily be increased if sufficient
        !            90: memory for the user structure is provided.
        !            91: In order to avoid searching through this longer list of open files
        !            92: when the actual number in use is small,
        !            93: the index of the last used open file slot is maintained in the field
        !            94: \fIu.u_lastfile\fP.
        !            95: The routines that implement open and close or implicit close (\fIexit\fP
        !            96: and \fIexec\fP) maintain this field, and it is used whenever
        !            97: the open file array \fIu.u_ofile\fP is scanned.
        !            98: .NH 2
        !            99: Niceness
        !           100: .PP
        !           101: The values for \fInice\fP used in 4.2BSD and previous systems
        !           102: ranged from 0 though 39.
        !           103: Each use of this scheduling parameter offset the actual value by the default,
        !           104: NZERO (20).
        !           105: This has been changed in 4.3BSD to use a range of -20 to 20,
        !           106: with NZERO redefined as zero.
        !           107: .NH 2
        !           108: Software interrupts and terminal multiplexors
        !           109: .PP
        !           110: The DH11 and DZ11 terminal multiplexor handlers had been modified
        !           111: to use the hardware's received-character silo
        !           112: when those devices were used by the Berknet network.
        !           113: In order to avoid stagnation of input characters and slow response to input
        !           114: during periods of reduced input,
        !           115: the low-level software clock interrupt handler had been made to call
        !           116: the terminal drivers to drain input.
        !           117: When the clock rate was increased in 4.2BSD, the overhead of checking
        !           118: the input silos with each clock tick was increased,
        !           119: and the use of specialized network hardware reduced the need for this
        !           120: optimization.
        !           121: Therefore, the terminal multiplexors in 4.3BSD use per-character
        !           122: interrupts during periods of low input rate, and enable the silos
        !           123: only during periods of high-speed input.
        !           124: While the silo is enabled, the routine to drain it runs less 
        !           125: frequently than every clock tick; it is scheduled
        !           126: using the standard timeout mechanism.
        !           127: As a result, the software clock service routine
        !           128: need not to be invoked on every clock tick, but only when timeouts or
        !           129: profiling require service.

unix.superglobalmegacorp.com

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