Здесь предполагается, что с точки зрения активной программы система
представлена командами процессора и множеством ячеек памяти, имеющих адреса
от 0 до X. Однако в процессе ее работы могут также использоваться некоторые
операции (в нашем случае OPEN, GET, PUT и WRIТЕ), не являющиеся машинными
командами. Все подобные операции реализуются соответствующими модулями
операционной системы, в результате чего функции GET, PUT и т. д. можно
применять наряду с машинными командами.
Привилегированные команды и защищенные области памяти доступны
выполняющейся программе не непосредственно, а через механизмы поддержки
функций расширенного набора.
Расширенная машина дает возможность упростить этап компиляции путем
обеспечения интерфейсов более высокого уровня, в терминах которых оформляется
объектная программа, а также снизить трудоемкость процесса программирования на
машинном языке.
Описанные функции высокого уровня естественно считать функциями
операционной системы. Эти функции считаются внешними по отношению к
прикладным программам. Однако в принципе создание подобных интерфейсов не
обязательно связывать с операционной системой. В частности, программа GЕТ,
позволяющая получить очередную запись файла, может быть включена в
библиотеку ассемблера или компилятора. При этом она будет включаться в
основную программу всякий раз, когда в последней встретится обращение к
соответствующей функции. Широко применяется реализация такого способа с
помощью макроассемблера. Столь же обычным способом ввода записи
ассемблируемой или компилируемой программой, причем даже в условиях
поддержки расширенной среды выполнения, представляется помещение
соответствующих кодов непосредственно в объектный модуль.
Необходимо отметить, что наличие режима управления, прерываний и
привилегированных команд приводит к тому, что программа из библиотеки
компилятора или ассемблера, включаемая в основную программу для реализации
выборки очередной записи файла, не может обеспечить функцию GЕТ во всей ее
полноте. Команды ввода-вывода — привилегированные, и их разрешено выполнять
только в режиме управления. Поэтому в процессе работы программа неизбежно
обратится к операционной системе с запросом на выполнение тех функций, которые
не могут быть вставлены компилятором непосредственно в программу. Все
манипуляции с указателем очередной записи в буфере ввода-вывода можно
осуществить в основной программе. Однако, если буфер пуст, требуется произвести
фактический обмен. Для этого необходимо перевести процессор в режим
управления, вызвав программу супервизор (команда SVС — Supervisor Саll).
Выполнение команды SVС приводит к прерыванию. В результате включается
режим управления и начинает работать обработчик прерываний,
интерпретирующий команду SVС как запрос на реализацию ввода-вывода.
До сих пор мы относили функции типа GЕТ и РUT к расширенному набору,
однако правильнее было бы считать их псевдокомандами, включенными в