This preview shows page 1. Sign up to view the full content.
Unformatted text preview: al address 0x08048000, the stack always grows down from address 0xbfffffff, shared library code always starts at address 0x40000000, and the operating system code and data start always start at address 0xc0000000. Such uniformity greatly simpliﬁes the design and implementation of linkers, allowing them to produce fully linked executables that are independent of the ultimate location of the code and data in physical memory. 10.4.2 Simplifying Sharing
Separate address spaces provide the operating system with a consistent mechanism for managing sharing between user processes and the operating system itself. In general, each process has its own private code, data, heap, and stack areas that are not shared with any other process. In this case, the operating system creates page tables that map the corresponding virtual pages to disjoint physical pages. 10.4. VM AS A TOOL FOR MEMORY MANAGEMENT
memory invisible to user code %esp (stack pointer) 495 0xc0000000 kernel virtual memory user stack (created at runtime) 0x40000000 memory mapped region for shared libraries brk run-time heap (created at runtime by malloc) read/write segment (.data, .bss) read-only segment (.init, .text, .ro...
View Full Document