Читайте также: |
|
МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ РОССИЙСКОЙ ФЕДЕРАЦИИ
ФГБОУ ВПО «МОСКОВСКИЙ ГОСУДАРСТВЕННЫЙ СТРОИТЕЛЬНЫЙ УНИВЕРСИТЕТ»
Кафедра информационных систем, технологий и автоматизации в строительстве
«Управление оперативной памятью в ПЭВМ»
Лабораторный практикум
по курсу «Операционные системы»
М о с к в а 2 0 1 2
Составитель:
Доцент кафедры ИСТАС Иванов Н.А.
Методические указания содержат основные сведения об оперативной памяти, особенностях организации оперативной памяти в различных операционных системах, программных средствах для получения информации об использовании оперативной памяти и для решения ряда задач, возникающих в многозадачных операционных системах при управлении памятью.
Методические указания предназначены для студентов факультета ИСТАС по направлению подготовки 230100 «Информатика и вычислительная техника», изучающих дисциплину «Операционные системы».
«Архитектура памяти, используемая в операционной системе, — ключ к пониманию того, как система делает то, что она делает.
Когда начинаешь работать с новой операционной системой, всегда возникает масса вопросов:
«Как разделить данные между двумя приложениями?»,
«Где хранится та или иная информация?»,
«Как оптимизировать свою программу?».
Список вопросов можно продолжить. Обычно знание того, как система управляет памятью, упрощает и ускоряет поиск ответов па эти вопросы.»
Джеффри РИХТЕР
«Windows для профессионалов: создание эффективных Win32 приложений с учетом специфики 64-разрядной версии Windows»
Введение
Управление оперативной памятью (ОП) является одной из важнейших задач любой операционной системы. Особую значимость вопросы управления памятью приобретают в многозадачных операционных системах. Для решения этой проблемы желательно иметь специальные средства, которые можно использовать для распределения памяти, для контроля её состояния и использования, для анализа эффективности использования памяти процессами, для повышения производительности вычислительной системы на основе оптимизации файла подкачки.
Изучению программных средств, направленных на решение перечисленных выше задач, применяемых в различных операционных системах, посвящены три лабораторных работы.
Виды памяти в ОС MS-DOS. Команда MEM и ее ключи. Работа с картой памяти. Команды управления памятью.
В зависимости от модификации персонального компьютера и состава его периферийного оборудования, распределение адресного пространства MS-DOS может несколько различаться. Тем не менее, размещение основных компонентов системы довольно строго унифицировано. Типичная схема использования адресного пространства компьютера приведена на рис. 1.1. Значения адресов на этом рисунке даны в шестнадцатеричной системе счисления.
Первые 640 Кбайт адресного пространства с адресами от 00000h до 9FFFF11 (и, соответственно, с сегментными адресами от 0000h до 9FFFh) отводятся под основную оперативную память, которую еще называют стандартной (conventional). Начальный килобайт оперативной памяти занят векторами прерываний, которые обеспечивают работу системы прерываний компьютера, и включает 256 векторов по 4 байта каждый. Вслед за векторами прерываний располагается так называемая область данных BIOS, которая занимает всего 256 байт, начиная с сегментного адреса 40h.
Рис. 1.1. Типичное распределение адресного пространства в MS-DOS.
Сама BIOS (от Basic In-Out System, базовая система ввода-вывода) является частью операционной системы, хранящейся в постоянном запоминающем устройстве. Это запоминающее устройство (ПЗУ BIOS) располагается на системной плате компьютера и является, таким образом, примером встроенного, или "зашитого" программного обеспечения. В функции BIOS входит тестирование компьютера при его включении, загрузка в оперативную память собственно операционной системы MS-DOS, хранящейся на магнитных дисках, а также управление штатной аппаратурой компьютера - клавиатурой, экраном, дисками и прочим. В области данных BIOS хранятся разнообразные данные, используемые программами BIOS в своей работе. Так, здесь размещаются:
- входной буфер клавиатуры, куда поступают коды нажимаемых пользователем клавиш;
- адреса видеоадаптера, а также последовательных и параллельных портов;
- данные, характеризующие текущее состояние видеосистемы (форма курсора и его текущее положение на экране, видеорежим, используемая видеостраница и проч.);
- ячейки для отсчета текущего времени и т.д.
Область данных BIOS заполняется информацией в процессе начальной загрузки компьютера, а затем динамически модифицируется системой по мере необходимости. Многие прикладные программы, особенно, написанные на языке ассемблера, обращаются к этой области с целью чтения или модификации содержащихся в них данных.
В области памяти, начиная с адреса 500h, располагается собственно операционная система MS-DOS, которая обычно занимает несколько десятков Кбайт. Программы MS-DOS, как и другие системные составляющие (векторы прерываний, область данных BIOS) записываются в память автоматически в процессе начальной загрузки компьютера.
Вся оставшаяся память до границы 640 Кбайт свободна для загрузки любых системных или прикладных программ. Как правило, в начале сеанса в память загружают резидентные программы (русификатор, антивирусные программы). При наличии резидентных программ объем свободной памяти уменьшается.
Оставшиеся 384 Кбайт адресного пространства между границами 640 Кбайт и 1 Мбайт, называемые старшей, или верхней (upper) памятью, первоначально были предназначены для размещения постоянных запоминающих устройств (ПЗУ). Практически под ПЗУ занята только небольшая часть адресов, а остальные используются в других целях.
Часть адресного пространства старшей памяти отводится для адресации к графическому и текстовому видеобуферам графического адаптера. Графический адаптер представляет собой отдельную микросхему или даже отдельную плату, в состав которой входит собственное запоминающее устройство (видеопамять). Это запоминающее устройство не имеет никакого отношения к оперативной памяти компьютера, однако, его схемы управления настроены на диапазоны адресов A0000h...AFFFFh и B8000h...BFFFFh, входящих в общее с памятью адресное пространство процессора. Поэтому любая программа может обратиться по этим адресам и, например, записать данные в видеобуфер, что приведет к появлению на экране некоторого изображения. Если видеосистема находится в текстовом режиме, а запись осуществляется по адресам текстового видеобуфера, на экране появятся изображения тех или иных символов (букв, цифр, различных знаков). Если же перевести видеосистему в графический режим, и записывать данные в графический видеобуфер, то на экране появятся отдельные точки или линии. Можно также прочитать текущее содержимое ячеек видеобуфера.
В самом конце адресного пространства, в области адресов F0000h...FFFFFh, располагается ПЗУ BIOS - постоянное запоминающее устройство, о котором уже говорилось выше.
Часть адресного пространства, начиная с адреса C0000h, отводится еще под одно ПЗУ - так называемое ПЗУ расширений BIOS для обслуживания графических адаптеров и дисков.
В состав компьютера, наряду со стандартной памятью (640 Кбайт), входит еще расширенная (extended) память, максимальный объем которой может доходить до 4 Гбайт. Эта память располагается за пределами первого мегабайта адресного пространства и начинается с адреса 100000h. Реально на машине может быть установлен не полный объем расширенной памяти, а лишь несколько десятков Мбайт или даже меньше.
Поскольку функционирование расширенной памяти подчиняется "спецификации расширенной памяти" (Extended Memory Specification, сокращенно XMS), то и саму память часто называют XMS-памятью. Доступ к расширенной памяти осуществляется в защищенном режиме, поэтому для MS-DOS, работающей только в реальном режиме, расширенная память недоступна. Однако в современные версии MS-DOS включается драйвер HIMEM.SYS, поддерживающий расширенную память, т.е. позволяющий ее использовать, хотя и ограниченным образом. Конкретно в расширенной памяти можно разместить электронные диски (с помощью драйвера RAMDRIVE.SYS) или дисковые кэш-буферы (с помощью драйвера SMARTDRV.SYS).
Первые 64 Кбайт расширенной памяти, точнее, 64 Кбайт - 16 байт с адресами от l00000h до l0FFEFh, носят специальное название область старшей памяти (High MemoryArea, HMA). Эта область замечательна тем, что хотя она находится за пределами первого мегабайта, к ней можно обратиться в реальном режиме работы микропроцессора, если определить сегмент, начинающийся в самом конце мегабайтного адресного пространства, с сегментного адреса FFFFh, и разрешить использование адресной линии А20. Первые 16 байт этого сегмента заняты ПЗУ, область же со смещениями 0010h...FFFFh можно в принципе использовать под программы и данные. MS-DOS позволяет загружать в НМA (директивой файла CONFIG.SYS DOS=HIGH) значительную часть самой себя, в результате чего занятая системой область стандартной памяти существенно уменьшается. Старшую память обслуживает тот же драйвер HIMEM.SYS, поэтому загрузка DOS в HMA возможна, только если установлен драйвер HIMEM.SYS.
Как видно из приведенного выше рисунка, часть адресного пространства верхней памяти, не занятая расширениями BIOS и видеобуферами, оказывается свободной. Эти свободные участки можно использовать для адресации к расширенной памяти (конечно, не ко всей, а лишь к той ее части, объем которой совпадает с общим объемом свободных адресов старшей памяти). Отображение расширенной памяти на свободные адреса старшей памяти выполняет драйвер EMM386.EXE, а сами участки старшей памяти, "заполненные" расширенной, называются блоками верхней памяти (Upper Memory Blocks, UMB). MS-DOS позволяет загружать в UMB устанавливаемые драйверы устройств, а также резидентные программы. Загрузка системных программ в UMB освобождает от них стандартную память, увеличивая ее транзитную область. Загрузка в UMB драйверов осуществляется директивой файла CONFIG.SYS DEVICEHIGH (вместо директивы DEVICE), а загрузка резидентных программ - командой MS-DOS LOADHIGH.
На оптимально сконфигурированном компьютере системными компонентами заняты лишь около 20...25 Кбайт основной памяти, а вся остальная память в объеме около 620 Кбайт может использоваться для загрузки прикладных программ.
Для исследования оперативной памяти в состав MS-DOS включена программа MEM.EXE. Получить сведения об особенностях использования этой команды можно, запустив команду с ключом /f (рис 1.2).
Рис. 1.2. Сведения об особенностях использования команды mem.
Команда mem практически во всех случаях выводит на экран карту памяти (рис. 1.3).
Рис. 1.3. Пример карты памяти в MS-DOS
Порядок выполнения работы.
Распределение памяти статическими и динамическими разделами, знакомство с модель управления оперативной памятью. Изучение результатов выделения памяти по принципу «первый подходящий» и «наиболее подходящий», сравнение результатов и подготовка выводов.
Мультипрограммный режим предполагает одновременное нахождение в памяти нескольких задач. Самая простая схема распределения памяти между задачами сводится к разделению свободной памяти на несколько непрерывных разделов (partition) по числу задач. Каждый раздел характеризуется началом и длиной. Это разбиение может быть статическим (фиксированным) или динамическим.
При статическом разбиении на этапе генерации ОС происходит разделение оперативной памяти на фиксированное число разделов, либо по мере необходимости это делает оператор системы. Пример статического разбиения представлен на рис. 2.1.
Рис. 2.1. Статическое распределение ОП
В каждом разделе в каждый момент времени может находиться одна программа. Поэтому к каждому разделу применимы все методы, применяемые в однопрограммных системах, в том числе организация оверлейных структур. При недостаточном объёме памяти для размещения заданного количества разделов применяется свопинг (swapping). При этом задача, которая ожидает окончания операции ввода/вывода, может быть выгружена из оперативной памяти во внешнюю, а на ее место может быть загружена задача с большим приоритетом или задача, готовая к выполнению и находящаяся в очереди. Свопинг предусматривает выгрузку задачи целиком, а не ее отдельной части (как и в оверлейных структурах). Недостатком такой организации распределения памяти является фрагментация - часть памяти раздела, порой значительная, не используется и её использование не представляется возможным.
Снижение потерь ОП возможно путём формирование разделов под конкретную задачу, то есть использованием вместо статических динамических разделов.
В этом случае специальный планировщик ведёт список адресов свободной ОП. При появлении новой задачи диспетчер памяти просматривает список адресов свободной памяти и размещает новую задачу одним из трёх методов:
1) в первый подходящий участок – в этом случае список участков упорядочивается по адресам, диспетчер памяти просматривает этот список и выделяет задаче раздел в той области памяти, которая первой подойдёт по объёму. В среднем необходимо просмотреть половину списка;
2) в самый подходящий участок – аналогичен предыдущему, но список участков упорядочивается по возрастанию их объема. Самый маленький фрагмент свободной оперативной памяти, в котором не удаётся разместить программу, попадает в начало списка и не будет использоваться. Такой метод, в целом, не эффективен;
3) в самый неподходящий участок – в этом случае список участков упорядочивается по убыванию объёма. Заполняется самый большой фрагмент оперативной памяти. Оставшаяся после размещения в нём программы часть ещё может быть использована в дальнейшем. Такой метод, как оказалось, является самым эффективным из трёх.
Распределение динамическими разделами не исключает фрагментации. Причём при большом числе задач фрагментация довольно значительна. Для уменьшения фрагментации ОП используется уплотнение памяти или перемещение задач в начало или конец памяти с одновременной корректировкой списков свободных адресов. Недостаток уплотнения – потеря времени на уплотнение и приостановка вычислений на время уплотнения.
Для исследований особенностей распределения памяти динамическими разделами рассмотрим программу «Моделирование работы ОП ЭВМ». Общий вид окна программы представлен на рис. 2.2.
Рис. 2.2 Общий вид окна программы «Моделирование работы ОП ЭВМ»
В центре окна находится основная рабочая область программы «Окно команды»
(рис 2.3):
Рис. 2.3 Окно команды программы «Моделирование работы ОП ЭВМ»
При помощи переключателей выбирается одна из следующих команд:
ADD - добавь память существующему процессу;
NEW - создай новый процесс;
DEL - удали процесс;
При выборе одной из команд активируются соответствующие ей поля ввода исходных данных, при вводе изменяется команда в окне текущей команды (рис 2.4).
Рис. 2.4 Работа в режиме «окно команды»
К трём командам указанным выше командам относится кнопка «Выполни». Когда произведён выбор нужной команды и введены значения, то эта кнопка отправляет команду на исполнение. Обработчик исполнения проверит введённые аргументы, проверит возможность выполнения запрашиваемой операции, если проверки пройдены, то выполнит операцию, если произошла ошибка, то программа скажет в появившемся сообщении, по какой причине команду выполнить нельзя и удержит эту команду.
В виде отдельных кнопок реализованы следующие команды:
FREE - объедини свободные участки памяти, находящиеся по соседству;
CLEAN - удали из таблицы безполезные записи.
Команды можно вводить только в ручном режиме. При вводе входных данных осуществляется смысловая проверка информации.
Под окном команды находится окно выбора режима (рис. 2.5). Ручной режим позволяет вводить команду за командой, при необходимости записывая всю последовательность выполняемых команд в специальный файл.
Рис. 2.5. Окно выбора режима
Режим записи активируется при нажатии на кнопку «Запись». При этом откроется окно (рис 2.6), предлагающее сохранить набранную последовательность команд в файл специального формата.COMT.
Рис. 2.6. Окно сохранения файла с выполненной последовательностью команд
Авторежим позволяет запускать ранее сохранённые.COMT скрипты на исполнение. Программа содержит две варианта авторежима – полностью автоматический и пошаговый. В полностью автоматическом режиме пользователь является просто наблюдателем. Программа открывает скрипт и последовательно выполняет команду за командой с определённой задержкой, которая регулируется через настройки(задержка нужна для быстрых процессоров, чтобы можно было проследить за выполнением скрипта). При пошаговом исполнении пользователь получает возможность решать, когда исполнить следующую команду. Также можно выполнить несколько команд пошагово, а затем переключиться на полностью автоматический режим. Прежде чем запускать.COMT скрипт пользователь должен загрузить его при помощи кнопки «Файл» (рис. 2.7):
Рис. 2.7. Подготовка к загрузке.COMT скрипта в режиме «Авторежим»
Пользователю будет предложено выбрать один из доступных программе файлов, хранящих.COMT скрипт (рис. 2.8):
Рис. 2.8. Окно выбора файла для загрузки.COMT скрипта
Если файл успешно загрузился и активировался пользователю будет выдано информационное сообщение, подобное представленному на рис. 2.9, а кнопка «Файл» окрасится в зеленый цвет (рис. 2.10).
Рис. 2.9. Информационное сообщение о результатах загрузки.COMT скрипта
Рис. 2.10. Вид окна «Режим» после успешной загрузки.COMT скрипта
После полной отработки.COMT скрипта программа переводится в ручной режим (рис 2.11):
Рис. 2.11. Информационное сообщение о завершении работы в авторежиме
Дата добавления: 2015-07-12; просмотров: 93 | Нарушение авторских прав
<== предыдущая страница | | | следующая страница ==> |
выхода из них. | | | Не рекомендуется выходить из программы или останавливать её работу во время исполнения скрипта авторежима!!! |