Client-Server Model / Virtual Machines

Client-Server Model / Virtual Machines

Client-Server Model

A small variation of the microkernel idea is to differentiate two classes of processes, the servers, each of which gives some service, and the clients, which use these services. This model is known as the client-server model. Sometimes the lowest layer is a microkernel, but that is not required. The essence is the presence of client processes and server processes.

Communication between clients and servers is often by message passing. To get a service, a client process constructs a message saying what it wants and sends it to the appropriate service. The service then does the work and sends back the answer. If the client and server run on the same machine, certain optimizations are possible, but conceptually, we are talking about message passing here.

An apparent generalization of this idea is to have the clients and servers run on different computers, connected by a local or wide-area network, as depicted in the following figure. Since clients communicate with servers by sending messages, the clients need not know whether the messages are handled locally on their own machines, or whether they are sent across a network to servers on a remote machine. As far as the client is concerned, the same thing happens in both cases: requests are sent and replies come back. Therefore the client-server model is an abstraction that can be used for a single machine or for a network of machines.

Increasingly various systems involve users at their home PCs as clients and large machines elsewhere running as servers. In reality, much of the Web operates this way. A PC sends a request for a Web page to the server and the Web page comes back. This is a general use of the client-server model in a network.

The client-server model over a network

Virtual Machines

The initial releases of OS/360 were strictly batch systems. However, many 360 users wanted to be able to work interactively at a terminal, so many groups, both inside and outside IBM, decided to write timesharing systems for it. The official IBM timesharing system, TSS/360, was delivered late, and when it finally arrived it was so big and slow that few sites converted to it. It was finally abandoned after its development had consumed some $50 million (Graham, 1970). But a group at IBM's Scientific Center in Cambridge, Massachusetts, produced a completely  different system that IBM eventually accepted as a product. A linear descendant of it, called z/VM, is now extensively used on IBM's current  mainframes, the zSeries, which are heavily used in large corporate data centers, for example, as e-commerce servers that handle hundreds or thousands of transactions per second and use databases whose sizes run to millions of gigabytes.


batch system, timesharing systems, mainframes