third generation computer
Third generation computers use semiconductor memories in addition to, and later instead of, ferrite core memory. The two main types of semiconductor memory are Read-Only Memory (ROM) and read-and-write memories called random-access memory (RAM).
A technique called microprogramming became widespread and simplified the design of the CPUs and increased their flexibility. This also made possible the development of operating systems as software rather than as hard-wiring.
A variety of techniques for improving processing efficiency were invented, such as pipelining, (parallel operation of functional units processing a single instruction), and multiprocessing (concurrent execution of multiple programs).
As the execution of a program requires that program to be in memory, the concurrent running of several programs requires that all programs be in memory simultaneously. Thus the development of techniques for concurrent processing was matched by the development of memory management techniques such as dynamic memory allocation, virtual memory, and paging, as well as compilers producing relocatable code.