Address value 'in the System.map file

What does this address indicate? The address where they are loaded into memory?

+3
source share
2 answers

The kernel runs in a fixed location in the virtual address space of the process. The linux kernel is usually [depending on your system architecture] located in the top 1 GB of the 4 GB virtual address space. Thus, the kernel for system architecture with a 3G / 1G partition starts at 0xC0000000. Depending on the platform’s memory card, this will be mapped to a physical address in physical memory.

The system.map file is a kernel symbol table. It contains the listed characters along with their virtual addresses. To find out where these characters are loaded into main memory, subtract PAGE_OFFSET [for 3G / 1G systems this is 0xC00000000] from the address of the character to get the offset, and add this offset to the original physical address of the kernel in physical memory as determined from the system’s memory card.

+8
source

This is the virtual address of the kernel. That is, this is the address of the symbol in memory, when viewed from the point of view of the kernel working with the included address translation, i.e. not in real mode.

On most (?) Platforms there is a simple formula for turning these addresses into real addresses, i.e. The actual address in RAM, but this may not be necessary.

+4
source

Source: https://habr.com/ru/post/1784497/


All Articles