are called program or procedure. Many programs functioning together to do a task make a software.As you know, the hardware devices need user instructions to function. A set of instructions that achieve a single outcome
For example, a word-processing software enables the user to create, edit and save documents. A web browser enables the user to view and share web pages and multimedia files. There are two categories of software −
System Software
Application Software
Utility Software
Let us discuss them in detail.

Software required to run the hardware parts of the computer and other application software are called system software. System software acts as interface between hardware and user applications. An interface is needed because hardware devices or machines and humans speak in different languages.
Machines understand only binary language i.e. 0 (absence of electric signal) and 1 (presence of electric signal) while humans speak in English, French, German, Tamil, Hindi and many other languages. English is the pre-dominant language of interacting with computers. Software is required to convert all human instructions into machine understandable instructions. And this is exactly what system software does.
Based on its function, system software is of four types −
Operating System
Language Processor
Device Drivers
System software that is responsible for functioning of all hardware parts and their interoperability to carry out tasks successfully is called operating system (OS). OS is the first software to be loaded into computer memory when the computer is switched on and this is called booting. OS manages a computer’s basic functions like storing data in memory, retrieving files from storage devices, scheduling tasks based on priority, etc.
Language Processor
As discussed earlier, an important function of system software is to convert all user instructions into machine understandable language. When we talk of human machine interactions, languages are of three types −
Machine-level language − This language is nothing but a string of 0s and 1s that the machines can understand. It is completely machine dependent.
Assembly-level language − This language introduces a layer of abstraction by defining mnemonics. Mnemonics are English like words or symbols used to denote a long string of 0s and 1s. For example, the word “READ” can be defined to mean that computer has to retrieve data from the memory. The complete instruction will also tell the memory address. Assembly level language is machine dependent.
High level language − This language uses English like statements and is completely independent of machines. Programs written using high level languages are easy to create, read and understand.
Program written in high level programming languages like Java, C++, etc. is called source code. Set of instructions in machine readable form is called object code or machine code. System software that converts source code to object code is called language processor. There are three types of language interpreters−
Assembler − Converts assembly level program into machine level program.
Interpreter − Converts high level programs into machine level program line by line.
Compiler − Converts high level programs into machine level programs at one go rather than line by line.
Device Drivers
System software that controls and monitors functioning of a specific device on computer is called device driver. Each device like printer, scanner, microphone, speaker, etc. that needs to be attached externally to the system has a specific driver associated with it. When you attach a new device, you need to install its driver so that the OS knows how it needs to be managed.
A software that performs a single task and nothing else is called application software. Application software are very specialized in their function and approach to solving a problem. So a spreadsheet software can only do operations with numbers and nothing else. A hospital management software will manage hospital activities and nothing else. Here are some commonly used application software −
Word processing
Spreadsheet
Presentation
Database management
Multimedia tools
Application software that assist system software in doing their work is called utility software. Thus utility software is actually a cross between system software and application software. Examples of utility software include −
Antivirus software
Disk management tools
File management tools
Compression tools
Backup tools
As you know, system software acts as an interface for the underlying hardware system. Here we will discuss some important system software in detail.

Operating System
Operating system (OS) is the lifeline of computer. You connect all the basic devices like CPU, monitor, keyboard and mouse; plug in the power supply and switch it on thinking you have everything in place. But the computer will not start or come to life unless it has an operating system installed in it because OS −
Keeps all hardware parts in a state of readiness to follow user instructions
Co-ordinates between different devices
Schedules multiple tasks as per priority
Allocates resource to each task
Enables computer to access network
Enables users to access and use application software
Besides initial booting, these are some of the functions of an operating system −
Managing computer resources like hardware, software, shared resources, etc.
Allocating resources
Prevent error during software use
Control improper use of computer
One of the earliest operating systems was MS-DOS, developed by Microsoft for IBM PC. It was a Command Line Interface (CLI) OS that revolutionized the PC market. DOS was difficult to use because of its interface. The users needed to remember instructions to do their tasks. To make computers more accessible and user-friendly, Microsoft developed Graphical User Interface (GUI) based OS called Windows, which transformed the way people used computers.
Assembler
Assembler is a system software that converts assembly level programs to machine level code.

These are the advantages provided by assembly level programming −
Increases efficiency of the programmer as remembering mnemonics is easier
Productivity increases as number of errors decreases and hence debugging time
Programmer has access to hardware resources and hence has flexibility in writing programs customized to the specific computer
Interpreter
The major advantage of assembly level language was its ability to optimize memory usage and hardware utilization. However, with technological advancements computers had more memory and better hardware components. So ease of writing programs became more important than optimizing memory and other hardware resources.
In addition, a need was felt to take programming out of a handful of trained scientists and computer programmers, so that computers could be used in more areas. This led to development of high level languages that were easy to understand due to resemblance of commands to English language.
The system software used to translate high level language source code into machine level language object code line by line is called an interpreter. An interpreter takes each line of code and converts it into machine code and stores it into the object file.
The advantage of using an interpreter is that they are very easy to write and they do not require a large memory space. However, there is a major disadvantage in using interpreters, i.e., interpreted programs take a long time in executing. To overcome this disadvantage, especially for large programs, compilers were developed.
Compiler
System software that store the complete program, scan it, translate the complete program into object code and then creates an executable code is called a compiler. On the face of it compilers compare unfavorably with interpreters because they −
are more complex than interpreters
need more memory space
take more time in compiling source code
However, compiled programs execute very fast on computers. The following image shows the step-by-step process of how a source code is transformed into an executable code −

These are the steps in compiling source code into executable code −
Pre-processing − In this stage pre-processor instructions, typically used by languages like C and C++ are interpreted, i.e. converted to assembly level language.
Lexical analysis − Here all instructions are converted to lexical units like constants, variables, arithmetic symbols, etc.
Parsing − Here all instructions are checked to see if they conform to grammar rules of the language. If there are errors, compiler will ask you to fix them before you can proceed.
Compiling − At this stage the source code is converted into object code.
Linking − If there are any links to external files or libraries, addresses of their executable will be added to the program. Also, if the code needs to be rearranged for actual execution, they will be rearranged. The final output is the executable code that is ready to be executed.
Comments