I am trying to understand the memory address types used by the Linux kernel, which are User virtual addressPhysical addressBus addressKernel logical addressKernel virtual addressI understood the following:User virtual address: User sees an address, which might not be in RAM, it might be a swap address.Physical address: Every memory address, in some form, has to represent the physical address. Physical address is in direct form.Similarly: Kernel Logical address and Kernel virtual address.I can't understand the bus address and its requirement.If it's quite naive to explain, materials to refer can be useful.
Address types used in Linux
linux kernel
In most systems the physical address space is mapped to various devices - one of which is the system ram, another of which might be something like a PCI bus. The bus address is the value actually placed on the address pins of the mapped bus, and is usually some range of bits taken from the physical address. Other bus pins such as chip select and read/write etc may or may not be taken from the physical address. This is the memory mapped approach to interfacing to devices and buses, but it isn't the only way - for example, Intel processors have special I/O instructions to indicate that you are communicating with a device and the physical address plays no part in it. In this case, the bus address is encoded in the instruction or resides in a register. Cheers!Murray...