Читать «Архитектура компьютера» онлайн - страница 14

Эндрю Таненбаум

Хотя операционная система была придумана для того, чтобы автоматизировать работу оператора (отсюда и название), она стала первым шагом в развитии новой виртуальной машины. Перфокарту *FORTRAN можно рассматривать как виртуальную команду «откомпилировать программу», а перфокарту *DATA — как виртуальную команду «выполнить программу». И хотя этот уровень состоял всего из двух команд, он стал первым шагом в развитии виртуальных машин.

В последующие годы операционные системы все больше и больше усложнялись. К уровню архитектуры набора команд добавлялись новые команды, приспособления и функции, из которых в конечном итоге сформировался новый уровень. Некоторые команды нового уровня были идентичны командам предыдущего, но некоторые (в частности, команды ввода-вывода) полностью отличались. Эти новые команды тогда назывались макросами операционной системы, или вызовами супервизора. Сейчас обычно используется термин системный вызов.

Первые операционные системы считывали пачки перфокарт и распечатывали результат на принтере. Такая организация вычислений называлась пакетным режимом. Чтобы получить результат, обычно приходилось ждать несколько часов. При таких условиях было трудно развивать программное обеспечение.

В начале 60-х годов исследователи из Дартмутского колледжа, Массачусетского технологического института (МТИ) разработали операционную систему, которая давала возможность работать с компьютером сразу нескольким программистам. В этой системе к центральному компьютеру через телефонные линии подсоединялись отдаленные терминалы. Таким образом, центральный процессор разделялся между большим количеством пользователей. Программист мог напечатать свою программу и получить результаты почти сразу прямо в офисе, гараже или где бы то ни было еще (там, где находился терминал). Эти системы назывались (и сейчас называются) системами разделения времени.

Нас интересуют только те компоненты операционной системы, которые интерпретируют команды уровня 3, отсутствующие на уровне ISA, а не возможности разделения времени. Хотя в дальнейшем не будем особо подчеркивать этот факт, необходимо понимать, что интерпретация возможностей, добавившихся на уровне ISA, — не единственная функция операционных систем.

Смещение функциональности на уровень микрокода

С 1970 года, когда получило развитие микропрограммирование, производители осознали, что теперь новые машинные команды можно добавлять простым расширением микропрограммы. Иначе говоря, они могли добавлять «аппаратное обеспечение» (новые команды) путем программирования. Это открытие буквально привело к взрыву в производстве наборов машинных команд, поскольку производители начали конкурировать друг с другом — каждый старался, чтобы его набор команд был больше и лучше, чем у других. Многие команды не представляли особой ценности, поскольку те же задачи можно было легко решить, используя уже существующие команды, но обычно они выполнялись немного быстрее. Например, во многих компьютерах использовалась команда INC (INCrement), которая прибавляла к числу единицу. Тогда уже существовала общая команда сложения ADD, и не было необходимости вводить новую команду, прибавляющую к числу единицу. Тем не менее команда INC работала немного быстрее, чем ADD, поэтому ее также включили в набор команд.