Количество обращений к памяти с пейджингом по требованию - PullRequest
0 голосов
/ 01 декабря 2018

Я изучал понятия «операционные системы», и книга, на которую я ссылаюсь, это «Концепции операционной системы» Питера Б. Гальвина, Грега Ганга и Авраама Зильбершаца.

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

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

Эффективное время доступа = (1-p) x одно время доступа к памяти + время обслуживания сбоя страницы px

, где p = частота отказов страницы

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

Это потому, что мы говорим о временном интервале после доступа к таблице страниц?Тогда почему тот же стандарт расчета не относится к стандартной версии подкачки?

Ответы [ 2 ]

0 голосов
/ 02 декабря 2018

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

Формула, подобная этой

Эффективное время доступа = (1-p) xодно время доступа к памяти + px время службы сбоя страницы

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

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

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

Число считываний зависит от формата таблицы страниц, используемого ЦП.

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

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

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

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

Звучит так, будто книга несовместима с BS.

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

Что нужно знать в реальном мире, так это то, что ЦП преобразует логические адреса в физические адреса.Если процессор не может выполнить этот перевод, он вызывает ошибку страницы.

0 голосов
/ 01 декабря 2018

Примечание: я не читал / не видел эту книгу.

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

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

Например, я мог бы (изначально) сказать кому-то «каждый доступ из виртуальной памяти включает в себя второй выбор памяти из ОЗУ для определения перевода», чтобы помочь им понять, как работают таблицы страниц и что есть(потенциальные) проблемы с производительностью (вдвое больше обращений к памяти).Затем я мог бы представить концепцию «буферов перевода в сторону» (после того, как читатель поймет, как работают таблицы страниц и узнает о проблеме, для решения которой предназначены TLB).Затем я мог бы объяснить, что часто реальные системы имеют несколько уровней таблиц страниц (например, в 64-битной 80x86 это четыре уровня, потенциально предполагающих 4 обращения к памяти для определения перевода) и что могут быть задействованы кэши / буферы более высокого уровня (а не толькоTLB, которые кэшируют окончательные переводы).В этом случае мое первоначальное утверждение («каждый доступ из виртуальной памяти включает в себя второй выбор памяти из ОЗУ для определения перевода») является преднамеренной ложью (упрощением), чтобы избежать сложности такого утверждения, как «каждый доступ из виртуальной памяти можетили может не включать одну или несколько дополнительных выборок из некоторых или всех уровней таблиц страниц "(что изначально слишком запутанно для новичков, потому что создает множество вопросов, на которые у них пока нет ответов).

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

Одна реальность такова (для одного реального процессора 80x86 в длинномрежим, но не все процессоры 80x86 в длинном режиме и никакие 80x86 в других режимах, если виртуализация не используется), для чтения из виртуальной памяти, которая не приводит к сбою страницы, если доступ не выровнен / не распределен по страницеграницы (где процессор должен был бы сделать все это дважды, чтобы получить байты от 2 разныхges и объединить байты):

    * if the translation is not in the TLB, then:
        * if the area is not in the "page directory cache"
            * fetch the PML4 entry to determine address of PDPT (try L1 cache, then L2 cache, then L3 cache, then RAM)
            * do access checks based on flags in PML4 entry
            * fetch the PDPT entry to determine address of PD (try L1 cache, then L2 cache, then L3 cache, then RAM)
            * do access checks based on flags in PDPT entry
            * insert data into "page directory cache"
        * if the area is in the "page directory cache"
            * do access checks based on flags in "page directory cache entry"
        * fetch the PD entry to determine address of PT (try L1 cache, then L2 cache, then L3 cache, then RAM)
        * do access checks based on flags in PD entry
        * fetch the PT entry to determine address of page (try L1 cache, then L2 cache, then L3 cache, then RAM)
        * do access checks based on flags in PT entry
        * insert data into TLB (including setting the "accessed" flag in the page table entry)
    * if the translation is in the TLB, then:
        * do access checks based on flags in "TLB entry"
    * do the "physical address = physical address of page + offset in page" calculation
    * read the data for the physical address (try L1 cache, then L2 cache, then L3 cache, then RAM)

Для этой реальности (с упомянутыми ограничениями);число выборок из ОЗУ может быть любым от нуля до 5.

Можете ли вы понять, почему автор (пытаясь объяснить ошибки страниц и не пытаясь объяснить стоимость перевода) может захотеть не показывать что-то подобное иможет упростить (предполагая, что требуется только одна выборка, потому что перевод находится в TLB) вместо этого?

...