A Unix Process
Text Process Status Resources Resources File UNIX kernel Stack Data FileHow Fork Works
Text Process Status Stack Data File File Resources Resources <…>int cpid = fork( ); if (cpid = = 0) { <child code> exit(0); } <parent code> wait(cpid); pid = 25
pid = 26
How Fork Works
UNIX kernel Text Process Status Stack Data File File Stack Data Resources Resources <…>
int cpid = fork( ); if (cpid = = 0) { <child code> exit(0); } <parent code> wait(cpid); Text <…>
int cpid = fork( ); if (cpid = = 0) { <child code> exit(0); } <parent code> wait(cpid); Process Status pid = 25
pid = 26
How Fork Works
Text Process Status Stack Data File File Stack Data Resources Resources <…>
int cpid = fork( ); if (cpid = = 0) { <child code> exit(0); } <parent code> wait(cpid); Text <…>
int cpid = fork( ); if (cpid = = 0) { <child code> exit(0); } <parent code> wait(cpid); Process Status pid = 25 cpid = 26 cpid = 0
pid = 26
How Fork Works
UNIX kernel Text Process Status Stack Data File File Stack Data Resources Resources <…>
int cpid = fork( ); if (cpid = = 0) { <child code> exit(0); } <parent code> wait(cpid); Text <…>
int cpid = fork( ); if (cpid = = 0) { <child code> exit(0); } <parent code> wait(cpid); Process Status pid = 25 cpid = 26 cpid = 0
pid = 26
How Fork Works
Text Process Status Stack Data File File Stack Data Resources Resources <…>
int cpid = fork( ); if (cpid = = 0) { <child code> exit(0); } <parent code> wait(cpid); Text <…>
int cpid = fork( ); if (cpid = = 0) { <child code> exit(0); } <parent code> wait(cpid); Process Status pid = 25 cpid = 26 cpid = 0
pid = 26
How Fork Works
UNIX kernel Text Process Status Stack Data File File Stack Data Resources Resources <…>
int cpid = fork( ); if (cpid = = 0) { <child code> exit(0); } <parent code> wait(cpid); Text <…>
int cpid = fork( ); if (cpid = = 0) { <child code> exit(0); } <parent code> wait(cpid); Process Status pid = 25 cpid = 26 cpid = 0
pid = 26
How Fork Works
Text Process Status Stack Data File File Stack Data Resources Resources <…>
int cpid = fork( ); if (cpid = = 0) { <child code> exit(0); } <parent code> wait(cpid); Text <…>
int cpid = fork( ); if (cpid = = 0) { <child code> exit(0); } <parent code> wait(cpid); Process Status pid = 25 cpid = 26 cpid = 0
pid = 26
How Fork Works
UNIX kernel Text Process Status Stack Data File File Stack Data Resources Resources <…>
int cpid = fork( ); if (cpid = = 0) { <child code> exit(0); } <parent code> wait(cpid); Text <…>
int cpid = fork( ); if (cpid = = 0) { <child code> exit(0); } <parent code> wait(cpid); Process Status pid = 25 cpid = 26 cpid = 0
How Fork Works
Text Process Status Stack Data File File Resources Resources <…>int cpid = fork( ); if (cpid = = 0) { <child code> exit(0); } <parent code> wait(cpid); pid = 25 cpid = 26
How Fork Works
UNIX kernel Text Process Status Stack Data File File Resources Resources <…>int cpid = fork( ); if (cpid = = 0) { <child code> exit(0); } <parent code> wait(cpid); pid = 25 cpid = 26
How Fork Works
Text Process Status Stack Data File File Resources Resources <…>int cpid = fork( ); if (cpid = = 0) { <child code> exit(0); } <parent code> wait(cpid); pid = 25 cpid = 26
How Fork Works
UNIX kernel Text Process Status Stack Data File File Resources Resources <…>int cpid = fork( ); if (cpid = = 0) { <child code> exit(0); } <parent code> wait(cpid); <…> pid = 25 cpid = 26
pid = 26
How Exec Works
File File Stack Data Resources Resources Text <…>
int cpid = fork( ); if (cpid = = 0) { <child code> exit(0); } <parent code> wait(cpid); Process Status cpid = 0
pid = 26
How Exec Works
UNIX kernel File File Stack Data Resources Resources Text <…>
int cpid = fork( ); if (cpid = = 0) { exec(“foo”); exit(0); } <parent code> wait(cpid); Process Status cpid = 0 foo
pid = 26
How Exec Works
File File Stack Data Resources Resources Text <…>
int cpid = fork( ); if (cpid = = 0) { exec(“foo”); exit(0); } <parent code> wait(cpid); Process Status cpid = 0
pid = 26
How Exec Works
UNIX kernel foo File File Resources Resources
pid = 26
How Exec Works
Stack Data Text
<line first of foo> <…> <…> <…> exit(0); Process Status File File Resources Resources
pid = 26
How Exec Works
UNIX kernel
Stack Data Text
<line first of foo> <…> <…> <…> exit(0); Process Status File File Resources Resources
pid = 26
How Exec Works
Stack Data Text
<line first of foo> <…> <…> <…> exit(0); Process Status File File Resources Resources