The set of programs that directly control the computer's internal operations and also those programs that help ordinary users to make use of a computer are called system programs. System software provides a convenient layer of abstraction over the hardware and make the use of the computer simple. Therefore system software is the most essential component of a computer system. Developing system software requires good knowledge of the hardware. The system software can be further classified into two categories:
1. Operating System
2. Language Processors
1. Operating System:
The Operating system (OS) is the most important and essential piece of soft-ware in the computer. The term 'Operating System' refers to a set of programs that control, and co-ordinate the operation and help to make efficient use of its resources. By resources, we mean the CPU, memory and I/O devices.
The operating system acts as an interface between the user and the hat hardware (bare machine). The user interacts with the operating system which in turn makes the machine cam, out the tasks. But the user feels that the hardware directly obeys his/her commands. But it is the operating system in disguise that makes the hardware execute the tasks.
The operating system can be thought of as a manager of resources. It gives users a convenient working environment by managing the allocation of various resources. Most Operating Systems offer the following features:-
1. Provides a command level interface. Users can interact by typing commands directly. This part of the O.S is usually called a command interpreter or shell.
2. Performs the core functions of managing CPU, memory, devices. This part is called the Kernel.
3. The operating system also keeps track of storage and retrieval of information. This part is usually called the file system.
4. For programmers, the operating system provides a set of built in functions that help to directly access system features. These are called APIs (Application Programming Interfaces) or System Calls.
Types of Operating Systems:
The extent to which the resources are made use of, is determined by the type of operating system. The type of OS also determines the type of applications that can be run on the computer.
An operating system that allows only one program to execute (or only one user) at a time is called a single tasking or single user operating system (or Non-multiprogramming O.S).
A multiprogramming O.S on the other hand allows execution of two or more programs (task) simultaneously. In multiprogramming, many programs are simultaneously kept in the main memory and the CPU is switched between them. Multiprogramming is a general term used to indicate simultaneous execution of more than one program. The term multitasking is also used.
Time Sharing Systems:
A time sharing system allows simultaneous interactive use of a computer by many users connected through terminals. The operating system switches the attention of the CPU to each user's task. It is also called a multiuser system.
Real Time Systems:
Real time OSs are characterized by fast response. They are used in time critical applications like control of physical systems.
Eg:- Control of radars, weapon systems, nuclear reactors.
Here the operating system makes use of multiple processors. The operating system schedules the task and cause processors to share the load. In multiprocessor architecture, there is a master processor and one or more slave processors. In certain other systems all processors have same status. The processors communicate and co-operate at different levels in solving a problem.
Type of OS and Examples are as follows.
Single-tasking - PC-DOS, MSDOS
Multi tasking - MS-Windows, UNIX, Linux, OS/2
Time Sharing - UNIX, Linux
Multiprocessing - UNIX, Windows NT
There are two types of multiprocessor systems-shared memory type and distributed memory type. In shared memory type, the main memory is accessible by all processors. In the distributed memory type multiprocessor system, each processor has a large local memory.
2. Language Processors:
A computer can understand only machine language. A machine language pro-gram consists of numeric instruction codes. Therefore it is difficult to write pro-grams directly in the machine language. Therefore programmers prefer to write programs in more convenient languages called High Level Languages (HLLs) There is a big difference between machine language and high level language. So it is necessarily to translate programs written in MI to equivalent machine language. System programs that perform this translation are called language processors.
Language processors analyse the source language (HLL) statements in an analysis phase. In the synthesis phase they generate machine language program. Language processors thus make the programming task easy. The Translation Process is as follows.
Program in HLL (Source code) ---> Translator ---> Program in Machine language (Object code)
The different types of language processors are assembler, compiler and interpreter.
Assembly language is a language that uses symbolic instruction codes instead of numeric instructions. An assembler translates a program written in assembly languages into machine language equivalent.
A compiler is a program that translates a HLL program into equivalent machine language. A compiler first scans the source program. It reports the errors in the program. This is helpful for correcting the errors. Most high level languages like C, COBOL, Fortran, C++ etc use compilers.
An interpreter translates and executes the source program line by line. When-ever it finds an error it is reported, and program execution can resume only after correcting the error. Interpreters are slow because each time it encounters a statement, translation must be done. Moreover the interpreter must be present in memory to execute the user's program. BASIC is an example for interpreted language.