П рограм м а редактор служит для ф ормирования, исправления и хранения файлов, которы е м огут представлять собой наборы текстовой информации, наборы числовой информации, програм м ы на алгоритмических языках (рис. 4.1). Процесс редактирования состоит из нескольких этапов:
1) открытие файла;
2) запись в файл;
3) редактирование (исправление) файла.
Если п рограм м а редактор готова принять ком анды редактирова
ния файла, то она отводит рабочую область в оперативной пам яти ЭВМ , назы ваем ую буфером. И нф ормация, хранящ аяся в буфере, не остается по окончании сеанса связи с ЭВМ. Для длительного хранения ее необходимо записать в файлы на дисках, лентах и т. п.
По ком андам пользователя можно откры ть файл для редактиро
ван и я— это входной файл. И нф ормация по ком ан дам редактора поступает из входного ф айла в буфер редактирования, там обрабаты вается и направляется в выходной файл (рис. 4.2). Есть специальные команды , по которы м один и тот же файл объявляется как входным, так и выходным.
Сущ ествуют разнообразны е редакторы, которы е отличаю тся ком андам и ввода информации, исправления ош ибок (редактирова
ния), но принципиального отличия они не имею т. Основные команды типичного редактора рассмотрены в 4.3.
П рограм м а транслятор — это вторая из инструментальных програм м , с которой пользователь работает после редактора.
Рис. 4.2
ФАЙЛ ФОРТРАН-ПРОГРАММЫ 1 ТРАН С Л Я ТО Р
ОПЕРАТИВНАЯ
\Ч
ФАЙЛ ОБЪЕКТНОГО КОДАПАМЯТЬ
v(
NФ А Й Л ЛИСТИНГА
Рис. 4.3
Основной задачей транслятора является перевод програм м ы , напи
санной на алгоритмическом языке, например фортране, в последова
тельность команд, почти готовых для выполнения ЭВМ . О ттрансли
рованн ая програм м а называется объектным кодом.
Ч асто вместо транслятора употребляется инструментальная п рограм м а компилятор. Отличие програм м ы ком п илятора от транслятора состоит в том, что компилятор кроме трансляции добавляет еще в програм м у нужные подпрограммы.
Транслирую щ ая програм м а не может перевести исходную ф ортран-програм м у в форму, готовую для выполнения, хотя бы потом у, что исходная програм м а может состоять из нескольких сам остоятельны х программны х единиц, которые можно транслиро
вать независимо. Следовательно, необходима еще програм м а — компоновщ ик или, что то же самое, редактор связей, построитель.
Раб ота с типичным построителем описана в 4.3.
Т ранслятор на входе имеет файл, содержащий текст фор- тран-програм м ы , на выходе он мож ет иметь два файла. В одном файле содержится объектный код, другой файл, назы ваемы й ф айлом листинга, содержит текст ф ортран-программ ы с указа
телям и допущенных пользователем ош ибок (рис. 4.3).
Транслятор обнаруживает как синтаксические ош ибки (наруш е
ние правил записи операторов), так и семантические (смысловые).
К семантическим ош ибкам относится, например, применение опера
тора GO ТО п с отсутствующей меткой п в тексте програм м ы . После трансляции, если есть ошибки, обнаруженные тран слято
ром , пользователь выводит на терминал или А Ц П У файл листинга.
Затем следует возвратиться на этап редактирования, исправить ошибки и вновь уже исправленную ф ортран-программ у трансли
ровать. Весь описанный процесс: редактирование и трансляция — повторяется до тех пор, пока не будет получена безошибочная (с точки зрения транслятора) фортран-программа.
Таким образом , две инструментальные програм м ы — редактор и транслятор — пом огаю т пользователю подготовить прикладную програм м у для дальнейш его выполнения, т. е. проведения вычисле
ний.
Не следует думать, что успешная трансляция програм м ы — за
лог ее успешного выполнения. П рограм м а будет выполняться с заданны м и входными числами, которы е м огут привести к ош ибоч
ным операторам , например, с точки зрения операций над числами
в ЭВМ: извлечение квадратного корня из отрицательного числа, выход за допустимый диапазон представления чисел (переполнение), логариф м отрицательного числа и т. п.
В этом случае необходимо тщ ательно проверить соответствие програм м ы блок-схеме алгоритма. Поиски ош ибок в программе и алгоритме составляет ту часть технологии вычислений, которую обычно назы ваю т отладкой.
М ногие трансляторы предоставляю т возм ож ность специальным образом вводить отладочны е операторы (например, операторы вывода), которы е легко убрать из програм м ы после отладки (см. 4.3).
# 4.2. Элементы операционных систем
4.2.1. Введение. В настоящ ем пункте рассм атриваю тся следую
щие вопросы: почему, что и как происходит в операционных системах. И зучаю тся только основные задачи ОС из тех, что перечислены в п. 4.1.2, а именно управление: пам ятью , процессором, устройствами, ф айлами, системой.
Изложение ведется на уровне общих понятий, для изучения деталей мож но обратиться к специальной литературе [12, 14].
4.2.2. Управление памятью. О перативная п а м я т ь — это тот ресурс ЭВМ , без которого нельзя выполнить програм м у. В лю бой м ом ент времени, за исключением нескольких, все ячейки не используются. Они служат для хранения данных и програм м одного или нескольких пользователей. П рограм м ы , которые ожидаю т выделения оперативной памяти, расположены во внешней памяти (например, на дисках). Ч асть оперативной пам яти занята ядром ОС. Ядро ОС — набор управляющ их програм м , постоянно расположенных в оперативной пам яти и обеспечивающих фу
нкционирование ОС.
Существует несколько стратегий распределения памяти, являю щихся важной характеристикой ОС. М ы рассм отрим одну из наиболее простых стратегий, а именно распределение разделам и с фиксированными границами.
Пусть вся оперативная пам ять содержит 256 К байт, ядро ОС заним ает 32 К. Тогда м ож но оставш ую ся часть пам яти разбить, например, на четыре раздела (рис. 4.4), которы е содержат: 1 р аз
д е л — 32 К, 2— 4 раздела — 64 К. С каж дым разделом связывается очередь задач, которые соответствую т по разм еру пам яти раздела.
Затем специальная п р о гр ам м а— загрузчик— считывает програм м у задачи, програм м ы библиотеки, необходимые для нее, и н астра
ивает (устанавливает физические адреса) на раздел выполнения.
П рограм м а, подлеж ащ ая загрузке и настройке, как раз и есть п рограм м а в объектном коде, которая получается в результате работы транслятора.
Режим работы , при котором в оперативной пам яти может находиться несколько програм м , называется мультипрограммирова-
БИБЛИОТЕКА
П ОДПРОГРАММ
Рис. 4.4
нием. Основная цель мультипрограм мирования — м аксим ально за грузить процессор. Действительно, если некоторая п рограм м а перейдет в неактивное состояние (например, ждет ввода), то в пам яти всегда есть програм м а, готовая к выполнению, а следова
тельно, процессор будет хорош о загружен.
Важной проблемой мультипрограммирования является защ ита системных програм м , а также програм м пользователей в своих разделах от возможных обращ ений к ним из соседних разделов, что приводит к порче программ и данных. Некоторые виды защ иты реализую тся аппаратно, некоторые выполняет ОС. Н а
пример, если из програм м ы произойдет обращ ение к элементу массива, которы й при расчете его адреса оказывается в соседнем разделе, то ОС аварийно прерывает вычисления и выдает соот
ветствующее сообщение.
4.2.3. Управление процессором. П роцессор— ресурс ЭВМ , без которого нельзя выполнить программу. Выполнение програм м ы называется процессом. М ультипрограммное использование одного процессора м ож ет создать иллю зию , что каждый процесс использу
ет процессор независимо от остальных. Эту иллю зию создаю т програм м ы управления процессором ОС, а именно: планировщик задач; диспетчер.
П ланировщ ик выбирает из очереди задач програм м у и создает процесс, готовый к выполнению: выделяется оперативная память, внешняя пам ять, файлы. Затем диспетчер управляет очередями готовых к выполнению процессов, выполняю щ егося процесса (только один) и заблокированных процессов, которые находятся в ожидании некоторого события (например, ввода или вывода). Наконец, планировщик заверш ает процесс после его полного выполнения.
Сущ ествую т различные процедуры организации работы диспет
чера. Рассмотрим сравнительно простую и популярную цикличес
138
кую процедуру. В ней каж дому процессу по очереди выделяется одинаковый квант времени A t (0,1 — 1 с), в конце которого, если процесс не заверш ился и не заблокирован, он снимается с процес
сора и ставится в конец очереди. В конец очереди ставятся появившиеся готовы е и разблокированны е процессы. Существенно влияет на управление очередью квант времени A t и смесь процессов (короткие или длинные по времени выполнения).
Д ля совместного функционирования диспетчера, вы полняю щ его
ся процесса и ввода — вы вода в ОС организую тся прерывания.
Прерывание — это передача управления из вы полняемого процесса на процесс обработки прерываний. П рерывание происходит по сигналу от тайм ера, когда истек квант времени A t или по сигналу, что ввод — вы вод завершен; это внешние прерывания. Прерывание м ож ет происходить из-за переполнения, деления на нуль, обращ ения к запрещ енным ячейкам памяти т. п.
В м ом ент прерывания аппаратура ЭВМ выполняет следующие действия:
1) в некоторую ячейку пам яти заносится характеристика преры
вания;
2) запоминается состояние прерванного процесса;
3) в счетчик ком анд заносится адрес, характерный для типа прерывания.
Затем выполняется програм м а обработки прерываний ОС, а также действия, соответствую щ ие конкретному прерыванию, и возобновляется норм альная работа. В зависимости от типа прерываний процесс м ож ет быть продолжен, либо заблокирован, либо поставлен в конец очереди.
4.2.4. Управление устройствами. У правление работой устройств ЭВМ (алфавитно-цифровой дисплей, графический дисплей, м агнито
фон, А Ц П У и т. п.) осуществляется путем передачи им управляю щих сигналов. М ногие из устройств — электромеханические, не электронные и поэтом у р аб отаю т значительно медленнее, чем процессор, и, кром е того, асинхронно с ним. Э та несогласованность приводит к том у, что некоторое время процессор и устройство могут не быть в состоянии готовности обмениваться информацией.
Операционная система долж на сохранить в оперативной пам яти данные, переданные процессором или устройством, но еще не полученные устройством или процессором. Такие области памяти н азы ваю тся буферами.
Ч тобы согласовать работу быстрого процессора с медленными устройствам и ввода — вы вода (они долж ны р аб о тать параллельно с процессором), применяю тся аппаратные средства, называемые каналами или периферийными процессорами. Схема связи оператив
ной пам яти (ОП) с устройством ввода — вы вода (ВВ) через канал (К) показана на рис. 4.5, где У У — устройство управления соот
ветствую щего ввода — вывода. Если канал м огут попеременно использовать несколько медленных устройств, то он называется мультиплексным.
on БУФЕР
Рис. 4.5
П рограм м ы ОС, которые выполняю т алгоритмы управления вводом — выводом, называю тся драйверами. Д ля каж дого запроса в в о д а — вы вода из выполняемой програм м ы драйвер строит кан аль
ную програм м у или только ее часть, если тип устройства был известен транслятору (указали явно номер канала 6 в операторе W R IT E (6, 1), 6 — АЦПУ). Драйвер составляется для каж дого типа устройства; эта програм м а обрабаты вает прерывания возникаю щие, в частности, при ошибках ввода — вывода. А ппаратная часть системы ввода — вывода из-за присутствия механических деталей подвержена износу и приводит, как правило, к более часты м сбоям в работе, чем электроника. П оэтом у в драйвере предус
м атри ваю тся повторные обмены, если обнаружена ош ибка ввода — вы вода, или прекращение процесса в случае неисправимой ош ибки с предоставлением информации о виде ошибки.
К онтроль правильности ввода — вывода осуществляется различ
ны м и способами. Рассмотрим простейший контроль запи си—-чте
ния байта. К каж дому байту добавляется информационный бит, которы й принимает значение 0 или I в зависимости от содерж имого байта, но всегда так, чтобы сумма битов была нечетной для лю бого байта (рис. 4.6). С пом ощ ью суммирования проверяется четность каждого байта в процессе чтения. Нарушение четности свидетельствует об ошибке, а драйвер должен прервать ввод — вы вод и отреагировать на ошибку.