System Software Chapter 5

Microsoft Windows is the name of several families of software operating systems by Microsoft. Microsoft first introduced an operating environment named Windows in November 1985 as an add-on to MS-DOS in response to the growing interest in graphical user interfaces (GUIs).[1] Microsoft Windows came to dominate the world's personal computer market, overtaking Mac OS, which had been introduced previously. At the 2004 IDC Directions conference, IDC Vice President Avneesh Saxena stated that Windows had approximately 90% of the client operating system market.[2] The most recent client version of Windows is Windows Vista. The current server version of Windows is Windows Server 2008.

Date / 16-bit / 32-bit / 64-bit
November 20, 1985 / Windows 1.0
December 9, 1987 / Windows 2.0
May 22, 1990 / Windows 3.0
April 6, 1992 / Windows 3.1
October 27, 1992 / Windows for Workgroups 3.1
July 27, 1993 / Windows NT 3.1
November 8, 1993 / Windows for Workgroups 3.11
September 21, 1994 / Windows NT 3.5
March 1995 / Microsoft BOB
May 30, 1995 / Windows NT 3.51
August 24, 1995 / Windows 95
August 24, 1996 / Windows NT 4.0
June 25, 1998 / Windows 98
May 9, 1999 / Windows 98 SE
February 17, 2000 / Windows 2000
September 14, 2000 / Windows Me
October 25, 2001 / Windows XP
April 25, 2003 / Windows Server 2003
December 18, 2003 / Windows XP Media Center Edition 2003
October 12, 2004 / Windows XP Media Center Edition 2005
April 25, 2005 / Windows XP Professional x64 Edition
July 8, 2006 / Windows Fundamentals for Legacy PCs
November 30, 2006 / Windows Vista for Business use
January 30, 2007 / Windows Vista for Home use; released in fifty countries
July 16, 2007 / Windows Home Server
February 27, 2008[2] / Windows Server 2008
2010[3] / Windows 7

In computing, the X Window System (commonly X11 or X) is a system which implements the X display protocol and provides windowing on bitmap displays. It provides the standard toolkit and protocol with which to build graphical user interfaces (GUIs) on most Unix-like operating systems and OpenVMS, and has been ported to many other contemporary general purpose operating systems.

X provides the basic framework, or primitives, for building GUI environments: drawing and moving windows on the screen and interacting with a mouse and/or keyboard. X does not mandate the user interface — individual client programs handle this. As such, the visual styling of X-based environments varies greatly; different programs may present radically different interfaces. X is not an integral part of the operating system; instead, it is built as an additional application layer on top of the operating system kernel.

Unlike previous display protocols, X was specifically designed to be used over network connections rather than on an integral or attached display device. X features network transparency: the machine where an application program (the client application) runs can differ from the user's local machine (the display server).

X originated at MIT in 1984. The current protocol version, X11, appeared in September 1987. The X.Org Foundation leads the X project, with the current reference implementation, X.org Server, available as free software under the MIT License and similar permissive licences.[1]

Design

For more details on this topic, see X Window System protocols and architecture.

For more details on this topic, see X Window System core protocol.

X uses a client-server model: an X server communicates with various client programs. The server accepts requests for graphical output (windows) and sends back user input (from keyboard, mouse, or touchscreen). The server may function as:

·  an application displaying to a window of another display system

·  a system program controlling the video output of a PC

·  a dedicated piece of hardware.

This client-server terminology — the user's terminal as the "server", the remote or local applications as the "clients" — often confuses new X users, because the terms appear reversed. But X takes the perspective of the program, rather than that of the end-user or of the hardware: the local X display provides display services to programs, so it acts as a server; any remote program uses these services, thus it acts as a client.

In this example, the X server takes input from a keyboard and mouse and displays to a screen. A web browser and a terminal emulator run on the user's workstation, and a system updater runs on a remote server but is controlled from the user's machine. Note that the remote application runs just as it would locally.

The communication protocol between server and client operates network-transparently: the client and server may run on the same machine or on different ones, possibly with different architectures and operating systems, but they run the same in either case. A client and server can even communicate securely over the Internet by tunneling the connection over an encrypted network session.

An X client itself may contain an X server having display of multiple clients. This is known as "X nesting". Open-source clients such as Xnest and Xephyr support such X nesting.

To start a remote client program displaying to a local server, the user will typically open a terminal window and telnet or ssh to the remote client application or shell and request local display/input service (e.g. export DISPLAY=[user's machine]:0 on a remote machine running bash). The client application or shell then connects to the local server, servicing a display and input session to the local user. Alternatively, the local machine may run a small helper program to connect to a remote machine and start the desired client application there.

Practical examples of remote clients include:

·  administering a remote machine graphically

·  running a computationally intensive simulation on a remote Unix machine and displaying the results on a local Windows desktop machine

·  running graphical software on several machines at once, controlled by a single display, keyboard and mouse.

[edit] Principles

In 1984, Bob Scheifler and Jim Gettys set out the early principles of X:

·  Do not add new functionality unless an implementor cannot complete a real application without it.

·  It is as important to decide what a system is not as to decide what it is. Do not serve all the world's needs; rather, make the system extensible so that additional needs can be met in an upwardly compatible fashion.

·  The only thing worse than generalizing from one example is generalizing from no examples at all.

·  If a problem is not completely understood, it is probably best to provide no solution at all.

·  If you can get 90 percent of the desired effect for 10 percent of the work, use the simpler solution. (See also Worse is better.)

·  Isolate complexity as much as possible.

·  Provide mechanism rather than policy. In particular, place user interface policy in the clients' hands.

The first principle was modified during the design of X11 to: "Do not add new functionality unless you know of some real application that will require it."

X has largely kept to these principles since. The reference implementation is developed with a view to extension and improvement of the implementation, whilst remaining almost entirely compatible with the original 1987 protocol.

[edit] User interfaces

X deliberately contains no specification as to application user interface, such as buttons, menus, window title bars and so on. Instead, user software – such as window managers, GUI widget toolkits and desktop environments, or application-specific graphical user interfaces – provide/define all such details. As such, it isn't possible to point to a "typical" X interface as at most times several interfaces have been popular among users.

A window manager controls the placement and appearance of application windows. This may have an interface akin to that of Microsoft Windows or of the Macintosh (examples include Metacity in GNOME, KWin in KDE or Xfwm in Xfce) or have radically different controls (such as a tiling window manager). The window manager may be bare-bones (e.g. twm, the basic window manager supplied with X, or evilwm, an extremely light window manager) or offer functionality verging on that of a full desktop environment (e.g. Enlightenment).

Many users use X with a full desktop environment, which includes a window manager, various applications and a consistent interface. GNOME, KDE and Xfce are the most popular desktop environments. The Unix standard environment is the Common Desktop Environment (CDE). The freedesktop.org initiative addresses interoperability between desktops and the components needed for a competitive X desktop.

As X is responsible for keyboard and mouse interaction with graphical desktops, certain keyboard shortcuts have become associated with X. Control-Alt-Backspace typically terminates the currently running X session, while Control-Alt in conjunction with a function key switches to the associated virtual console. Note, however, that this is an implementation detail left to an individual X server and is by no means universal; for example, X server implementations for Windows and Macintosh typically do not provide these shortcuts.

[edit] Implementations

The X.Org reference implementation serves as the canonical implementation of X. Due to liberal licensing, a number of variations, both free and proprietary, have appeared. Commercial UNIX vendors have tended to take the reference implementation and adapt it for their hardware, usually customising it heavily and adding proprietary extensions.

Cygwin/X running rootless on Microsoft Windows XP. The screen shows X applications (xeyes, xclock, xterm) sharing the screen with native Windows applications (Date and Time, Calculator).

Up to 2004, XFree86 provided the most common X variant on free Unix-like systems. XFree86 started as a port of X for 386-compatible PCs and, by the end of the 1990s, had become the greatest source of technical innovation in X and the de facto standard of X development.[2] Since 2004, however, the X.Org reference implementation, a fork of XFree86, has become predominant.

While computer aficionados most often associate X with Unix, X servers also exist natively within other graphical environments. Hewlett-Packard's OpenVMS operating system includes a version of X with CDE, known as DECwindows, as its standard desktop environment. Apple's Mac OS X v10.3 (Panther) and up includes X11.app, based on XFree86 4.3 and X11R6.6, with better Mac OS X integration. Third-party servers under Mac OS 7, 8 and 9 included MacX.

Microsoft Windows does not come with support for X, but many third-party implementations exist, both free software such as Cygwin/X, Xming, WeirdMind and WeirdX; and proprietary products such as MKS X/Server, Reflection X, Xmanager, X-Deep/32, WiredX, Exceed and X-Win32. They normally serve to control remote X clients.

When another windowing system (such as those of Microsoft Windows or Mac OS) hosts X, the X system generally runs "rootless", meaning the host windowing environment looks after the root window (the background and associated menus) and manages the geometry of the hosted X windows — although some servers (Xmanager, and Exceed, for example) can also create the root window for the remote clients to display to as a separate window in the host system.

[edit] X terminals

A Network Computing Devices NCD-88k X terminal

Main article: X terminal

An X terminal is a thin client that runs an X server. This architecture became popular for building inexpensive terminal parks for many users to simultaneously use the same large server (making programs being run on the server clients of the X terminal). This use very much aligns with the original intention of the MIT project.

X terminals explore the network (the local broadcast domain) using the X Display Manager Control Protocol to generate a list of available hosts that they can run clients from. The initial host needs to run an X display manager.

Dedicated (hardware) X terminals have become less common; a PC or modern thin client with an X server typically provides the same functionality at the same, or lower, cost.

[edit] Limitations and criticisms of X

The UNIX-HATERS Handbook (1994) devoted an entire chapter to the problems of X.[3] Why X Is Not Our Ideal Window System (1990) by Gajewska, Manasse and McCormack detailed problems in the protocol with recommendations for improvement.

[edit] User interface features

X deliberately contains no specification as to user interface or most inter-application communication. This has resulted in several vastly different interfaces, and in applications that have not always worked well together. The ICCCM, a specification for client interoperability, has a reputation as difficult to implement correctly. Further standards efforts such as Motif and CDE did not remedy matters. This has frustrated users and programmers for a long time.[4] Graphics programmers now generally address consistency of application look and feel and communication by coding to a specific desktop environment or to a specific widget toolkit, which also avoids having to deal directly with the ICCCM.

The X protocol provides no facilities for handling audio, leaving it to the operating system or audio systems like OSS or ALSA to provide support for audio hardware and sound playback. Most programmers simply use local, OS-specific sound APIs. The first generation of client-server sound systems included rplay and Network Audio System. More recent efforts have produced EsounD (GNOME), aRts (KDE), and PulseAudio to name a few. In 2001, the X.org foundation announced the development of the Media Application Server (MAS) to remedy this problem. However, none of these are generally used as a solution to the problem.