Evolution of System softwares

A basic conclusion:

Initially, the programmer would write a sequence of 0s and 1s, place them in memory and then the computer would interpret them and perform the task.


The programmer found it difficult, hence creating some mnemonics for each machine instruction to increase the convenience. Such language is now known as assembly language and program is known as assembler. These were written to automate the work of translating assembly language written in object code.


Once the assembler produces object code that code had to be load into memory which was done by the assembler. However,this wasted the main memory by leaving the assembler in memory while user's program is being executed. Thus, the programmer had to retranslate his programme each time. To overcome the wasted translation time and wasted memory problem loaders came into the picture.

A loader is a program that places programs into memory and prepares them for execution. The loader puts the machine language version of user's program to main memory and transfers control to it.


The realisation many users were writing virtually the same program led to the development of 'ready-made' programmes called packages. As programmer became more sophisticated, he wanted to mix and combine these ready-made program for which there are 2 subroutines:

  • Open subroutine: means whose code is inserted in main prohram and flow continues.

  • Closed subroutine: those which can be stored outside main memory and control transfers to it.


Programmers wished to use subroutines that referred each other symbolically and did not want to be concerned with the address part of their program. Such resolution of symbolic references between object desks is called linking done by linker.


To relieve programmers of the need to repeat identical parts of their programs, operating system provides a macro processing facility, which permits programs to define an abbreviation for a part of his program and to use that abbreviation.


As users problem became more complex, high level languages were developed. These languages are processed by compilers and interpreters. A compiler is a program that accepts a program written in high language and produces an object program.An interpretor process and executes a source program as it were machine language.


Further to manage all these resources, operating systems were developed. These are concerned with the allocation of resources and services such as memory, processor devices and information.

Further to manage these it has programmes like memory management module, I/O program, file system, a scheduler etc.