Wednesday 29 April 2009

Intro to Distributed Computing

Distributed computing means breaking down an application into individual computing agents that can be distributed on a network of computers, yet still work together to do cooperative tasks. The motivations for distributing an application this way are many. Here are a few of the more common ones:
  • Solving larger problems without resorting to larger computers.
  • Large data sets are typically difficult to relocate, or easier to control and administer located where they are, so users have to rely on remote data servers to provide needed information.
  • Redundant processing agents on multiple networked computers can be used by systems that need fault tolerance. If a machine or agent process goes down, the job can still carry on.

Defining Distributed Applications

  • A distributed application is built upon several layers.
  • At the lowest level, a network connects a group of host computers together so that they can talk to each other.
At the application level, a distributed application can be broken down into the following parts:

Processes:

  • A typical computer operating system on a computer host can run several processes at once.
  • A process is created by describing a sequence of steps in a programming language,compiling the program into an executable form
  • While it's running, a process has access to the resources of the computer through the operating system.
  • A process can be completely devoted to a particular application, or several applications can use a single process to perform task

Threads:

  • Every process has at least one thread of control.
  • Some operating systems support the creation of multiple threads of control within a single process.
  • Each thread in a process can run independently from the other threads, although there is usually some synchronization between them.
  • At some point, input from the input stream may require feedback from the user.

Objects:

  • Programs written in object−oriented languages are made up of cooperating objects.
  • A process can be made up of one or more objects,
  • and these objects can be accessed by one or more threads within the process.

Agent:

  • Are higher−level system components, defined around a particular function, or utility, or role in the overall system.
  • Can be distributed across multiple processes, and can be made up of multiple objects and threads in these processes.
  • Are more intelligent and independent.
  • Can have goals that he is supposed to achieve
  • And monitor their progress towards them.

No comments: