Distributed systems

Distributed systems are the systems which use their networking features to share CPUs, storage devices, computational tasks or processes under loosely or tightly coupled environment to attain better performance and to provide a rich set of features to the users. They can communicate each other using various protocols.

Distributed systems can generally be categorized as follows
  • Client-server systems
  • 3-tier architecture
  • N-tier architecture
  • Tightly coupled or clustered systems.
  • P2P or peer-to-peer systems
  • Virtual systems
Networks in client server may be Local area network(LAN), Wide area network(WAN), Metropolitan area network(MAN) or Personal or Small are networks in case of bluetooth based network.

Cluster computers

Cluster computers are a group of computers usually connected together by Local Area Network to provide additional functions to the network or to improve its efficiency or to avoid failure of the system.

A general classification of cluster computers include 3 types:
  • High-availability (HA) clusters
  • Load-balancing clusters
  • Grid network

Multiprocessor Systems

Multiprocessor systems are the CPUs having more than one processor communicating each other and sharing same resources. Today is the world of multiprocessor systems which is also called tightly coupled systems or parallel systems. All the processors usually share bus, cache and memory. Modern multiprocessor systems have both local separate L1 cache and shared L2 cache.

Multiprocessor systems can give improved performance. If the number of processor is N, then the total output of entire system should be N times the output of individual, at least theoretically. This is not practical because of the overhead associated with maintaining and controlling different processors and contention of shared resources.

Another advantage of multiprocessor systems are that it economical than multiple single processor systems because of the cost associated with peripherals storage and power supplies. On the other hand multiprocessor systems can share these resources.

Reliability associated with each system also increases in multiprocessor systems. This is because a properly configured multiprocessor system has the ability withstand any damage caused to any of the individual processor in it.

Timesharing or Multitasking systems

Timesharing or Multitasking systems are a enhancement over multiprogramming systems to enable more than one user to share the resources of one system simultaneously. All users simultaneously interact with a single system through different clients giving impression to each user that he is using the resources of entire system own his own. But actually different  time slots are alloted to each user separately and so small that user is unaware of that fact.

Each user has at least one program to be executed residing in memory. This is called a process. Thus in a time sharing or multitasking system, each process is executed only for a very small time , that is until it finishes or waits for an I/O. Then CPU  transfers control to next user. Time sharing system more complex than multitasking system.

Multiprogramming system

Multiprogramming type of operating systems was the first example of a an capable of making decisions. They also were the first ones who was able to do jobs or processes concurrently. The process is called Job Scheduling in which idle CPU time is used for other jobs by switching CPU task manager. Multiprogramming improves CPU efficiency by increasing CPU utilization by organizing the jobs in such a way that CPU always has a Job to execute.

The operating system keeps a certain set of jobs in memory. This is taken from the job pool, which is the set of all Jobs CPU has to execute. It begins by executing one job. When this job enters an I/O operation, CPU begins execution of another Job from the job set in memory. When this enters a I/O another Job is begun and so on..Later when first job has completed I/O, CPU is given to back to it. This procedure continues so that CPU never need to be idle anytime. This was not the case of normal Batch processing systems in which CPU had to wait for the completion of each job to execute another.

Usually the number of jobs in the memory will be much less than that in job pool due to space constrains. So CPU has to decide the jobs to be taken into memory. CPU scheduling and Job scheduling are the processes of these decision making. Since a decision making process has its role, multiprogramming Systems have a complex structure generally.

Batch System

A batch system is a system in which similar job is grouped together called batches and executed batch by batch rather than going for process by process. Often, jobs or processes having similar nature and accessing same resources are grouped as a singe batch. Programmer can leave their programs with an operator and the operator schedules the jobs and groups them into batches.

The major drawback associated with Batch systems is that CPU time is not used efficiently. The speed of mechanical I/O devices are smaller compared to the Speed of CPU. Even a slow CPU can execute thousands of instructions per second, but mechanical I/O devices are much slower. Batch systems increase turn around time and makes it difficult to debug the program. Deadlocks can also occur and one job can affect another making the system unstable.A better utilization of resources can be done by Job Scheduling.

Batch Systems are very old and were used before 1970.  Later Spooling Batch systems were introduced to overcome the defects of bare Batch System. They were in fact a simple multiprograming system.

What is Operating System?

Operating system is the midway between hardware and other system and application programs which is closely related to hardware and provides an interface for users to work with. One of the major objective of an OS(Operating System) is to maximize the resource utilization of the system. That is all available resources like CPU time, memory and I/O are effectively and concurrently utilized to achieve maximum efficiency. OS manages these resources and allocates them to various programs running according to the priority of requests it receive.

We can not provide a complete and adequate definition for an operating system. It is certain concepts and characteristics that define it. One closely definition is "An Operating system is a program that is running on a hardware assembly every time it is working which provides everything necessary to make the system usable."