Unter Linux ist die physische Adresse die tatsächliche Adresse im physischen Speicher (RAM), in der sich Daten befinden. Es ist ein Ort, der von der Hardware direkt zugänglich ist. Während Anwendungen physische Adressen nicht direkt verwenden, sind sie aus mehreren Gründen für den zugrunde liegenden Betrieb des Systems von entscheidender Bedeutung:
* Speicherverwaltung: Der Kernel verwendet physische Adressen, um den RAM zu verwalten. Es birgt die virtuellen Adressen (die Anwendungen der Adressen verwenden), um Adressen durch einen Prozess mit dem Namen Speicherzuordnung oder Adressübersetzung physikalische Adressen zu erhalten. Auf diese Weise können mehrere Prozesse gleichzeitig ausgeführt werden, ohne sich gegenseitig zu stören, auch wenn sie dieselben virtuellen Adressen verwenden. Der Kernel verwendet Seitentabellen, um diese Übersetzung durchzuführen.
* Direkter Speicherzugriff (DMA): Geräte, die DMA ausführen (wie Netzwerkkarten oder Festplatten), müssen direkt auf Speicher zugreifen. Sie tun dies mit physischen Adressen, wobei der virtuelle Adressraum umgangen wird. Dies liegt daran, dass DMA auf einer niedrigeren Ebene als im Prozesskontext stattfindet.
* Speicherschutz: Der Kernel verwendet physische Adressen, um den Speicherschutz durchzusetzen. Durch die Zuordnung zwischen virtuellen und physischen Adressen kann der Kernel einschränken, auf welche Prozesse auf welche Teile des physischen Speichers zugreifen können, und verhindern, dass ein Vorgang das Gedächtnis eines anderen verärgert.
* Hardware -Interaktion: Bestimmte Kerneloperationen, die sich direkt mit Hardware (z. B. Speichertests, Initialisierung) befassen, erfordern die Verwendung physischer Adressen.
Kurz gesagt, während Anwendungen mit virtuellen Adressen umgehen, bilden physische Adressen die Grundlage dafür, wie Linux RAM verwaltet und zugreift. Sie sind für die Rolle des Kernels bei der Speicherverwaltung, der Geräteinteraktion und der Systemsicherheit von wesentlicher Bedeutung. Anwendungen manipulieren nie direkt physische Adressen; Der Kernel behandelt die Übersetzung und den Schutz.