4

Я просто читал Operating System Principles by Silberschatz et al Когда натолкнулся на пейджинг в управлении памятью.Я немного смущен этим.
В нем говорится, что физическая память(я предполагаю, что это ОЗУ) разделена на фреймы, а логическая память - на страницы. CPU генерирует логические адреса, содержащие номер страницы и смещение. Этот номер страницы используется для получения номера кадра из таблицы страниц, которая дает базовый адрес
поэтому физический адрес вычисляется как base+offset.
Мой вопрос:

  • поддерживается ли таблица страниц для каждого процесса?
  • Я логично думаю, что ответом будет « yes как каждый процесс должен отображать свои страницы в фреймы. Я могу ошибаться Просьба уточнить.

    Также:

  • разбиение на страницы и сегментация (где «дыры» создаются в памяти) - это два совершенно разных метода, которые не используются в комбинации. Правильный?
  • 2 ответа2

    0

    поддерживается ли таблица страниц для каждого процесса?

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

    разбиение на страницы и сегментация (где «дыры» создаются в памяти) - это два совершенно разных метода, которые не используются в комбинации. Правильный?

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

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

    Имейте в виду, что "сегмент" в схемах виртуальной памяти обычно относится к фрагменту памяти, который является логически связным и имеет произвольную длину. Этот тип "сегмента" не следует путать с "сегментом" Intel 8086/88 (он же x86), который начинается с 16-байтовой границы адреса (т. Е. "Абзаца") и имеет размер не более 64 КБ. Сегменты X86 представляют собой разновидность банковской памяти, а не виртуальной памяти.

    Схемы банковской памяти предназначены для систем с небольшим размером адреса (например, 16 бит), но большим объемом физической памяти (например, до 1 МБ адресуемой памяти). Виртуальная память предназначена (или была предназначена) для противоположной ситуации: размер адреса большой (например, не менее 32 бит), а установленная память меньше адресного пространства (в настоящее время это не всегда так). Виртуальная память, как правило, полностью невидима для пользовательских программ, в то время как программист Intel 8086/88 должен знать о моделях памяти малого / среднего / большого размера и далеко не близко к указателям. Кстати, эта лекция, где я впервые узнал о виртуальной памяти и "постраничной сегментации", состоялась до того, как Intel разработала i8086.

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

    0

    Сегментация дает линейные адреса, пейджинговые выходы физические адреса

    Что касается логических и физических адресов, от Bovet & Cesati (Понимание ядра Linux), я получил это:

    как логические адреса соответствуют физическим

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

    Общие положения

    Возможно, вы уже знаете этот материал, но я все равно приведу его здесь для полноты.

    Страницы занимают Фреймы: Обмен

    Что касается глав 8 Silberschatz, кадры относятся к схеме физической памяти. Операционная система делит оперативную память на области одинакового и удобного размера (например, 4K). Страницы - это фрагменты данных размером с фрейм, основная единица замены страниц.

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

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

    Операционные системы и оборудование взаимодействуют

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

    1. набор примитивов управления памятью, предоставляемых аппаратным обеспечением (разбиение на страницы, сегментация и что там такого), и
    2. какое подмножество ОС действительно использует в конкретной архитектуре и ситуации (Linux @ zArchitecture отличается от Linux @ Intel отличается от Windows @ Intel отличается от Window @ Intel @ Boot-up)

    Например, только несколько архитектур обеспечивают сегментацию, и приведенный выше рисунок относится к x86. Linux, по причинам переносимости, не очень его эксплуатирует. Если я правильно помню из Tanenbaum, OS/2 была единственной операционной системой, которая использовала сегментацию Intel в полной мере.

    Пока что этот ответ.

    В зависимости от того, почему вам нужно это знать, вам может помочь следующий подход (он мне помог).

    Я предлагаю вам сначала ознакомиться с оборудованием и отдельными примитивами. Если Silberschatz не уверен в этом, попробуйте Tanenbaum (современные операционные системы) или Hennessy & Patterson (компьютерная архитектура, количественный подход). Если к тому времени ваше любопытство не будет удовлетворено, посмотрите, как конкретная ОС использует его в различных ситуациях на конкретной платформе.

    Всё ещё ищете ответ? Посмотрите другие вопросы с метками .