Unix & Linux Stack Exchange is a question and answer site for users of Linux, FreeBSD and other Un*x-like operating systems. Join them; it only takes a minute:

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

I am trying to understand the Memory address types used by the Linux kernel, which are

  • User virtual address
  • Physical address
  • Bus address
  • Kernel logical address
  • Kernel virtual address

I 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 cant understand the Bus address and its requirement.

If its quite naive to explain, materials to refer can be useful.

share|improve this question
makelinux.net/ldd3/chp-15-sect-1 is the only link i could regarding this, which requires (might) some pre-requisite, so i couldn't understand. – Karthi prime Apr 4 '13 at 12:58
Where does this come up? That might change the exact definition, and what do you want this for could color the answer quite a bit... – vonbrand Apr 4 '13 at 16:07
up vote 1 down vote accepted

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!


share|improve this answer
PS I've never heard of kernel logical addresses ... What's that? – Murray Jensen Apr 6 '13 at 1:57
Hey thanks for the explanation.. and Kernel logical addresses (address in kernel space) map to a physical address on RAM, whereas the Kernel virtual address might map to a swap space. Which implies, Kernel logical address is a subset concept of Kernel virtual address. – Karthi prime Apr 8 '13 at 7:02

Your Answer


By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.