Виртуальная память не мешает программ от вмешательства из другого. Это логическая память, которая делает это. К сожалению, для двух концепций принято объединяться в «виртуальную память».
Существует два типа переселения, и неясно, о чем вы говорите. Однако они связаны. С другой стороны, концепция действительно не связана с виртуальной памятью.
Первая концепция перемещаемого кода. Это важно для разделяемых библиотек, которые обычно должны быть сопоставлены с разными адресами.
Перемещаемый код использует смещения, а не абсолютные адреса. Когда программа приводит к последовательности инструкций что-то вроде:
JMP SOMELABEL
. . .
SOMELABEL:
Компьютер или ассемблере кодирует это как
JUMP the-number-of-bytes-to-SOMELABEL
, а не
JUMP to-the-address-of-somelabel.
С помощью коррекций код работает так же, как независимо от того, где находится инструкция JMP.
Второй тип переселения использует первый. В прошлом переселение в основном использовалось для библиотек. Теперь некоторые ОС будут загружать программные сегменты в разных местах памяти. Это предназначено для обеспечения безопасности. Он предназначен для хранения вредоносных трещин, которые зависят от приложения, загружаемого по определенному адресу.
Оба эти понятия работают с виртуальной памятью или без нее.
Обратите внимание, что в целом программа не изменена, чтобы переместить ее. Я вообще, потому что исполняемый файл обычно имеет некоторые адреса, которые необходимо исправлять во время выполнения.
Звучит как вопрос экзамена для меня. – Michael
№. Я только начал изучать Системное программирование для нового семестра и, следовательно, задавался вопросом ... когда я узнал о перераспределении программ – cjMec
Трудно сказать, что означает ваш инструктор, «перераспределяя программу». Данное определение не подходит, как я буду понимать, что означает «перемещение программы». Я думаю, вам нужно будет спросить своего инструктора, хотите ли вы получить ответ, который будет правильно помечен на экзамене. –