Transcript process

Slide 6-1
6
Processes
Copyright © 2004 Pearson Education, Inc.
Operating Systems: A Modern Perspective, Chapter 6
Announcements
• Extension til Friday 11 am for HW #1
• Previous lectures online
• Program Assignment #1 online later today,
due 2 weeks from today
• Homework Set #2 online later today, due a
week from today
• Read chapter 6
Copyright © 2004 Pearson Education, Inc.
Operating Systems: A Modern Perspective, Chapter 6
Slide 6-2
Slide 6-3
What is a Process?
• A software program consist
of a sequence of code
instructions and data
– for now, let a simple app = a
program
– CPU executes the instructions
line by line in fetch-execute
cycle from RAM
– code instructions operate on
data
– A program is a passive entity
Program P1
Code
Data
• A process is a program
actively executing from
main memory
Copyright © 2004 Pearson Education, Inc.
Operating Systems: A Modern Perspective, Chapter 6
Slide 6-4
Loading and Executing a Program
OS Loader
Disk
P1
binary
Code
P2
binary
Code
Process
Main
Memory Fetch Code
and Data
Program
P1
binary
CPU
Execution
Program
Counter (PC)
Code
Registers
ALU
Data
Data
Copyright © 2004 Pearson Education, Inc.
Data
Write Data
Operating Systems: A Modern Perspective, Chapter 6
Slide 6-5
What is a Process?
• A process is a
program actively
Main
executing from main
Memory
memory
– has a Program
Counter (PC) and
execution state
associated with it
• CPU registers keep
state
• OS keeps process
state in memory
• it’s alive!
– has an address space
associated with it
• a limited set of
(virtual) addresses
that can be
accessed by the
executing code
Copyright © 2004 Pearson Education, Inc.
Program
P1
binary
Process
Fetch Code
and Data
Code
CPU
Execution
Program
Counter (PC)
Registers
ALU
Data
Write Data
Operating Systems: A Modern Perspective, Chapter 6
Slide 6-6
What is a Process?
– 2 processes
may execute
the same
program code,
but they are
considered
separate
execution
sequences
Main
Memory
Program
P1
binary
Process
Fetch Code
and Data
Code
CPU
Execution
Program
Counter (PC)
Registers
ALU
Data
Write Data
Copyright © 2004 Pearson Education, Inc.
Operating Systems: A Modern Perspective, Chapter 6
How is a Process Structured in
Memory?
Main
Memory
Process
P1
Code
Data
Copyright © 2004 Pearson Education, Inc.
Slide 6-7
float f4=3.0;
global variables
main() {
char* ptr;
ptr = malloc();
foo1();
}
dynamically
allocated
variables
foo1() {
int a1;
....
}
Operating Systems: A Modern Perspective, Chapter 6
functions
local variables
How is a Process Structured in
Memory?
Main Memory
Process
P1
Code
Slide 6-8
float f4=3.0;
global variables
main() {
char* ptr;
ptr = malloc();
foo1();
}
dynamically
allocated
variables
Data
Heap
Stack
Copyright © 2004 Pearson Education, Inc.
foo1() {
int a1;
....
}
Operating Systems: A Modern Perspective, Chapter 6
functions
local variables
How is a Process Structured in
Memory? Run-time memory
max address
User stack
• Run-time memory
image
• Essentially code,
data, stack, and
heap
• Code and data
loaded from
executable file
• Stack grows
downward, heap
grows upward
Unallocated
Heap
Read/write .data, .bss
Read-only .init, .text, .rodata
address 0
Copyright © 2004 Pearson Education, Inc.
Operating Systems: A Modern Perspective, Chapter 6
Slide 6-9
Why Allocate Local Variables on a
Stack?
Slide 6-10
• Strawman approach: pre-allocate all local
variables a priori before a process starts
executing, just like global variables
• What’s wrong with this strawman?
– if a function is never called, then you’ve wasted
space allocating its local variables
– don’t know a priori how many instances of a
local variable to allocate if a function calls
itself, i.e. recursion
Copyright © 2004 Pearson Education, Inc.
Operating Systems: A Modern Perspective, Chapter 6
Why Allocate Local Variables on a
Stack?
Slide 6-11
• So allocate local variables only on an asneeded basis
• A stack provides a simple way to allocate
local variables as needed
– When a function is called, allocate its local
variables on top of the stack - push them on the
stack
– when a function completes, deallocate these
local variables - pop them off the stack
Copyright © 2004 Pearson Education, Inc.
Operating Systems: A Modern Perspective, Chapter 6
Why Allocate Dynamic Variables on
a Heap in the Process’s Address
Space?
• Strawman II: could ask the OS to allocate
dynamic variables anywhere in memory
– very complex keeping tracking of all the
different locations in memory
• Keeping the dynamic variables in one area
(the process’s heap) associated with the
process’s address space simplifies memory
management
Copyright © 2004 Pearson Education, Inc.
Operating Systems: A Modern Perspective, Chapter 6
Slide 6-12
A Process Executes in its Own
Address Space
Main Memory
Process
P1
Code
• OS tries to provide the illusion
or abstraction that the process
executes in its own address
space, on its own CPU
Data
Heap
Stack
Copyright © 2004 Pearson Education, Inc.
Slide 6-13
Operating Systems: A Modern Perspective, Chapter 6
Implementing the Process Abstraction
Pi CPU
Pj CPU
Pi Executable
Memory
Pj Executable
Memory
Pk CPU
…
Pk Executable
Memory
OS Address
Space
CPU
ALU
Control
Unit
Pi Address
Space
Pk Address
Space
…
Pj Address
Space
Copyright © 2004 Pearson Education, Inc.
Operating Systems: A Modern Perspective, Chapter 6
Machine Executable Memory
OS interface
Slide 6-14
Slide 6-15
OS Process Management: External View
Application
Process
Device Mgr
UNIX
Memory Mgr
File Mgr
exec()
Memory Mgr
File Mgr
Process Mgr
Device Mgr
wait()
CreateThread()
CloseHandle() CreateProcess()
WaitForSingleObject()
Process Mgr
fork()
Windows
Hardware
Copyright © 2004 Pearson Education, Inc.
Operating Systems: A Modern Perspective, Chapter 6
Process Manager Responsibilities
Slide 6-16
• Define & implement the essential characteristics of a
process and thread
– Algorithms to define the behavior
– Data structures to preserve the state of the execution
• Define what “things” threads in the process can reference –
the address space (most of the “things” are memory
locations)
• Manage the resources used by the processes/threads
• Tools to create/destroy/manipulate processes & threads
• Tools to time-multiplex the CPU – Scheduling the
(Chapter 7)
• Tools to allow threads to synchronization the operation
with one another (Chapters 8-9)
• Mechanisms to handle deadlock (Chapter 10)
• Mechanisms to handle protection (Chapter 14)
Copyright © 2004 Pearson Education, Inc.
Operating Systems: A Modern Perspective, Chapter 6
Slide 6-17
Process Manager Overview
Program
Process
Abstract Computing Environment
File
Manager
Process
Deadlock
Description
Protection
Synchronization
Device
Manager
Devices
Copyright © 2004 Pearson Education, Inc.
Memory
Manager
Memory
Scheduler
CPU
Operating Systems: A Modern Perspective, Chapter 6
Resource
Resource
Resource
Manager
Manager
Manager
Other H/W
Slide 6-18
OS Process Management
Main Memory
Process
P1
Code
Data
Heap
Stack
Copyright © 2004 Pearson Education, Inc.
• OS keeps a Process Control Block
(PCB) for each process:
– Process state: new, running, waiting,
ready, terminated
– Program counter
– CPU registers
– CPU-scheduling information, e.g.
priority
– memory management info: value of
base and limit registers, page tables,
segment tables
– I/O info: open files, etc.
Operating Systems: A Modern Perspective, Chapter 6
Multiple Processes
Slide 6-19
Main Memory
Process
P1
Process
P2
Code
Code
Data
Heap
Data
Stack
Heap
Stack
Copyright © 2004 Pearson Education, Inc.
• Each process is in
memory
• Only one process at a
time executes on the
CPU
• OS provides the
mechanisms to switch
between processes
– this is called a context
switch
Operating Systems: A Modern Perspective, Chapter 6
Context Switching
Slide 6-20
Executable Memory
Initialization
Interrupt
1
Process
Manager
7
8
Interrupt
Handler
2
4
3
P1
9
5
P2
6
Pn
Copyright © 2004 Pearson Education, Inc.
• Each time a
process is
switched out, its
context must be
saved, e.g. in the
PCB
• Each time a
process is
switched in, its
context is restored
• This usually
requires copying
of registers
Operating Systems: A Modern Perspective, Chapter 6
Context Switches
• A context switch can occur because of
– a system call
– an I/O interrupt, e.g. disk has finished reading
– a timer interrupt
• this is how you implement multitasking
• Set a timer in the CPU for periodic interrupt, say every 1 ms
• On an interrupt, go to the timer interrupt handler, e.g. the
scheduler, and switch to another process in the ready queue
• Context switch time is pure overhead
– it is the price you pay for multiprogramming
– typically a few milliseconds
Copyright © 2004 Pearson Education, Inc.
Operating Systems: A Modern Perspective, Chapter 6
Slide 6-21
Multiple Processes: State Diagram
Request
Done
Running
Request
Schedule
Start
Allocate
Blocked
Copyright © 2004 Pearson Education, Inc.
Ready
Operating Systems: A Modern Perspective, Chapter 6
Slide 6-22
Communicating Between Processes
Slide 6-23
• Inter-Process Communication or IPC
– would like two processes to share information
between them
• shared file
• split a single application into multiple processes to
speed up execution by allowing overlapped I/O
• split an application into multiple processes for
modularity of coding
– if address spaces are completely isolated from one
another, then how do we share data?
Copyright © 2004 Pearson Education, Inc.
Operating Systems: A Modern Perspective, Chapter 6
Communicating Between Processes
Slide 6-24
• Two types of IPC
– shared memory - OS provides mechanisms that allow creation of a
shared memory buffer between processes
• shmget() creates a shared memory segment, using a name (key ID)
• shmctl() to modify control information and permissions related to a shared
memory segment
• shmat() to attach a shared memory segment to a process’s address space
• allows fast and high volume reading/writing of buffer in memory
• applies to processes on the same machine
– message passing - OS provides constructs that allow communication
via buffers
• typically implemented via system calls, and is hence slower than shared
memory
• sending process has a buffer to send/receive messages, as does the
receiving process
• used to pass small messages
• extends to communicating between processes on different machines
Copyright © 2004 Pearson Education, Inc.
Operating Systems: A Modern Perspective, Chapter 6
Communicating Between Processes
• Shared access to the same memory
introduces complexity
– need to synchronize access
– Producer-Consumer example
• if two producers write at the same time to shared
memory, then they can overwrite each other’s data
• if a producer writes while a consumer is reading,
then the consumer may read inconsistent data
Copyright © 2004 Pearson Education, Inc.
Operating Systems: A Modern Perspective, Chapter 6
Slide 6-25