Memory management is the heart of operating systems; it is crucial for both programming and system administration. In the next few posts I'll cover memory with an eye towards practical aspects, but without shying away from internals. While the concepts are generic, examples are mostly from Linux and Windows on 32-bit x86. This first post describes how programs are laid out in memory. Each process
![Anatomy of a Program in Memory](https://cdn-ak-scissors.b.st-hatena.com/image/square/8deb2ca702519d121dc3c77562a7f131c09e7e20/height=288;version=1;width=512/http%3A%2F%2Fstatic.duartes.org%2Fimg%2FblogPosts%2FkernelUserMemorySplit.png)