Предыдущая часть | ЧАСТЬ 2. АССЕМБЛЕРНЫЕ ПРОГРАММЫ В СРЕДЕ DOS | Следующий раздел |
До сих пор мы использовали при получении своих программ единственного помощника – программу Debug. Такое использование не принесло нам особого удовлетворения из-за чрезвычайно большой трудоемкости процесса программирования. Причиной этого является то, что Debug предназначен не для получения текстов программ, а для отладки программ. Теперь мы перейдем от процесса написания программ на машинном языке, которым мы фактически занимались, к написанию программ на языке ассемблера. Для этого нам потребуется помощь некоторых новых системных программ. Прежде чем рассматривать эти программы, полезно рассмотреть общие свойства и различия системных программ.
Несмотря на то, что наличие аппаратуры и прикладных программ является минимальнодостаточным условием для решения задач по переработке информации, ЭВМ, состоящие только из этих двух подсистем, на практике не используются. Обязательной подсистемой любой ЭВМ являются также системные программы. Благодаря им и пользователи ЭВМ, и их прикладные программы имеют дело не с реальной («голой») аппаратурой, а взаимодействуют с виртуальной (кажущейся) ЭВМ.
На рис.34 показано наиболее укрупненное представление ЭВМ, в том числе наиболее важные системные интерфейсы. При этом интерфейс пользователя ЭВМ с аппаратурой представляет собой клавиши мыши и клавиатуры, поверхность экрана, а также различные кнопки на системном блоке и на периферийных устройствах. Интерфейс между пользователем и системными программами представляет собой язык управления операционной системой, называемым также командным языком или языком директив. Одна команда этого языка задаёт выполнение одной обрабатывающей программы (прикладной программы, утилиты или лингвистического процессора). Интерфейс пользователя и прикладной программы представляет собой язык диалога этой программы.
Рис. 35. Укрупненное представление ЭВМ
Интерфейс между аппаратурой и программами представляет собой язык машинных команд. Системный программный интерфейс – множество машинных команд, называемых системными вызовами, посредством которых прикладные программы обращаются за помощью к системным программам. При выполнении прикладной программы в среде DOS в качестве системных вызовов используются исключительно команды int.
Совокупность интерфейсов, используемых пользователем или прикладной программой, и представляет собой соответствующую виртуальную машину. Например, прикладная программа «выполняется» на виртуальной ЭВМ, предоставляемой языком машинных команд, а также совокупностью системных вызовов. При этом каждый системный вызов может рассматриваться как команда виртуальной ЭВМ, которой в действительности соответствуют многие десятки или сотни машинных команд, образующие вызываемую системную подпрограмму.
На рис.35 приведена классификация системных программ. Обрабатывающие системные программы отличаются от управляющих программ как по своим функциям, так и по способу их инициирования (запуска). Основные функции обрабатывающих программ:
1) перенос информации. Перенос может выполняться между различными устройствами или в пределах одного устройства. При этом под устройствами понимаются: ОП, устройства ВП, устройства ввода-вывода;
2) преобразование информации. То есть после считывания информации с устройства обрабатывающая программа преобразует эту информацию, а только затем записывает ее на это же или на другое устройство.
Рис. 35. Классификация системных программ
В зависимости от того, какая из этих двух функций является основной, обрабатывающие системные программы делятся на утилиты и лингвистические процессоры. Основной функцией утилиты является перенос информации, а основная функция лингвистического процессора – перевод описания алгоритма с одного языка на другой. Сущность алгоритма при этом сохраняется, но форма его представления, ориентированная на программиста, преобразуется в форму, ориентированную на ЦП. Лингвистические процессоры делятся на трансляторы и интерпретаторы.
В результате работы транслятора алгоритм, записанный на языке программирования (исходная виртуальная программа), преобразуется в алгоритм, записанный на машинном языке. (На самом деле, как будет показано позже, машинная программа является результатом совместной работы нескольких лингвистических процессоров.)
Трансляторы делятся на компиляторы и ассемблеры. Исходная программа для транслятора–ассемблера записывается на языке-ассемблере. Один оператор данного языка транслируется в одну машинную команду. Исходная программа для компилятора записывается на языке программирования высокого уровня. Каждый оператор такого языка транслируется в несколько машинных команд. Примерами языков высокого уровня являются Паскаль и Си.
Интерпретатор в отличие от транслятора не выдаёт машинную программу целиком. Выполнив перевод очередного оператора исходной программы в соответствующую совокупность машинных команд, интерпретатор обеспечивает их выполнение. Затем преобразуется тот исходный оператор, который должен выполняться следующим по логике алгоритма, и так далее.
Примером интерпретатора является интерпретатор командного языка (ИК). Другие названия этого модуля: командный процессор, командная оболочка. ИК представляет собой лишь “видимую”, сравнительно небольшую часть операционной системы. На самом деле, чтобы интерпретировать, т.е. выполнить (преобразовав в совокупность машинных команд), очередную команду пользователя, ИК инициирует многие другие модули ОС. Одни из них ищут текст требуемой прикладной программы на диске, другие выделяют необходимые аппаратные ресурсы, третьи загружают программу в ОП и инициируют её. Попутно заметим, что, так как одна команда пользователя задаёт выполнение целой программы (прикладной, утилиты или системы программирования), то язык управления ОС может рассматриваться как язык программирования очень высокого уровня.
Утилиты – обрабатывающие системные программы, которые выполняют:
1) перенос данных с одного периферийного устройства на другое или перенос данных в пределах одного устройства. Примеры: программа копирования данных на магнитном диске; программа ввода данных с клавиатуры терминала на диск; программа распечатки информации на диске;
2) программы изменения расположения данных. Это различные программы сортировки;
3) программы для изменения представления данных. Сюда относятся редакторы, которые осуществляют редактирование виртуальных программ и других текстов, а также программы перекодировки данных для согласования программ, использующих разные кодировки, или для обеспечения секретности.
Примером сложной утилиты является DOS Navigator. Эта утилита переносит с диска на экран информацию, содержащуюся в любом каталоге любого логического диска. По запросу пользователя она выводит на экран файловую структуру любого логического диска. Кроме того, она предоставляет пользователю удобный язык управления операционной системой DOS за счет того, что она переносит имя исполняемого файла программы из позиции экрана, отмеченной пользователем с помощью курсора-маркера, в то место памяти, откуда это имя может взять интерпретатор команд ОС. Курсор-маркер – светящийся прямоугольник, генерируемый не аппаратурой экрана (как настоящий курсор), а получаемый программно. Ниже мы еще вернемся к рассмотрению DOS Navigator.
В отличие от лингвистических процессоров, утилиты используются не только программистами, но и пользователями–непрограммистами. Эта наиболее многочисленная категория пользователей ЭВМ работает на виртуальных машинах, предоставляемых готовыми прикладными программами, а также утилитами. При этом заметим, что запуск любой обрабатывающей системной программы (утилиты или лингвистического процессора) аналогичен запуску прикладной программы. Более того, с точки зрения других системных программ, а также аппаратуры, системные обрабатывающие программы ничем не отличаются от обычных прикладных программ.
Основные функции управляющих программ:
1) оказание помощи прикладным и системным обрабатывающим программам в использовании ими ресурсов ЭВМ. При этом различают информационные, программные и аппаратные ресурсы. Данная функция реализуется во всех системах;
2) обеспечение однопользовательской мультипрограммности – одновременное выполнение нескольких прикладных и (или) системных обрабатывающих программ в интересах одного пользователя. Эта функция реализуется лишь в мультипрограммных системах. В однопользовательских однопрограммных системахэта функция отсутствует;
3) обеспечение многопользовательской мультипрограммности – одновременное выполнение нескольких обрабатывающих программ (прикладных и системных) в интересах нескольких пользователей. Данная функция реализуется лишь в многопользовательских системах.
Управляющие системные программы делятся на две группы: программы BIOS и программы операционной системы. BIOS – базовая система ввода-вывода. Сюда относятся системные программы, находящиеся в ПЗУ (постоянное запоминающее устройство). Эти программы выполняют многие функции обмена с периферийными устройствами, участвуя, таким образом, в выполнении первой из перечисленных выше функций управляющих программ.
Операционная система (ОС) – множество управляющих программ, предназначенных для выполнения всех трех перечисленных выше функций. Примером однопользовательской однопрограммной ОС является любая DOS. Примерами однопользовательских мультипрограммных ОС являются различные WINDOWS. Операционная система UNIX является примером многопользовательской системы.
При рассмотрении любого командного языка, а этим мы займемся чуть позже, невозможно обойтись без понятия файла. В отличие от многих других объектов, управляемых ОС, файлы «видимы» для пользователя и используются им при формировании своих команд для ОС.
Предыдущая часть | В начало | Следующий раздел |