КАТЕГОРИИ: Архитектура-(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) |
Лекция 3. Управление памятью ЭВМ и доступ к данным
Рассмотрим системы управления памятью. Первые ОС работали с памятью достаточно просто. Каждый из процессов полностью помещался в основную память, должен был занимать непрерывную область памяти. Система могла принимать для обслуживания дополнительные процессы до тех пор, пока они могли поместиться в памяти все одновременно. Позже появилась система с «простым свопингом». Такие ОС, как и раньше, размещали каждый из процессов целиком в памяти, но теперь появлялась возможность целиком сбрасывать процесс из основной памяти во внешнюю и вносить на его место другой процесс. Такие сбросы производились по какому-нибудь критерию. Теперь рассмотрим системы, применяемые на некоторых современных компьютерах. Система с фиксированными разделами. Это наиболее простой способ организации памяти. Система на этапе загрузки разбивает всю память на несколько разделов фиксированной величины. Новые процессы размещаются по этим разделам. В этом случае происходит разбивка физического адресного пространства. Связывание физического и логического адресов процесса происходит на этапе его загрузки в раздел или на этапе компиляции. Можно организовать как глобальную очередь, так очередь процессов для каждого из разделов. Оценка размера поступившего процесса, выборка подходящего для него раздела, загрузка процесса в раздел, настройка адресов осуществляется подсистемой управления памятью. Среди недостатков такой системы выделяют следующие. Число одновременно выполняемых процессов ограничено числом разделов. Большая внутренняя фрагментация. Возникает в случае, когда процесс не полностью занимает выделенный ему раздел или наоборот, некоторые разделы очень малы по сравнению с пользовательским приложением. В качестве примера работы схемы с фиксированным разделом можно привести работу менеджера памяти однозадачной ОС. В память попадает один пользовательский процесс. По такому принципу работала ОС MS-DOS. Ограничить область памяти, в которой расположена ОС, помогает граничный регистр. Он хранит адрес границы ОС. Оверлейная структура. Как было сказано выше, процесс может занимать больше места, чем выделенное ему адресное пространство (может быть даже больше, чем целый раздел). В такой ситуации можно воспользоваться структурой с перекрытием (overlay). При такой организации в памяти содержатся только те инструкции программы, которые необходимы в текущий момент. Реализовывать подобную схему имеет смысл в ситуации, когда логическое адресное пространство мало. Коды ветвей хранятся на диске в качестве абсолютных образов памяти. Драйвер считывает их при необходимости. Совокупность исполняемых программных файлов дополняется файлом, чаще всего, с расширением.odl Такое расширение связано с названием языка для описания оверлейной структуры – overlay description language. В приведенном примере на рисунке 1.6 текст фала может выглядеть как: A-(В,С) С-(D,E) Рис. 1.5. Система управления памятью с фиксированными разделами. (а) – с общей очередью процессов, (b) – с отдельными очередями процессов [2] Рис. 1.6. Оверлейная структура организации памяти [2] Динамическое распределение памяти. Если память не в состоянии хранить все пользовательские процессы, то не обойтись без свопинга (swapping). Swapping – перемещение процессов из главной памяти целиком на диск и обратно. Частично выгружать можно процессы в случае со страничной организацией памяти (об этом будет сказано несколько слов дальше). Процесс, который был выгружен, можно вернуть обратно в память в то же самое адресное пространство или в другое (это будет зависеть от метода связывания). Сам свопинг с непосредственного отношения к управлению памятью не имеет. Его относят к подсистеме планирования процессов. Применение свопинга неизбежно увеличивает время переключения контекста. Несколько улучшить этот показатель можно, если на диске выделить специальное пространство для свопинга. В таком случае обмен будет идти блоками большего размера, это быстрее, чем через обычную файловую систему. Схема с переменными разделами. Изначально память не разделена. Каждый поступающий процесс получает столько места, сколько ему необходимо. После выгрузки процесса память освобождается. Рис. 1.7 Динамика распределения памяти между процессами (серым цветом обозначена неиспользуемая память) [2] При поступлении процесса возникает проблема, куда, в какой раздел поместить процесс? Применяют одно из трех решений. First fit. Первый подходящий. Процесс помещается в первый подходящий по размеру раздел. Best fit. Наиболее подходящий. Процесс помещается в раздел, в котором останется меньше всего свободного места после размещения. Worst fit. Наименее подходящий. Процесс помещается в самый большой раздел. Хитрость решения в том, что после размещения в разделе, возможно, там останется место для еще одного процесса. В ходе исследований было показано, что лучше со своей задачей справляются первый и второй способы. Причем первый делает это несколько быстрее. Работа происходит следующим образом: анализ запроса на выделение участка памяти, выбор среди доступных участков в соответствии со стратегией, загрузка процесса в выбранный раздел, изменение таблиц свободных и занятых областей. Такая же корректировка необходима и при выгрузке процесса из памяти. Связать адреса можно на этапе загрузки или выполнения. Такой метод более гибок по сравнению с методом фиксированных разделов. Но и ему свойственна фрагментация. Она вызвана тем, что остается много неиспользованных участков, которые не выделяются ни одному из процессов. Даже если работать по принципу Best fit, фрагментация все равно будет. Причем, не исключено, что этот метод даст наихудшие показатели в этой области, т.к. он оставляет очень много маленьких несвязанных блоков памяти. По статистике пропадает около 1/3 памяти. Решить эту проблему от части помогает дефрагментация – перемещение занятых частей памяти в одну ее часть, а свободных – в другую. Тут срабатывает тот факт, что в отличие от занятой памяти, свободную можно объединять. Но эта операция связана с большими накладными расходами (влечет за собой операции выгрузки и загрузки в память). Страничная память. В современных ОС процесс в оперативной памяти целиком непрерывным блоком располагается очень редко. Наиболее проста и распространена страничная организация памяти. Логическое и физическое адресные пространства представляются в виде страниц (блоков) одинакового размера. В таком случае образуются логические страницы (page), а соответствующие им страницы физической памяти называют страничными кадрами (page frames). Страницы и страничные кадры имеют фиксированную длину (как правило, степень числа 2). Страницы не могут перекрываться. Один кадр содержит одну страницу данных. В таком случае внешней фрагментации не будет, а внутренняя фрагментация будет определяться свободной частью последней страницы процесса. Логический адрес в такой системе представляет собой упорядоченную пару (p, d), где p – номер страницы, а d – смещение в рамках страницы р. Подобная разбивка проделывается операционной системой, так что ни пользователь, ни программист этого не замечают. Адрес двумерный только для ОС, для всех остальных он линеен. В такой схеме процесс может быть загружен целиком, даже если для него нет непрерывной области кадров. По сути вся эта система сводится к системе отображения логических страниц в физические и представляет собой таблицу страниц, хранимую в оперативной памяти. Рис. 1.8. Связь логического и физического адресов Если процессу необходим логический адрес (p, d), то механизм отображения ищет номер страницы р в таблице страниц. Определив, что эта страница находится в страничном кадре p’, формирует реальный адрес (p’, d). Таблица страниц (page table) адресуется при помощи специального регистра процессора. С ее помощью можно определить номер кадра, исходя из логического адреса. В принципе, на ее основе, благодаря атрибутам, хранимым в строке таблицы страниц, возможно организовать контроль и защиту конкретной страницы. Важной особенностью является то, что процессу пользователя чужая память недоступна (это следствие того, что для пользователя память представляется линейным пространством). Т.е. нельзя адресовать память за пределами своей таблицы страниц. Поддержка структуры таблицы кадров позволяет ОС управлять физической памятью. В этой таблице существует одна запись на каждый физический кадр. Отображение адресов чаще всего реализуется аппаратно. Для ссылки на таблицу используется специальный регистр. Сегментная и сегментно-страничная организация памяти. Основное отличие сегмента от страницы в том, что сегмент имеет переменный размер. Сегмент имеет двумерный адрес, но теперь он двумерный и для ОС, и для программистов. В адрес входят два поля – номер сегмента, смещение внутри сегмента. Логическое адресное пространство представлено в виде набора сегментов. У каждого сегмента есть такие атрибуты как имя, размер, уровень привилегий, флаги присутствия и т.д. Каждый сегмент – это линейная последовательность адресов, начинающихся с 0. Размер сегмента ограничен разрядностью процессора. Как правило, в таблице сегментов, кроме физического адреса начала сегмента содержится и его длина. Если сегменты поддерживаются аппаратно, то процессор может уже на этом уровне разрешать/запрещать доступ к памяти. Это значительно упрощает реализацию системы защиты информации. Аппаратная поддержка развита очень слабо. Рис. 1.9. Преобразование логического адреса при сегментной организации памяти [2] Хранение больших сегментов в памяти весьма затруднительно. Решением такой задачи стала сегментно-страничная организация памяти. При такой реализации памяти осуществляется двухуровневая трансляция виртуального адреса в физический. Теперь логический адрес состоит из трех полей: номер сегмента логической памяти, номер страницы внутри сегмента, смещение внутри страницы. Для отображений необходимо уже две таблицы. Одна таблица сегментов для связи номера сегмента с таблицей страниц, другая – таблица страниц (отдельная для каждого сегмента). При сегментно-страничной организации памяти можно организовать совместное использование данных и программного кода различными задачами. Для этого достаточно отобразить различные логические блоки памяти разных процессов в один блок физической памяти, где хранится разделяемая часть кода (данных). Рис. 1.10 Схема формирования физического адреса при сегментно-страничной организации памяти [2]
Дата добавления: 2014-12-07; Просмотров: 952; Нарушение авторских прав?; Мы поможем в написании вашей работы! Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет |