About ‘above 2GB’

Yeah this is about computing and Operating systems. All below is just to justify the name ‘Thin air above 2GB’.

Most of the modern operating systems use paging as a mechanism to provide same address space to each running process and yet protect them from corrupting each others memory.

This possible by translating addresses from 0-4GB to actual physical addresses by making use of the hardware support (Memory Management Unit, MMU). So question comes up how MMU gets the intelligence to translate these addresses to unique physical addresses for each process. Answer is simple, MMU is fetched (CR3 register) with base address of page tables which direct MMU to translate to unique physical addresses.

However when each process is running they have their own set of page tables which too are residing in virtual memory somewhere, because maximum memory addressable is 4GB. Well 2GB – 4GB address is shared address space among all the processes and is access denied for each of them and all the magic lies in this above 2GB address space. You core operating system components and drivers are loaded in this address space and coexist with each other sharing a common address space.

It is similar to mountaineering into the thin air to define path for others where doing mistake is an option, your one mistake is going to bring down the whole team into serious threatening conditions. Everyone has to be highly skilled enough to win each others trust and share the same little space. In essence programming above 2GB address space or Kernel programming is same, to provide same address space and memory protection to a bunch of guys (here applications), few daring guys (core kernel/device drivers) have taken up the cause and decided to share the address space and be aware of their own memory areas.

Many experts might here say with 64bit and PAE 4GB is not the highest address addressable, some might also say that using /3Gb switch a system can be configured to have only 1 GB has shared address space but this post is just to mark the significance of  programming in shared address space kind of scenario and hence name chosen as “Thin air above 2GB” because most of the systems out there have this configuration.

This blog is dedicated to such internals stuff only.

Well  so ‘above 2GB’ is just for namesake to make the blog catchy.

More to come soon.

Published in: on April 15, 2011 at 6:37 am  Leave a Comment