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

Например, если есть 3 процесса, каждый из которых использует виртуальный адрес 0x400000 для текстовой части. И есть только одна 4KB физическая страница для пользовательского процесса.

Предположим, что процесс 0 использует физическую страницу (виртуальный адрес 0x400000). Предположим, что данные физической страницы — это page_pid_0_0x400000.

Когда процесс 1 запланирован ОС, и page_pid_1_0x400000 процесса 1 будет загружен на физическую страницу из исполняемого файла. Затем page_pid_0_0x400000 данные должны быть выгружены на диск.

Когда процесс 2 также загружен, данные page_pid_2_0x400000 на физической странице также должны быть выгружены на диск.

Теперь на диске у нас есть 2 копии одного и того же виртуального адресного пространства, то есть 0x400000: page_pid_1_0x400000 и page_pid_0_0x400000.

Если процесс 1 запланирован сейчас, как я (ОС) могу идентифицировать page_pid_1_0x400000 по виртуальному адресу 0x400000 (поскольку инструкции доступа к памяти знают только виртуальный адрес 0x400000, но не идентификатор процесса)?

Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
0
98
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

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

Точно так же обработка подкачки не ограничивается использованием только виртуального адреса, она может использовать (address space, virtual address) для раскрытия местоположения подкачки. Это может сделать его настолько гибким или жестким, насколько это необходимо. Например, он может рассматривать виртуальный адрес как часть непрерывного набора виртуальных адресов, которые имеют некоторую общность между тем, где страницы хранятся в файлах или подкачке.

Таблицы страниц и понятие виртуального адреса являются интерфейсом для CPU+MMU перевода адреса. Операционная система может поддерживать любые связанные с ней структуры данных.

В старых системах каждый дескриптор страницы (иногда запись в таблице страниц или pte) имел бы бит, который определял, является ли страница действительной. CPU/MMU будет игнорировать страницы, которые не считаются действительными; таким образом, когда страница была заменена на диск, другие биты в записи таблицы страниц являются удобным местом для хранения адреса дискового обмена.

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

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