Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекции 0C.doc
Скачиваний:
0
Добавлен:
01.04.2025
Размер:
286.21 Кб
Скачать

Определения

З

Задача

TCB

адача
– это независимая единица работы которая может участвовать в конкурентной борьбе за ресурсы вычислительной системы.

С каждой задачей в системе связан блок управления задачей TCB – Test Control Blok.

Лекция 11 20.11.00

Каждая задача имеет в системе свой приоритет. Он либо приписывается пользова­телем, либо системой, либо обоими. Кроме этого каждая задача имеет следующие состояния:

  • активное

  • готовности

  • ожидания

Блоки управления задачами в соответствии с приоритетами образуют очередь задач. Очередь задач реализуется как связанный список. Когда супервизор выделяет задаче центральный процессор из очереди задач выбирается первый блок управления задачей, находящийся в состоянии готовности. Обычно для каждого задания в системе существует по крайней мере 1 (одна) задача, которая соответствует активному шагу задания, т.е. если в системе на стадии выполнения существует N – заданий, то в системе работает по крайней мере n – задач. Но количество задач в системе может увеличиваться еще по двум причинам и в нормально функционирующей системе количество задач всегда больше количества заданий.

  1. Подпрограммы управляющей программы, которые выполняются в состоянии “задача” для программ супервизора функционируют как задачи.

  2. Программа пользователя может инициировать подзадачу, которая будет выполняться одновременно с породившей ее задачей.

Подпрограмма управляющей программы которая функционирует как задача называется системной задачей. Большинство системных задач выполняет функции управления заданиями.

В ОС для создания задач существуют специальные макрокоманды. Одной из распространенных команд является ATTACH. Расширение этой макрокоманды представляет собой несколько операторов и заканчивается обращением к супервизору. При выполнении обращения к супервизору инициируется прерывание. Подпрограмма обрабатывающая прерывания по обращению к супервизору вызывает появление задачи с заданным приоритетом, т.е. ставит ее в очердь. При такой системе очень важным моментом является синхронизация задач, для чего в системе имеется блок управления событиями, в который когда задача заканчивается управляющая программ помещает отметку о завершении подзадачи.

ECB – Event Control Block – блок управления событиями

При такой организации многозадачного режима существенной оказывается структура программ, функционирующих в системе и их динамическое поведение в системе. В этом смысле все программы реализуемые программой редактор связи могут быть отнесены к одной из следующих четырех категорий:

  1. Простая структура

  2. Структура с запланированным перекрытием (оверлей)

  3. Динамическая последовательная структура

  4. Динамическая параллельная структура

Программы с простой структурой

Программа с простой структурой загружается в ОЗУ и выполняется как отдельный объект, т.е. сегмент программы загружается в ОЗУ содержа всю программу целиком. Конкретные команды выполняемые в этом модуле загрузки не важны ОС даже, если модуль потребует услуги ОС.

Программы с оверлейной структурой

Программы с оверлейной структурой создаются редактором связи как отдельный модуль загрузки, но в нем определены сегменты программы, которые не должны быть одновременно в ОЗУ. Так что одна и та же область ОЗУ может быть повторно использована на основе иерархического построения программы. Этот метод известен как оверлейный и требует минимальной помощи от управляющей программы.

Программы с простой и оверлейной структурой загрузки используют один модуль загрузки.

Программы с динамической последовательной и параллельной структурами

Обе эти структуры при выполнении программы используют несколько модулей. Для управления модулями и установления связи между ними используются 4 (четыре) макрокоманд: LINK, XCTL, LOAD, DELETE.

Макрокоманда LINK обеспечивает размещение модуля загрузки в ОЗУ и последующее его выполнение. Управление вызывающей программы выполняет команда RETURN, которая освобождает область памяти занятую модулем, но не распределяет ее. В дальнейшем если вновь потребуется тот же самый модуль и этот модуль имеет все необходимые атрибуты, а его копия до сих пор находится в основной памяти и не повреждена, то он повторно используется без обращения к операции выборка. Макрокоманда LINK и возвращающая форма RETURN требуют для своего управления участие программы, т.к. их расширения завершаются макрокомандой супервизору CALL. B D

SAVE

LINK EP=D

RETURN

SAVE

RETURN

SAVE

LINK EP=B

LINK EP=C

RETURN

A

м

SAVE

RETURN

одуль

загрузки

Макрокоманда LINK

Динамическая последовательная

структура

С

Макрокоманда XCTL обеспечивает выбоку и выполнение модуля загрузки так же как LINK. Однако XCTL сипользуется в тех случаях, когда программа выполняется в виде нескольких фаз и выполнение модуля загрузки заканчивается и больше не возобновляется. Область занятая модулем имеющим команду XCTL освобождается и пригодна для дальнейшего использования. Выполнение этой макрокоманды также осуществляется с помощью управляющей программы.

SAVE

LINK EP=B

RETURN

SAVE

XCTL=D

SAVE

RETURN

А В D

модуль

загрузки

Макрокоманда LOAD обеспечивает загрузку модуля, но не его выполнение. В дальнейшем этот модуль пользуется обычной командой условного перехода BRANCH. Модуль загрузки загруженный с помощью LOAD, может быть удален с помощью DELETE и может быть повторно использован если он содержит необходимые атрибуты. Выполнение обоих макрокоманд требует участия управляющей программы.

SAVE

LOAD B

BRANCH B

BRANCH B

DELETE B

RETURN

SAVE

RETURN

модуль *

з агрузки

*

* - в этом месте требуется помощь управляющей программы

Динамическая последовательная структура

Каждый модуль загрузки, работающий в системе может быть одного из 3-х типов:

  • Однократно используемый модуль

  • Повторно используемый модуль

  • Реентерабельный модуль загрузки

Однократно используемый модуль загрузки вызывается всякий раз, когда к нему обращаются. Он изменяется в ходе своего выполнения, так что каждый раз необходимо его новая копия.

Повторно используемый модуль загрузки является самовосстанавливающимся, так что его команды восстанавливаются перед повторным выполнением. Повторно используемый модуль могут использовать несколько подзадач одного шага задания, если одновременно две задачи потребуют этот модуль, то вызывается его копия.

Вызова второй копии можно избежать, если в системе есть организация очередей повторно используемых модулей.

Реентерабельный модуль загрузки – это модуль, который не изменяется в ходе своего использования. В виде реентерабельных модулей разрабатываются системные задачи и имеют при этом нулевой ключ защиты памяти. Реентерабельный модуль может использоваться любой активной задачей в системе. Данные и управляющая информация хранятся обычно в регистрах ЭВМ и в личных управляющих секциях, которые являются частью программы пользователя и не входят в реентерабельный модуль загрузки. В системах мультипрограммирования использование реентерабель­ных модулей минимизирует требования к объему ОЗУ. Эти модули обладают одной особенностью, т.к. активная задача в момент выполнения такого модуля только считывает информацию из памяти, то ее ключ защиты в ССП !может не совпадать с ключом защиты памяти в котором помещен модуль загрузки. Это позволяет любой активной задаче использовать такие реентерабельные модули системы, которые управляют методами доступа.

Лекция 12 4.12.00

Управление задачами в любых типах ОС

Управление задачами в любой ОС осуществляется супервизором. Задача, образуемая в результате работы планировщика представляет собой программу, загру­жаемую вместе с необходимыми для ее выполнения данными в основную память. В общем случае управление задачами состоит в динамическом распределении ресурсов системы между несколькими задачами в процессе их выполнения. Главным моментом в управлении является распределение супервизором времени центрального процессора и участков основной памяти. Количество задач обслуживаемых супервизором одновременно определяет возможности мультипрограммной обработки в ОС.

Использование основной памяти, незанятой ядром ОС зависит от реализуемого супервизором режима мультипрограммирования (однозадачный, с фиксированным числом задач, с переменным числом задач и т.д.).

Запросы на выделение участков памяти при обращении к супервизору подраз­деляются на:

  • явные и неявные

  • условные и безусловные

Для запросов на участки памяти в фундаментальных ОС используется макроко­манда GETMAIN, для освобождения участков памяти – FREEMAIN.

Выделение участка ОЗУ состоит в том, что супервизор передает адрес этого участка программе, которая сообщает в запросе только длину требуемого участка. Полученный адрес может использоваться для обращения к ячейкам выделенной памяти. Существуют разнообразные способы для получения участков памяти. Основ­ным моментом в запросе является указание типа запроса, длины и количества требуемых участков памяти.

В общем случае запросы можно классифицировать на 3(три) типа:

  • элементарные

  • переменные

  • списковые

Элементарный запрос определяется в системе кодом Е и означает, что требуется выделить 1 участок памяти фиксированной длины. Длина указывается в операнде LA. Супервизор помещает адрес выделяемого участка в слово, адрес которого задается операндом А.

GETMAIN E LA A

Переменный запрос определяется кодом V. Этот код означает, что требуется выделить один участок памяти, длина которого может находиться между двумя значениями min и max. Предельные значения длины участка указываются в поле памяти, адрес которого записывается в операнде LA. Супервизор стремиться удовлетворить запрос, используя максимальный показатель длины. Если такого участка нет, то ищется участок памяти меньше max до min. В А супервизор указывает адрес двойного слова в которое супервизор последовательно помещает адрес и длину помещаемого участка памяти.

Переменные запросы удобны, если программа обладает свойством адаптации к имеющемуся объему ОЗУ. Для режима MVT все стандартные операционные системы позволяют применять списковые запросы.

GETMAIN V LA A

Списковый запрос определяется кодом L, что означает, что требуется выделить несколько участков памяти, каждый из которых имеет фиксированную длину. Операнд LA указывает адрес списка, каждое слово которого содержит длины требуемого участка памяти, а число слов в списке определяет количество участков затребованных у памяти. Операнд A определяет адрес другого списка, в слова которого супервизор помещает затем адреса выделенных участков памяти. Число слов в списках, определяемых операндами LA и А, должно быть одинаковым.

G ETMAIN L LA A

Начало участка памяти

Указывается длина участка

1

1

1

1

Под действием, которое супервизор должен предпринять, если требуемого участка памяти не может быть выделено запросы дополнительно подразделяется на:

  • безусловные

  • условные

Безусловный запрос определяется кодом V.

Условный запрос определяется кодом С.

Если из-за отсутствия достаточного количества свободной памяти супервизор не в состоянии удовлетворить запрос, то при безусловном запросе происходит аварийное завершение задачи, а при условном запросе супервизор возвращает управление той задаче, которая выдала запрос. Всегда в фундаментальной (или стандартной) системе в R15 содержится код возврата, который содержит характер удовлетворения запроса.

0 – удовлетворен полностью.

4 – удовлетворен не полностью

8 - ……

12 - …..

16 – задача разбалансировала систему.

Получив управление после выдачи условного запроса, программа должна проверить содержимое R15, чтобы определить дальнейшие действия. Условные запросы позволяют выполнение программы в случае, если требование программы к памяти можно снизить. Длина требуемых участков памяти должна указываться кратной 8, иначе супервизор увеличивает значение длины до ближайшего числа кратного 8.

Освобождение участков основной памяти осуществляется аналогично запросам с теми же типами и теми же кодами. Для переменных запросов для освобождения удобно использовать те же списки, что и при запросе.

Поток запросов на получение и освобождение участков памяти может приводить к сильной фрагментации основной памяти, т.е. к рассечению ее на большое количество свободных и занятых участков. Фрагментация очень сильно снижает эффективность ОП, т.к. может оказаться что с некоторого момента запросы на использование памяти не могут быть удовлетворены из-за отсутствия непрерывных свободных участков памяти требуемых размеров, хотя суммарный объем свободной памяти достаточен для их удовлетворения. Супервизор может снизить степень фрагментации при условии обслуживания одной задачи и в режиме MFT. Однако для более свободных режимов бороться с фрагментацией супервизору сложно.

Управление запросами.

Управление запросами основывается на учете свободных участков памяти, имеющихся в системе. Для управления участками супервизор выстраивает очередь управляющих блоков и элементов очереди свободных участков FQE.

Каждый элемент FQE физически располагается в представляемом им участке и содержит длину свободного участка и адрес следующего элемента FQE в очереди. В последнем элементе FQE записываются нули. Адрес первого элемента FQE содержится в блоке управления задачей TCB для первой задачи пункта задания.

Э лементы FQE выстраиваются в очередь в порядке уменьшения адресов свобод­ных участков.

TCB

Зан. участок

0

Св. уч

FQE

FQE

FQE

Лекция 13 18.12.00

Трансформация исходной программы в рабочую

Логическая структура объектного модуля

Редактирование связей

Редактор связей

транслятор

FETCH

Программа выборки

Редактор связей

DOS

Рабочая программа

Выполнение

комплекс управления заданиями

Любая объектная программа есть результат работы транслятора и обладает свойством перемещаемости, т.е. объектная программа существует в таком виде, что содержащиеся в ней адресные константы могут быть настроены с учетом изменения абсолютного адреса начала отсчета. Такая объектная программа называется перемещаемой.

Объектная программ, которая должна быть загружена в точно определенные машинные адреса и не может быть перемещаема называется абсолютной объектной программой. Большинство программ пользователей существуют как перемещаемые программы.

В общем случае объектный модуль состоит из 3 (трех) основных частей:

ESD – External System Dictionary – словаря внешних символов

TXT – словаря текста

RLD – Relocation Dictionary – словаря перемещений

  • REP – карты изменений

  • END – карта конца

  • SYM - Целый ряд других карт

Словарь внешних символов содержит запись для каждого символа либо определенного внутри объектной программы либо такого, на который внутри объектной программы есть ссылка. Запись из словаря внешних символов включает в себя имя внешнего символа, тип ссылки на него и его место в программе.

Словарь перемещений содержит запись для каждой перемещаемой адресной константы, которая должна быть настроена до выполнения модуля. Запись из словаря перемещений определяет адресную константу указывая ее место в программе.

Текст содержит команды и данные объектной программы.

Редактирование связей

Организация связей между объектными модулями, предшевствующая их выполне­нию называется редактированием и осуществляется обслуживающей программой (комплекс программ), называемой редактор связей.

Данные, подлежащие обработке редактором связей, могут иметь различные формы, но в виде следующей информации:

  1. Объектные модули и заданная пользователем управляющая информация для редактора связей.

  2. Объектные модули из библиотеки пользователя

  3. Объектные модули из системных библиотек с автоматическим вызовом

  4. Модули загрузки

Выходом редактора связей является модуль загрузки, который может быть загружен в основную память операционной системой для выполнения. При редактировании редактор связей выдает объединенный модуль загрузки, в котором создается объединенный словарь внешних символов (ESD), текст созданной программы (TXT) и объединенный словарь перемещений (RLD)

Каждый входной модуль, обрабатываемый редактором связей, имеет начальный адрес, присвоенный ему при ассемблировании, компиляции или при предыдущей обработке редактором связей.

Когда создается выполняемый загрузочный модуль редактор связей присваивает начальный адрес тексту первого модуля и соответственно настраивает адресные константы. Текстам других модулей и их адресным константам адреса присваиваются с учетом первого начального адреса, так что объединенный текст занимает последовательные адреса в модуле загрузки. Внешние ссылки между модулями разрешаются путем сопоставления символов связей с уже определенными символами.

Выходной словарь перемещений включает в себя информацию о перемещаемых константах полного текста модуля загрузки.

Вторая функция заключается в редактировании модулей загрузки в соответствии с управляющими операторами, заданными пользователем.

ESD

TXT

RLD

СESD

TXT

RLD

ESD

TXT

RLD

Управляющая информация пользователя

Некоторые ОС вместо редактора связей имеют программу загрузчик, который объединяет фазы редактирования связей и организации выборки.

Существуют ОС, которые имеют и редактор связей и загрузчик. Программа загрузчик используется в тех случаях, когда нет надобности создавать отдельные модули загрузки для программных библиотек. Загрузчик сам объединяет модули и помещает их сразу в память.

X

Y

Z

V

W

ОЗУ

Основное различие между загрузчиком и программой выборки заключается в степени эффективности. Функциональное же значение одинаково.

Лекция 14 25.12.00

Загрузочный модуль организуемый редактором связей структурно подобен объектному и содержит ту же информацию. В отличие от объектного модуля загрузочный модуль состоит не из образов перфокарт, а из записей переменной длины, в которых элементы текста из обоих словарей упакованы в плотном виде, поэтому загрузочный модуль занимает на ЗУ меньше места, чем объектный, содержащий тот же текст.

Текст программы в загрузочном модуле представляет собой совокупность программных секций совместно отредактированных модулей, настроенных на область основной памяти, начинающейся с нулевого (0) байта. По сложности программа редактор связей не уступает трансляторам. Существуют разные версии и уровни редактора связей. Версии отличаются друг от друга требованиями к объему основной памяти и быстродействием. Все версии программы редактора имеют оверлейную структуру и выполняются под управлением оверлейного супервизора. Программы редактора связей, использующие больше ОЗУ, исполняются быстрее в основном засчет меньшего числа обращений к ВЗУ.

Все опции редактора связей подразделяются на 2 (две) группы:

управляющие опции опции листинга

Управляющие опции приписывают модулю аттребуты, которые записываются в оглавлениие (справочник) библиотеки загружаемых модулей вместе с загружаемым модулем и определяют особенности структуры модуля и режим редактирования.

Опция NE приписывает модулю аттрибут «не редактируемый». Такой модуль не имеет словаря внешних символов и поэтому занимает в библиотеке меньше места, но его нельзя повторно редактировать. Нередактируемый модуль предпочтителен только для выполнения.

Опция OVLY приписывает модулю аттрибут «оверлей» и требует , чтобы редак­тор связей создал модуль оверлейной структуры.

Опция SCTR приписывает модулю аттрибут «формат вразброс» и требует, чтобы редактор формировал модуль пригодный для загрузки и выполнения в ряде несмежных участков памяти. Это позволяет повысить эффективность использования свободной памяти (уменьшить фрагментацию памяти). Эта возможности, если не задана, то загружаемый модуль размещается редактором только! в едином участке ОЗУ.

Опция LET приписывает модулю аттрибут «выполняемый» даже в том случае, если во время редактирования обнаружены ошибки, которые могут сделать данный модуль не выполняемым (например, не все внешние ссылки разрешены). Если внешние ссылки в дальнейшем не используются, то выполнение модуля может произойти нормально. Примечание. В случае оверлейной структуры эта опция заменяется на опцию XCAL , позволяющую игнорировать неправильные межсегментные ссылки.

Опция NCAL запрещает редактору связей использовать мезанизм автономного вызова библиотек. Модулю приписывается аттрибут «выполнимый» даже при неразрешенных внешних ссылках. Эту опцию можно использовать для экономии места в библиотеке загрузочных модулей, т.к. формируемый модуль не будет содержать библиотечных подрограмм. Перед ипользованием такой модуль следует повторно редактировать. Эта опция удобна, когда программа собирается из независимо аттранслированных модулей в разных состояних, что часто бывает при создании пакетов прикладных задач.

Опция SIZE=(V1,V2) определяет размер памяти доступной редактору V1 и размер буфера загрузочного модуля V2. В любом случае V1>V2. Эта опция позволяет увеличить быстродействие редактра связей, т.к. при достаточно большой доступной памяти редактор может обойтись без промежуточного файла на диске (SYSVT1).

Опции листинга

LIST - печатать список управляющих предложений

MAP - печатать план выходного модуля

XREF - печатать таблицу перекрестных ссылок и план выходного модуля

Некоторые опции редактора не совместимы друг с другом, например, оверлей и формат вразброс, XREF и MAP, а некоторые должны использоваться только друг с другом LET – XCAL.

Обычное имя редактора связи в системе IEWL.

Некоторые проблемы ОС при многозадачных режимах

На ранних стадиях создания ОС некоторые современные компоненты сами были ОС – это ассемблеры, макроассемблеры, интерпретаторы и компиляторы. В настоящее время они транслируются как системные или прикладные программы, т.к. сами пользуются услугами управляющей программы и выполняются под управлением ОС.

 Важнейшие системные модули ОС могут быть разделены на 2 (два) частично перекрывающихся класса:

  1. Такие модули, которые могут быть вызваны прямо или косвенно во время выполнения программы пользователя, например, программы ввода/вывода и средства обслуживания файловых систем.

  2. Модули, которые вызываются явно или неявно с помощью средств самой ОС

 В эти два класса включаются:

  1. Планировщики

  2. Стандартные способы управления памятью

  3. Контроллеры ввода/вывода

  4. Обслуживане запросов ввода/вывода для всех пользователей системы

  5. Процедуры для настройки адресов программ загрузки и соединения файлов программ

  6. Обработка прерываний для обслуживания внешних и внутренних прерываний

  7. Программы файловых систем для управления доступом, накопления и перемещения файлов в запоминающей среде ЭВМ.

Отсюда возникают 4 (четыре) ключевые проблемы, связванные между собой и присущие преимущественно мультипрограммным ОС:

  1. Преобразование виртуальных машин

  2. Распределение ресурсов

  3. Проблема защиты памяти

  4. Синхронизация и взаимодействие резидентских исполнительных процессов, а иногда и пользовательских процессов.

Две первые проблемы определяют эффективность использования аппаратуры при ограничениях, которые накладывает на время пользователь. Третья проблема заключается в том, что мы должны гарантировать сохранность самой ОС от случайного или умышленного несанкцианированного доступа к самой ОС или программам пользователя. Вопрос сохранения секретности и охраны собственности. Четвертая проблема возникает вследствии того, что физически многие процессы развиваются в системах одновременно, а так как для ОС не существует стандартных общепринятых принципов организации, то проблема синхронизации и взаимодейст­вия, имеющихся в системе процессов, оказываются решающей для получения как экономической эффективности работы устройства, так и правильности полученного ответа для пользователя.

Неформально состояние ОС определяется как совокупность состояний всех процессов и ресурсов в системе. Большинство изменений состояний ОС определяется по результатам прерываний, которые вызывают процессы в ОС. Изменения состояний осуществляется двумя компонентами ОС:

управление ресурсами и

управление процессами.

Третьей важной компонентой работы ОС является файловая система.

Все остальные компоненты ОС можно описать в терминах:

  • Ресурса

  • Процесса

  • Файловая система

Управление заданиями

Основными действиями при управлении заданиями являются:

  • Распределение устройств ввода/вывода

  • Анализ потока заданий

  • Управление носителями информации

Функции управления заданиями выполняют две основные программы системы:

  • Планировщик заданий

  • Главный планировщик

Планировщик заданий состоит из управляющих программ, которые выполня­ют функции трех основных типов:

  • Интерпретацию

  • Инициирование

  • Окончание и запись

В общем случае планировщик заданий допускает как последовательное планирование, так и планирование на основе приоритетов.

Интерпритатор ввода просматривает всю управляющую информацию, имею­щуюся в одном пункте задания.

Инициатор распределяет устройства ввода/вывода и определяет, какие задачи для дальнейшей обработки можно начинать. При планировании по приоритету, задания необязательно выполняются в том порядке, в котором поступают. Управляющая информация, связанная с каждым заданием помещается в очередь входных заданий. Наличие такой очереди позволяет системе выстраивать очередь приоритетов и выполнения заданий. Инициатор-интерпретатор может в некоторых вариантах системы запускать низкоприоритетную программу раньше высокоприоритетной, если для высокоприоритетной не могут быть выделены в данный момент запрашиваемые ресурсы.

Главнй планировщик имеет две функции:

  1. Обработка приказов администратора

  2. Выдача сообщений на пульт управления

Для больших систем выгодно иметь в очереди входных работ несколько заданий. Имеются варианты интерпретатора, который допускает одновременно инициирование многих задач. При генерации системы указывается максимальное количество заданий, которое можно выполнять одновременно и хотя в каждый момент времени для любого задания выполняется только одна задача в системах могут выполняться одновременно задачи разных заданий.

Инициирование заданий осуществляется до тех пор, пока:

  1. Не превышено максимальное число одновременно выполняемых заданий, указанных при генерации.

  2. Имеется достаточное число свободных устройств ввода/вывода

  3. Имеется достаточное количество свободной памяти

  4. Задания из очереди входных работ готовы для выполнения

  5. Инициатор не заблокирован администратором