Yes, I do understand the principle of paging, however then (with your explanation) I don't really see the benefits of using a buddy allocator.
The way I understand the wiki is like this:
* Paging splits the system RAM into "blocks" of memory (4K or 4MB or even 1G pages)
* This way, one can set up a virtual address space for each process (yes, this isn't position dependent anymore)
* how do we allocate pages? (I read the wiki page on "Page Frame Allocation") --> here comes my buddy allocator
Thus I made my allocator like this:
For the "4K" chunks of memory:
at physical memory address 0x0000 0000 is the first block; sized 0x1000 (4K; 1 page)
at physical memory address 0x0000 1000 is the second block; sized 0x1000 [...]
For the "8K" chunks of memory, it goes like this:
first block @ 0x0000 0000 physical
second block @ 0x0000 2000 physical [...]
And so on for 16K, 32K, 64K, 128K, 256K and 512K (like the Linux kernel did/does).
However, and here is my problem, when you PHYSICALLY move a page from one physical address to another; pointers and stuff like that get messed up?
It could be of course that I'm mixing "virtual" and "physical" memory, in which case: shame on me! But the way I understood the wiki is that a page frame allocator manages the PHYSICAL frames (thus pages) in memory...