Виртуальная память, страничная организация и сегментация
| English | Русский |
|---|---|
| pages/ˈpeɪdʒɪz/ | страницы |
| paging/ˈpeɪdʒɪŋ/ | страничная пересылка |
| segmentation/ˌseɡmənˈteɪʃn/ | сегментация |
| virtual address space/ˈvɜːtʃuːəl əˈdres speɪs/ | пространство виртуальных адресов |
| frames/freɪmz/ | рамками |
| page table/peɪdʒ ˈteɪbl/ | таблица страниц |
| page fault/peɪdʒ fɒlt/ | сбой страницы |
| swap file/swɒp faɪl/ | файл подкачки |
| thrashing/ˈθræʃɪŋ/ | thrashing (черепаха) |
Индикатор диска, означающий, что машина сдалась
- Откройте слишком много приложений на машине с нехваткой памяти, и произойдет нечто характерное. Всё замедляется почти до остановки, а индикатор диска перестает мигать и остается включенным.
- Процессор не занят. Он ожидает, потому что данные, необходимые каждой программе, находятся на диске, и загрузка одной страницы вытесняет другую, которая понадобится чуть позже.
- Машина ничего не делает, кроме перемещения страниц. У нее достаточно работы и достаточно памяти, чтобы делать ни то, ни другое.
- Этот урок посвящен виртуальной памяти, тому, как постраничная организация и сегментация ее обеспечивают, и тому, как тот же механизм, который делает память больше, может сделать машину бесполезной.
Виртуальное адресное пространство
- Каждому процессу выделяется собственное виртуальное адресное пространство: чистый, непрерывный диапазон адресов, начинающийся с нуля, который ОС отображает в любое место, где реально находятся данные.
- Из этого следуют три вещи. Каждый процесс видит простое приватное пространство и не должен знать о том, что еще запущено. Процессы защищены друг от друга, так как один не может обратиться к адресу в пространстве другого. А общий объем используемой памяти может превышать физическую ОЗУ, поскольку ее часть хранится на диске.
- Эта изоляция является границей безопасности в той же мере, что и удобством.
Преимущество виртуальной памяти заключается в том, что она:
Виртуальная память предоставляет каждому процессу личное пространство и позволяет рабочему множеству превышать установленную ОЗУ за счет использования диска.
Чего достигает предоставление каждому процессу виртуального адресного пространства? Выберите все подходящие варианты.
Виртуальная память обеспечивает простоту, изоляцию и объем. Это стоит скорости, поскольку часть памяти фактически находится на диске.
Постраничная организация (Paging)
- Виртуальное пространство делится на фиксированные по размеру страницы; физическая память — на кадры того же размера. Таблица страниц фиксирует, какой кадр в данный момент содержит каждую страницу.
- Когда процесс обращается к адресу, аппаратное обеспечение ищет страницу в таблице и находит кадр. Если страница не находится в ОЗУ, это ошибка обращения к странице (page fault).
- При ошибке обращения к странице ОС считывает её из файла подкачки на диске в свободный кадр. Если нет свободного кадра, нужно сначала вытеснить страницу, записав её обратно на диск, если она была изменена.

Страницы и кадры одинакового размера, соединенные таблицей
При страничной организации память делится на:
Пaged-память использует страницы и кадры фиксированного размера, связанные таблицей страниц. (Переменные размеры — это сегментация.)
Ошибка обращения к странице (page fault) возникает, когда:
Обращаемая страница не находится ни в одном кадре, поэтому ОС извлекает её из файла подкачки (вытесняя другую страницу при необходимости).
Разобранное решение: что происходит при ошибке обращения к странице
- Процесс обращается к адресу, страница которого не находится в ОЗУ. Опишите, что делает ОС. [4]
- Аппаратное обеспечение обнаруживает отсутствие страницы и вызывает прерывание ошибки обращения к странице, после чего процесс блокируется.
- ОС находит свободный кадр; если его нет, она выбирает страницу для замены и записывает её обратно в файл подкачки, если она была модифицирована.
- Она считывает необходимую страницу из файла подкачки в этот кадр и обновляет таблицу страниц.
- Процесс возвращается в состояние готовности, и инструкция повторяется. Четыре шага, четыре балла, и обратите внимание, что процесс был заблокирован на протяжении всего времени.
Что происходит при ошибке обращения к странице (page fault)?
Пройдите через ошибку страницы. Когда программа обращается к странице, которой нет в ОЗУ, ОС тихо подгружает её с диска и обновляет таблицу страниц — так программа видит больше памяти, чем физически существует.
Расставьте действия ОС при ошибке обращения к странице по порядку.
Обнаружение и блокировка, освобождение места, загрузка, запись, повторение. Ошибка обращения к странице — это нормальный механизм, а не сбой.
Тряска (Thrashing)
- Выбор страницы для замены имеет значение, потому что неправильный выбор означает, что она снова понадобится немедленно.
- Когда ОЗУ недостаточно для рабочего набора запущенных процессов, почти каждое обращение вызывает ошибку обращения к странице, и каждая ошибка вытесняет страницу, которая требуется снова тут же.
- Система затем тратит почти всё время на перемещение страниц вместо выполнения инструкций. Это тряска или тряска диска, и именно это состояние описано в начале этого урока.
- Лечение — это больше ОЗУ или меньше процессов; более быстрый процессор совершенно не помогает, потому что загружен не процессор.
Машина практически останавливается, а диск работает постоянно. Что поможет исправить ситуацию?
Это трещинг: почти каждое обращение вызывает ошибку, и процессор ожидает. Процессор не является загруженным компонентом, поэтому его ускорение ничего не изменит.
Сегментация
- Сегментация делит память на логические сегменты переменной длины, соответствующие структуре самой программы: код, стек, куча, большой массив данных.
- Поскольку сегмент является логической единицей, он может иметь собственные права доступа: сегмент кода может быть только для чтения и исполняемым, стек — для чтения/записи и неисполняемым.
- Противопоставление, которое ожидается на экзамене: страницы имеют фиксированный размер и не имеют смысла для программы; сегменты имеют переменный размер и соответствуют логическим частям программы. Многие реальные системы комбинируют оба подхода, используя постраничную организацию внутри сегментов.

Сегменты — это части самой программы, а не равные куски
Соотнесите каждый термин управления памятью с его значением.
Paging = фиксированные страницы; сегментация = логические переменные единицы; ошибка обращения к странице запускает обмен; слишком много ошибок = трещинг.
Сегментация делит память на логические единицы переменного размера (код, стек, куча), каждая со своими правами доступа, тогда как paged-память использует страницы фиксированного размера.
Сегменты соответствуют логической структуре программы; страницы — это однородные блоки фиксированного размера — некоторые системы объединяют оба подхода.
В отличие от страниц, которые все одинакового размера, сегменты имеют ____ размер и соответствуют логическим частям программы.
Сегмент — это код, стек или куча, поэтому он может иметь собственные права доступа. Страница — это физическое деление без смысла для программы.
Разобранное решение: постраничная организация против сегментации
- Назовите два отличия между постраничной организацией и сегментацией. [2]
- Страницы всегда фиксированного размера, определяемого системой; сегменты имеют переменный размер, определяемый логическими частями программы.
- Страница — это чисто физическое деление без смысла для программы; сегмент соответствует логической единице, такой как код или стек, и ему можно назначить собственные права доступа.
- Третье при необходимости: постраничная организация может оставлять незаполненное пространство внутри последней страницы выделения, тогда как сегментация оставляет пустые промежутки неиспользуемого пространства между сегментами.
Потерянные баллы
- Виртуальная память не создает память. Она позволяет общему объему превысить физическую ОЗУ, удерживая часть данных на диске ценой обращений к диску.
- Ошибка обращения к странице — это не ошибка. Это нормальный механизм загрузки страницы.
- Тряска — это Spend больше времени на обмен данными, чем на выполнение, и исправление заключается в большей ОЗУ или меньшем количестве процессов, никогда в более быстром процессоре.
- Фиксированный размер против переменного размера, логически значимого — это разница между постраничной организацией и сегментацией. Назовите обе половины.
Вы поняли
- Виртуальное адресное пространство предоставляет каждому процессу приватный непрерывный диапазон, защищает процессы друг от друга и позволяет используемой памяти превышать физическую ОЗУ.
- Постраничная организация: фиксированные по размеру страницы, отображаемые в кадры с помощью таблицы страниц; ошибка обращения к странице блокирует процесс, пока ОС при необходимости вытесняет страницу, загружает данные из файла подкачки, обновляет таблицу и повторяет операцию.
- Тряска — это spend больше времени на обмен данными, чем на выполнение; исправьте это большей ОЗУ или меньшим количеством процессов.
- сегментация использует переменного размера сегменты, соответствующие логическим частям программы, каждый со своими правами доступа; во многих системах выполняется пагинация внутри сегментов