What is an Operating System ?........
The basic definition of an Operating System is as follows :
" An operating system acts as an intermediary ( providing communication) between the user of a computer and computer hardware . "
The purpose of an operating system is to provide an environment in which a user can execute programs in a convenient and efficient manner.
An operating system is software that manages the computer hardware . The hardware must provide appropiate mechanisms to ensure the correct operation of the computer system and to prevent user programs from interfering with the proper operation of the system .
Internally , operating system vary greatly in their makeup , since they are organized along many different lines . The design of a new operating system is a major task. It is important that the goals of the system be well defined before design begins . These goals forms the basis for choices among various algorithms and strategies .
Because an operating system is large and complex , it must be created piece by piece. Each of these pieces should be a well delineated portion of the system , with carefully defined inputs , outputs and functions .
Generally a computer system can be divided into four major components :
The Operating System
The Application Programs
The Hardware ------ the central processing unit (CPU) , the memory , and the input / output devices --- provides the basic computing resources for the system .
The Application Programs ---- such as word processors , spreadsheets , compilers , and web browsers ----- define the way in which these resources are used to resolve users computing problems . The operating system controls and coordinates the use of the hardware among the various application programs for the various users .
We can also view computer system as consisting of hardware , software and data . The operating system provides the means for proper use of these resources in the operation of the computer system. It simply provides an environment within which other programs can do useful work .
More in my next posts........................
Source : Operating System Principles --- Galvin--- Silberchatz
High-level languages were developed to enable computer user to concentrate on designing appropriate algorithms for solving problems instead of being concerned with the details of computers internal structure. Operating systems were also developed with a similar objective when a program written in high-level language is executed by a computer , the following steps are followed -
The compiler to translate the program is loaded into the memory.
The source program is read and loaded in the memory.
The source program is compiled into object code. While compiling, if any syntax errors are detected in the program, appropriate messages are displayed to the screen.
Machine language routines for reading and writing required by the program are brought in memory, from a library of routines stored in a secondary store and linked to the object program.
Now, the compiler may be taken out of memory because its job is over and the space is made available for the data of the program. The object program is now executed. If any errors are detected during execution, the contents of various registers in CPU at that time are communicated to the user to aid him in correcting the program.
A computer must provide, besides the hardware and high-level language translators, many other routines which enable a user to effectively use the system. An Operating System must provide these routines. The user of computer does not merely interact with the physical hardware of the machine.He interacts with a machine+compilers+an operating system. Thus a user of modern computer uses a virtual machine with features which include, besides those provided by its processor , a number of functions provided by the operating system.
Operating System perform two basically unrelated functions , extending the machine and managing resources -
1. The Operating System as an Extended Machine - The function of Operating System is to present the user with the equivalent of an extended machine or virtual machine that is easier to program than the underlying hardware .
2. The Operating System as a Resource Manager - Internally an operating system acts as a manager of resources of the computer system such as processor , memory , files and I/O devices . In this role , the operating system keeps track of the status of each resource , and decides who gets a resource , for how long , and when .
In systems that support concurrent execution of programs , the operating system resolves conflicting requests for resources in a manner that preserves system integrity , and in so doing attempts to optimize the resulting performance .
An Operating System provides an environment for the execution of programs . It provides certain services to programs and to the users of those programs . Some of the services are been discussed below -
1 ... I/O Operations - A running program may require I/O . This I/O may involve a file or an I/O device . For efficiency and protection , users control I/O devices directly. Generally , the program that requires I/O , specifies only a function the rest of the work is handled by operating system .
2 ... Works as a Resource Allocator - When multiple users are logged on the system or multiple jobs are running at the same time , resources must be allocated to each of them . Various types of resources are managed by operating system . Some may have special allocation code , whereas others may have much more general request and release code .
3... File-system Manipulation - Programs need to read and write files . Programs also need to create and delete files by name , all managed by operating system .
4... Error Detection - The operating system constantly needs to be aware of possible errors . Errors may occur in the CPU , memory hardware , in I/O device , and in user programs . It is duty of operating system that display appropriate message whenever an error occurs and takes the suitable action for ensuring correct and consistent computing .
5... Communication - If more than one programs are running on same computer , then there are many instances , when one process needs to exchange information with another process . Thus operating system performs the process of communication through message passing .
6... Protection - Protection involves ensuring that all access to system resource is controlled . When several disjoint programs execute concurrently it should not possible for one process to interfere with the others , or with operating system . Security of the system from the outsiders is also important . Such security starts with the user having to authenticate himself to the system , usually by means of a password to be allowed access to the resources .
What are types of Operating System ?
Multiprogramming Operating System
Usually , a CPU is much faster compared to peripheral devices. While peripherals are performing certain operations the CPU may not be doing any work. It may be lying idle. To keep CPU busy for most of the time it is desirable to process a number of programs concurrently.When a computer processes several programs concurrently, such processing or execution of programs is called multiprogramming.
The term multiprogramming denotes an operating system that provides sophisticated forms of memory protection and enforces concurrency control when processes access shared I/O devices and files. Multiprogramming increases CPU utilization by organizing jobs so that the CPU always has one to execute.
The idea is as follows- The operating system keeps several jobs in memory simultaneously. This set of jobs is a subset of the jobs kept in the job pool. The operating system picks and begins to execute one of the jobs in the memory.
Eventually, the job may have to wait for some task, such as an I/O operation, to complete. In a non-multiprogramming system, the operating system switches to, and executes, another job. When that job needs to wait, the CPU is switched to another job, and so on. As soon as, the first job finishes waiting and gets the CPU back.
As long as at least one job needs to execute , the CPU is never idle.
Batch Operating System
Batch processing requires the program , data and appropriate system commands to be submitted together in the form of a job to the computer operator. The job is usually in the form of punch cards . At some later time , the output appeared. The output consists of the result of program as well as a dump of the final memory and register contents for debugging.
The major task of operating system in such type of computers is to transfer control automatically from one job to next. The operating system always resides in memory in such type of system.
To speed up processing, operators batch together jobs with similar needs and run them through the computer as a group. Thus , the programmers leave their programs with the operator. The operator sorts programs into batches with similar requirements and , as the computer becomes available , runs each batch. The output from each job is then sent back to the appropriate programmer.
Batch Operating system allow little or no interaction between users and executing programs. Programs that do not require interaction and programs with long execution times may be served well by Batch Operating System .
Scheduling in batch systems is also very simple. Memory is divided into two areas. One of them is permanently occupied by the resident portion of the operating system , and the other is used to load transient programs for execution. When a transient program terminates , a new program is loaded into the same area of memory.
Since at most one program is in execution at any time, batch systems do not require any time-critical device management. For this reason, batch operating system use the simple, programme control method of input/output. The lack of contention of I/O devices makes their allocation and deallocation trivial.
Batch system provides simple forms of file management. Since Access to files is also serial, little protection and no concurrency control of files access is required.
Real-time Operating System
Real-time operating systems are used in environments where a large number of events , mostly external to the computer system , must be accepted and processed in a short time or within certain deadlines. Such applications are industrial control , telephone switching equipment, flight control, and real-time simulation .
The real-time operating systems can be of two types -
Hard Real-time Operating System- These operating systems guarantee that critical tasks be completed within a certain range of time. For example, suppose in take an concept of rocket propulsion.... Time is very much important factor for rocket propulsion... Certain deadline is set , and after that deadline rocket is been crashed without even flying.
Soft Real-time Operating System- This operating system provides some relaxation in time limit. For example- Multimedia systems , digital audio system etc..
Explicit, programmer-defined and controlled processes are encountered in real-time systems. A separate process is charged with handling a single external event. The process is activated upon occurrence of the related event signaled by an interrupt.
Multitasking operation is accomplished by scheduling processes for execution independently for each other. Each process is assigned a certain level of priority that corresponds to the relative importance of the event that it services. The processor is allocated to the highest-priority process. Higher-priority processes preempt execution of the lower-priority processes. This type of scheduling , called , priority-based preemptive scheduling is used by real-time systems.
Memory management in real-time systems is comparatively less demanding than in other types of multiprogramming systems. The primary reason for this is that many processes permanently reside in memory in order to provide quick response time.
One of the main characteristics of real-time systems is time-critical device management. In addition to providing sophisticated forms of interrupt management and I/O buffering, real-time operating systems provide system calls to allow user processes to connect themselves to interrupt vectors and to service events directly.
File management is found only in larger installations of real-time systems. The file-management of real-time systems includes protection and access control. The primary objective of file-management in real-time systems is speed of access , rather then efficient utilization of secondary storage .
Time-sharing or Multitasking Operating system
Time-sharing or multitasking is a logical extension of multiprogramming. The CPU executes multiple jobs by switching among them, but the switches occur so frequently that the users can interact with each program while it is running.
Time-sharing is a mechanism to provide simultaneous interactive use of a computer system by many users in such a way that each user is given the impression that he/she has his/her own computer. It uses multiprogramming with a special CPU scheduling algorithm to achieve this. A time-sharing system has many user terminals simultaneously connected to the same computer. Using these, terminals , multiple users can simultaneously work on the system.
The multiprogramming feature allows multiple user programs to simultaneously reside in the main memory. The special CPU scheduling algorithm, used in time-sharing system allocates a very short period of CPU time one-by-one to each user process, beginning from first user process and proceeding through the last one, and again beginning from the first one. This short period of time during which a user process gets attention of the CPU is known as a time slice or time slot or quantum.
Most time-sharing systems use time-slicing scheduling. In order to prevent programs from monopolizing the processor , a program executing longer than the system-defined time-slice is interrupted by the operating system and placed at the end of the queue of waiting programs.
Memory management in time-sharing systems provides for isolation and protection of co resident programs. Some forms of controlled sharing are provided to conserve memory and to exchange data between programs.
I/O management in time-sharing systems must be sophisticated enough to cope with multiple users and devices. However , due to relatively slow speed of terminals and human users, processing of terminal interrupts need not be time-critical.
As in most multi user environments, allocation and deallocation of devices must be done in a manner that preserves system integrity and provides for good performance.
File management in a time-sharing systems must provide protection and access control due to concurrent and conflicting attempt to access files. This task is compounded by the requirement for files to be shared among certain users or classes of users
Distributed Operating Systems
A distributed operating system is a collection of autonomous computer systems capable of communication and cooperation via their hardware and software interconnection. The distributed operating system provides an illusion to its users that it has a single uni processor system , although it is actually consisted of multiple processors.
Because of this upper layer of illusion , user can only interact with entire system to satisfy his request for running program or for accessing a file , he doesn't know where his programs are being executed. All the things automatically and efficiently handled by the operating system.
A distributed operating system governs the operation of a distributed computer system and provides a virtual machine abstraction to its users. The key objective of a distributed operating system is transparency. Ideally, component and resource distribution should be hidden from users and application programs unless they explicitly demand otherwise.
Distributed operating system provides the means for system-wide sharing of resources, such as computational capacity, files, and I/O devices. In addition, a distributed operating system may facilitate access to remote resources, communication with remote processes , and distribution of computations.
Example :- UNIX , Windows 2000 , Linux etc......
For more of such hot topics read my other posts here :
1. Importance of Multiprogramming Operating System 2. What is Operating System and what does it do ?