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