There are two main types of software: systems software and application software. Systems software includes the programs that are dedicated to managing the computer itself, such as the operating system, file management utilities, and disk operating system (or DOS).
System software is a software that provides platform to other softwares. Some examples can be operating systems, antivirus softwares, disk formatting softwares, Computer language translators etc. These are commonly prepared by the computer manufacturers. These softwares consists of programs written in low-level languages, used to interact with the hardware at a very basic level. System software serves as the interface between the hardware and the end users.
The most important features of system software include :
1. Closeness to the system
2. Fast speed
3. Difficult to manipulate
4. Written in low level language
5. Difficult to design
An operating system (OS) is a type of system software that manages computer’s hardware and software resources. It provides common services for computer programs. An OS acts a link between the software and the hardware. It controls and keeps a record of the execution of all other programs that are present in the computer, including application programs and other system software.
The most important tasks performed by the operating system are
1. Memory Management: The OS keeps track of the primary memory and allocates the memory when a process requests it.
2. Processor Management: Allocates the main memory (RAM) to a process and de-allocates it when it is no longer required.
3. File Management: Allocates and de-allocates the resources and decides who gets the resources.
4. Security: Prevents unauthorized access to programs and data by means of passwords.
5. Error-detecting Aids: Production of dumps, traces, error messages, and other debugging and error-detecting methods.
6. Scheduling: The OS schedules process through its scheduling algorithms.
Compiler : A compiler is a software that translates the code written in one language to some other language without changing the meaning of the program. The compiler is also said to make the target code efficient and optimized in terms of time and space.
A compiler performs almost all of the following operations during compilation: preprocessing, lexical analysis, parsing, semantic analysis (syntax-directed translation), conversion of input programs to an intermediate representation, code optimization and code generation. Examples of compiler may include gcc(C compiler), g++ (C++ Compiler ), javac (Java Compiler) etc.
Interpreter : An interpreter is a computer program that directly executes, i.e. it performs instructions written in a programming or scripting language. Interpreter do not require the program to be previously compiled into a machine language program. An interpreter translates high-level instructions into an intermediate form, which is then executes.
Interpreters are fast as it does not need to go through the compilation stage during which machine instructions are generated. Interpretter continuously translates the program until the first error is met. If an error comes it stops executing. Hence debugging is easy. Examples may include Ruby, Python, PHP etc.
Assembler : An assembler is a program that converts assembly language into machine code. It takes the basic commands and operations and converts them into binary code specific to a type of processor.
Assemblers produce executable code that similar to compilers. However, assemblers are more simplistic since they only convert low-level code (assembly language) to machine code. Since each assembly language is designed for a specific processor, assembling a program is performed using a simple one-to-one mapping from assembly code to machine code. On the other hand, compilers must convert generic high-level source code into machine code for a specific processor.
Related Article : Compiler vs Interpreter