Memory Management

Any operating system kernel developer has to tackle the problem of memory management. Many modern architectures that support virtual memory have a hybrid memory management system where the software (your kernel) maintains a logical memory management map, via page tables or similar, and the hardware “translates” addresses by walking through that software-maintained map.

If you’re writing your own hobby OS or kernel, then you’re very quickly going to need to explore this whole area. Of course, you could just stick to using “raw” physical memory but that will rapidly prove to be quite constraining unless you’re creating a very focused OS (say for an embedded, function-specific target). And no, a bootable “hello world” is not a kernel :)

More experienced kernel developers may want to play with different and more esoteric approaches to memory management – such folks are sufficiently advanced that they don’t need the sort of tutorial content contained here, so I’m going to focus on the most common approaches in my articles – primarily around basic paging and virtual/physical memory management.

Jimmo’s articles on OS memory management