В чем разница между пейджингом и переключением контекста?

В чем разница между пейджингом и переключением контекста?

Похоже, что оба варианта подразумевают обмен входящими и исходящими процессами.

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

В чем разница между ними? Вот мое текущее предположение/понимание:

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

  2. Следовательно, блок управления процессом или печатная плата будут содержать страницы (если нет, то как они связаны между собой?).

решение1

Я думаю, что различий больше, чем сходств.

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

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

(Согласно Википедии, раньше онипоменять(Хотя целые процессы в 1960-х годах.)

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

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

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

решение2

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

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

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

Связанный контент