Logical, Linear and Virtual Address.

Denis Kirjanov kirjanov at gmail.com
Thu Dec 23 10:39:58 EST 2010


On Thu, Dec 23, 2010 at 6:10 PM, Gustavo da Silva
<gustavodasilva at gmail.com> wrote:
> Hi Everyone!
>
> Friends, could someone explain me the difference between Kernel Logical
> and Kernel Virtual Address?


AFAIK there are 3 types of addresses: physical, kernel virtual
(one-to-one mapped),
and ...user virtual addresses...
Lets assume x86_32 for simplicity:

==========================
+kernel part (identity-mapped) +
========================== <---- PAGE_OFFSET protection boundary
+                                          +
+ user portion(THREAD_SIZE)+
+                                          +
==========================
Kernel works on behalf of the user address space (think about that one
part of the user space is
always the same for each process - kernel part). Kernel portion (at
PAGE_OFFSET and above) translates address
using simple formula:
kernel virtual addr - PAGE_OFFSET

Things are different for the bottom half of the virtual address space
(THREAD_SIZE portion).
This is a MMU time :)
Here well-known translation process (using page tables) of the virtual
address to physical one begins.

> I'm reading Linux Device Drivers 3th, but I did not understand about that.
>
> I have a macro vision about Kernel Virtual Address (virtual address is used
> do hide the paging mechanism and physical memory, I think), and Linear
> is the address used in to evaluate to the physical (using page
> directory+page table+offset).
>
> But and the Kernel Logical Address? Why Logical Address is Virtual
> Address, but not all
> Virtual Address is a Logical Address?
>
> Regards.
>
> Atenciosamente,
>
> Gustavo da Silva
>
> _______________________________________________
> Kernelnewbies mailing list
> Kernelnewbies at kernelnewbies.org
> http://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies
>



-- 
Regards,
Denis



More information about the Kernelnewbies mailing list