Операционная система была придумана для того, чтобы автоматизировать работу оператора (отсюда и название), но это — не единственное ее преимущество. Создание операционной системы было первым шагом в развитии новой виртуальной машины. Перфокарту * FORTRAN можно рассматривать как виртуальную команду к компилятору, а перфокарту *ДАННЫЕ — как виртуальную команду для выполнения программы. И хотя этот уровень состоял всего из двух команд, он стал первым шагом в развитии виртуальных машин.
В последующие годы операционные системы все больше и больше усложнялись. К уровню архитектуры набора команд добавлялись новые команды, приспособления и особенности, и в конечном итоге сформировался новый уровень. Некоторые команды нового уровня были идентичны командам предыдущего, но некоторые (в частности, команды ввода-вывода) полностью отличались. Эти новые команды тогда назывались макросами операционной системы, или вызовами супервизора. Сейчас обычно используется термин системный вызов.
Первые операционные системы считывали пачки перфокарт и распечатывали результат на принтере. Такая организация вычислений называлась пакетным режимом. Чтобы получить результат, обычно нужно было ждать несколько часов. При таких условиях было трудно развивать программное обеспечение.
В начале 60-х годов исследователи Массачусетского технологического института (МТИ) разработали операционную систему, которая давала возможность работать с компьютером сразу нескольким программистам. В этой системе к центральному компьютеру через телефонные линии подсоединялись отдаленные терминалы. Таким образом, центральный процессор разделялся между большим количеством пользователей. Программист мог напечатать свою программу и получить результаты почти сразу прямо в офисе, гараже или где бы то ни было еще (там, где находился терминал). Эти системы назывались (и сейчас называются) системами разделения времени.
Хотя нас интересуют только те компоненты операционной системы, которые интерпретируют команды третьего уровня, необходимо понимать, что это — не единственная функция операционных систем.
Смещение функциональности на уровень микрокода
С 1970 года, когда получило развитие микропрограммирование, у производителей появилась возможность вводить новые машинные команды расширением микропрограммы, то есть путем программирования. Это открытие привело к виртуальному взрыву в производстве программ машинных команд, поскольку производители начали конкурировать друг с другом, стараясь выпустить лучшие программы. Эти команды не представляли особой ценности, поскольку те же задачи можно было легко решить, используя уже существующие программы, но обычно они работали немного быстрее. Например, во многих компьютерах использовалась команда INC (INCrement), которая прибавляла к числу единицу. Тогда уже существовала общая команда сложения ADD, и не было необходимости вводить новую команду, прибавляющую к числу единицу. Тем не менее команда INC работала немного быстрее, чем ADD, поэтому ее также включили в набор команд.
Многие программы были добавлены в микропрограмму по той же причине. Среди них можно назвать команды: