Главная страница
Навигация по странице:

  • Память

  • Перефразированный закон Паркинсона гласит: "Программы расширяются, стремясь заполнить весь объем памяти, доступный для их поддержки"

  • Концепция виртуальной памяти

  • Рисунок 1

  • Рисунок 2.

  • Стратегия вталкивания

  • Стратегия размещения

  • Стратегия выталкивания (замещения)

  • Вопросы_к_экзамену_по_операционным. Функции и механизмы программдиспетчеров, предшественников операционных систем


    Скачать 1.12 Mb.
    НазваниеФункции и механизмы программдиспетчеров, предшественников операционных систем
    Дата28.01.2018
    Размер1.12 Mb.
    Формат файлаdoc
    Имя файлаВопросы_к_экзамену_по_операционным.doc
    ТипДокументы
    #35354
    страница17 из 19
    1   ...   11   12   13   14   15   16   17   18   19

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


    Со времен создания ЭВМ фон Неймана основная память в компьютерной системе организована как линейное (одномерное)адресное пространство, состоящее из последовательности слов, а позже байтов. Аналогично организована и внешняя память. Хотя такая организация и отражает особенности используемого аппаратного обеспечения, она не соответствует способу, которым обычно создаются программы. Большинство программ организованы в виде модулей, некоторые из которых неизменны (только для чтения, только для исполнения), а другие содержат данные, которые могут быть изменены.

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

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

    2. Разные модули могут получать разные степени защиты (только чтение, только исполнение) за счет весьма умеренных накладных расходов.

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

    Память – важнейший ресурс вычислительной системы, требующий эффективного управления. Несмотря на то, что в наши дни память среднего домашнего компьютера в тысячи раз превышает память больших ЭВМ 70-х годов, программы увеличиваются в размере быстрее, чем память. Достаточно сказать, что только операционная система занимает сотни Мбайт (например, Windows2000 – до 30 млн строк), не говоря о прикладных программах и базах данных, которые могут занимать в вычислительных системах десятки и сотни Гбайт.

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

    • чем меньше время доступа, тем дороже бит;

    • чем выше емкость, тем ниже стоимость бита;

    • чем выше емкость, тем больше время доступа.

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

    • снижается стоимость бита;

    • возрастает емкость;

    • возрастает время доступа;

    • снижается частота обращений процессора к памяти.



    Рис. 6.1. Иерархия памяти

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

    Обозначим через Т2 = 10 нс время обращения ко второму уровню памяти, а через Р – отношение числа нахождений нужного слова в быстрой памяти к числу всех обращений. Пусть в нашем примере Р = 0,95 (т.е. 95% обращений приходится на быструю память, что вполне реально), тогда среднее время доступа к памяти можно записать так:

    Tср = 0,95*1нс + 0,05* (1нс+10нс)=1,55нс

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

    Z = 1 - pn, где n – число процессов.

    На рис. 6.2 показана зависимость Z=p(n) для различного времени ожидания завершения операции ввода-вывода (20%, 50% и 80%) и числа процессов n. Большое количество задач, необходимое для высокой загрузки процессора, требует большого объема оперативной памяти. В условиях, когда для обеспечения приемлемого уровня мультипрограммирования имеющейся памяти недостаточно, был предложен метод организации вычислительного процесса, при котором образы некоторых процессов целиком или частично временно выгружаются на диск.



    Рис. 6.2. Загрузка процессора при различном числе процессов

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

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

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

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

    Виртуализация памяти возможна на основе двух возможных подходов:

    • свопинг (swapping) – образы процессов выгружаются на диск и возвращаются в оперативную память целиком;

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

    Недостатки свопинга:

    • избыточность перемещаемых данных и отсюда замедление работы системы и неэффективное использование памяти;

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

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

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

    Концепция виртуальной памяти

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

    Виртуальная память - это моделирование оперативной памяти во внешней памяти.

    Механизм отображения виртуальных и реальных адресов устанавливает между ними соответствие и называется динамическим преобразованием адресов (ДПА).

    Компьютер здесь уже выступает как логическое устройство, а не физическая машина с уникальными характеристиками. ДПА поддерживается на аппаратно-микропрограммном уровне. В МП Intel, начиная с 386 процессора, выполняется поддержка виртуальной памяти.

    Такая процедура выполняется для EC ЭВМ - ряд 2 и выше, для СМ ЭВМ- 1700, для IBM PC – I386 и выше.

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

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



    Рисунок 1.  Динамическое преобразование адресов

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

    Еще один вопрос, который необходимо решать: Каким сделать размер блока?

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

    Блоки могут быть фиксированного размера (страницы) и переменного размера (сегменты). В этой связи существует четыре способа организации виртуальной памяти:

    1.Динамическая страничная организация.

    2.Сегментная организация.

    3.Комбинированная сегментно-страничная организация.

    4.Двухуровневая страничная организация.

    Виртуальные адреса в страничных и сегментных системах являются двухкомпонентными и представляют собой упорядоченную пару (p,d), где p - номер блока (страницы либо сегмента), в которой размещается элемент, а d - смещение относительно начального адреса этого блока. Преобразование виртуального адреса V=(p,d) в адрес реальной памяти r осуществляется следующим образом. При активизации очередного процесса в специальный регистр процессора загружается адрес таблицы отображения блоков данного процесса. В соответствии с номером блока p из таблице отображения блоков, считывается строка, в которой устанавливается соответствие между номерами виртуальных и физических страниц для страниц, загруженных в оперативную память, или делается отметка о том, что виртуальная страница выгружена на диск. Кроме того, в таблице страниц содержится управляющая информация, такая как признак модификации страницы, признак невыгружаемости (выгрузка некоторых страниц может быть запрещена), признак обращения к странице (используется для подсчета числа обращений за определенный период времени) и другие данные, формируемые и используемые механизмом виртуальной памяти. К считанному физическому адресу размещения выбранного блока добавляется размер смещения d и вычисляется требуемый реальный адрес.



    Рисунок 2.  Преобразование виртуального адреса в реальной адрес памяти

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

    Стратегия вталкивания, определяющая, когда следует переписать страницу или сегмент из внешней памяти в ОП.

    а) вталкивание по запросу - система ожидает ссылки на страницу/сегмент от выполняющегося процесса (прерывание по отсутствию страницы);

    аргументы за:

    • путь выполнения программы наверняка предсказать невозможно;

    • гарантия расположения в ОП только нужных страниц;

    • накладные расходы на определение требуемых страниц минимальны;

    аргументы против:

    • подкачка по одному блоку приводит к увеличению общего времени ожидания.

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

    Достоинство: сокращается время ожидания.

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

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

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

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

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

    а) выталкивание случайной страницы- в реальных системах не применяется;

    б) выталкивание первой пришедшей страницы (FIFO - очередь). Для ее реализации необходимо устанавливать временные метки страниц.

    Аргумент: у страницы уже были возможности использовать свой шанс.

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

    в) выталкивание дольше всего неиспользованных страниц.

    Для реализации необходимо реализовать обновляемые временные метки. Эвристический аргумент: - недавнее прошлое - хороший ориентир на будущее.

    Недостаток - существенные издержки: постоянное обновление временных меток.

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

    д) выталкивание не использующихся в последнее время страниц - самыйраспространенный алгоритм с малыми издержками. Реализуется двумя аппаратными битами на страницу:

    1.признак обращения 0 - было

    1 - не было.

    2.признак модификации записи 0 - неизменен.

    1 - изменен.

    Возможны следующие варианты комбинаций {00,10,01,11}. Если изменений на странице не было, то страницу можно просто переписать, а не сохранять на диске.
    1. 1   ...   11   12   13   14   15   16   17   18   19


    написать администратору сайта