Как рассматривать систему подкачки (пейджинг по запросу) как еще один уровень кэша?

Я попытался решить следующий вопрос


Рассмотрим машину со 128 МБ (т. е. 2^27 байт) основной памяти и MMU с размером страницы 8 КБ (т. е.2^13 байт). Операционная система обеспечивает подкачку по запросу на большой вращающийся диск. Рассматривая эту систему подкачки как еще один уровень кэширования ниже кэша последнего уровня процессора (LLC), ответьте на следующие вопросы, касающиеся характеристик этого «кэша»:

Размер строки в байтах?2^13 (каждая страница имеет 2^13 байт)

Ассоциативность?Полный ассоциативный

Количество строк в кеше?2^14 (объем памяти/размер страницы)

Размер тега в битах?14 (количество строк в кеше 2^14, что дает нам 14 бит для тега)

Политика замены?Я вообще не уверен (может быть, алгоритм часов, который приближается к LRU)

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

Эксклюзивность/инклюзивность?Я думаю, что не включающие и не исключающие (ДЕВЯТЬ), может быть, потому, что файлы с отображением памяти частично находятся в памяти и частично в файле подкачки или файле ELF (текст программы). Например, стек процесса находится только в памяти, за исключением случаев, когда у нас заканчивается память и мы отправляем его в файл подкачки. Я прав?


Я был бы рад, если бы кто-нибудь проверил мои ответы и помог мне решить это правильно, спасибо! Извините, если это не то место, где можно задать такие вопросы

1 ответ

Начать; ваши ответы о размере строки, ассоциативности и количестве строк верны.

Размер тега в битах? 14 (количество строк в кеше 2^14, что дает нам 14 бит для тега)

Размер тега будет равен «местоположению на диске/размеру строки» плюс некоторые другие биты (например, для управления политикой замены). Мы не знаем, насколько велик диск (кроме «большого»).

Однако; возможно, небезосновательно проработать это в обратном порядке - начните с предположения, что ОС была разработана для поддержки широкого диапазона различных размеров жестких дисков и что тег является хорошей «степенью 2»; затем предположим, что 4 бита используются для других целей (например, «возраст» для LRU). Если тег имеет длину 32 бита (очень распространенная «степень 2»), это будет означать, что ОС может поддерживать максимальный размер диска 2 ТиБ («1 << (32-4) * 8 КиБ»), что составляет ( имея в виду «защиту от будущего»), слишком мал для ОС, разработанной за последние 10 лет или около того. Следующая большая «степень двойки» — 64 бита, что очень вероятно для современного оборудования, но менее вероятно для более старого оборудования (например, 32-битных процессоров, дисков меньшего размера). Основываясь на «128 МБ ОЗУ», я подозреваю, что оборудование очень старое (например,

Политика замены? Я вообще не уверен (может быть, алгоритм часов, который приближается к LRU)

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

Недостаточно информации, чтобы быть уверенным.

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

Одного этого достаточно, чтобы предположить, что это какой-то нестандартный дизайн (ни строго обратная запись, ни строго сквозная запись).

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

ОС может сочетать все эти факторы при принятии решения о записи измененных данных на диск.

Эксклюзивность/инклюзивность? Я думаю, что не включающие и не исключающие (ДЕВЯТЬ), может быть, потому, что файлы с отображением памяти частично находятся в памяти и частично в файле подкачки или файле ELF (текст программы). Например, стек процесса находится только в памяти, за исключением случаев, когда у нас заканчивается память и мы отправляем его в файл подкачки. Я прав?

Если ОЗУ рассматривается как кеш диска, то система является примером одноуровневого хранилища (см. https://en.wikipedia.org/wiki/Single-level_store ), а не обычной ОС (с обычным виртуальным память — например, пространство подкачки и файловые системы). Обычно системы, использующие одноуровневое хранилище, построены на идее наличия «постоянных объектов» и вообще не имеют файлов. Имея это в виду; Я не думаю, что разумно делать предположения, которые имели бы смысл для обычной операционной системы (например, предположить, что существуют исполняемые файлы, или что файлы с отображением памяти поддерживаются, или что какая-то часть диска является «пространством подкачки», а другая части диска нет).

Однако; Я бы предположил, что вы правы насчет «не включающего и не исключающего (ДЕВЯТЬ)» - включение было бы плохо для производительности (по той же причине сквозная запись была бы плохой для производительности), а монопольное было бы очень плохо для отказоустойчивости. (по той же причине, что обратная запись плохо влияет на отказоустойчивость).

Другие вопросы по тегам