Linux as well as Windows, work pretty much the same here. Every process gets it's own "virtual" address space. This doesn't mean that the memory is actually physically available (obviously most 32bit computers never had enough memory), that's, why it's virtual.
Also the addresses used there don't correspond to the physical addresses. Thereby physical memory segment at AAAA:0000 could correspond to 9128:2af2, the point is you don't have to care. All an application is concerned with is where the thing of interest resides in it's own memory segment. And yes that also means that two applications can point to the same address in their own view of the memory and get different things.
There are also a lot of interesting things that could be mapped into there other than an actual physical memory page of the process, for example addresses belonging to devices (think video card), dynamically linked libraries or memory that's shared between processes (that's part of what's meant by "secure, kernel managed mechanisms").
Let me recommend you a textbook like Tanenbaum, Operating systems, if you want to delve a little deeper into virtual memory and process address space layout or if you can't get a hold of one easily http://duartes.org/gustavo/blog/post/anatomy-of-a-program-in-memory also makes a good read.