1_program_structure

1_program_structure - Part 1: Program Structure CS252:...

Info iconThis preview shows pages 1–8. Sign up to view the full content.

View Full Document Right Arrow Icon
Part 1: Program Structure CS252: Systems Programming Ramana Kompella Computer Science Department Purdue University
Background image of page 1

Info iconThis preview has intentionally blurred sections. Sign up to view the full version.

View Full DocumentRight Arrow Icon
Memory of a Program q A program sees memory as an array of bytes that goes from address 0 to 2 32 -1 (0 to 4GB-1) q That is assuming a 32-bit architecture. 0 (4GB-1) 2 32 -1
Background image of page 2
Memory Sections q The memory is organized into sections called l memory mappings z . Stack Text Data Bss Heap Shared Libs 0 2 32 -1
Background image of page 3

Info iconThis preview has intentionally blurred sections. Sign up to view the full version.

View Full DocumentRight Arrow Icon
Memory Sections q Each section has different permissions: read/write/execute or a combination of them. q Text- Instructions that the program runs q Data – Initialized global variables. q Bss ( Block started by symbol ) – Uninitialized global variables. They are initialized to zeroes. q Heap – Memory returned when calling malloc/ new. It grows upwards. q Stack – It stores local variables and return addresses. It grows downwards.
Background image of page 4
Memory Sections q Dynamic libraries – They are libraries shared with other processes. Ø Each dynamic library has its own text, data, and bss. q Each program has its own view of the memory that is independent of each other. q This view is called the l Address Space z of the program. q If a process modifies a byte in its own address space, it will not modify the address space of another process.
Background image of page 5

Info iconThis preview has intentionally blurred sections. Sign up to view the full version.

View Full DocumentRight Arrow Icon
Example Program hello.c int a = 5; //Stored in datasection int b[20]; //Stored in bss int main() { //Stored in text int x; //Stored in stack int *p =(int*) malloc(sizeof(int)); //In heap }
Background image of page 6
q Between each memory section there may be gaps that do not have any memory mapping. q If the program tries to access a memory gap, the OS will send a SEGV signal that by default kills the program and dumps a core file. q The core file contains the value of the variables global and local at the time of the SEGV. q
Background image of page 7

Info iconThis preview has intentionally blurred sections. Sign up to view the full version.

View Full DocumentRight Arrow Icon
Image of page 8
This is the end of the preview. Sign up to access the rest of the document.

Page1 / 23

1_program_structure - Part 1: Program Structure CS252:...

This preview shows document pages 1 - 8. Sign up to view the full document.

View Full Document Right Arrow Icon
Ask a homework question - tutors are online