Forking - PowerPoint PPT Presentation

About This Presentation
Title:

Forking

Description:

Quick scan looked fine. Printed s don't exactly match ... Examples FPE, segv, ctrl-c, hang up, resume. Default actions ignore, abort, core dump ... – PowerPoint PPT presentation

Number of Views:56
Avg rating:3.0/5.0
Slides: 25
Provided by: int655
Category:
Tags: forking | hang

less

Transcript and Presenter's Notes

Title: Forking


1
Forking Process Scheduling
  • Vivek Pai / Kai Li
  • Princeton University

2
Mechanics
  • Exams not graded
  • Hopefully, this week
  • Quick scan looked fine
  • Printed slides dont exactly match
  • Notebook problems, time limited
  • Finish forking, start scheduling

3
A Quick Review
  • What have we covered
  • How to store data via files
  • How to virtualize memory
  • Every process gets uniform address space
  • Lots of tricks can be played to share memory
  • Whats left
  • How to share/virtualize the processor
  • Having processes communicate/cooperate

4
Whos Happy Right Now
5
How To Launch a New Process?
  • Obvious choice start process system call
  • But not all processes start the same
  • testprogram versus testprogram gt outfile
    versus testprogram arg1 arg2 gt outfile
  • The parent process wants to specify various
    aspects of the childs environment
  • Next step add more parameters to specify
    environment

6
Can We Generalize?
  • What happens as more information gets added to
    the processs environment more parameters?
    New system calls? This gets ugly
  • Whats the most general way of setting up all of
    the environment?
  • So, why not allow process setup at any point?
  • This is the exec( ) system call (and its variants)

7
But We Want a Parent and a Child
  • The exec call destroys the current process
  • So, instead, destroy a copy of the process
  • The fork( ) call duplicates the current process
  • Better yet, dont tightly couple fork and exec
  • This way, you can customize the childs
    environment
  • So what does fork( ) entail?
  • Making a copy of everything about the process
  • Ouch!

8
What Gets Copied
  • So far, weve covered the following
  • VM system
  • File system
  • Signals
  • How do we go about copying this information?
  • What parts are easy to copy, and whats hard?
  • Whats the common case with fork/exec?
  • What needs to get preserved in this scenario?

9
Shared Memory
  • How to destroy a virtual address space?
  • Link all PTEs
  • Reference count
  • How to swap out/in?
  • Link all PTEs
  • Operation on all entries
  • How to pin/unpin?
  • Link all PTEs
  • Reference count

w
. . .
. . .
Page table
. . .
Process 1
w
Physical pages
. . .
. . .
Page table
Process 2
10
Copy-On-Write
  • Childs virtual address space uses the same page
    mapping as parents
  • Make all pages read-only
  • Make child process ready
  • On a read, nothing happens
  • On a write, generates an access fault
  • map to a new page frame
  • copy the page over
  • restart the instruction

r
r
. . .
. . .
Page table
. . .
Parent process
r
r
Physical pages
. . .
. . .
Page table
Child process
11
Issues of Copy-On-Write
  • How to destroy an address space
  • Same as shared memory case?
  • How to swap in/out?
  • Same as shared memory
  • How to pin/unpin
  • Same as shared memory

12
Process Creation Termination
  • Four primitives
  • Fork create a copy of this process
  • Exec replace this process with this program
  • Wait wait for child process to finish
  • Kill (potentially) end a running process
  • Processes form a tree what happens when parent
    disappears?

13
Signals
  • Asynchronous event delivery mechanism
  • Examples FPE, segv, ctrl-c, hang up, resume
  • Default actions ignore, abort, core dump
  • Handler program-specified routine for signal

14
A Signaling Sidebar
  • Whats wrong with this program
  • int randVal
  • void SigHand(void)
  • printf(your rand val is d\n, randVal)
  • int main(int argc, char argv)
  • set up ctrl-c handler
  • while (1)
  • randVal 0
  • randVal 1
  • randVal 9

15
Scheduling Primitives
  • Block wait on some event/resource
  • Network packet arrival
  • Keyboard, mouse input
  • Disk activity completion
  • Yield give up running for now
  • Directed (let my friend run)
  • Undirected (let any process run)
  • Synchronization
  • We will talk about this later

16
Our Friend, The Transition Diagram
terminate
Scheduler dispatch
Running
Wait for resource
Create a process
Ready
Blocked
Resource becomes available
17
Process State Transition ofNon-Preemptive
Scheduling
Terminate (call scheduler)
Running
Scheduler dispatch
Block for resource (call scheduler)
Yield (call scheduler)
Create a process
Ready
Blocked
Resource becomes available (move to ready queue)
18
Scheduler
  • A non-preemptive scheduler invoked by explicit
    block or yield calls
  • The simplest form
  • Scheduler
  • save current process state (into PCB)
  • choose next process to run
  • dispatch (load PCB and run)
  • Does this work?

19
More on Scheduler
  • Should the scheduler use a special stack?
  • Yes, because a user process can overflow and it
    would require another stack to deal with stack
    overflow
  • Should the scheduler simply be a kernel process?
  • You can view it that way because it has a stack,
    code and its data structure
  • This process always runs when there is no user
    process

20
Where Should PCB Be Saved?
  • Save the PCB on its user stack
  • Many processors have a special instruction to do
    it efficiently
  • But, need to deal with the overflow problem
  • When the process terminates, the PCB vanishes
  • Save the PCB on the kernel heap data structure
  • May not be as efficient as saving it on stack
  • But, it is very flexible and no other problems

21
Physical Memory Multiprogramming
  • Memory is a scarce resource
  • Want to run many programs
  • Programs need memory to run
  • What happens whenM(a) M(b) M(c) gt physical
    mem?

22
Job Swapping
Swap in
Swap out
Partially executed swapped-out processes
Ready Queue
CPU
Terminate
I/O Waiting queues
I/O
23
Add Job Swapping toState Transition Diagram
Swap out
Swap
Terminate (call scheduler)
Running
Scheduler dispatch
Block for resource (call scheduler)
Swap in
Yield (call scheduler)
Create a process
Ready
Blocked
Resource becomes available (move to ready queue)
24
Think About Swapping
  • Is swapping
  • Necessary
  • Desirable
  • Good
  • Ideal
  • Things to consider
  • Performance
  • Complexity
  • Efficiency
Write a Comment
User Comments (0)
About PowerShow.com