Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

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




Управление запросами основывается на учете свободных участков памяти, имеющихся в разделе. Для представления свободных участков супервизор выстраивает очередь управляющих блоков, называемых элементами очереди свободных участков (FQE). Каждый элемент FQE физически располагается в представляемом им участке и содержит длину свободного участка и адрес следующего элемента FQE в очереди. В последнем элементе FQE записываются нули. Адрес первого в очереди элемента FQE содержится в блоке управления задачи (ТСВ) для первой задачи пункта задания. Элементы FQE выстраиваются в очередь в порядке убывания адресов свободных участков.

При инициализации задачи в разделе находится всего один свободный участок, представляемый элементом FQE. Однако по мере чередования запросов на выделение и освобождение участков памяти в разделе может образоваться несколько свободных несмежных участков памяти. Управление основной памятью в разделе сводится к обновлению очереди элементов FQE по запросам на выделение и освобождение участков памяти. Удовлетворение запроса на выделение участка памяти означает, что весь этот участок или его часть исключаются из ведения супервизора путем устранения соответствующего элемента FQE из очереди (если предоставляемый им участок подходит по длине) или путем изменения указателя длины свободного участка в FQE (если представляемый им участок памяти имеет длину больше требуемого в запросе). Удовлетворение запроса на освобождение участка памяти означает, что участок возвращается под контроль супервизора путем включения в очередь нового элемента, представляющего данный участок как свободный, или путем изменения указателя длины свободного участка, смежного с освобождаемым. При поступлении запроса на выделение участка основной памяти из программы пользователя супервизор просматривает очередь элементов FQE, чтобы определить свободный участок памяти подходящей длины. Длина каждого свободного участка сравнивается с длиной, указанной в запросе типа Е, или с максимальной длиной, определенной в запросе типа V. В последнем случае супервизор дополнительно в процессе поиска подходящего свободного участка запоминает ссылку на наибольший свободный участок из числа проверенных. Поиск прекращается после того, как найден первый свободный участок, длина которого больше или равна длине, указанной в запросе типа Е (максимальной длине в запросе типа V). Требуемый участок памяти супервизор выделяет таким образом, что его верхняя граница совпадает с верхней границей найденного свободного участка (рис.7.1). Далее происходит обновление очереди элементов FQE или модификация поля длины в элементе FQE найденного участка.

Рис. 7.1. Представление свободных участков основной памяти раздела (Св. уч. – свободные участки, Зн. уч. – занятые участки)

При поиске возможен также случай, когда вся очередь элементов FQE просмотрена, но подходящий по величине свободный участок памяти не найден. При этом для запросов типа Е производится либо аварийное завершение задачи, если запрос был безусловным, либо упpaвлeниe возвращается задаче с кодом возврата 4. В случае запроса типа V супервизор дополнительно проверяет, нельзя ли частично удовлетворить запрос за счет наибольшего свободного участка, найденного в процессе просмотра очереди FQE. Для этого длина наибольшего свободного участка сравнивается с минимальной длиной, указанной в запросе. Если минимальная длина не превышает длины данного свободного участка, то супервизор выделяет весь этот участок, модифицируя соответствующим образом очередь FQE. Если же запрос типа V нельзя удовлетворить даже частично, т.е. длина наибольшего свободного участка меньше минимальной длины, указанной в запросе, то в случае безусловного запроса производится аварийное завершение задачи, а в случае условного запроса управление возвращается задаче с кодом возврата 4.

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

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

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

Если в результате просмотра всей очереди обнаруживается, что ни один свободный участок не подходит для удовлетворения запроса, то в случае безусловного запроса задача завершается аварийно, а в случае условного запроса программа оповещается о невозможности его удовлетворения кодом возврата 4. Если же подходящие свободные участки существуют, то в результате поиска выбирается самый последний из них и из него выделяется участок памяти требуемой длины, причем таким образом, чтобы его нижняя граница совпала с нижней границей свободного участка. Далее очередь элементов обновляется или имеющийся элемент переносится к началу свободного участка (рис. 7.2).

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

В этом случае реализовывается возможность динамического разбиения основной памяти раздела на области, называемые подпулами, позволяющая снизить эффект фрагментации памяти. С точки зрения пользователя, пoдпул представляет собой кусочно-непрерывную область памяти раздела, которая логически отделена от областей памяти других подпулов и свободной памяти раздела. Обращение к подпулу для получения или освобождения в нем участка памяти осуществляется путем указания номера подпула в oпeрандах соответствующих макросредств. Если в запросе на получение участка памяти указан некоторый номер подпула, то при освобождении этого участка или его части в соответствующие макросредства должен быть указан тот же самый номер подпула. Подпул образуется в тот момент, когда его номер впервые встречается в запросе на получение участка памяти. Каждая задача пункта задания может образовать и использовать до 128 подпулов с номерами от 0 до 127, причем подпул с номером 0 строится автоматически во время инициализации задачи планировщиком заданий или в момент выдачи АТТАСН для образования новой подзадачи.

Рис. 7.2

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

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

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

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




Поделиться с друзьями:


Дата добавления: 2014-12-29; Просмотров: 502; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.019 сек.