Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Bilety_po_Osyam.doc
Скачиваний:
2
Добавлен:
28.04.2019
Размер:
235.52 Кб
Скачать

10 Виртуальная память

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

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

Функции для управления памятью

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

  • Именующей функции f1, однозначно отображающей данное пользователем имя в идентификатор информации, к которой это имя относится.

  • Функции памяти f2, отображающей однозначно определенные идентификаторы в истинные адреса памяти, в которых они находятся.

  • Функции содержимого f3 ,отображающей каждый адрес памяти в значение, которое по этому адресу находится.

Имена, заданные f1 Однозначные f2 Ячейки f3 Значения

п ользователем идентификаторы памяти

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

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

Страничная память

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

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

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

При обращении к Вирт. Адресу, в котором пока ничего не существует, происходит прерывание.

Селектор – какую стр. физической памяти взять.

Смещение – смещение во взятой стр. физической памяти.

Directory table – описание физич. Страниц: - gdt – глоб. Относится к ядру ос, хранится Вирт. Адрес для ядра, можно читать только в привилегированном режиме; ldt – собств. Адрес прог-мы.

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

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

Поиск жертвы (вытеснение страниц памяти)

Естественно, для того чтобы автоматизировать процесс удаления «барахла» — редко используемых данных и программ — мы должны иметь какой-то легко формализуемый критерий, по которому определяется, какие данные считаются редко используемыми.

  • Один критерий выбора очевиден — при прочих равных условиях, в первую очередь мы должны выбирать в качестве "жертвы" (victim) для удаления тот объект, который не был изменен за время жизни в быстрой памяти.

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

  • Самая простая стратегия — выбрасывать случайно выбранный объект. При этом не надо собирать никакой статистики о частоте использования и т. д., важно лишь обеспечить равномерность распределения генерируемых псевдослучайных чисел. Очевидно, что при этом удаленный объект совершенно необязательно будет ненужным

  • Можно также удалять то, что дольше всего находится в памяти. Это называется алгоритмом FIFO (First In, First Out, первый вошел, первый вышел). Видно, что это уже чуть сложнее случайного удаления — нужно запоминать, когда мы что загружали.

  • Строим таблицу: что делали с файлом: читали или записывали. Приоритеты удаления: 00, 10, 01, 11.

12. програ́мма — последовательность формализованных инструкций, предназначенная для исполнения устройством управления вычислительной машины.

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

Процесс (задача) - программа, находящаяся в режиме выполнения.

С каждым процессом связывается его адресное пространство, из которого он может читать и в которое он может писать данные, пространство содержит: саму программу, данные к программе и стек программы.

С каждым процессом связывается набор регистров:

  1. счетчика команд (в процессоре)

  2. указатель стека

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

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

Поток – модель параллельного произведения нескольких действий.

1 проц-с может породить множество потоков, которые будут выполняться параллельно.

Параллельность достигается за счет разделения времени между потоками.

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

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

Адреса разных процессов отображены в разные физические адреса.

Отладка прог-м, которые работают параллельно:

П1: {n++,n++}

П2: {if (n%2!=0)

Print f(“error!”)}

Mitex – можно выполнять 2 операции: захватывать и освобождать поток. Присваиваем ему 1- если занят, 0- если свободен.

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

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

Список потоков управления – это упорядоченный набор готовых к выполнению равноприоритетных потоков, очередность которых определяется политикой планирования. Множество наборов включает все потоки в системе, готовые к выполнению.

13. Многозада́чность (англ. multitasking) — свойство операционной системы или среды программирования, обеспечивать возможность параллельной (или псевдопараллельной) обработки нескольких процессов. Истинная многозадачность операционной системы возможна только в распределенных вычислительных системах.

Cовместная или кооперативная многозадачность

(англ. cooperative)

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

Вытесняющая или приоритетная многозадачность (режим реального времени)

(англ. preemptive)

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

14. Самым простым и наиболее распространенным способом распределения процессов по приоритетам является организация нескольких очередей в соответствии с приоритетами. При этом процесс из низкоприоритетной очереди получает управление тогда и только тогда, когда все очереди с более высоким приоритетом пусты.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]