Я ознакомился с концепцией и концепцией операционной системы, и теперь я тщательно изучаю ядро Linux. У меня есть вопрос, от которого я не могу избавиться. В современных операционных системах каждый процесс имеет собственное виртуальное адресное пространство (VAS) (например, от 0 до 2^32-1 в 32-битных системах). Это дает много преимуществ. Но в реализации я в некоторых случаях смущен. Позвольте мне объяснить это, указав пример:Как тот же виртуальный адрес для разных процессов сопоставлен с разными физическими адресами
Предположим, что у нас есть два процесса p1, p2; p1 и p2 имеют свои собственные VASes. Адрес 0x023f4a54
отображается на разные физические адреса (PA), как это может быть? Как делается этот перевод таким образом. Я имею в виду, что я знаю механизм перевода, но я не могу понять, что тот же адрес сопоставляется с другим физическим адресом, когда наступает адресное пространство разных процессов.
0x023f4a54 in p1's VAS => PA 0x12321321
0x023f4a54 in p2's VAS => PA 0x23af2341 # (random addresses)
https://en.wikipedia.org/wiki/Virtual_memory –