
книги из ГПНТБ / Система математического обеспечения ЕС ЭВМ
..pdfВременные области памяти также могут быть получены дина мически самой реентерабельной программой по макрокоманде GETMAIN из области памяти, принадлежащей обратившейся за даче. Область памяти может быть освобождена по макрокоманде FREEMAIN или автоматически после завершения задачи. Связь реентерабельной программы с рабочей областью осуществляется через один из регистров общего назначения, который содержит ад рес этой области.
Если реентерабельная программа была прервана по какой-ни будь причине, содержимое регистров и слово состояния программы сохраняются супервизором, в области памяти (области сохране ния), связанной с прерванной задачей, и восстанавливаются позд нее, когда выполнение задачи необходимо продолжить. Независи мо от того, как будет использоваться модуль, прерванная задача может позднее возобновить выполнение этого модуля. Супервизор сохраняет в неизменном виде рабочую память задачи и, когда по требуется, восстанавливает содержимое сохраненных регистров и слово состояния программы. Для реентерабельного модуля безраз лично, какая задача к нему обратилась в данный момент. У каж дой задачи имеется своя собственная временная область памяти, выделенная для работы этого модуля.
Пример использования рабочих областей реентерабельной про граммой С представлен на рис. 13. Две программы А и В содер жат обращение по макрокоманде LINK к реентерабельной про грамме С, размещенной в области супервизора. Предположим, пер вой обратилась программа А. При выполнении С после первого обращения с помощью макрокоманды GETMAIN выдается запрос на некоторый объем оперативной памяти для рабочей зоны. Эта память выделяется в области задачи А. Связь программы С с ра бочей областью осуществляется через регистр 1 (или через любой общий регистр), который содержит адрес рабочей зоны. Пусть в процессе выполнения программы С от первого обращения произо шло прерывание и начала выполняться программа В. При обработ ке прерывания содержимое общих регистров и слово состояния про граммы запоминаются в области сохранения задачи А.
Затем программа В осуществляет второе обращение к програм ме С. В результате второго обращения будет повторно получена ра бочая область, но уже в области памяти задачи В. Регистр 1 бу дет содержать адрес этой области. Когда управление вновь вернет ся задаче А, из области сохранения А будет восстановлено содер жимое общих регистров и слово состояния программы. В резуль тате регистр 1 будет содержать адрес рабочей зоны задачи А, а выполнение будет продолжено с прерванной команды программы С от первого обращения. При этом не играет роли, завершилось ли второе обращение от программы В или нет.
2.6. МУЛЬТИПРОГРАММИРОВАНИЕ
Под термином «мультипрограммирование» понимается исполь зование вычислительной системы для выполнения двух или более
41
программ одновременно. Это поз воляет более эффективно исполь зовать ресурсы и повысить ее про пускную способность. Централь ный процессор в каждый момент времени выполняет команды ка кой-либо одной программы. Ос тальные программы находятся в оперативной памяти в состоянии готовности или ожидания завер шения какого-либо события (за вершения операции ввода или вы вода, истечения заданного вре менного интервала, завершения выполнения какой-либо про граммы и'т. д.).
Оперативная память вычислительной машины используется центральным процессором и каналами. Так как блок памяти име ет один вход, доступ к нему процессора и любого из каналов осу ществляется строго последовательно (рис. 14).
Программы, одновременно претендующие на использование центрального процессора, в мультипрограммном режиме упорядо чиваются по приоритетам. В случае конфликтов управление полу-
а)
Программа !
Программа 2
|
|
Го |
|
Общее в ре м я |
вы полнения програм м |
Т0 = t t + t 2 |
|
б) |
|
|
|
Программа / |
|
|
|
|
1 |
\1 |
1 |
Программа 2 |
|
1 |
|
|
1 |
1 |
|
|
|
1 |
1 |
И/, |
w z |
\ |
и*-------------- 1■I.--------- |
|
|
Общее вре м я вы полнения |
програм м |
T m = t , |
Р и с . 15. Г р а ф и к и ак ти в н о го со ст о я н и я |
п р о гр а м м в о д н о п р о |
гр а м м н о м и м у л ь т и п р о гр а м м н о м р е ж и м а х : а — о д н о п р о г р а м м ны й р е ж и м ; б — м у л ь т и п р о гр а м м н ы й р е ж и м
42
чает программа с наивысшим приоритетом. Она переводится в ак тивное состояние. Остальные конкурирующие программы, нахо дящиеся в состоянии готовности, получают управление, если про граммы с более высокими приоритетами окажутся в состоянии ожи дания.
На рис. 15 приведен пример выполнения двух программ в одно программном и мультипрограммном режимах. Программа 1 имеет время выполнения t \ , причем значительную часть этого времени со ставляют периоды ожидания. Программа 2 имеет время выполне ния tz , причем периоды ожидания составляют незначительную часть этого времени.
В случае однопрограммного режима программы выполняются строго последовательно, и общее время выполнения обеих про грамм равно сумме времени выполнения их по отдельности. В муль типрограммном режиме при условии, что программа 1 имеет более высокий приоритет, программа 2 выполняется в периоды ожидания программы 1. Поэтому общее время выполнения обеих программ будет несколько больше времени выполнения первой программы (за счет работы управляющей программы). Несмотря на совмеще ние выполнения, имеют место периоды ожидания w \ и йУ2, когда обе программы находятся в состоянии ожидания. В течение этих периодов центральный процессор будет простаивать. Однако вре мя простоя в этом случае меньше времени простоя в однопрограмм ном режиме.
Основой мультипрограммирования является совмещение рабо ты центрального процессора с операциями ввода-вывода. Такое совмещение возможно в связи с тем, что центральный процессор не занимается выполнением операций ввода-вывода, а только иниции рует их. После этого операции ввода-вывода выполняются канала ми по самостоятельным программам. Канал представляет собой специализированный процессор ввода-вывода, имеющий свою сис тему команд и работающий параллельно с другими каналами и с центральным процессором.
2.7. ЗАДАНИЕ, ПУНКТ ЗАДАНИЯ, ЗАДАЧА
Основной единицей работы, выполняемой вычислительной сис темой, является задание. Оно заключается в выполнении вычисле ний в некотором конкретном применении. Задание включает выпол нение одной или нескольких связанных программ. Примерами за даний могут быть: расчет и вывод ведомости заработной платы; ввод, сортировка и вывод набора данных; трансляция, редактиро вание и выполнение модуля и т. д. Задания никак не связаны друг с другом и не могут оказывать влияния друг на друга, поэтому их можно выполнять одновременно в режиме мультипрограммиро вания.
Каждое задание должно быть описано на языке управления за даниями. Ввод заданий осуществляется через одно или несколько устройств системного ввода. Последовательность заданий, посту
43
пающая в систему, называется входным потоком заданий. Он фор мируется случайным образом по мере поступления заданий в вы числительный центр на обработку.
44— Задание может состоять из одной или нескольких логических частей, выполняемых последовательно. Такие части называются пунктами (шагами) задания. Примерами пунктов задания могут быть; пункт, выполняющий трансляцию исходного модуля; пункт, выполняющий редактирование полученного после трансляции объ ектного модуля; пункт, осуществляющий выполнение полученного после редактирования загрузочного модуля. Приведенные выше пункты в рамках одного задания должны выполняться строго по следовательно, так как они передают данные друг другу.
С каждым пунктом задания связано выполнение некоторой про граммы. Она может быть единственной программой в рамках пунк та задания либо может динамически вызывать другие программы в процессе своего выполнения. Имя этой программы указывается при описании пункта задания на языке управления заданиями. Выполнение пункта задания влияет на выполнение последующих пунктов задания. Предыдущие пункты могут передавать наборы данных последующим пунктам задания.
Пользователь сообщает системе о своем задании и пунктах за- «1 дания на языке управления заданиями. На этом языке система получает информацию о задании и о программе, характеристики данных, требования к устройствам. Информация сообщается систе ме при выполнении программы, а не во время ее трансляции или
ассемблирования.
Язык управления заданиями состоит из ряда управляющих опе раторов. Основными из них являются следующие три:
оператор JOB (оператор задания); оператор ЕХЕС (оператор пункта задания); оператор DD (оператор описания данных).
Первым оператором каждого задания является оператор JOB. В нем указываются имя задания, учетный номер, фамилия про граммиста. Кроме того, может быть указана информация, относя щаяся ко всему заданию (приоритет, объем требуемой оператив ной памяти и т. д.).
Каждый пункт задания начинается с оператора ЕХЕС. Этот оператор содержит указание программы, которую необходимо вы полнить, а также информацию, относящуюся только к пункту за
дания (приоритет, объем требуемой оперативной |
памяти |
и т. д.). |
В пункте задания необходимо определить все |
наборы |
данных |
(входные, выходные и промежуточные), с которыми работает про грамма пункта задания. Это делается с помощью операторов DD. Каждый набор данных обычно описывается одним оператором DD. В нем указываются имя набора данных, его характеристики, уст ройство, на котором расположен набор данных, состояние набора данных, действия, которые необходимо выполнить с набором дан ных в конце выполнения пункта задания. Кроме того, сам набор данных может непосредственно следовать за оператором DD. Бла
44
годаря тому, что информация о наборе данных сообщается в опе раторе DD, программы могут не зависеть от характера данных, ко торые они обрабатывают.
Задания выполняются по пунктам. При инициировании выпол нения для каждого пункта создается задача (задача пункта зада ния), которая является основной единицей работы в процессе не посредственного выполнения пункта задания. В рамках задачи пункта задания выполняется программа, указанная в операторе ЕХЕС. Задача может образовывать подзадачи с помощью макро команды ATTACH. Подзадача выполняется параллельно с поро дившей ее задачей и другими подзадачами. Подзадача может в свою очередь образовывать свои подзадачи и т. д. Таким образом, с помощью подзадач можно распараллеливать выполнение про грамм, повышая уровень мультипрограммирования.
Образование подзадач возможно только в мультипрограммных режимах работы операционной системы. Если в процессе выпол нения пункта задания подзадачи не образуются, то все программы пункта будут выполняться последовательно. В однопрограммном режиме допускается употребление макрокоманды ATTACH. Одна ко в этом случае подзадача не образуется.
2.8. ОБРАБОТКА ПОТОКОВ ЗАДАНИЙ
Входной поток содержит описания заданий на языке управле ния заданиями. Это описание может содержать входные наборы данных. Операционная система выполняет автоматическую обра ботку непрерывного потока заданий, что уменьшает необходимость ручного вмешательства оператора в процесс обработки. Прохожде ние потоков заданий через систему в процессе мультипрограммной обработки показано на рис. 16.
Входной поток заданий вводится с устройства системного вво да (устройство ввода с перфокарт, накопитель на магнитных лен тах или магнитных дисках). Ввод входного потока осуществляет программа системного ввода. В ее функции входит считывание опе раторов входного потока заданий, их анализ и формирование уп равляющих таблиц, характеризующих каждое задание, пункты за дания и наборы данных. Затем программа системного ввода помещает задание (в виде управляющих таблиц) в одну из вход ных очередей. Входные очереди размещаются на устройстве прямо го доступа в наборе данных SYS1.SYSJOBQE. Допускается до 15 входных очередей, каждая из которых соответствует одному классу заданий. Класс задания обозначается латинскими буквами от А до О и указывается в операторе JOB параметром: CLASS = o6o3Ha- чение класса. Так, на рис. 16 указаны три входные очереди для классов A, D и F.
Входные наборы данных, введенные вместе с потоком заданий с устройства системного ввода, размещаются на томах прямого до ступа. Например, если задание вводится с перфокарт, в процессе
45
Устройство |
Устройство |
системного |
прямого |
ввода |
дост упа |
В ходны е |
В ходны е |
пот оки |
|
за д а н и й |
очереди |
О перат ивная |
Уст ройст во |
Уст ройст во |
п а м я т ь |
прямого |
си ст ем н ог о |
|
д о с т у п а |
вывода |
Выполняемые |
Вы ходны е |
Вы ходны е, |
задания (пункт ы |
очереди |
данны е |
заданий ) |
|
|
Р и с . 16. О б р а б о т к а п о т о к а з а д а н и й в м у л ь т и п р о гр а м м н ы х р е ж и м а х
выполнения оно будет считывать данные не с перфокарт, а с тома прямого доступа, что сокращает время выполнения программы.
Место задания в очереди определяется значением приоритета задания, который обозначается числом от 0 до 13. Приоритет за дания указывается также в операторе JOB параметром: PRTY= значение приоритета. Чем выше значение приоритета, тем ближе к выходу помещается задание. Указанное значение приоритета оп ределяет приоритет предварительного планирования заданий для выполнения. Задания, помещенные во входные очереди, еще не вы полняются. Априорно значения классов и приоритетов заданий ни как не связаны с характером самого задания. Эти значения указы ваются в задании программистами. Классификация заданий и на значение приоритетов производится администрацией вычислитель ного центра, которая сообщает программистам классы и приорите ты заданий.
Аппарат классов и приоритетов заданий является универсаль ным системным средством, основное назначение которого — макси мальная загрузка ресурсов системы с целью повышения пропуск ной способности вычислительной установки. Например, пусть в по токе заданий есть такие задания, которые требуют большого коли чества оперативной памяти, но мало используют центральный про цессор и другие ресурсы системы. Нецелесообразно выполнять та кие задания одновременно, так как небольшое количество таких заданий займет всю оперативную память, а другие ресурсы не бу дут использованы. Их лучше выполнять последовательно, присвоив им один и тот же класс и определив порядок их прохождения зна чением приоритета. Одновременно с выполнением такого задания следует выполнять задания других типов (назначив для них другое значение класса), например, такие, которые требуют меньшего объема оперативной памяти, но более интенсивно используют ос тальные ресурсы системы. В свою очередь и эти задания могут быть разбиты на классы по какому-либо принципу (например, по степе ни интенсивности использования центрального процессора и др.).
При пакетном режиме обработки значение приоритета задания практически не влияет на время получения результатов решения программистом, поскольку вычислительный процесс организуется таким образом, что прием заданий на обработку, формирование очередных порций входного потока, установка на системное уст ройство ввода и выдача результатов программистам производятся по расписанию и приурочиваются к определенному времени. Про граммист, нарушивший порядок и присвоивший своему заданию завышенный приоритет, получит результаты вместе с выдачей ре зультатов других заданий.
Значение приоритета может быть использовано для повышения количества заданий, выполняемых в единицу времени. Например, «короткие» задания, не требующие большого количества машинно го времени, могут иметь более высокий приоритет по сравнению с заданиями, требующими большого счета. В этом случае «короткие»
4?
задания не будут задерживаться во входных очередях и програм мисты будут быстро получать результаты. Так как «короткие» за дания не требуют большого количества машинного времени, на вы полнении «длинных» заданий это мало отразится.
Тем не менее возможны ошибки, а также сознательные откло нения от правил при назначении значений классов и приоритетов заданий, которые могут нарушить установленный в вычислитель ном центре порядок прохождения заданий. Для контроля поступа ющих на обработку заданий может быть использована система уче та, состоящая из учетной информации, указываемой в операторах JOB и ЕХЕС, и программ учета, обрабатывающих учетную инфор мацию и ряд других параметров.
Система учета строится в зависимости от особенностей исполь зования вычислительной установки, в соответствии с которыми сис темные программисты вычислительного центра разрабатывают программы учета. Каких-либо стандартных программ учета опера ционная система не содержит.
Задания, находящиеся во входных очередях, выбираются для выполнения специальной управляющей программой-инициатором. Инициатор, как и программа системного ввода, входит в состав планировщика заданий. В функции инициатора входят выбор оче редного задания из очереди, распределение для него необходимых устройств ввода-вывода, загрузка программы, указанной в пункте задания, и передача ей управления. После этого инициатор освобож дает оперативную память. Так как загрузка и передача управле ния осуществляются посредством программ супервизора, находя щихся в ядре, то обычно загрузка программы, указанной в операторе ЕХЕС пункта задания, производится на то место опера тивной памяти, которое занимал инициатор, поскольку он уже не нужен.
Кроме перечисленных функций инициатор вызывается после за вершения задания для освобождения устройств, выполнения пред писанных действий с наборами данных, освобождения оперативной памяти. Вслед за этим он выполняет инициирование следующего задания из очереди.
В системе могут действовать несколько инициаторов, являю щихся копиями одной и той же программы. Каждый инициатор приписан одному или нескольким классам. Это означает, что он может инициировать задания из одной или нескольких очередей. Если инициатор приписан нескольким классам, то сначала он об служивает задания только из очереди первого из указанных клас сов. В том случае, если очередь окажется пустой, этот инициатор будет обслуживать очередь второго класса и т. д.
К одной входной очереди может быть приписано несколько ини циаторов. Задания из одной и той же очереди могут выполняться одновременно, если эту очередь обслуживают несколько инициато ров. Если очередь обслуживается одним инициатором, то задания из этой очереди будут выполняться последовательно друг за дру
43
гом, но одновременно с выполнением заданий из других очередей. Отметим, что если инициатор приписан к какой-либо очереди, то это не значит, что он ее обслуживает. Класс данной очереди может быть для инициатора вторым, третьим или четвертым и т. д. Тогда в процессе обслуживания очередей предыдущих классов инициатор данную очередь не обслуживает.
В течение интервала времени между инициированием и завер шением задание выполняется в оперативной памяти под управ лением программ супервизора, большая часть которых находится
вядре. Эти программы обрабатывают прерывания, возникающие
впроцессе работы системы; организуют мультипрограммную рабо ту; выполняют системные запросы программ, такие, как выделение оперативной памяти, динамическая загрузка программ, распарал леливание выполнения программы и т. п.
Результаты работы программы пользователя могут быть выве дены на системное устройство вывода. В процессе выполнения программы пользователя выходные наборы данных записываются на том прямого доступа и образуют выходные очереди. Каждая выходная очередь соответствует одному выходному классу зада ния. Допускается до 36 выходных классов, которые обозначаются латинскими буквами от А до Z и цифрами от 0 до 9. Выходной класс указывается в операторе JOB параметром: MSGLASS = обозначение выходного класса, а также в операторе DD парамет ром: SYSOUT = обозначение выходного класса. Первый параметр определяет выходной класс для сообщений системы, предназначен ных для программиста; второй — выходной класс наборов данных, вырабатываемых в программе для вывода на устройство систем ного вывода.
Место выходного набора данных в очереди определяется пара метром PRTY. При завершении выполнения задания заканчиваете [ формирование выходных наборов данных, и они могут выводиться на системные устройства вывода.
Одно задание может создавать несколько выходных наборов данных с разными классами. Это может быть, в частности, ис|
пользовано для направления различных наборов данных на раз! личные устройства. Например, системные наборы данных могут! быть выведены на одно устройство, а выходные наборы данных — \ на другое. ] Вывод выходных наборов данных производится программой сис-( темного вывода, которая входит в состав планировщика заданий. Одновременно могут работать несколько программ системного вы вода, каждая из которых связана со своим устройством системного вывода (АЦПУ, выходной перфоратор, накопители на магнитной ленте, магнитных дисках). Одна программа системного вывода мо жет быть поиписана к нескольким выходным очередям. При этом используется то же самое соглашение, что и для инициаторов: прежде всего обслуживается та очередь, класс которой указан пер вым. Если эта очередь пуста, обслуживается очередь, класс кото
рой указан вторым и т. д.
4. Заказ 3414. |
49 |
|
Преимущество использования программы системного вывода по |
|
|
сравнению с непосредственным выводом данных на устройство в |
|
|
процессе выполнения программы заключается в том, что програм |
|
|
ма системного вывода работает практически в темпе работы уст |
|
|
ройства, а не в темпе выполнения программы, вырабатывающей |
|
|
выходной набор данных, который может быть медленным и содер |
|
|
жать паузы. Кроме того, программы системного вывода |
выполня- |
| ются одновременно с выполнением следующих заданий, |
что повы |
|
! |
шает уровень мультипрограммирования. |
|
Кроме программ системйого вывода, могут быть использованы |
||
' |
программы прямого системного вывода, которые производят вывод |
|
; |
данных на устройства системного вывода непосредственно в про- |
|
! |
цессе выполнения программ пользователей, без предварительного |
!запоминания на томах прямого доступа.
!Кроме системных программ ввода и вывода, могут быть ис-
;пользованы обычные методы вывода, ввода и модификации набо ров данных на любом устройстве ввода-вывода, обеспечиваемом операционной системой. В этом случае не должны использоваться устройства системного ввода и системного вывода.
Таким образом, мы рассмотрели четыре программы, входящие в состав планировщика заданий: программу системного ввода, про грамму системного вывода, инициатор и программу прямого сис темного вывода. Первые три программы работают в самостоятель
|
ных разделах памяти. Последняя программа выполняется в раз- |
|||
: |
деле памяти программы пользователя. Перечисленные системные |
|||
программы, а также программы, указанные в пунктах различны:* |
||||
! |
заданий, могут выполняться одновременно в мультипрограммном |
|||
; |
режиме. |
|
различных зада |
|
|
Допускается одновременное выполнение до 15 |
|||
|
ний. Это связано с тем, что память задания необходимо защищать |
|||
|
ключом защиты. Существует всего 16 ключей защиты. Один ключ |
|||
|
отводится для защиты ядра и некоторых системных |
программ. |
||
|
Остальные ключи распределяются между заданиями. Программа |
|||
|
пункта задания может образовывать подзадачи, выполняемые в |
|||
|
мультипрограммном режиме одновременно с породившей их зада |
|||
|
чей и друг с другом, с задачами и подзадачами других заданий, а |
|||
|
также с системными задачами. В режиме мультипрограммирова |
|||
|
ния с фиксированным числом задач в рамках одного пункта зада |
|||
|
ния может выполняться максимально 250 задач |
(задачи и под- |
||
/ задачи эквивалентны друг другу). |
В режиме мультипрограммиро- |
|||
I |
вания с переменным числом задач |
такого ограничения |
не суще- |
'ствует.
"Программы системного ввода и вывода, а также инициаторы
запускаются командой START. Эта команда выдается оператором. После процедуры начальной загрузки эти команды могут выда ваться автоматически системой, если такая возможность была за казана при генерации операционной системы и не была отменена оператором в процессе начальной загрузки. В командах START для программ системного ввода и вывода указываются адрес сис-
50