System Software for UPSC ISS is the layer nobody sees and the paper keeps asking about. Not the operating system, which gets its own article, but the quieter machinery underneath it: the programs that turn what you wrote into something a processor can run.
Quick answer. System software and language translators have produced 15 questions in the last ten papers, an average of 1.5 a year, or 3.75 marks. The questions circle four things: what separates system from application software, what a compiler does that an interpreter does not, what the linker and loader do, and which languages count as low level.
Statistics Paper I, Section IV. Syllabus items: software, system and application software, and low and high level languages, compiler, assembler. The syllabus names compiler and assembler specifically, which it does for very few things.
System software against application software
| System software | Application software | |
|---|---|---|
| Works for | The machine | The user |
| Examples | Operating system, compiler, assembler, linker, loader, device drivers, utilities | Word processor, spreadsheet, browser, media player, statistical packages |
| Runs | In the background, often automatically | When the user opens it |
| Needed to run the computer | Yes | No |
The operating system is the principal component of system software. Compilers, assemblers and utilities sit alongside it, not above it.
Utilities are the awkward middle. Antivirus, backup tools, disk defragmenters and file compressors are called utility software, and utilities are normally classified under system software. When a question offers both “system software” and “utility software” as options, the more specific answer is utility software.
Firmware
Firmware is software stored in ROM that cannot be easily changed. BIOS is the standard example. It is not quite hardware and not quite ordinary software, which is exactly why it has its own name and its own question.
Levels of programming language
| Level | What it is | Needs translation? |
|---|---|---|
| Machine language | Binary instructions the processor executes directly | No |
| Assembly language | Mnemonic codes such as ADD and MOV, one per machine instruction | Yes, by an assembler |
| High level language | English like statements: C, Java, Python | Yes, by a compiler or interpreter |
Machine language and assembly language are the low level languages. C is a high level language, not an assembly language, and that exact false statement has appeared in the paper.
Machine language programs are very efficient for one reason only: the processor understands them directly, so no translation step is needed at run time. They are also nearly impossible to write and completely machine dependent.
Compiler, interpreter and assembler
The three translators, and the differences the paper actually asks about.
| Compiler | Interpreter | Assembler | |
|---|---|---|---|
| Translates | High level to machine level | High level to machine level | Assembly to machine level |
| Works on | The whole program at once | One line at a time | The whole program |
| Produces an object file | Yes | No | Yes |
| Reports errors | All at the end of the scan | At the first error, then stops | At the end |
| Speed of execution afterwards | Faster | Slower | Faster |
Both a compiler and an interpreter translate high level code into machine level instructions. That part is the same. The difference is whether the translation happens all at once and produces a stored object file, or line by line with nothing saved.
What a compiler can diagnose. A compiler finds syntax errors, meaning errors in the grammar of the language. It cannot find logical errors, because a program that computes the wrong answer using perfectly legal statements is still a perfectly legal program. This distinction returns in Functions, Modules, Exceptions and Debugging.
Inside the compiler
The paper has asked about one phase by name, so the sequence is worth holding.
| Phase | Input | Output |
|---|---|---|
| 1. Lexical analysis | The source code as raw characters | Tokens |
| 2. Syntax analysis | Tokens | A parse tree |
| 3. Semantic analysis | Parse tree | An annotated tree |
| 4. Code generation | Intermediate code | Object code |
The output of the lexical analyzer is tokens. A token is the smallest meaningful unit, such as a keyword, an identifier, an operator or a constant.
Linker, loader and the runtime environment
Three steps after compilation, and three separate questions.
| Component | What it does |
|---|---|
| Linker | Takes the object code of all the modules produced by the translators and combines them into a single executable program |
| Loader | Brings that executable from storage into main memory and hands control to it |
| Runtime environment | Provides the services the program needs while it is running: memory allocation, input and output access, error handling |
The linker has been asked twice, in 2019 and 2025, both times as “the module that arranges or combines object code into one program”.
Linker against loader in one line. The linker joins, the loader places. Everything else is detail.
Worked Example 1: Tracing a program from source to execution
A program written in C is run for the first time. What happens, in order?
| Step | Component | Result |
|---|---|---|
| 1 | Editor | Source code file is written |
| 2 | Compiler | Source is scanned, syntax errors reported, object code produced |
| 3 | Linker | Object code of all modules and libraries joined into one executable |
| 4 | Loader | Executable placed into main memory |
| 5 | Runtime environment | Memory and input output services provided while it runs |
Compile, link, load, run. Four words, four components, and the paper has asked about three of them separately.
Worked Example 2: Compiler or interpreter
A program has a syntax error on line 40 out of 100. What happens under each translator?
| Compiler | Interpreter | |
|---|---|---|
| Lines 1 to 39 | Scanned, no execution yet | Executed |
| Line 40 | Error reported | Error reported, execution stops |
| Lines 41 to 100 | Scanned, further errors also reported | Never reached |
| Object file produced | No, compilation failed | No, there is never one |
The compiler tells you about every error before anything runs. The interpreter runs until it hits the first one. That is the practical difference the exam is testing when it asks which reports errors line by line.
Worked Example 3: Sorting software into its box
Classify: MS Word, Linux, Norton Antivirus, GCC compiler, Google Chrome, device driver.
| Item | Category |
|---|---|
| MS Word | Application software |
| Linux | System software, an operating system |
| Norton Antivirus | Utility software, which sits under system software |
| GCC compiler | System software, a translator |
| Google Chrome | Application software |
| Device driver | System software |
Ask one question of each item: does it serve the machine or the user. That settles almost every classification question in this topic.
How This Gets Asked
The C question [2017]
Consider the following statements: 1. C is a high level language. 2. C is an assembly language. 3. A compiler translates a high level language program into machine language.
Statements 1 and 3 are correct. C is a high level language. It is not an assembly language, and the fact that C is often called “close to the hardware” is what the second statement is trading on.
The linker, twice [2019 and 2025]
A software development module that arranges the object code of all the modules that have been generated by the language translators into a single program is [2019]
What is the main purpose of the linker in the compilation process of the programming languages? [2025]
The linker, both times. Asked once as a definition to be named and once as a named thing to be defined, six years apart.
The loader sits in the options on both occasions. The linker joins, the loader places.
The compiler and interpreter question [2024]
Consider the following statements: I. Both compiler and interpreter can translate the program written in high level language into machine level instructions.
True. Candidates who learned “compiler translates, interpreter interprets” mark this false and lose the mark.
Both translate. The difference is timing, scope and whether an object file survives the process.
Quick Revision Table
| Point | Value |
|---|---|
| Principal component of system software | The operating system |
| Utility software examples | Antivirus, backup, compression, disk cleanup |
| Utilities are classified under | System software |
| Firmware | Software in ROM that cannot be easily changed |
| Low level languages | Machine language and assembly language |
| C is | A high level language |
| Machine language is efficient because | The processor executes it directly, no translation needed |
| Compiler translates | The whole program at once |
| Interpreter translates | One line at a time |
| Object file produced by | Compiler and assembler, not the interpreter |
| Compiler can diagnose | Syntax errors, not logical errors |
| Assembler translates | Assembly language to machine language |
| Output of lexical analysis | Tokens |
| Linker | Combines object modules into one executable |
| Loader | Places the executable into main memory |
| Runtime environment | Services provided while the program runs |
| Language for the Microsoft .NET platform | C sharp |
| Scripting languages | Interpreted, high level, assume a collection of existing programs |
Practice Set
Ten questions. No answer key below.
Write your answers in the comments, all ten in a single comment, in the format 1-b 2-a 3-d and so on. The full answer key is posted in this same thread after seven days.
A year in brackets means the question is from that paper. The rest are written in the same pattern.
- Machine language programs are very efficient because [2017]
- Consider the following statements: 1. C is a high level language. 2. C is an assembly language. 3. A compiler translates a high level language program into machine language. Which of the statements given above are correct? [2017]
- Compiler can diagnose [2018]
- A software program that cannot be changed easily and is stored in a ROM is known as [2018]
- Which one of the following is a low level programming language? [2018]
- Which language was designed with an aim to work with Microsoft’s .NET platform? [2020]
- What is the output of lexical analyzer? [2021]
- Consider the following statements: I. Both compiler and interpreter can translate the program written in high level language into machine level instructions. II. An interpreter creates an object file that can be executed later without the source code. Which of the statements given above is or are correct? [2024]
- What is the main purpose of the linker in the compilation process of the programming languages? [2025]
- In an absolute loading scheme, which function is normally performed by the assembler instead of the loader? [2026]
Frequently Asked Questions
How many questions come from system software in UPSC ISS?
Fifteen across the ten papers from 2017 to 2026, about 1.5 a year, worth 3.75 marks. Operating systems are counted separately and are worth far more.
What is the difference between a compiler and an interpreter?
Both translate high level code into machine instructions. A compiler processes the whole program at once and produces an object file. An interpreter processes one line at a time and produces no object file.
Is C a high level or low level language?
C is a high level language. Machine language and assembly language are the low level languages. C is sometimes described as close to the hardware, which is what makes the false statement tempting.
What is the difference between a linker and a loader?
The linker combines the object code of several modules and libraries into one executable program. The loader brings that executable into main memory so it can run. The linker joins, the loader places.
What is the output of a lexical analyzer?
Tokens. A token is the smallest meaningful unit of the source code, such as a keyword, identifier, operator or constant.
Can a compiler detect logical errors?
No. A compiler detects syntax errors, meaning breaches of the grammar of the language. A program that produces the wrong answer using valid statements compiles perfectly.
Is antivirus system software or application software?
Antivirus is utility software, and utilities are normally classified under system software. When both options appear, choose the more specific one, which is utility software.
Related Reading
- Computer Application for UPSC ISS: Complete 16 Part Series
- Operating Systems for UPSC ISS
- Packages, Utilities and Statistical Software for UPSC ISS
- Algorithms, Flowcharts and Programming Languages for UPSC ISS
Part 6 of 16 in the Computer Series for UPSC ISS. Previous: Input and Output Devices for UPSC ISS. Next: Operating Systems for UPSC ISS, published 13 October at 8:00 AM.