- •Глава 2. Многоуровневая организация компьютера. Архитектура и структура компьютера
- •2.1 Сущность многоуровневой организации компьютера
- •2.2. Современные многоуровневые компьютеры
- •2.3. Развитие многоуровневых компьютеров
- •2.4. Аппаратное и программное обеспечение логически эквивалентны
- •2.5. Изобретение микропрограммирования
- •2.6. Изобретение операционной системы
- •2.7. Смещение функциональности на уровень микрокода
- •2.8. О терминах "архитектура и структура" компьютера
- •2.9. Методы исследования сложных систем
- •Контрольные вопросы
2.6. Изобретение операционной системы
В те времена, когда компьютеры только появились, принципы работы с ними сильно отличались от современных. Одним компьютером пользовалось большое количество людей. Рядом с компьютером лежал листок бумаги, и если программист хотел запустить свою программу, он записывался на какое-то определенное время. В назначенное время программист направлялся в комнату, где стоял компьютер, с пачкой перфокарт (которые тогда служили средством ввода) в одной руке и хорошо заточенным карандашом в другой. Каждая перфокарта содержала 80 колонок; на ней в определенных местах пробивались отверстия. Войдя в комнату, программист вежливо просил предыдущего программиста освободить место и приступал к работе.
Если он хотел запустить программу на языке FORTRAN, ему необходимо было пройти следующие этапы:
Он подходил к шкафу, где находилась библиотека программ, брал большую зеленую стопку перфокарт с надписью «Компилятор FORTRAN», помещал их в считывающее устройство и нажимал кнопку «Пуск».
Он помещал стопку карточек со своей программой, написанной на языке FORTRAN, в считывающее устройство и нажимал кнопку «Продолжить». Программа считывалась.
Когда компьютер прекращал работу, программист считывал свою программу во второй раз. Некоторые компиляторы требовали только одного считывания перфокарт, но в большинстве случаев необходимо было выполнять эту процедуру несколько раз. Каждый раз требовалось считать большую стопку перфокарт.
В конце концов трансляция завершалась. Программист часто становился очень нервным, потому что если компилятор находил ошибку в программе, ему приходилось исправлять ее и начинать процесс ввода программы заново. Если ошибок не было, компилятор выдавал в виде перфокарт программу на машинном языке.
Тогда программист помещал эту программу на машинном языке в устройство считывания вместе с пачкой перфокарт из библиотеки подпрограмм и загружал обе эти программы.
Начиналось выполнение программы. В большинстве случаев она не работала, неожиданно останавливаясь в середине. Обычно в этом случае программист начинал дергать переключатели на пульте и смотрел на лампочки. В случае удачи он находил и исправлял ошибку, подходил к шкафу, в котором лежала большая зеленая стопка перфокарт с надписью «Компилятор FORTRAN, и начинал все заново. В случае неудачи он делал распечатку содержания памяти, что называлось разгрузкой оперативного запоминающего устройства, и брал эту распечатку домой для изучения.
Эта процедура была обычной на протяжении многих лет. Программистам приходилось учиться, как работать с компьютером и что нужно делать, если он выходил из строя, а происходило это довольно часто. Компьютер постоянно простаивал без работы, пока люди носили перфокарты по комнате или ломали головы над тем, почему программа не работает.
В 60-е годы попытались ускорить дело, автоматизировав работу оператора. Программа под названием операционная система загружалась в компьютер на все время его работы. Программист приносил пачку перфокарт со специализированной программой, которая выполнялась операционной системой.
Операционная система считывала перфокарту *JOB и использовала содержащуюся на ней информацию для учета системных ресурсов (звездочка ставилась, чтобы отличать перфокарты с управляющей программой от перфокарт с данными). Затем операционная система считывала перфокарту *FORTRAN, которая представляла собой команду для загрузки компилятора FORTRAN с носителя (например. магнитной ленты). После этого компилятор считывал и компилировал программу, написанную на языке FORTRAN. Как только компилятор заканчивал работу, операционная система считывала перфокарту *ДАННЫЕ — команду по выполнению транслированной программы с использованием перфокарт данных.
Операционная система была придумана для того, чтобы автоматизировать работу оператора (отсюда и название), но это — не единственное ее преимущество. Создание операционной системы было первым шагом в развитии нового виртуального компьютера. Перфокарту *FORTRAN можно рассматривать как виртуальную команду к компилятору, а перфокарту "ДАННЫЕ — как виртуальную команду для выполнения программы. И хотя этот уровень состоял всего из двух команд, он стал первым шагом в развитии виртуальных компьютеров.
В последующие годы операционные системы все больше и больше усложнялись. К уровню архитектуры набора команд добавлялись новые команды, приспособления и особенности, и в конечном итоге сформировался новый уровень. Некоторые команды нового уровня были идентичны командам предыдущего, но некоторые (в частности, команды ввода-вывода) полностью отличались. Эти новые команды тогда назывались макросами операционной системы, или вызовами супервизора. Сейчас обычно используется термин системный вызов.
Первые операционные системы считывали пачки перфокарт и распечатывали результат на принтере. Такая организация вычислений называлась пакетным режимом. Чтобы получить результат, обычно нужно было ждать несколько часов. При таких условиях было трудно развивать программное обеспечение.
В начале 60-х годов были разработаны операционные системы, которые давали возможность работать с компьютером сразу нескольким программистам. В таких системах к центральному компьютеру через специальные линии связи подсоединялись отдаленные терминалы. Таким образом центральный процессор разделялся между большим количеством пользователей. Программист мог напечатать свою программу и получить результаты почти сразу прямо на своем рабочем месте. Эти системы назывались (и сейчас называются) системами разделения времени.
