Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
17
Добавлен:
01.05.2014
Размер:
1.27 Mб
Скачать
  1. Определение модели памяти и структуры регистровой памяти

5.1. Модель памяти

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

Поскольку заданием задан размер памяти 2048 Мбайт, то предлагается разделять имеющуюся память на следующие блоки.

Память размером 1024 Мбайт доступна процессам в пользовательском режиме. Страницы этой памяти являются кэшируемыми и перемещаемыми. Остальная память становится доступной только в режиме ядра. Предложено разделить ее на следующие блоки:

  1. 512 Мбайт памяти дополнительно доступно для процессов в системном режиме (режиме ядра). Эта память является кэшируемой и перемещаемой.

  2. 512 Мбайт под ядро ОС. Эта память является неперемещаемой (не используется переадресация через буфер TLB), но кэширование страниц разрешено.

  3. 1024 Мбайт памяти доступно для процессов в пользовательском режиме.

5.2. Виртуальная память Страничное преобразование

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

Размер страниц составляет 4 Кбайт.

32-разрядный линейный адрес разбивается на три части. Старшие 10 разрядов адреса определяют номер одного из 1024 элементов в каталоге страниц. Этот элемент содержит физический адрес таблицы страниц. Следующие 10 разрядов линейного адреса определяют номер элемента таблицы. Элемент, в свою очередь, содержит физический адрес страницы виртуальной памяти. Размер страницы - 4 Кбайт, и младших 12 разрядов линейного адреса как раз хватает (212 = 4096), чтобы определить точный физический номер адресуемой ячейки памяти внутри этой страницы.

Для ускорения страничного преобразования в процессоре имеется специальная кэш-память, называемая TLB (Translation Lookaside Buffer). В ней хранятся наиболее часто используемые элементы каталога и таблиц страниц. Конечно, переключение процессов и даже потоков приводит к тому, что данные внутри этого буфера становятся неактуальными, т. е. недействительными. Это влечет за собой дополнительные потери производительности при переключении.

Каждый процесс имеет свой отдельный каталог страниц и свое собственное независимое адресное пространство.

Свопинг

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

Важнейшее понятие при организации свопинга - рабочее множество процесса (working set). В соответствии с принципом локальности процесс не использует всю память одновременно. Состав и количество страниц, с которыми процесс работает, меняется на протяжении его жизни. Страницы, с которыми процесс работает в течение фиксированного интервала времени, есть его рабочее множество на этом интервале. Переход от одного рабочего множества к другому осуществляется не равномерно, а скачками. Это вызвано семантикой процесса: переходами от обработки одного массива к обработке другого, от подпрограммы к подпрограмме, от цикла к циклу и т. д. Не нужно, чтобы в оперативной памяти размещались все страницы процесса, однако необходимо, чтобы в ней помещалось его рабочее множество. В противном случае возникает режим интенсивной подкачки, называемый трешингом (trashing.) В таком режиме затраты системы на переписывание страниц с диска в память и обратно значительно превышают время, выделяемое на полезную деятельность. Фактически система перестает заниматься чем-либо, кроме перемещения головок жесткого диска.