Название: Операционные системы как системы управления вычислительными ресурсами - (Коршикова Л.А.)

Жанр: Технические

Просмотров: 1094


3.1. данные для управления страницами

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

записи таблицы страниц;

дескрипторы дисковых блоков;

таблицу содержимого страничных блоков;

таблицу использования области подкачки.

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

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

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

Таблицы трансляции. Таблицы трансляции обычно встроены в УУП. Таблицы трансляции содержат следующую информацию:

 

Мнемоника

Назначение

Признак

активности

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

Признак

ссылки

Указывает на то, что за интервал времени J к странице производилось обращение

Признак

изменения

Указывает на то, что страница модифицировалась процессом

Защита

записи

Указывает на то, что страница защищена от возможного изменения ее содержимого

Индекс

блока

Указывает адрес физической страницы для виртуальной страницы в основной памяти

 

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

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

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

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

 

Мнемоника

Назначение

Статус страницы

Характеризует текущее использование страницы (см. ниже)

Защита записи

Указывает на защиту страницы по записи после загрузки последней

Признак изменения

Указывает на то, что содержимое страницы было изменено некоторым процессом

Счетчик использования

Указывает время, прошедшее с момента последней адресации к странице

Признак блокировки

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

Идентификатор виртуальной страницы

Идентификатор виртуальной страницы в таблице карт

Диск – адрес

Адрес образца данной страницы на диске

Признак запись/чтение

Указывает на то, что элемент должен быть считан или записан на диск

 

Активная физическая страница может пребывать в четырех состояниях, определенных полем СТАТУС СТРАНИЦЫ. Соот-ветствующие значения статуса:

 

 

Значение

Назначение

0

1

2

 

3

Страница активна

Страница находится в очереди на удаление

Страница недоступна (т.е. находится в режиме удаления или

загрузки)

Страница доступна для выделения ее некоторому процессу

 

Страница может быть защищена от записи в нее информации процессом. В системах с реентерабельными программами страницы часто подразделяются на содержащие кодовые сегменты и содержащие сегменты данных. Все страницы, содержащие кодовые сегменты, имеют ПРИЗНАК АКТИВНОСТИ, установленный в единицу. ПРИЗНАК ИЗМЕНЕНИЯ указывает те страницы, содержимое которых было изменено. Если необходимость присутствия страницы в рабочем наборе отпадает и ПРИЗНАК ИЗМЕНЕНИЯ установлен в единицу, то она переписывается на диск. ПРИЗНАК БЛОКИРОВКИ устанавливается в том случае, если имеется необходимость постоянного присутствия данной страницы в основной памяти. Фактически блокированные страницы никогда не рассматриваются как кандидаты на удаление.

Физическая страница связывается с таблицей карт с помощью ИДЕНТИФИКАТОРА ВИРТУАЛЬНОЙ СТРАНИЦЫ. Это упрощает механизм обновления таблиц карт. При удалении таблицы из памяти система должна обновить соответствующий элемент таблицы карт, зарегистрировав этим отсутствие данной страницы. ДИСК – АДРЕС содержит адрес образа страницы на диске. Он используется системой для обновления страницы вследствие изменения содержимого данной страницы в памяти.

3.2. Менеджер страниц

Менеджер страниц вызывается по истечении КВАНТА ПАМЯТИ любой задачи, а также по таймеру с периодом КВАНТ МЕНЕДЖЕРА и осуществляет управление памятью, удаляя из нее те страницы, к которым не было обращения в течение ВРЕМЕНИ НЕИСПОЛЬЗОВАНИЯ СТРАНИЦЫ (время нахождения страницы в памяти без использования). Менеджер страниц отслеживает страницы, не принадлежащие к рабочим наборам процессов. При этом периодически для каждого процесса производятся следующие действия. Просматриваются таблицы отображения всех сегментов виртуальной памяти этого процесса. Если элемент таблицы отображения содержит ссылку на описатель физической страницы, то анализируется признак обращения. Если признак установлен, то страница считается входящей в рабочий набор данного процесса, и сбрасывается в нуль счетчик старения данной страницы. Если признак не установлен, то к счетчику старения добавляется единица, а страница приобретает статус кандидата на выход из рабочего набора процесса. Если при этом значение счетчика достигает некоторого критического значения, страница считается вышедшей из рабочего набора процесса, и ее описатель заносится в список страниц, которые можно откачать (если это требуется) во внешнюю память. По ходу просмотра элементов таблиц отображения в каждом из них признак обращения гасится. Если для рабочего набора процесса, находящегося в очереди на выполнение и имеющего довольно высокий приоритет, существует достаточно места в памяти, он извлекается из очереди и помещается в очередь выполняющихся процессов, а объем его рабочего набора вычитается из объема доступных страничных рамок.

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

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

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

Итак, менеджер страницы управляет динамическими (т. е. имеющими переменный размер) рабочими наборами для каждой активной программы. Менеджер страниц распределяет их по двум очередям: < обменной > очереди и < доступной > очереди. Если процесс адресуется к странице, которая была недавно удалена из его рабочего набора, то вероятность того, что эта страница еще находится в одной из очередей в памяти, достаточно велика. Если счетчик доступных страниц не равен нулю, требуемая страница может быть немедленно распределена процессу.

Менеджер страниц инициализируется на этапе начальной загрузки системы. Каждый раз при своем выполнении менеджер страниц осуществляет две операции: 1) обновляет содержимое счетчика использования для каждой страницы из таблицы страниц и 2) активизирует процесс из очереди на выполнение, если в памяти имеется достаточно свободного места для размещения его рабочего набора.

Алгоритм программы, реализующей функции менеджера страниц, приведен в модуле 1.

 

Модуль 1

PROCESS менеджер-страниц

FOR идентификатор страницы FROM 0 ТО максимальное число реальных страниц

DO1

загрузить дескриптор страницы (идентификатор страницы, адрес дескриптора страницы)

IF1 статус страницы [адрес дескриптора страницы] =0

THEN

IF2 идентификатор процесса [адрес дескриптора страницы] не блокирован

THEN

INCREMENT счетчик использования [адрес дескриптора страницы]

IF3 счетчик использования [адрес дескриптора страницы] >= время рабочего набора

THEN

идентификатор процесса [адрес дескриптора страницы] ® адрес-процесса

INCREMENT текущего размера рабочего набора [адрес процесса]

список процессов (адрес процесса) ® текущая очередь

отделить дескриптор страниц (идентификатор страницы, текущая очередь, адрес дескриптора страницы)

освободить страницу (идентификатор страницы, адрес дескриптора страницы)

ENDIF3

сохранить дескриптор страницы (идентификатор страницы, адрес дескриптора страницы)

ENDIF2

ENDIF1

ENDDO1

CLEAR размер рабочего набора

CLEAR неудача

WHILE неудача =0

DO2

DECREMENT счетчик свободных страниц BY размер рабочего набора

просмотр очереди на выполнение (размер рабочего набора, неудача, адрес процесса)

IF4 неудача = О

THEN

первый-запрос [адрес процесса] ® виртуальная страница

отделить процесс (адрес процесса, очередь на выполнение)

поставить в очередь на ввод (адрес процесса, виртуальная страница)

ENDIF4

ENDDO2

ENDPROCESS

 

Программа сканирует таблицу страниц в поиске тех находящихся в памяти страниц, обращения к которым не было в течение последних J секунд (т.е. таких, для которых: счетчик использования больше или равен J). Любая найденная страница, удовлетворяющая этому условию, <отбирается> у владеющего ей процесса. Размер рабочего набора процесса уменьшается на единицу и страница освобождается. Затем менеджер страниц ищет в списке готовых к выполнению такие процессы, чей рабочий набор может быть размещен в памяти.

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

Рабочая область менеджера страниц. Для управления страницами менеджеру страниц необходимо рабочее пространство. Это пространство образуется из дополнительных элементов в блоке управления процессом (БУП). Ниже перечислены элементы, которые дополняют стандартный набор данных рассматриваемого процесса (мнемоника – пояснение).

Величина АДРЕС РАБОЧЕГО НАБОРА определяет то место в БУП, где находится информация о текущих страницах рабочего набора. О каждой странице рабочего набора поддерживается следующая информация:

– идентификатор виртуальной страницы;

– адрес страницы на диске;

– признак защиты записи.

Число элементов указывается в ТЕКУЩИЙ РАЗМЕР РАБОЧЕГО НАБОРА.

 

Мнемоника

Пояснение

Активное время

Процессорное время, истекшее с момента начала работы процесса

Квант

Квант процессорного времени, отводимый данному процессу

Текущий размер

рабочего набора

Текущий размер рабочего набора, отводимого данному процессу

Прежний размер

рабочего набора

Размер рабочего набора к концу предыдущего активного периода

Первая виртуальная страница

Первая виртуальная страница, необходимая для активизации данного процесса

Адрес рабочего

набора

Адрес рабочего набора для данного процесса

Величина интервала

Время, остающееся в текущем рабочем интервале

 

3.3. Алгоритмы управления страницами

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

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

Сбой страницы. Запрашиваемая страница в текущий момент отсутствует в памяти, поэтому процесс блокируется на время ее загрузки.

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

Ошибка адресации. Была сделана ссылка по недопустимому адресу, вызвавшая прекращение работы процесса.

Страничное прерывание. Страница была успешно удалена из памяти, что требует обновления соответствующих таблиц менеджера страниц.

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

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

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

Если квант процессорного времени еще не исчерпан, процедура проверяет, есть ли время на то, чтобы модифицировать размер рабочего набора. ВРЕМЯ-РАБ-НАБОРА – это число рабочих периодов (обычно четное число), требуемое для вычисления рабочего набора. Число свободных страниц модифицируется в соответствии с произошедшими изменениями. Процесс затем помещается в очередь выполняющихся процессов, ожидая начала своего рабочего периода. Процедура ЦИРКУЛЯЦИЯ помещает процесс в очередь выполняющихся процессов согласно установленным критериям (т.е. приоритет, "первый поступивший первым обслуживается" и т. д.).

 

Модуль 2

 

PROCEDURE перерывание по таймеру интервалов[процесс]

INCREMENT активное время [процесс] ВУ рабочий период [процесс]

SET рабочий период ТО величина интервала [процесс]

IF1 активное время [процесс] >= квант [процесс]

THEN1

деактивизировать (процесс, очередь на выполнение)

ELSE1

IF2 активное время [процесс] < (рабочий период + время рабочего набора)

THEN

IF3 активное время [процесс] > = время рабочего набора

THEN

прежний размер рабочего набора – текущий размер рабочего набора ® изменение рабочего набора

INCREMENT число свободных страниц BY изменение рабочего набора

ENDIF3

ENDIF2 циркуляция [процесс]

ENDIF1

ENDPROC

 

Сбой страницы (модуль 3) – запрашиваемая страница в текущий момент отсутствует в памяти, поэтому процесс блокируется на время ее загрузки. Для обработки такой ситуации аппаратные средства таблицы страниц расширены специальным битом состояния, который принимает значение "1", если соответствующая страница загружена в ОП и обращение к ней допустимо. Или значение "0", если страницы нет в ОП и обращение к ней невозможно.

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

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

Процедура приведена в Модуле 3. При обнаружении УУП прерывания по сбою страницы для загрузки требуемой страницы вызывается процедура СБОЙ-СТРАНИЦЫ. Поскольку запрашиваемая страница отсутствует в таблицах трансляции, она, следовательно, не принадлежит рабочему набору и должна быть загружена в память. Размер рабочего набора увеличивается на единицу. Значение таймера интервалов сохраняется в рабочем пространстве процесса до того момента, пока страница не будет загружена в память. Это значение затем записывается в таймер интервалов, давая возможность процессу завершить свой рабочий период.

Процедура ПРОВЕРИТЬ-ТАБЛИЦУ-СТРАНИЦ используется для выяснения того, находится ли страница физически в памяти.

Модуль 3

PROCEDURE сбой страницы (виртуальная страница, реальная страница)

CLEAR успех

INCREMENT текущий размер раб набора [процесс]

читать таймер интервалов( ) ® величина интервала [процесс]

IF1 реальная страница = О

THEN проверить таблицу страниц (реальная страница, виртуальная страница, процесс, адрес очереди) ® успех

ENDIF1

IF2 успех = 1

THEN1

отделить дескриптор страница (реальная страница, адрес очереди, адрес дескриптора страниц)

DECREMENT счетчик свободных страниц

IF3 адрес очереди = список доступных страниц

THEN

DECREMENT счетчик доступных страниц

DECREMENT счетчик назначенных страниц

ENDIF3

добавить дескриптор страниц (реальная страница, список процессов [процесс], адрес дескриптора страниц)

SET 1 ТО признак активности [адрес буфера динамической трансляции]

сохранить карту (виртуальная страница, адрес буфера динамической трансляции)

ELSE1

IF4 счетчик назначенных страниц = 0

THEN2

IF5 счетчик [очередь на выполнение] = <0

THEN

поглотить (реальная страница, список процессов [процесс])

DECREMENT текущий размер рабочего набора

ENDIF5

ELSE2

деактивизировать (процесс, очередь на выполнение)

ENDIF4

поставить в очередь на ввод (процесс, виртуальная страница)

DECREMENT счетчик назначенных страниц

DECREMENT счетчик свободных страниц

ENDIF2

ENDPROC

 

Если УСПЕХ равен единице, то страница находится в памяти и располагается в одной из очередей менеджера страниц. Страница извлекается из очереди и добавляется к списку страниц, образующих рабочий набор процесса. Дескриптор страницы устанавливается в активное состояние и сохраняется в таблице карт процесса. Если страница находилась в списке доступных страниц, переменные СЧЕТЧИК ДОСТУПНЫХ СТРАНИЦ и СЧЕТЧИК НАЗНАЧЕННЫХ СТРАНИЦ увеличиваются на единицу. СЧЕТЧИК НАЗНАЧЕННЫХ СТРАНИЦ содержит число реальных страниц, отведенных менеджеру страниц в противоположность страницам, отведенным различным пользовательским процессам.

Если УСПЕХ равен нулю, то это означает, что реальная страница отсутствует в памяти. Процедура проверяет, имеются ли еще страницы, отведенные менеджеру страниц. Если таких нет, страница для замены должна быть выбрана из текущего рабочего набора самого процесса. Процедура ПОГЛОТИТЬ (не описывается) выбирает соответствующую страницу, если выполняющийся процесс (исключая системный) – единственный. В противном случае процесс помещается в очередь для повторной обработки планировщиком, ожидая появления доступной страницы, освобожденной другим процессом. Запрашиваемая страница помещается в очередь на ввод на то время, пока процесс ожидает окончания ее загрузки в память, а соответствующие счетчики модифицируются.

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

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

Ошибка адресации – была сделана ссылка по недопустимому адресу, вызвавшая прекращение работы процесса.

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

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

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

По окончании операции обмена регистры процесса восстанавливаются, и он возобновляет свою работу.

 

Модуль 4

 

PROCEDURE прерывание по обмену со страничной памятью (режим передачи страниц, идентификатор страницы, процесс)

сохранить регистры (процесс)

IF1 режим передачи страниц = ввод страницы

THEN

загрузить дескриптор страницы (идентификатор страницы, адрес дескриптора страниц)

установить элемент карты (идентификатор страницы, адрес дескриптора страниц)

идентификатор процесса (адрес дескриптора страниц) ® адрес процесса

список процессов [адрес процесса] ® текущая очередь

добавить процесс (адрес процесса, очередь на выполнение)

ENDIF1

IF2 режим передачи страниц = вывод страницы

THEN

добавить дескриптор страницы (идентификатор страницы, список доступных страниц, адрес дескриптора страниц)

INCREMENT счетчик доступных страниц

IF3 начало [список ожидания страниц] =0

THEN

удалить процесс (текущий процесс, список ожидания страниц)

требуемая виртуальная страница [текущий процесс] ® идентификатор виртуальной страницы

поставить в очередь на ввод (текущий процесс, идентификатор виртуальной страницы)

ENDIF3

ENDIF2

восстановить регистры (процесс)

ENDPROC

 

3.4. Пример проектирования системы управления

оперативной памятью со страничной организацией

 

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

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

 

Таблица 1

Формат ProcessTable

Имя поля

Тип

данных

Описание

Ident

Числовой

Идентификатор процесса

Name

Текстовый

Имя процесса

TCPU

Числовой

Время на CPU, необходимое для завершения процесса

Length

Числовой

Размер адресного пространства процесса

NWhriteProtect

Числовой

Число страниц, имеющих статус "Только чтение"

MaxWorkSet

Числовой

Максимальный размер рабочего набора, разрешенный процессу

 

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

Пример заполнения таблицы процессов приведен в табл. 2.

 

Таблица  2

Пример заполнения ProcessTable

Ident

Name

TCPU

Length

NWhriteProtect

MaxWorkSet

0

Process0

7

10

3

6

1

Process1

10

12

3

6

2

Process2

9

8

2

6

3

Process3

11

12

4

6

4

Process4

5

11

4

6

 

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

Таблицы. При запуске менеджера динамически создается так называемая расширенная таблица процессов ExtendedProces-sTable, содержащая изменяющуюся в процессе выполнения информацию о процессах. Она создается на основе таблицы процессов ProcessTable при инициализации системы и автоматически добавляется в базу данных ControlTables.mdb. Формат Extended ProcessTable приведен в табл. 3.

 

Таблица  3

Формат ExtendedProcessTable

Имя поля

Тип

данных

Описание

Ident

Числовой

Идентификатор процесса

Name

Текстовый

Имяпроцесса

ATT

Текстовый

Адрес таблицы трансляции

TCPU

Числовой

Оставшееся время на процессоре, необходимое для завершения процесса

Quantum

Числовой

Величина кванта процессорного времени

Length

Числовой

Размер адресного пространства процессы (в страницах)

WorkSet

Числовой

Текущий размер рабочего набора (в страницах)

MaxWorkSet

Числовой

Максимальный разрешенный процессу размер рабочего набора (в страницах)

NWhriteProtect

Числовой

Число страниц, имеющих статус "Только чтение"

NBeginPage

Числовой

Номер начальной (базовой) страницы рабочего набора

CountLoadPage

Числовой

Число страниц, загрузки/выгрузки которых ожидает процесс

Status

Числовой