Distributed Computing
Distributed computing in its most general sense is computing that allows a number of computers that are remote from each other to take part in solving a computational problem or to process or access information.
In this sense the term refers to distributed client-server computing environments in which processes are located at the most suitable location for business or administrative purposes and are accessed by users at PCs that provide an interface to the resource in question. Thus, financial or accounting information, or database records, for example, may be stored and processed at one location, but the information may be accessed and amended by users working at remote PCs.
Another more recent use of the term distributed computing refers to collaborative initiatives in which large numbers of users of PCs allow some of their computer’s spare processing capacity to be used to tackle a large computing problem, with the collaboration often being co-ordinated by means of the Internet. A well-known example of this is SETI@home in which computer owners offer their machines to work on the Search for Extraterrestrial Intelligence (SETI) project to download and investigate radio telescope data. Similar initiatives have focused on drug discovery to screen molecules that may have the potential to be developed into pharmaceuticals to treat specific diseases.
A typical distributed computing architecture consists of some kind of small, unobtrusive agent program that is installed on the computers that form the network and one or more dedicated servers that manage the distributed system. In addition, the system will also have its users or clients, that is, scientists and programmers who wish to submit computing jobs to the system. The agent program will communicate with the managing server to advise it that it is available to process work tasks, receive application packages from the server, run these applications locally, send the results back to the server, and then request further work tasks from the server. This process should be effectively invisible to the user of the computer on which the agent software is running.
The benefits
In large organisations, such as the National Physical Laboratory, there are large numbers of PCs that are used as desktop machines by scientists and administrators or are employed to control experimental apparatus. It is in the nature of the normal use of PCs that the full processing capability of such machines is very rarely utilised. Distributed computing is a way of utilising the “unused” power of desktop computers to tackle large processing problems.
In its simplest form it can be regarded as a method of running a program on many machines in parallel in a co-ordinated manner. In this way the computing task can be completed many times faster than is possible with serial processing, depending on the number of computers available to take part in the calculation.
There are two main classes of application that can best take advantage of distributed computing systems. The first of these is data parallel applications, that is, programs that operate on different control files or input files, but without the need to change any aspect of the program itself, which means that identical executables can be sent to each machine in the network. In such a case, a program that has been written to operate in a serial processing environment can be transferred directly to a distributed computing system. The second form of application is one where a large set of input data is divided up between machines so that each works on a small part of the data set. Here, it is likely that the executable for the distributed version will differ from that of the serial version.
The challenges
To use a distributed computing system efficiently, users must recognise the key features of the system. Firstly, the computers that form the network are likely to be a mixture of machines, with different processor speeds, different memory capacities, and perhaps from a range of manufacturers. In addition, machines may become unavailable at any time, as users may switch them off or re-boot them, or the machines may not remain connected to the network. Users must also recognise that most desktop PCs are not completely secure, and the onus is on them to ensure that their grid applications are able to withstand malicious attempts to interfere with their operation, and that they do not compromise other applications running on each machine.





