Processes pid = 1000 pid = 1001 stack stack heap heap - - PowerPoint PPT Presentation

processes
SMART_READER_LITE
LIVE PREVIEW

Processes pid = 1000 pid = 1001 stack stack heap heap - - PowerPoint PPT Presentation

Processes pid = 1000 pid = 1001 stack stack heap heap data/globals data/globals code code file descriptor table: file descriptor table: 1 2 3 1 2 3 saved registers: saved registers: %rax %rbx %rcx %rax %rbx %rcx


slide-1
SLIDE 1

Processes

pid = 1000

stack heap

data/globals code

1 2 3 …

%rax %rbx %rcx %rdx %rsp %rip

saved registers: file descriptor table:

pid = 1001

stack heap

data/globals code

1 2 3 …

%rax %rbx %rcx %rdx %rsp %rip

saved registers: file descriptor table:

Every process has its own PID, virtual address space, fd table, registers, signal handlers, etc… Processes are generally isolated

slide-2
SLIDE 2

Processes

pid = 1000

stack heap

data/globals code

1 2 3 …

%rax %rbx %rcx %rdx %rsp %rip

saved registers: file descriptor table:

pid = 1001

stack heap

data/globals code

1 2 3 …

%rax %rbx %rcx %rdx %rsp %rip

saved registers: file descriptor table:

Processes do not share memory (usually), but they can exchange information using pipes

pipe pipe

slide-3
SLIDE 3

Processes

pid = 1000

stack heap

data/globals code

1 2 3 …

%rax %rbx %rcx %rdx %rsp %rip

saved registers: file descriptor table:

pid = 1001

stack heap

data/globals code

1 2 3 …

%rax %rbx %rcx %rdx %rsp %rip

saved registers: file descriptor table:

Processes can synchronize using signals

pipe pipe

SIGSTOP

slide-4
SLIDE 4

Threads

pid = 1000

stack heap

data/globals code

1 2 3 …

%rax %rbx %rcx %rdx %rsp %rip

saved registers: file descriptor table:

Threads are similar to processes; they have a separate stack and saved registers (and a handful of other separated things). But they share most resources across the process

tid = 1001

stack %rax %rbx %rcx %rdx %rsp %rip

saved registers:

tid = 1002

stack %rax %rbx %rcx %rdx %rsp %rip

saved registers:

slide-5
SLIDE 5

Threads

pid = 1000

stack1 heap

data/globals code

1 2 3 …

%rax %rbx %rcx %rdx %rsp %rip

saved registers: file descriptor table:

tid = 1001

stack2

1 2 3

%rax %rbx %rcx %rdx %rsp %rip

saved registers: file descriptor table:

Under the hood, a thread gets its own “process control block” and is scheduled independently, but it is linked to the process that spawned it

slide-6
SLIDE 6

What’s the difference?

Considerations in designing a browser:

  • Speed
  • Memory usage
  • Battery/CPU usage
  • Security, stability
slide-7
SLIDE 7

What’s the difference?