Способы организации виртуальной памяти: Вопрос №7. Способы организации виртуальной памяти.

Содержание

Страничный способ организации виртуальной памяти

Как мы уже сказали, при таком способе все фрагменты программы, на которые она разбивается (за исключением последней её части), получаются одинаковыми. Одинаковыми полагаются и единицы памяти, которые мы предоставляем для размещения фрагментов программы. Эти одинаковые части называют страницами и говорят, что память разбивается на физические страницы, а программа – на виртуальные страницы. Часть виртуальных страниц задачи размещается в опе­ративной памяти, а часть – во внешней. Обычно место во внешней памяти, в ка­честве которой в абсолютном большинстве случаев выступают накопители на магнитных дисках (поскольку они относятся к быстродействующим устройствам с прямым доступом), называют файлом подкачки или страничным файлом (pagingfile). Иногда этот файл называютswap-файлом,тем самым подчеркивая, что записи этого файла – страницы – замещают друг друга в оперативной памя­ти. В некоторых ОС выгруженные страницы располагаются не в файле, а в спе­циальном разделе дискового пространства. В UNIX-системах для этих целей вы­деляется специальный раздел, но кроме него могут быть использованы и файлы, выполняющие те же функции, если объёма раздела недостаточно.

Разбиение всей оперативной памяти на страницы одинаковой величины, причем величина каждой страницы выбирается кратной степени двойки, приводит к тому, что вместо одномерного адресного пространства памяти можно говорить о двумерном. Первая координата адресного пространства – это номер страницы, а вторая координата – номер ячейки внутри выбранной страницы (его называют индексом). Таким образом, физический адрес определяется парой (Pp,i), а вир­туальный адрес – парой (Pv,i), гдеPv– это номер виртуальной страницы,Pp– это номер физической страницы иi– это индекс ячейки внутри страницы. Коли­чество битов, отводимое под индекс, определяет размер страницы, а количество битов, отводимое под номер виртуальной страницы, – объём возможной вирту­альной памяти, которой может пользоваться программа. Отображение, осущест­вляемое системой во время исполнения, сводится к отображениюP

vвPpи при­писывании к полученному значению битов адреса, задаваемых величинойi. При этом нет необходимости ограничивать число виртуальных страниц числом фи­зических, то есть не поместившиеся страницы можно размещать во внешней па­мяти, которая в данном случае служит расширением оперативной.

Для отображения виртуального адресного пространства задачи на физическую память, как и в случае с сегментным способом организации, для каждой задачи необходимо иметь таблицу страницдля трансляции адресных пространств. Для описания каждой страницы диспетчер памяти ОС заводит соответствующий де­скриптор, который отличается от дескриптора сегмента прежде всего тем, что в нем нет необходимости иметь поле длины – ведь все страницы имеют одина­ковый размер. По номеру виртуальной страницы в таблице дескрипторов стра­ниц текущей задачи находится соответствующий элемент (дескриптор). Если бит присутствия имеет единичное значение, значит, данная страница сейчас раз­мещена в оперативной, а не во внешней памяти и мы в дескрипторе имеем номер физической страницы, отведенной под данную виртуальную. Если же бит при­сутствия равен нулю, то в дескрипторе мы будем иметь адрес виртуальной стра­ницы, расположенной сейчас во внешней памяти. Таким образом и осуществ­ляется трансляция виртуального адресного пространства на физическую память. Этот механизм трансляции проиллюстрирован на рис. 2.8.

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

Рис. 2.8.Страничный способ организации виртуальной памяти

При обращении к виртуальной странице, не оказавшейся в данный момент в оперативной памяти, возникает прерывание и управление передаётся диспетче­ру памяти, который должен найти свободное место. Обычно предоставляется первая же свободная страница. Если свободной физической страницы нет, то диспетчер памяти по одной из вышеупомянутых дисциплин замещения (LRU, LFU,FIFO,random) определит страницу, подлежащую расформированию или сохранению во внешней памяти. На её место он разместит ту новую виртуаль­ную страницу, к которой было обращение из задачи, но её не оказалось в опера­тивной памяти.

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

Для использования дисциплин LRU и LFU в процессоре должны быть соответствующие аппаратные средства. В дескрипторе страницы размещается бит обращения (подразумевается, что на рис. 2.8 этот бит расположен в последнем поле), и этот бит становится единичным при обращении к дескриптору.

Если объём физической памяти небольшой и даже часто требуемые страницы не удается разместить в оперативной памяти, то возникает так называемая «про­буксовка». Другими словами, пробуксовка –это ситуация, при которой загрузка нужной нам страницы вызывает перемещение во внешнюю память той страни­цы, с которой мы тоже активно работаем. Очевидно, что это очень плохое явле­ние. Чтобы его не допускать, желательно увеличить объём оперативной памяти (сейчас это стало самым простым решением), уменьшить количество параллель­но выполняемых задач либо попробовать использовать более эффективные дис­циплины замещения. В абсолютном большинстве современных ОС используется дисциплина замеще­ния страницLRUкак самая эффективная. Так, именно эта дисциплина исполь­зуется в OS/2 иLinux. Однако в такой ОС, какWindowsNT, разработчики, желая сделать систему максимально независимой от аппаратных возможностей процессора, пошли на отказ от этой дисциплины и применили правилоFIFO. А для того, чтобы хоть как-нибудь сгладить её неэффективность, была введена «буферизация» тех страниц, которые должны быть записаны в файл подкачки на диск

1или просто расформированы. Принцип буферирования прост. Прежде чем замещаемая страница действительно будет перемещена во внешнюю память или просто расформирована, она помечается как кандидат на выгрузку. Если в сле­дующий раз произойдет обращение к странице, находящейся в таком «буфере», то страница никуда не выгружается и уходит в конец спискаFIFO. В противном случае страница действительно выгружается, а на её место в «буфере» попадает следующий «кандидат». Величина такого «буфера» не может быть большой, по­этому эффективность страничной реализации памяти вWindowsNTнамного ниже, чем у вышеназванных ОС, и явление пробуксовки начинается даже при сущест­венно большем объёме оперативной памяти.

В ряде ОС с пакетным режимом работы для борьбы с пробуксовкой использует­ся метод «рабочего множества». Рабочее множество –это множество «активных» страниц задачи за некоторой интервал То есть тех страниц, к которым было об­ращение за этот интервал времени. Реально количество активных страниц зада­чи (за интервал Т) все время изменяется, и это естественно, но, тем не менее, для каждой задачи можно определить среднее количество её активных страниц. Это среднее число активных страниц и есть рабочее множество задачи. Наблюдения за исполнением множества различных программ показали [28, 37, 49], что даже если Т равно времени выполнения всей работы, то размер рабочего множества часто существенно меньше, чем общее число страниц программы. Таким обра­зом, если ОС может определить рабочие множества исполняющихся задач, то для предотвращения пробуксовки достаточно планировать на выполнение толь­ко такое количество задач, чтобы сумма их рабочих множеств не превышала воз­можности системы.

Как и в случае с сегментным способом организации виртуальной памяти, стра­ничный механизм приводит к тому, что без специальных аппаратных средств он будет существенно замедлять работу вычислительной системы. Поэтому обычно используется кэширование страничных дескрипторов. Наиболее эффективным способом кэширования является использование ассоциативного кэша. Именно такой ассоциативный кэш и создан в 32-разрядных микропроцессорах i80x86. Начиная с i80386, который поддерживает страничный способ распределения па­мяти, в этих микропроцессорах имеется кэш на 32 страничных дескриптора. Поскольку размер страницы в этих микропроцессорах равен 4 Кбайт, возможно бы­строе обращение к 128 Кбайт памяти.

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

Первое – эта то, что страничная трансляция виртуальной памяти требует суще­ственных накладных расходов. В самом деле, таблицы страниц нужно тоже раз­мещать в памяти. Кроме этого, эти таблицы нужно обрабатывать; именно с ними работает диспетчер памяти.

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

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

Страничный способ организации виртуальной памяти

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

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

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

Иногда этот файл называют swap-файлом, тем самым подчеркивая, что записи этого файла – страницы – замещают друг друга в оперативной памяти. В некоторых ОС выгруженные страницы располагаются не в файле, а в специальном разделе дискового пространства. В UNIX-системах для этих целой выделяется специальный раздел, но кроме него могут быть использованы и файлы, выполняющие те же функции, если объема раздела недостаточно.

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

Для отображения виртуального адресного пространства задачи на физическую память, как и в случае с сегментным способом организации, для каждой задачи необходимо иметь таблицу страниц для трансляции адресных пространств. Для описания каждой страницы диспетчер памяти ОС заводит соответствующий дескриптор, который отличается от дескриптора сегмента прежде всего тем, что в нем нет необходимости иметь поле длины – ведь все страницы имеют одинаковый размер. По номеру виртуальной страницы в таблице дескрипторов страниц текущей задачи находится соответствующий элемент (дескриптор). Если бит присутствия имеет единичное значение, значит, данная страница сейчас размещена в оперативной, а не во внешней памяти и мы в дескрипторе имеем номер физической страницы, отведенной под данную виртуальную. Если же бит присутствия равен нулю, то в дескрипторе мы будем иметь адрес виртуальной страницы, расположенной сейчас во внешней памяти. Таким образом и осуществляется трансляция виртуального адресного пространства на физическую память. Этот механизм трансляции проиллюстрирован на рис. 1.8.

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

При обращении к виртуальной странице, не оказавшейся в данный момент в оперативной памяти, возникает прерывание и управление передается диспетчеру памяти, который должен найти свободное место. Обычно предоставляется первая же свободная страница. Если свободной физической страницы нет, то диспетчер памяти по одной из вышеупомянутых дисциплин замещения (LRU, LFU, FIFO, random) определит страницу, подлежащую расформированию или сохранению во внешней памяти. На ее место он разместит ту новую виртуальную страницу, к которой было обращение из задачи, но ее не оказалось в оперативной памяти.

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

В абсолютном большинстве современных ОС используется дисциплина замещения страниц LRU как самая эффективная. Так, именно эта дисциплина используется в OS/2 и Linux. Однако в такой ОС, как Windows NT, разработчики, желая сделать систему максимально независимой от аппаратных возможностей процессора, пошли на отказ от этой дисциплины и применили правило FIFO. А для того, чтобы хоть как?нибудь сгладить ее неэффективность, была введена «буферизация» тех страниц, которые должны быть записаны в файл подкачки на диск или просто расформированы. Принцип буферирования прост. Прежде чем замещаемая страница действительно будет перемещена во внешнюю память или просто расформирована, она помечается как кандидат на выгрузку. Если в следующий раз произойдет обращение к странице, находящейся в таком «буфере», то страница никуда не выгружается и уходит в конец списка FIFO. В противном случае страница действительно выгружается, а на ее место в «буфере» попадает следующий «кандидат». Величина такого «буфера» не может быть большой, поэтому эффективность страничной реализации памяти в Windows NT намного ниже, чем у вышеназванных ОС.

Как и в случае с сегментным способом организации виртуальной памяти, страничный механизм приводит к тому, что без специальных аппаратных средств он будет существенно замедлять работу вычислительной системы. Поэтому обычно используется кэширование страничных дескрипторов. Наиболее эффективным способом кэширования является использование ассоциативного кэша. Именно такой ассоциативный кэш и создан в 32-разрядных микропроцессорах i80х86.

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

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

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

Статьи к прочтению:

Операционные системы, урок 7: Организация памяти. Виртуальная память.


Похожие статьи:

Страничный способ организации виртуальной памяти — КиберПедия

Как уже упоминалось, при страничном способе организации виртуальной памяти все фрагменты программы, на которые она разбивается (за исключением после­дней ее части), получаются одинаковыми. Одинаковыми полагаются и единицы памяти, которые предоставляются для размещения фрагментов программы. Эти одинаковые части называют страницами и говорят, что оперативная память раз­бивается на физические страницы, а программа — на виртуальные страницы. Часть виртуальных страниц задачи размещается в оперативной памяти, а часть — во внеш­ней. Обычно место во внешней памяти, в качестве которой в абсолютном боль­шинстве случаев выступают накопители на магнитных дисках (поскольку они относятся к быстродействующим устройствам с прямым доступом), называют фай­лом подкачки, или страничным файлом (paging file). Иногда этот файл называют swap-файлом, тем самым подчеркивая, что записи этого файла — страницы — за­мещают друг друга в оперативной памяти. В некоторых операционных системах выгруженные страницы располагаются не в файле, а в специальном разделе дис­кового пространства1.

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

‘ В UNIX-системах для этих целей выделяется специальный раздел, но кроме него могут быть исполь­зованы и файлы, выполняющие те же функции, если объема раздела недостаточно.

94_____________________ Глава 3. Управление памятью в операционных системах

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

Для отображения виртуального адресного пространства задачи на физическую па­мять, как и в случае сегментного способа организации, для каждой задачи необходи­мо иметь таблицу страниц для трансляции адресных пространств. Для описания каждой страницы диспетчер памяти операционной системы заводит соответствую­щий дескриптор, который отличается от дескриптора сегмента прежде всего тем, что в нем нет поля длины — ведь все страницы имеют одинаковый размер. По номе­ру виртуальной страницы в таблице дескрипторов страниц текущей задачи нахо­дится соответствующий элемент (дескриптор). Если бит присутствия имеет единич­ное значение, значит данная страница размещена в оперативной, а не во внешней памяти, и мы в дескрипторе имеем номер физической страницы, отведенной под данную виртуальную. Если же бит присутствия равен нулю, то в дескрипторе мы будем иметь адрес виртуальной страницы, расположенной во внешней памяти. Та­ким образом и осуществляется трансляция виртуального адресного пространства на физическую память. Этот механизм трансляции иллюстрирует рис. 3.5.

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

— только чтение;

— чтение и запись;

— только выполнение.

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

При обращении к виртуальной странице, не оказавшейся в данный момент в опера­тивной памяти, возникает прерывание, и управление передается диспетчеру памя­ти, который должен найти свободное место. Обычно предоставляется первая же сво­бодная страница. Если свободной физической страницы нет, то диспетчер памяти по одной из вышеупомянутых дисциплин замещения (LRU, LFU, FIFO, случайный доступ) определит страницу, подлежащую расформированию или сохранению во внешней памяти. На ее месте он разместит новую виртуальную страницу, к которой было обращение из задачи, но которой не оказалось в оперативной памяти.

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

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

Сегментная, страничная и сегментно-страничная организация памяти_______________ 95

Рис. 3.5. Страничный способ организации виртуальной памяти

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

96_____________________ Глава 3. Управление памятью в операционных системах

Для абсолютного большинства современных операционных систем характерна дисциплина замещения страниц LRU как самая эффективная. Так, именно эта дисциплина используется в OS/2 и в Linux. Однако в операционных системах Windows NT/2000/XP разработчики, желая сделать их максимально независимы­ми от аппаратных возможностей процессора, отказались от этой дисциплины и при­менили правило FIFO. А для того чтобы хоть как-то компенсировать неэффектив­ность правила FIFO, была введена «буферизация» тех страниц, которые должны быть записаны в файл подкачки на диск1 или просто расформированы. Принцип буферизации прост. Прежде чем замещаемая страница действительно окажется во внешней памяти или просто расформированной, она помечается как кандидат на выгрузку. Если в следующий раз произойдет обращение к странице, находящейся в таком «буфере», то страница никуда не выгружается и уходит в конец списка FIFO. В противном случае страница действительно выгружается, а на ее место в «буфер» попадает следующий «кандидат». Величина такого «буфера» не может быть большой, поэтому эффективность страничной реализации памяти в Win­dows NT/2000/XP намного ниже, чем в других операционных системах, и явление пробуксовки начинается даже при существенно большем объеме оперативной па­мяти.

В ряде операционных систем с пакетным режимом работы для борьбы с пробук­совкой используется метод «рабочего множества». Рабочее множество — это мно­жество «активных» страниц задачи за некоторый интервал Т, то есть тех страниц, к которым было обращение за этот интервал времени. Реально количество актив­ных страниц задачи (за интервал Т) все время изменяется, и это естественно, но, тем не менее, для каждой задачи можно определить среднее количество ее актив­ных страниц. Это количество и есть рабочее множество задачи. Наблюдения за исполнением множества различных программ показали [11, 17, 22], что даже если интервал Т равен времени выполнения всей работы, то размер рабочего множе­ства часто существенно меньше, чем общее число страниц программы. Таким об­разом, если операционная система может определить рабочие множества испол­няющихся задач, то для предотвращения пробуксовки достаточно планировать на выполнение только такое количество задач, чтобы сумма их рабочих множеств не превышала возможности системы.

Как и в случае с сегментным способом организации виртуальной памяти, странич­ный механизм приводит к тому, что без специальных аппаратных средств он суще­ственно замедляет работу вычислительной системы. Поэтому обычно использует­ся кэширование страничных дескрипторов. Наиболее эффективным механизмом кэширования является ассоциативный кэш. Именно такой ассоциативный кэш и создан в 32-разрядных микропроцессорах i80x86. Начиная с i80386, который под­держивает страничный способ распределения памяти, в этих микропроцессорах имеется кэш на 32 страничных дескриптора. Поскольку размер страницы в этих

1 В системе Windows NT файл с выгруженными виртуальными страницами носит название PageFile.sys. Таких файлов может быть несколько. Их совокупный размер должен быть не менее, чем объем физи­ческой памяти компьютера плюс 11 Мбайт, необходимых для самой Windows NT. В системах Windows 2000 размер файла PageFile.sys намного превышает объем установленной физической па­мяти и часто достигает многих сотен мегабайтов.

Сегментная, страничная и сегментно-страничная организация памяти_______________ 97

микропроцессорах равен 4 Кбайт, возможно быстрое обращение к памяти разме­ром 128 Кбайт.

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

Первое — это то, что страничная трансляция виртуальной памяти требует суще­ственных накладных расходов. В самом деле, таблицы страниц нужно тоже разме­щать в памяти. Кроме того, эти таблицы нужно обрабатывать; именно с ними рабо­тает диспетчер памяти.

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

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

Страничный способ организации виртуальной памяти

Как мы уже сказали, при таком способе все фрагменты программы, на которые она разбивается (за исключением последней её части), получаются одинаковыми. Одинаковыми полагаются и единицы памяти, которые мы предоставляем для размещения фрагментов программы. Эти одинаковые части называют страницами и говорят, что память разбивается на физические страницы, а программа – на виртуальные страницы. Часть виртуальных страниц задачи размещается в опе­ративной памяти, а часть – во внешней. Обычно место во внешней памяти, в ка­честве которой в абсолютном большинстве случаев выступают накопители на магнитных дисках (поскольку они относятся к быстродействующим устройствам с прямым доступом), называют файлом подкачки или страничным файлом (paging file). Иногда этот файл называют swap-файлом, тем самым подчеркивая, что записи этого файла – страницы – замещают друг друга в оперативной памя­ти. В некоторых ОС выгруженные страницы располагаются не в файле, а в спе­циальном разделе дискового пространства. В UNIX-системах для этих целей вы­деляется специальный раздел, но кроме него могут быть использованы и файлы, выполняющие те же функции, если объёма раздела недостаточно.

Разбиение всей оперативной памяти на страницы одинаковой величины, причем величина каждой страницы выбирается кратной степени двойки, приводит к тому, что вместо одномерного адресного пространства памяти можно говорить о двумерном. Первая координата адресного пространства – это номер страницы, а вторая координата – номер ячейки внутри выбранной страницы (его называют индексом). Таким образом, физический адрес определяется парой (Pp, i), а вир­туальный адрес – парой (Pv, i), где Pv – это номер виртуальной страницы, Pp – это номер физической страницы и i – это индекс ячейки внутри страницы. Коли­чество битов, отводимое под индекс, определяет размер страницы, а количество битов, отводимое под номер виртуальной страницы, – объём возможной вирту­альной памяти, которой может пользоваться программа. Отображение, осущест­вляемое системой во время исполнения, сводится к отображению Pv в Pp и при­писывании к полученному значению битов адреса, задаваемых величиной i. При этом нет необходимости ограничивать число виртуальных страниц числом фи­зических, то есть не поместившиеся страницы можно размещать во внешней па­мяти, которая в данном случае служит расширением оперативной.

Для отображения виртуального адресного пространства задачи на физическую память, как и в случае с сегментным способом организации, для каждой задачи необходимо иметь таблицу страниц для трансляции адресных пространств. Для описания каждой страницы диспетчер памяти ОС заводит соответствующий де­скриптор, который отличается от дескриптора сегмента прежде всего тем, что в нем нет необходимости иметь поле длины – ведь все страницы имеют одина­ковый размер. По номеру виртуальной страницы в таблице дескрипторов стра­ниц текущей задачи находится соответствующий элемент (дескриптор). Если бит присутствия имеет единичное значение, значит, данная страница сейчас раз­мещена в оперативной, а не во внешней памяти и мы в дескрипторе имеем номер физической страницы, отведенной под данную виртуальную. Если же бит при­сутствия равен нулю, то в дескрипторе мы будем иметь адрес виртуальной стра­ницы, расположенной сейчас во внешней памяти. Таким образом и осуществ­ляется трансляция виртуального адресного пространства на физическую память. Этот механизм трансляции проиллюстрирован на рис. 2.8.

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

 

 
 

Рис. 2.8. Страничный способ организации виртуальной памяти

При обращении к виртуальной странице, не оказавшейся в данный момент в оперативной памяти, возникает прерывание и управление передаётся диспетче­ру памяти, который должен найти свободное место. Обычно предоставляется первая же свободная страница. Если свободной физической страницы нет, то диспетчер памяти по одной из вышеупомянутых дисциплин замещения (LRU, LFU, FIFO, random) определит страницу, подлежащую расформированию или сохранению во внешней памяти. На её место он разместит ту новую виртуаль­ную страницу, к которой было обращение из задачи, но её не оказалось в опера­тивной памяти.

Напомним, что алгоритм выбирает для замещения ту страницу, на которую не было ссылки на протяжении наиболее длинного периода времени. Дисциплина LRU (least recently used) ассоциирует с каждой страницей время последнего её использования. Для замещения выбирается та страница, которая дольше всех не использовалась.

Для использования дисциплин LRU и LFU в процессоре должны быть соответствующие аппаратные средства. В дескрипторе страницы размещается бит обращения (подразумевается, что на рис. 2.8 этот бит расположен в последнем поле), и этот бит становится единичным при обращении к дескриптору.

Если объём физической памяти небольшой и даже часто требуемые страницы не удается разместить в оперативной памяти, то возникает так называемая «про­буксовка». Другими словами, пробуксовка – это ситуация, при которой загрузка нужной нам страницы вызывает перемещение во внешнюю память той страни­цы, с которой мы тоже активно работаем. Очевидно, что это очень плохое явле­ние. Чтобы его не допускать, желательно увеличить объём оперативной памяти (сейчас это стало самым простым решением), уменьшить количество параллель­но выполняемых задач либо попробовать использовать более эффективные дис­циплины замещения. В абсолютном большинстве современных ОС используется дисциплина замеще­ния страниц LRU как самая эффективная. Так, именно эта дисциплина исполь­зуется в OS/2 и Linux. Однако в такой ОС, как Windows NT, разработчики, желая сделать систему максимально независимой от аппаратных возможностей процессора, пошли на отказ от этой дисциплины и применили правило FIFO. А для того, чтобы хоть как-нибудь сгладить её неэффективность, была введена «буферизация» тех страниц, которые должны быть записаны в файл подкачки на диск1 или просто расформированы. Принцип буферирования прост. Прежде чем замещаемая страница действительно будет перемещена во внешнюю память или просто расформирована, она помечается как кандидат на выгрузку. Если в сле­дующий раз произойдет обращение к странице, находящейся в таком «буфере», то страница никуда не выгружается и уходит в конец списка FIFO. В противном случае страница действительно выгружается, а на её место в «буфере» попадает следующий «кандидат». Величина такого «буфера» не может быть большой, по­этому эффективность страничной реализации памяти в Windows NT намного ниже, чем у вышеназванных ОС, и явление пробуксовки начинается даже при сущест­венно большем объёме оперативной памяти.

В ряде ОС с пакетным режимом работы для борьбы с пробуксовкой использует­ся метод «рабочего множества». Рабочее множество – это множество «активных» страниц задачи за некоторой интервал То есть тех страниц, к которым было об­ращение за этот интервал времени. Реально количество активных страниц зада­чи (за интервал Т) все время изменяется, и это естественно, но, тем не менее, для каждой задачи можно определить среднее количество её активных страниц. Это среднее число активных страниц и есть рабочее множество задачи. Наблюдения за исполнением множества различных программ показали [28, 37, 49], что даже если Т равно времени выполнения всей работы, то размер рабочего множества часто существенно меньше, чем общее число страниц программы. Таким обра­зом, если ОС может определить рабочие множества исполняющихся задач, то для предотвращения пробуксовки достаточно планировать на выполнение толь­ко такое количество задач, чтобы сумма их рабочих множеств не превышала воз­можности системы.

Как и в случае с сегментным способом организации виртуальной памяти, стра­ничный механизм приводит к тому, что без специальных аппаратных средств он будет существенно замедлять работу вычислительной системы. Поэтому обычно используется кэширование страничных дескрипторов. Наиболее эффективным способом кэширования является использование ассоциативного кэша. Именно такой ассоциативный кэш и создан в 32-разрядных микропроцессорах i80x86. Начиная с i80386, который поддерживает страничный способ распределения па­мяти, в этих микропроцессорах имеется кэш на 32 страничных дескриптора. Поскольку размер страницы в этих микропроцессорах равен 4 Кбайт, возможно бы­строе обращение к 128 Кбайт памяти.

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

Первое – эта то, что страничная трансляция виртуальной памяти требует суще­ственных накладных расходов. В самом деле, таблицы страниц нужно тоже раз­мещать в памяти. Кроме этого, эти таблицы нужно обрабатывать; именно с ними работает диспетчер памяти.

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

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

 


Виртуальная память, распределение памяти.

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

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

Классификация методов распределения памяти представлена на следующем рисунке:

 

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

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

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

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

Распределение памяти разделами переменной величины

В этом случае память машины не делится заранее на разделы. Сначала вся память свободна. Каждой вновь поступающей задаче выделяется необходимая ей память. Если достаточный объем памяти отсутствует, то задача не принимается на выполнение и стоит в очереди. После завершения задачи память освобождается, и на это место может быть загружена другая задача. Таким образом, в произвольный момент времени оперативная память представляет собой случайную последовательность занятых и свободных участков (разделов) произвольного размера. На рисунке ниже показано состояние памяти в различные моменты времени при использовании динамического распределения. Так в момент t0 в памяти находится только ОС, а к моменту t1 память разделена между 5 задачами, причем задача П4, завершаясь, покидает память. На освободившееся после задачи П4 место загружается задача П6, поступившая в момент t3.

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

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

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

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

Перемещаемые разделы

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

Распределение памяти перемещаемыми разделами иллюстрирует следующий рисунок:

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

Распределение виртуальной памяти

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

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

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

Размер страницы обычно выбирается равным степени двойки: 512, 1024 и т.д., это позволяет упростить механизм преобразования адресов.

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

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

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

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

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

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

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

Сегментное распределение памяти представлено на следующем рисунке:

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

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

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

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

Недостатком данного метода распределения памяти является фрагментация на уровне сегментов и более медленное по сравнению со страничной организацией преобразование адреса.

Странично-сегментное распределение

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

 

Свопинг

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

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

Тест

ТЕСТ — «Управление памятью»

Выберите правильный ответ.

1. Учёт участков свободной памяти с помощью связного списка свободных/занятых блоков позволяет … a) находить в памяти наиболее долго занятые участки b) выделять участки памяти произвольных размеров c) освобождать память, занятую неактивными процессами 2. Использование виртуальной памяти в однопрограммном режиме при условии, когда размер программы существенно больше объема доступной оперативной памяти, приводит к … a) аварийному завершению b) перезапуске c) замедлению выполнения 3. Виртуальная память позволяет … a) загружать множество небольших программ, суммарный объем которых больше объема физической памяти b) отказаться от предоставления прикладным процессам оперативной памяти c) загружать программы, скомпилированные для другого процессора 4. Сегментная организация памяти … отдельно скомпилированных процедур a) упрощает компоновку b) невозможна без c) усложняет компоновку 5. При страничной организации памяти таблица страниц может размещаться … a) только в оперативной памяти b) только в процессоре c) в специальной быстрой памяти процессора и в оперативной памяти 6. При страничном сбое и отсутствии свободных блоков физической памяти операционная система должна … a) выбрать страницу-кандидат на удаление из памяти и сохранить удаляемую страницу на диске, если она претерпела изменения b) выбрать страницу, которая не изменялась, и сохранить удаляемую страницу на диске c) выбрать страницу-кандидат на удаление из памяти и сохранить копию удаляемой страницы в таблице страниц 7. Полная реализация алгоритма LRU (Least Recently Used) … a) теоретически невозможна b) практически невозможна c) возможна при использовании стековой организации таблицы страниц 8. Алгоритмы замещения страниц делятся на … a) глобальные b) региональные c) корпоративные 9. Страничная организация предназначена для … a) логического разделения программ и данных b) получения большого адресного пространства без приобретения дополнительной физической памяти c) облегчения совместного использования процедур, библиотек и массивов данных 10. Как называется модель, при которой распределение реальной памяти производится блоками постоянной длины? a) сегментная модель b) страничная модель c) статическая модель 11. Укажите какие виды адресов важны с точки зрения организации памяти? a) виртуальный адрес b) абсолютный адрес c) относительный адрес 12. Каким может быть размер одной страницы виртуальной памяти? a) 4Кб b) 4Гб c) ограничен размером виртуальной памяти 13. Что вносит наиболее существенный вклад в ускорение работы страничной памяти? a) программная реализация вычисления физических адресов страниц b) аппаратная поддержка загрузки физических страниц c) нет правильных вариантов 14. Если физическая память отображается на виртуальное адресное пространство нескольких процессов, то о нем говорят, что … a) она несовместно используется b) используется только виртуальная память c) она совместно используется 15. Место хранения команд и программ в ПК? a) оперативная память b) кэш-память c) гибкие магнитные диски 16. Основное назначение кэш-памяти (СОЗУ) в компьютере? a) архивирование данных b) считывание данных c) место хранения и обработки информации 17. Каков объем кэш-памяти второго уровня? a) 128Кбайт- 256 Кбайт b) 128Кбайт – 1-4Мбайт c) 2-3 Мбайт 18. Как называется набор чисел, о которых говорят как о виртуальных адресах? a) страничные блоки памяти b) виртуальная память c) память файла подкачки 19. Самый маленький блок памяти, которым оперирует Windows VMM? a) физическая память b) виртуальная память c) страничные блоки памяти 20. Виртуальные адреса спроецированы на файл подкачки, когда … a) диапазон виртуальных адресов согласуется с адресами в файле подкачки b) диапазон виртуальных адресов согласуется с адресами физической памяти c) диапазон виртуальных адресов согласуется с адресами виртуальной памяти

Ваш результат : правильные ответы из 20 вопросов.

Первенство технологических достижений двух основных версий UNIX


Лекции — Современные операционные системы
скачать (10543.7 kb.)

Доступные файлы (13):


содержание

Дополнительные материалы2.



Годы, версия системы

Характерные свойства

1982 System III

Именованные программные каналы

Очереди запуска

1983 System V

Хеш-таблицы

Кэши буферов и inodes

Семафоры

Разделяемая память

Очереди сообщений

1984 SVR2

Блокирование записей и файлов

Подкачка по требованию

Копирование по записи (write to copy)

1987 SVR3

Межпроцессные взаимодействия (IPC)

Разделение удаленных файлов (RFS)

Развитые операции обработки сигналов

Разделяемые библиотеки

Переключатель файловых систем (FSS)

Интерфейс транспортного уровня (TLI)

Возможности коммуникаций на основе потоков

1989 SVR4

Поддержка обработки в реальном времени

Классы планирования процессов

Динамически выделяемые структуры данных

Развитые возможности открытия файлов

Управление виртуальной памятью (VM)

Возможности виртуальной файловой системы (VFS)

Быстрая файловая система (BSD)

Развитые возможности потоков

Прерываемое ядро

Квоты файловых систем

Интерфейс драйвера с ядром системы

1989

Прекращение выпуска версий UNIX AT&T

Приведем описание новшеств, появляющихся в разных версиях операционной системы BSD и служащей характеристикой её достижений.

Годы, версия системы

Характерные свойства

1975 (1978) BSD

Текстовый редактор ex, впоследствии названый vi

Командный процессор C

1983 3BSD

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

Страничное замещение по требованию

1983 4.2BSD

Поддержка семейства сетевых протоколов TCP/IP

Поддержка работы в сетях, в т.ч. Ethernet

Эта версия обеспечила подключение к сети ARPANET

Файловая система fast.

1986-1990 4.3BSD

Сетевая файловая система NFS

Виртуальная файловая система VFS

Отладчик ядра

Более мощная поддержка сети

1993 4.4BSD

Виртуальная память как в Mach 2.5

Журналируемая файловая система USF

1992

Закрытие CSRG в Беркли (подразделения, разрабатывающего последние версии BSD UNIX)

Скачать файл (10543.7 kb.)


Как переместить виртуальную память вашего ПК на отдельный диск в Windows 10

Windows 10 использует файлы подкачки для хранения информации о простое, присутствующей в вашей оперативной памяти, на жестком диске, чтобы сохранить память для активных приложений и процессов. Эти файлы классифицируются как pagefile.sys на вашем основном диске. Виртуальную память можно переместить на отдельный диск, чтобы повысить производительность или разгрузить ввод-вывод с вашего диска.

Как переместить виртуальную память Windows 10 на отдельный диск

Чтобы переместить виртуальную память вашего ПК в Windows 10 на отдельный диск из-за нехватки памяти или по причинам производительности, выполните следующие действия:

Как изменить действия прокрутки Gmail на Android

  1. Откройте меню Пуск и введите дополнительные параметры системы.Нажмите на опцию View advanced system settings , чтобы продолжить.
  2. Щелкните меню «Настройки» на вкладке «Дополнительно», чтобы продолжить.
  3. Переключите вкладку на Advanced , щелкнув ее, как показано ниже.
  4. Снимите флажок с надписью Автоматически управлять размером файла подкачки для всех дисков . Эта функция включена по умолчанию в Windows 10, но для внесения изменений в виртуальную память на вашем ПК вам необходимо снять этот флажок.
  5. Вы можете запретить основному диску сохранять любые файлы подкачки и работать в качестве виртуальной памяти, но рекомендуется оставить основной диск в списке и добавить отдельный диск, так как это повысит производительность и продлит срок службы в случае каких-либо сбоев. Чтобы сохранить основной диск нетронутым, просто перейдите к шагу 7 после шага 4. Если вы все еще хотите удалить основной диск, щелкните параметр Нет файла подкачки и выберите Установить .
  6. Система предложит и сообщит вам, что это приведет к отключению файла подкачки на вашем ПК и может не записывать сведения об ошибке.Нажмите Да , чтобы продолжить.
  7. Просто выберите предпочтительный диск из перечисленных вариантов, выберите параметр Системный управляемый размер и нажмите Установить .
  8. Теперь вы можете видеть, что диск F: управляется системой как виртуальная память, а не как диск C:. Нажмите OK , чтобы продолжить.
  9. Щелкните Применить и выберите OK , чтобы завершить изменения. Теперь вам нужно перезагрузить компьютер, чтобы изменения вступили в силу.

Проверка виртуальной памяти на новом диске

  1. Откройте проводник, нажав Windows  клавиша  + E . Выберите диск, который вы указали для хранения виртуальной памяти.
  2. Щелкните вкладку Просмотр в верхнем левом углу окна Проводника.
  3. Выберите меню Options в верхней правой части окна.
  4. Перейдите на вкладку Просмотр , прокрутите вниз и снимите флажок Скрыть защищенные системные файлы (рекомендуется) , чтобы продолжить.
  5. Система спросит, хотите ли вы подтвердить это действие. Нажмите Да , чтобы подтвердить внесенные изменения.
  6. Выберите Применить и нажмите OK , чтобы выйти из меню «Параметры папки».

Теперь вы можете просматривать только что созданный файл pagefile.sys на вашем диске. Это означает, что выбранный вами диск успешно функционирует как виртуальная память вашего ПК.

Вы можете переместить виртуальную память вашего ПК в Windows 10 всего за несколько простых шагов.Это может указать дополнительный диск, который будет использоваться в качестве виртуальной памяти, тогда как основной может функционировать как аварийный дамп, или основной диск также может быть полностью отключен.

Как изменить размер виртуальной памяти в Windows 10

Источник: Windows Central

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

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

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

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

В этом руководстве по Windows 10 мы расскажем вам, как увеличить размер виртуальной памяти, чтобы повысить скорость отклика системы.

Как увеличить виртуальную память с помощью настроек

Чтобы настроить размер виртуальной памяти в Windows 10, выполните следующие действия:

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

  1. Открыть Настройки .
  2. Щелкните Система .
  3. Нажмите О .
  4. В разделе «Сопутствующие параметры» выберите параметр Информация о системе .

    Источник: Windows Central
  5. Нажмите «Дополнительные параметры системы» на левой панели.

    Источник: Windows Central
  6. Перейдите на вкладку Дополнительно .
  7. В разделе «Производительность» нажмите кнопку Настройки .

    Источник: Windows Central
  8. Перейдите на вкладку Дополнительно .
  9. В разделе «Виртуальная память» нажмите кнопку Изменить .

    Источник: Windows Central
  10. Снимите флажок Автоматически управлять размером файлов подкачки для всех дисков .
  11. Выберите параметр Нестандартный размер .
  12. Укажите начальный и максимальный размер файла подкачки в мегабайтах.

    Источник: Windows Central

    Подсказка: Размер виртуальной памяти уникален для каждого устройства, и его нельзя обобщить. Однако обычно рекомендуется использовать число, которое в полтора раза больше общей доступной памяти для «Начального размера» и в три раза больше доступной памяти для «Максимального размера», когда это возможно.

  13. Нажмите кнопку Установить .
  14. Нажмите кнопку OK .
  15. Нажмите кнопку OK еще раз.
  16. Перезагрузите устройство.

После выполнения этих шагов вы должны заметить повышение производительности при навигации в Windows 10, а также при одновременном запуске нескольких приложений.

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

Как увеличить виртуальную память с помощью командной строки

Чтобы изменить размер файла подкачки с помощью командной строки, выполните следующие действия:

  1. Открыть Запустить .
  2. Найдите Командная строка , щелкните правой кнопкой мыши верхний результат и выберите параметр Запуск от имени администратора .
  3. Введите следующую команду, чтобы узнать текущее состояние файла подкачки, и нажмите Введите :

    wmic список файлов подкачки / формат: список

    Источник: Windows Central
  4. Введите следующую команду для переключения формы управления на пользовательскую виртуальную память и нажмите Введите :

    wmic computersystem, где name="%computername%" set AutomaticManagedPagefile=false

    Источник: Windows Central
  5. Введите следующую команду, чтобы установить начальный и максимальный размер виртуальной памяти, и нажмите Введите :

    wmic набор файлов подкачки, где имя = "C:\\файл подкачки.sys" установить InitialSize = YOUR-INIT-SIZE,MaximumSize = YOUR-MAX-SIZE

    В этом примере для файла подкачки задается значение «9216» и «12288» мегабайт для начального и максимального размера:

    wmic pagefileset, где name="C:\\pagefile.sys" set InitialSize=9216,MaximumSize=12288

    Источник: Windows Central
  6. Введите следующую команду, чтобы перезагрузить компьютер, и нажмите Enter:

    выключение -r -t 00

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

Если вам больше не нужно использовать нестандартный размер виртуальной памяти, вы всегда можете отменить изменения и разрешить Windows 10 управлять этой функцией с помощью следующей команды: wmic computersystem, где name="%computername%" set AutomaticManagedPagefile=true и перезагрузка вашего устройства.

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

Хотя в Windows 10 можно отключить виртуальную память, даже если у вас большой объем системной памяти, отключать эту функцию не рекомендуется. Обычно, если вы отключите файл подкачки, некоторые приложения могут перестать работать, некоторые системные функции могут работать неэффективно, и вы можете столкнуться со странным поведением.

Дополнительные ресурсы Windows 10

Для получения дополнительных полезных статей, материалов и ответов на распространенные вопросы о Windows 10 посетите следующие ресурсы:

Место для роста

Вот как Forza Horizon 5 может быть еще лучше

Forza Horizon 5 — одна из лучших игр 2021 года и одна из лучших гоночных игр, в которые вы можете играть.Это, конечно, не идеально, с множеством областей, которые можно улучшить. Вот пять вещей, которые Forza Horizon 5 могла бы сделать лучше.

Как переместить виртуальную память на другой диск в Windows 10

В Windows 10 виртуальная память (файл подкачки) — это функция, которая сохраняет неиспользуемые измененные страницы в ОЗУ (оперативной памяти) на жестком диске, что позволяет выделить больше физической памяти для более часто используемых процессов и приложений. Использование этого процесса помогает повысить производительность и снижает вероятность того, что система заблокируется, если ей не хватит памяти.

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

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

В этом руководстве по Windows 10 мы расскажем, как переместить виртуальную память на другой диск.

Как переместить виртуальную память на другой диск

Чтобы переместить файл виртуальной памяти Windows 10 на другой диск, выполните следующие действия:

  1. Открыть Настройки .
  2. Щелкните Система .
  3. Нажмите О .
  4. В разделе «Сопутствующие параметры» справа выберите параметр Информация о системе .

    Источник: Windows Central
  5. Выберите параметр Дополнительные параметры системы справа.

    Источник: Windows Central
  6. В разделе «Производительность» нажмите кнопку Настройки .

    Источник: Windows Central
  7. Перейдите на вкладку Дополнительно .
  8. В разделе «Виртуальная память» нажмите кнопку Изменить .

    Источник: Windows Central
  9. Снимите флажок Автоматически управлять размером файла подкачки для драйверов .
  10. В разделе «Размер файла подкачки для каждого диска» выберите диск C: .
  11. Выберите параметр Нет файла подкачки .

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

  12. Нажмите кнопку Установить .

    Источник: Windows Central
  13. Нажмите кнопку Да .
  14. Выберите диск, который вы хотите использовать для файла подкачки.
  15. Выберите параметр Системный управляемый размер , например, E: .
  16. Нажмите кнопку Установить .

    Источник: Windows Central
  17. Нажмите кнопку OK .
  18. Нажмите кнопку Применить .
  19. Нажмите кнопку OK .
  20. Перезагрузите компьютер.

После выполнения этих шагов Windows 10 автоматически создаст новый файл pagefile.sys, содержащий содержимое виртуальной памяти, в новом расположении для повышения производительности.

Как правило, файл pagefile.sys следует перемещать только на другой диск, производительность которого равна или выше, чем у основного диска с установкой Windows 10.Например, если вы используете традиционный жесткий диск с вращающимися пластинами, вы можете использовать другой жесткий диск (HDD) или твердотельный накопитель (SSD) для хранения виртуальной памяти. Тем не менее, если вы используете SSD, было бы не очень логично перемещать файл подкачки на механический диск. В этом случае лучше всего установить Windows 10 на SSD для повышения производительности, а не перемещать виртуальную память.

В случае, если эта конфигурация вам больше не нужна или она не работает должным образом, вы можете отменить изменения, используя те же инструкции, но на шаге №.9 , обязательно установите флажок Автоматически управлять размером файла подкачки для драйверов и перейдите к шагу № 16 и остальным шагам.

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

Подтверждение виртуальной памяти

Если вы хотите убедиться, что виртуальная память работает на новом диске, выполните следующие действия:

  1. Открыть Проводник .
  2. Нажмите Этот компьютер на левой панели.
  3. В разделе «Устройства и диски» дважды щелкните, чтобы открыть диск, на котором сейчас хранится файл подкачки.
  4. Перейдите на вкладку Просмотр .
  5. Установите флажок Скрытые элементы .
  6. Нажмите кнопку Опции .

    Источник: Windows Central
  7. Перейдите на вкладку Просмотр .
  8. В разделе «Дополнительные параметры» снимите флажок Скрыть защищенные системные файлы .

    Источник: Windows Central
  9. Нажмите кнопку OK .
  10. Нажмите кнопку Применить .
  11. Нажмите кнопку OK .
  12. Подтвердите наличие «pagefile.sys».

    Источник: Windows Central

После выполнения этих шагов вы узнаете, использует ли Windows 10 новое расположение для виртуальной памяти.

Если вы хотите снова скрыть системные файлы (рекомендуется), вы можете воспользоваться той же инструкцией, но на шаг №1.5 установите флажок Скрытые элементы , а на шаге № 8 установите флажок Скрыть защищенные системные файлы .

Дополнительные ресурсы Windows 10

Для получения дополнительных полезных статей, материалов и ответов на распространенные вопросы о Windows 10 посетите следующие ресурсы:

Общие сведения о виртуальной памяти и свободном хранилище (куча)

Андрей Миля

Виртуальная память — поиск «под капотом»

Каждое приложение, работающее в вашей операционной системе, имеет свое уникальное адресное пространство, которое оно видит как непрерывный блок. памяти.На самом деле память физически не непрерывна (она фрагментирована), это только впечатление от операционной системы. система дает каждой программе, и это называется виртуальной памятью. Размер виртуальная память — это максимальный размер максимального размера, который ваш компьютер может адрес с помощью указателей (обычно на 32-разрядном процессоре каждый процесс может адресовать 4 ГБ памяти). Возникает естественный вопрос: что происходит, когда процесс хочет получить доступ к большему объему памяти, чем ваша машина? физически имеет доступную оперативную память? Благодаря наличию виртуального адресного пространства части жесткого диска могут отображаться вместе с реальной памятью. и процесс не должен ничего знать о том, является ли адрес физически хранится в оперативной памяти или на жестком диске.Операционная система поддерживает таблицу, где виртуальные адреса сопоставляются с соответствующими физическими адресами, которые используются всякий раз, когда делается запрос на чтение или запись в адрес памяти.

Как правило, в каждом процессе виртуальная память, доступная этому процессу, назвал свое адресное пространство . Адресное пространство каждого процесса обычно организовано в 6 разделов, которые показаны на следующем рисунке: раздел среды — используется для хранения переменные окружения и командная строка аргументы; стек, используемый для хранения памяти для аргументов функции, возвращаемых значений и автоматические переменные; куча (свободное хранилище), используемая для динамического распределения, два разделы данных (для инициализированных и неинициализированных статических и глобальные переменные) и текстовую часть, где находится фактический код. хранится.

Куча

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


Когда new вызывается, он начинает искать свободный блок памяти, который соответствует размеру вашего запроса. Предположим, что такой Блок памяти найден, он помечается как зарезервированный и возвращается указатель на это место.Существует несколько алгоритмов выполнить это, потому что необходимо найти компромисс между сканированием всей памяти для нахождения наименьшего свободного блока больше, чем размер вашего объекта, или возвращает первый, где требуется память. Для того, чтобы улучшить скорость при получении блока памяти свободная и зарезервированная области памяти сохраняются в структуре данных, похожей на двоичные деревья. называется кучей. Различные алгоритмы поиска свободной памяти выходят за рамки охват этой статьи, и вы можете найти их подробное обсуждение в D.Монография Кнута «Искусство компьютерного программирования» — том 1, основы Алгоритмы). Эти накладные расходы в сочетании с риском утечки памяти заставляют использовать автоматическую память (распределенную на стек) предпочтительнее, когда это возможно, и выделение невелико.

Сколько виртуальной памяти вы получаете

Несмотря на то, что каждое приложение имеет свои собственные 4 ГБ (в 32-разрядных системах) виртуального памяти, это не обязательно означает, что ваша программа действительно может использовать всю эту объем памяти. Например, в Windows выделяются верхние 2 ГБ этой памяти. к ядру операционной системы и недоступны для процесса.(Поэтому любой указатель, начинающийся с 0x8xxxxxxx, недоступен в пространство.) В Linux верхний 1 ГБ адресное пространство ядра. Как правило, операционные системы предоставляют средства для изменение этих значений по умолчанию (например, /3GB включить винду. Однако редко когда вы действительно хотите или нужно сделать так.

Фрагментация адресного пространства

Другая проблема с распределением памяти заключается в том, что если вы выделяете память в несмежных блоков, со временем образуются «дыры». Например, если вы выделить 10 КБ и взять его из середины 20-мегабайтного куска памяти, тогда вы больше не сможете выделять эти 20 МБ на один блок памяти.Делая это достаточное количество раз приведет к тому, что вы больше не сможете выделить 20 МБ одновременно. Это может привести к сбоям выделения даже при наличии свободной памяти. Обратите внимание, что это верно даже для виртуальной памяти, потому что важно то, что вам нужен непрерывный блок адресов, а не непрерывный блок физической памяти.

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

Связанные статьи

Динамический Распределение памяти, часть 1: Расширенное управление памятью

Динамическое Распределение памяти, часть 3: Индивидуальные распределители с оператором New и Оператор Удалить

Динамический Распределение памяти, часть 4: распространенные проблемы управления памятью в С++

Увеличить виртуальную память сверх рекомендуемого максимума

Резюме

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

Что такое виртуальная память?

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

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

Процедура

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

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

Виртуальная память увеличивается путем доступа к системным настройкам и последующей настройки параметров виртуальной памяти.
  1. Доступ к настройкам свойств системы.
    1. Перейти к Пуск > Выполнить .
    2. Введите sysdm.cpl и нажмите OK .
    3. В диалоговом окне «Свойства системы» перейдите на вкладку «Дополнительно».
    4. В разделе «Производительность» щелкните Настройки .
    5. В диалоговом окне «Параметры производительности» щелкните вкладку «Дополнительно».
  2. Настройте параметры виртуальной памяти.
      Примечание: 
    Раздел  Виртуальная память  находится в нижней части диалогового окна.Значение, следующее за  Общий размер файла подкачки для всех дисков:  — это размер в МБ виртуальной памяти системы. 
    1. В разделе Виртуальная память нажмите кнопку Изменить.
    2. В разделе «Размер файла подкачки для выбранного диска» выберите параметр «Нестандартный размер».
    3. Установите Начальный размер (МБ) и Максимальный размер (МБ).
        Примечание: 
      Это определяет начальный (базовый) размер дискового пространства, которое Windows выделяет для использования исключительно для целей виртуальной памяти.Начальный размер может быть согласован с максимальным размером, или оба могут быть увеличены. Увеличение максимального размера позволяет экспортировать большие карты, которые обычно не экспортируются, если настройки имеют рекомендуемый размер. 
        Примечание: 
      Microsoft рекомендует устанавливать виртуальную память не менее чем в 1,5 и не более чем в 3 раза больше объема оперативной памяти компьютера. Владельцам мощных ПК (большинству пользователей UE/UC), скорее всего, потребуется не менее 2 ГБ ОЗУ, поэтому виртуальную память можно установить до 6 144 МБ (6 ГБ).
    4. Нажмите кнопку Установить и нажмите OK , чтобы закрыть диалоговые окна.

      Если параметр виртуальной памяти слишком мал и вся виртуальная память используется, Windows может выдать предупреждение.

       

Сопутствующая информация

Последняя публикация: 23.06.2016

Код статьи: 000011346

Программное обеспечение: ArcMap 10

Полезен ли этот контент?

Virtual Memory System — обзор

6.2.6 Многоуровневые политики управления памятью

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

Каждый уровень многоуровневой системы памяти можно охарактеризовать четырьмя элементами:

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

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

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

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

Цель многоуровневой системы памяти состоит в том, чтобы первичное устройство обслуживало как можно больше ссылок в своей строке ссылок, тем самым сводя к минимуму количество ссылок в строке ссылок вторичного устройства.В примере с многоуровневым диспетчером памяти эта цель означает минимизацию количества исключений, связанных с отсутствующими страницами. Можно было бы ожидать, что увеличение емкости основного устройства гарантирует снижение (или, по крайней мере, не увеличение) количества исключений, связанных с отсутствующими страницами. Удивительно, но это ожидание не всегда оправдывается. В качестве примера рассмотрим политику удаления страниц по принципу «первым поступил – первым обслужен» (FIFO) , в которой для удаления выбирается страница, которая дольше всех находилась на основном устройстве.(То есть первая загруженная страница будет первой страницей, которая будет удалена. Эта политика привлекательна тем, что ее легко реализовать, управляя страницами основного устройства как циклическим буфером.) Если ссылочная строка равна 0 1 2 3 0 1 4 0 1 2 3 4, и основное устройство запускается пустым, то основное устройство емкостью три страницы столкнется с девятью исключениями отсутствия страниц, а основное устройство емкостью четыре страницы испытает десять исключений. исключения с отсутствующими страницами, как показано в таблицах 6.1 и 6.2:

Таблица 6.1. Политика удаления страницы FIFO с трехстраничным первичным устройством

9077 6 — 9 9077 0 9077 0 9077 0 9077 9 9 9 9 — 9 9 9 9 9 9 9 9 9 9
Time 1 2 3 4 5 6 7 8 9 10 10 10 11 12
Ссылка строка 0 1 2 3 0 1 4 0 1 2 3 4
содержание основного устройства 0 0 0 3 3 3 4 4 4 4 4 Страниц принесено
1 1 1 0 2
2 2 2 1 1 1 1 1 3
Удалить 0 1 2 3 0
0 1 3 0 1 4 — 9079 2 3 9

Таблица 6.2. Политика для удаления страницы FIFO с четырехстраничным первичным устройством

72 776 — 9077 6 10
Time 1 2 3 4 5 6 7 8 9 10 11 12
Ссылка строка 0 1 2 3 0 1 4 0 1 2 3 4
содержание основного устройства 0 0 0 0 0 0 4 4 4 4 3 Страниц принесено
1 1 1 1 1 1 0 0 0 0
2 2 2 2 2 2 1 1 1
3 3 3 3 3 3 2 2
Удалить 0 1 2 3 4 0
принесет 0 1 2 3 4 0 1 2 3 4

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

Целью многоуровневой политики управления памятью является выбор для удаления страницы, которая сведет к минимуму количество исключений отсутствия страниц в будущем. Если бы мы знали будущую ссылочную строку, мы могли бы заглянуть вперед, чтобы увидеть, какие страницы будут затронуты.Оптимальная политика всегда будет выбирать для удаления страницу, которая не нужна дольше всего. К сожалению, эта политика неосуществима, поскольку требует прогнозирования будущего. Однако если мы запустим программу и отследим ее ссылочную строку, впоследствии мы сможем просмотреть эту ссылочную строку, чтобы определить, сколько исключений отсутствия страниц возникло бы, если бы мы использовали эту оптимальную политику. Затем этот результат можно сравнить с политикой, которая фактически использовалась, чтобы определить, насколько она близка к оптимальной.Эта невыполнимая политика известна как оптимальная (OPT) политика удаления страниц . В таблицах 6.3 и 6.4 показан результат применения политики удаления страниц OPT к той же строке ссылок, что и раньше.

Таблица 6.3. Политика удаления оптимальной страницы с тремя страницами первичного устройства

9 0776 — 9 9 2 9
Время 1 2 3 4 5 6 7 8 9 10 10 10 10 11 12
Ссылка строка 0 1 2 3 0 1 4 0 1 2 3 4
содержание основного устройства 0 0 0 0 0 0 0 0 0 2 3 Страниц принесено
1 1 1 1 1 1 1 1 1 1
2 3 3 3 4 4 4 4 4
Удалить 2 3
0 3 4 — 9079 2 3 7

Таблица 6.4. Политика рельсификации «Оптимумирование-удаление с четырехстраничного первичного устройства

9 0776 6
Time 1 2 3 4 5 6 7 8 9 9 9 9 9 9 9 10 11 12
Ссылка строка 0 1 2 3 0 1 4 0 1 2 3 4
содержание основного устройства 0 0 0 0 0 0 0 0 0 0 3 Страниц принесено
4 1 1 1 1 1 1 1 1 1 1
2 2 2 2 2 2 2 2 2
3 3 3 4 4 4 4 4
Удалить 3 0
Принесите 0 1 2 3 4 3

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

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

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

Таблица 6.5. Политика удаления страницы LRU с тремя страницами первичного устройства

9 9 9074 9 9077 0 9 9077 —
Time 1 2 3 4 5 6 7 8 9 10 11 12
Ссылка строка 0 1 2 3 0 1 4 0 1 2 3 4
содержание основного устройства 0 0 0 0 0 0 0 0 0 0 3 Страниц принесено
4 1 1 2 1 1 1 1 1 1 1
2 3 3 3 4 4 4 2 2
Удалить 1 2 3 0 1 1 2 3 1 4 2 3 4 9

Таблица 6.6. Политика удаления страницы LRU с четырехстраничного первичного устройства

4 2 9 9 0776 8
Time 1 2 3 4 5 6 7 8 9 10 11 12
Ссылка строка 0 1 2 3 0 1 4 0 1 2 3 4
содержание основного устройства 0 0 0 0 0 0 0 0 0 0 0 Страниц принесено 1 1 1 1 1 1 1 1 1 1
2 2 2 2 4 2 2 2 2
3 3 3 3 4 4 4 3
Удалить 2 4 0
Принесите 0 1 4 3 4

Для этой ссылочной строки LRU лучше, чем FIFO для основного запоминающего устройства размера 4, но не так хорошо, как политика OPT.И для политики LRU, и для политики OPT количество перемещений страниц монотонно не уменьшается с размером основного устройства; эти два алгоритма избегают аномалии Белади по неочевидной причине, которая будет объяснена в разделе 6.2.7.

Наиболее полезные алгоритмы требуют, чтобы новая страница была единственной страницей, которая перемещается, и чтобы только одна страница удалялась. Алгоритмы, обладающие этим свойством, называются алгоритмами спроса . FIFO, LRU и некоторые алгоритмы, реализующие политику OPT, являются алгоритмами запроса.Если какая-либо другая страница перемещается в первичную память, говорят, что алгоритм использует перед подкачкой , что является одной из тем раздела 6.2.9.

Как видно выше, LRU не так хорош, как политика OPT. Поскольку он смотрит на историю, а не на будущее, иногда он выбрасывает точно не ту страницу (примером может служить перемещение страницы по ссылке № 11 в четырехстраничной памяти). В качестве более экстремального примера, программа, которая выполняется сверху вниз через виртуальную память, которая больше, чем основное устройство, всегда будет вытеснять точно не ту страницу.Рассмотрим первичное устройство емкостью четыре страницы, которое является частью виртуальной памяти, содержащей пять страниц, управляемых с помощью LRU (буква «F» означает, что эта ссылка вызывает исключение отсутствия страницы):

F
Строка ссылки 0 1 2 3 4 0 1 2 3 4 0 1 2
F F F F F F F F F F F F

с одного конца на другой, каждая ссылка на страницу приведет к перемещению страницы.Если мы начнем с пустого основного устройства, ссылки на страницы с 0 по 3 приведут к перемещению страниц. Ссылка на страницу 4 также приведет к перемещению страницы, при котором LRU удалит страницу 0, поскольку страница 0 использовалась наименее недавно. Следующая ссылка на страницу 0 также приведет к перемещению страницы, что приведет к тому, что LRU удалит страницу 1, поскольку она использовалась в последнее время. Как следствие, следующая ссылка на страницу 1 приведет к перемещению страницы, замене страницы 2 и так далее. Короче говоря, каждый доступ к странице приведет к перемещению страницы.

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

Посмотрим, как МРУ тарифа на надуманный пример, который дал LRU столько неприятностей:

  • 9 0 1
  • 6 3 3 4 6 F
    2 0 1 2 3 4 0 1 2
    4-страница первичной Устройство F F F F F F F F 9079 F
    0
    0

    Начальные ссылки на страницы 0-3 приводят к движениям страницы, которые заполняют пустые первичные устройство.Первая ссылка на страницу 4 также приведет к перемещению страницы, заменив страницу 3, поскольку страница 3 использовалась в последнее время. Следующая ссылка на страницу 0 будет иметь значение , а не , что приведет к исключению отсутствия страницы, поскольку страница 0 все еще находится на основном устройстве. Точно так же последующие ссылки на страницы 1 и 2 не приведут к перемещению страниц. Вторая ссылка на страницу 3 приведет к перемещению страницы, заменив страницу 2, но тогда будет три ссылки, которые не требуют перемещения страницы.Таким образом, с политикой удаления страниц MRU наше надуманное приложение будет сталкиваться с меньшим количеством исключений, связанных с отсутствующими страницами, чем с политикой удаления страниц LRU: в устойчивом состоянии MRU приведет к перемещению одной страницы за итерацию цикла.

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

    Windows 10: настройка виртуальной памяти

    Опубликовано автором Mel Hawthorne 1 комментарий

    Компьютеры используют два основных типа памяти: оперативную память и хранилище. Оперативная память является быстрой и дорогой и используется для хранения данных, используемых в настоящее время запущенными программами. Хранилище, обычно в виде жесткого диска или твердотельного накопителя, медленнее и дешевле, чем ОЗУ, и используется для хранения данных в течение длительного времени. Используя быструю оперативную память для хранения данных используемых в настоящее время программ, они могут загружать данные быстрее.Если на вашем компьютере недостаточно оперативной памяти для загруженных в данный момент программ, он использует виртуальную память в качестве временной временной меры.

    Виртуальная память — это часть вашего накопителя, выделенная для использования подкачки данных, хранящихся в ОЗУ, когда ОЗУ заполнено. Использование пространства виртуальной памяти влияет на производительность. Доступ к любым данным, перемещенным туда, возможен только на более медленных скоростях жесткого диска. Это влияние на производительность по-прежнему предпочтительнее, чем полное отсутствие виртуальной памяти, потому что это означало бы простое удаление данных из ОЗУ, когда оно слишком заполнено.

    Итак, виртуальная память — это хорошо, но как настроить объем виртуальной памяти в вашей системе? Сначала вам нужно открыть Панель управления и перейти в «Панель управления\Система и безопасность\Система». Нажмите «Дополнительные параметры системы» в левой части страницы. В новом окне свойств системы перейдите на вкладку «Дополнительно» и нажмите кнопку «Настройки» в поле «Производительность».

    В окне «Параметры производительности» перейдите на вкладку «Дополнительно» и нажмите «Изменить» в поле «Виртуальная память».Теперь откроется окно конфигурации виртуальной памяти. Отсюда вы можете настроить объем дискового пространства на каждом из ваших жестких дисков, выделенного для использования виртуальной памяти. Вам просто нужно снять флажок «Автоматически управлять размером файла подкачки для всех дисков», а затем выбрать собственный размер для каждого диска.

    Как правило, для использования в качестве виртуальной памяти следует выделить около 4 ГБ дискового пространства, этого будет более чем достаточно для любой разумной рабочей нагрузки. Windows рекомендует как минимум 800 МБ, так как это позволяет сохранять отчеты об ошибках при сбоях и синих экранах.Не устанавливайте для своей системы значение ниже рекомендуемого, так как вы рискуете проблемами с производительностью при более высоких рабочих нагрузках. Стоит отметить, что ваш компьютер не использует эту виртуальную память, пока его фактическая оперативная память не будет израсходована.

    Настройте объем виртуальной памяти на вашем компьютере.

    Добавить комментарий

    Ваш адрес email не будет опубликован.