Annotation of 43BSD/contrib/X/doc/Usenix/x.t, revision 1.1

1.1     ! root        1: .LP
        !             2: .SH
        !             3: X Window System Design
        !             4: .PP
        !             5: While this paper is not specifically about the X window system,
        !             6: X will be used as an example for much of the discussion.
        !             7: X is best described using a client/server model.
        !             8: X consists of a collection of client programs which
        !             9: communicate with the window system server.
        !            10: They are implemented entirely in user code.
        !            11: All communications with the window system occur over a stream
        !            12: connection to the window system.
        !            13: X is completely network transparent; i.e. a client program
        !            14: can be running on any machine in a network, and the clients and
        !            15: the server need not be executing on the same machine architecture.
        !            16: The block diagram shown in Figure 1 describes the structure of the system.
        !            17: .PP
        !            18: X supports overlapping possibly transparent windows and
        !            19: subwindows to arbitrary depth.
        !            20: Client programs can create, destroy, move, resize, and restack windows.
        !            21: X will inform clients on request of key presses,
        !            22: key releases, button presses, button releases,
        !            23: mouse window entry and exit, mouse motion,
        !            24: a number of types of window exposure,
        !            25: unmap (removal of a window from the screen),
        !            26: and input focus change.
        !            27: Cut and paste buffers are provided in the server as untyped bytes.
        !            28: Graphic primitives provided include dashed and dotted
        !            29: multi-width lines, and splines.
        !            30: There is a full complement of raster operations available.
        !            31: The implementation supports color,
        !            32: though the current protocol limits the depth of a display to
        !            33: 16 bits/pixel.
        !            34: .PP
        !            35: The X window system consists of a collection of 
        !            36: .UX
        !            37: programs
        !            38: providing various services on a bitmap display.
        !            39: There is only a minimal device driver to field interrupts from
        !            40: mouse, keyboard, and potentially a display engine.
        !            41: The X server accepts connections from client applications programs.
        !            42: Window, text and graphics commands are all multiplexed over (usually)
        !            43: a single connection per client.
        !            44: Multiple clients may connect to the server.
        !            45: .PP
        !            46: The X protocol is the only way to communicate to the window system.
        !            47: The X server enforces clipping, does resource allocation,
        !            48: multiplexes output from multiple clients, performs hit detection
        !            49: for mouse and keyboard events, and performs graphics
        !            50: primitives in windows.
        !            51: The protocol is entirely based on a stream.
        !            52: The current implementation uses TCP as its stream
        !            53: transport layer; though it
        !            54: has been run experimentally using DECNET stream connections.
        !            55: A client program may run on any machine in a network.
        !            56: On a local net, performance is the same or better when run remotely
        !            57: as when run locally given two identical  unloaded processors.
        !            58: .PP
        !            59: The X server is a single threaded server program.
        !            60: Requests from clients are processed in a round robin fashion
        !            61: to provide apparently simultaneous output.
        !            62: This has proven to be sufficient,
        !            63: and vastly simplified the design and implementation.
        !            64: Single threading provides all locking and synchronization without any
        !            65: complex structure.
        !            66: The X server must therefore be very careful never to block waiting
        !            67: on a client,
        !            68: and exploits the observation that each individual graphics operation
        !            69: is very
        !            70: fast on a human time scale (though it may be slow on a systems time scale).
        !            71: The 4.2BSD facilities that make this easy to implement
        !            72: include select(2), non-blocking I/O, and the network mechanism
        !            73: (IPC to unrelated processes).
        !            74: .PP
        !            75: The current X server implementation does NOT maintain the contents of windows.
        !            76: Refresh of a damaged window is the responsibility of the client.
        !            77: The server will inform a client if the contents of a window has been
        !            78: damaged.
        !            79: This was motivated by a number of observations:
        !            80: 1) clients often have their own backing store, and this must be maintained
        !            81: by most programs when resized anyway;
        !            82: if the window system provides backing store, it is often duplicating
        !            83: existing facilities.
        !            84: 2) keep the window system simple and FAST.
        !            85: 3) the amount of data that would have to be stored for bitmap backing
        !            86: store on color displays is very large.
        !            87: Naive 
        !            88: .UX
        !            89: applications are run under a terminal emulator which provides
        !            90: the refresh function for them.
        !            91: .PP
        !            92: X delegates as much to a client as possible.
        !            93: It provides low level ``hooks'' for window management.
        !            94: No less than three window manager programs (a separate client program in
        !            95: the X design from the window system) have been written to date,
        !            96: and provide quite different user interfaces.
        !            97: Menus are left to client code to implement, using the
        !            98: flexible primitives X provides.
        !            99: There have been four different styles of menus implemented to
        !           100: date, including a quite sophisticated ``deck of cards'' menu package.
        !           101: .KS
        !           102: .sp 20
        !           103: .ce 1
        !           104: Figure 1: Block Diagram Structure of X
        !           105: .KE
        !           106: .PP
        !           107: X runs as of this writing on four quite different types of hardware,
        !           108: from very intelligent to very simple.
        !           109: An example of a very intelligent (and reasonably well designed) piece of
        !           110: hardware from the programmers point of view is the DEC Vs100,
        !           111: though it suffers due to the nature of its interface to a VAX,
        !           112: which adds overhead and latencies to each operation.
        !           113: A QVSS display on a MicroVAX (VS1 and VS2)
        !           114: is at the opposite end of the spectrum,
        !           115: being a simple bitmap with no hardware assist.
        !           116: Other ports are in progress.

unix.superglobalmegacorp.com

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