The runtime environment handles the implementation of programming language abstractions on the target machine. It allocates storage for code and data and handles access to variables, procedure linkage and parameter passing. Storage is typically divided into code, static, heap and stack areas. The compiler generates code that maps logical addresses to physical addresses. The stack grows downward and stores activation records for procedures, while the heap grows upward and dynamically allocates memory. Procedure activations are represented by activation records on the call stack. The runtime environment implements variable scoping and access to non-local data using techniques like static scopes, access links and displays.