Why processes? Simplicity nfsd emacs www nfsd OS gcc emacs ls - - PowerPoint PPT Presentation

why processes simplicity
SMART_READER_LITE
LIVE PREVIEW

Why processes? Simplicity nfsd emacs www nfsd OS gcc emacs ls - - PowerPoint PPT Presentation

Why processes? Simplicity nfsd emacs www nfsd OS gcc emacs ls lpr ls www lpr OS Processes give isolated Address Spaces nfsd emacs lpr www ls OS Physical Memory (Paging) Physical Memory (Segmentation) Why processes? Speed


slide-1
SLIDE 1

Why processes? Simplicity

gcc emacs nfsd lpr ls

www

emacs nfsd lpr ls

www

OS OS

slide-2
SLIDE 2

Processes give isolated Address Spaces

emacs nfsd lpr ls

www

OS

Physical Memory (Paging) Physical Memory (Segmentation)

slide-3
SLIDE 3

Why processes? Speed

  • I/O parallelism:
  • verlap execution: make 1 CPU into many

(Real parallelism: > 1 CPU (multiprocessing))

  • Completion time:

B’s completion time = 100s (A + B). So overlap

emacs gcc

(wait for input) (wait for input)

A B

80 s 20 s

A B

10 s Completion time for B? A?

slide-4
SLIDE 4

Process != Program

  • Program: code + data

passive

  • Process: running program

state: registers, stack, heap… position: program counter

  • We both run netscape:

Same program, different process int a; int main() { printf(“hello”); } stack heap data code int a; main()

slide-5
SLIDE 5

The multithreading illusion

  • Each thread has its illusion of own CPU

– yet on a uni-processor, all threads share the same physical CPU! How does this work?

  • Two key pieces:

– thread control block: one per thread, holds execution state – dispatching loop: while(1)

interrupt thread save state get next thread load state, jump to it

CPU

slide-6
SLIDE 6

Remote Procedure Call (RPC) Comparison

P1: calls send(args) [2] calls recv(), blocks [1] P2: calls recv(args) [2] … does work … calls send(results) [2] P1: recv() returns [1] P1: sets up args in regs calls yield(P2) [1] P2: resumes [1] … does work … sets up results in regs calls yield(P1) [1] P1: resumes [1] Monolithic Kernel: around [8] total user/kernel crossings ExoKernel: around [4] total user/kernel crossings