System software is software that allows users to interact with the computer’s hardware. We all are aware that computer understands machine language only. Machine language includes instructions in the form of strings of 0s and 1s. However, machine language is quite difficult for a general user. So, the user instructs its need to the computer in a high-level language that the computer doesn’t understand.
In particular, the system software is responsible for translating the need of users into a form that the computer can understand. Let us explore more about system software.
Content: System Software
- What is System Software?
- System Software Examples
- Features of System Software
- Types of System Software
What is System Software?
Today’s modern computer has a faster processing speed, large memory, advanced input-output devices, and is even capable of networking. However, to utilize computer functionalities, we must instruct computers with machine language. Machine language includes instruction in the form of strings of 0s and 1s.
Although the computer understands the machine language, it is difficult for the user. Thus, we require an intermediary that can transmit the user requirement to the computer in a form that the computer can understand. This intermediary is nothing but system software. Usually, the software can be of two types.
Types of Software
- Application software
- System software
Application software is the one written by individual users to accomplish their computational requirements.
System software is one written by the manufacturer or by the system administrator to make the system convenient for use.
System software act as a bridge between user and computer. It translates the need of the user to the computer in a form that the computer understands. Thus, it lets the user program gets executed on the computer.
A computer has several resources, and one user program does not utilize all of them at once. In this case, the unused resources remained idle while some resources were serving the user program. System software allots these idle resources to some other programs. The system software interleaves the execution of all programs. In this way, it provides services to many programs simultaneously.
With system software, the user need not know about the details of how the machine works internally.
If we put this another way, the system software is a collection of programs that we refer to as a system program. Each of the system programs has a different task to perform, such as:
- Editing
- Compiling
- Loading
- Debugging, etc.
In addition, the system software also performs other tasks that the user is usually unaware of. Like, preparing a program for its execution, this requires:
- Linking a program with the function from the library or with some other program.
- Prevent programs running simultaneously from interfering with each other’s execution.
Consequently, the system software provides a user-friendly platform that allows users to develop their own programs. If we broadly classify software in a computer can be of two types.
Examples
- Windows
- Mac OS
- Chrome OS
- Ubuntu
- Android
- iOS
- Device Driver
- Firmware
- Utility programs
- Programming Language Translators
Features of System Software
Manufacturers or system administrators develop system software as an integral part of the computer. Its features are:
- Faster – The system software is fast enough to respond to users’ needs from the system quickly.
- Difficult to Modify – The system software is usually written in a low-level language, and the code is too complex for a user to modify.
- Developed in Low-Level Language – The system software makes the computer hardware understand what a user needs. Thus, written in a low-level language, making the hardware easy to understand.
- Close to the System – The system software can communicate with the hardware of the system. Thus we refer to it close to the system.
- Size of Software – The system software is usually bigger in size.
Types of System Software
Although the system software can be of various types but let us discuss some of its major categories.
- Operating system
- Compiler
- Assembler
- Linker
- Loader
- Text editor
- Debugger
Operating system
The operating system is the most important system software required for the proper functioning of the computer. The operating system performs several tasks such as:
- Allocating resources to several user programs
- Interacting with the computer hardware
- Maintaining the resources of the computer
In short, it does all to create an environment where the user can execute programs (application programs) easily. If we categorize the task of the operating system, then it will be:
-
Process Management
We define the process as a set of executable instructions. The process management involves:
- Creation of process
- Scheduling the processes
- Interprocess communication
- Synchronization
-
Resource Management
A computer has several resources such as main memory, printers, disk drive, CPU time, etc. OS manages resources in such a way that system does not fall into a deadlock state. As in a deadlock state, none of the processes would progress. This is because the resources get interlocked between the processes.
-
Memory Management
Memory management plays an important role in the performance of the system. In most cases, the size of the program is much larger than the size of physical memory. While during the execution of such a program, only a portion of the program is loaded into the main memory.
However, OS decides which portion of the program must be in the main memory. It’s a very crucial decision and taken with extreme care. In the meantime, the remaining portion of the program stays in secondary memory. Accessing secondary memory might cause some delay in the execution of the program.
-
Secondary Storage Management
The secondary storage devices of the system, such as disks, tapes, etc., are managed by the OS in both space and time-efficient manner. Thus, it maintains a proper balance between the space and time required to access that space.
-
User Management
One computer may have several users. The operating system maintains the capabilities and priorities of each user.
-
Security Management
OS is also responsible for maintaining the integrity and security of the system. No user is permitted to modify the OS.
Compiler
A compiler is also a system software that is responsible for compiling (converting) a program from its source language to the target language. It includes a series of phases, as discussed below.
-
Lexical Analysis
It is the first phase of the compiler and acts as an interface to the source program. Especially this phase scans the source program and identifies valid tokens within the program.
-
Syntax Analysis
The syntax analysis scans the tokens received from the lexical analysis phase to check whether they are syntactically correct or not.
-
Semantic Analysis
The semantic analysis verifies whether the identified tokens are semantically correct or not.
-
Intermediate-code Generation
After verifying that the source program is syntactically and semantically correct, the next step is to generate an intermediate code. This intermediate code is nothing but an intermediate representation of the original source program.
-
Code Optimization
The intermediate code is further optimized to make the execution of the target code even faster.
-
Target Code Generation
This phase simply generates an assembly code, which is equivalent to the source program. In other words, we refer to this assembly code as the target code. Target code is in a language that a computer can understand.
-
Symbol Table Management
The symbol table is a data structure that holds information about the symbols in the source program. Particularly, the table is not a part of the final target code generated, and it is just a reference table.
-
Error Handling and Recovery
The compiler identifies most of the errors in the source program during the syntax and semantics analysis phase. This phase detects the error in the source program when it passes to multiple phases of the compiler and works for its recovery.
Assembler
Assembler is a system program that is responsible for converting the assembly language code into the machine language code.
Linker
In the case of large projects, the developers develop entire software into separate modules. These modules can be compiled/assembled separately with little or no information about the other modules of the software. But it is the linker that combines all to modules together to develop a complete software.
Loader
A loader is system software that brings the executable file present in the secondary memory to the primary memory for its execution. In today’s modern computer, the loader is implemented as a part of the operating system itself.
In the case of large projects, the developers develop entire software into separate modules. These modules can be compiled/assembled separately with little or no information about the other modules of the software. But it is the linker that combines all to modules together to develop a complete software.
Leave a Reply