Is it theoretically possible to make Linux which for its own kernel (include modules) uses only physical addresses? (it means it completely omits MMU) For processes how would you know if there was normal virtual space.

I don't know if reality is how its described above, but by internet sources that I read, I don't think so.

If it is not possible, why isn't it?

If it is possible, what restrictions we can expect?

  • uclinux.org except that's the whole system without virtual addresses.
    – derobert
    Jan 13, 2016 at 21:11
  • @derobert Thank you for your answer. I mean that this Linux will be running on normal personal computers, like now. And I wrote that virtual addresses will be here, but only for processes, not for kernel.
    – Nik Novák
    Jan 13, 2016 at 21:16
  • Theoretically, yes (in the sense that you could make a kernel that runs Linux binaries and that has a 1:1 mapping between virtual addresses and physical addresses). Practically you'd have to write a lot of code, and you'd have restrictions on memory size. Why on earth would you want to do that? Jan 13, 2016 at 23:51
  • @Gilles It was only thought, because until I read some materials about kernel memory, I think that every address in kernel is virtual (that didn't make any sence for me in the reason of performance - interrupts, system calls, static kernel code and also memory-mapped devices), so I started thinking in opposite extreme. Anyway, now I know that Linux use both them. But now I am thinking about that how it is implemented in ARM. MIPS has segments where kseg0/1 are unmapped (with offset) for real address. But ARM must every time load page table entry that maps the same virtual to physical address?
    – Nik Novák
    Jan 14, 2016 at 0:09


You must log in to answer this question.

Browse other questions tagged .