L05_ProcessesAndThreads

Download Report

Transcript L05_ProcessesAndThreads

Processes & Threads
Introduction to Operating Systems: Module 5
CPU scheduling queue
From
Other
States
Remove the Running Process
Ready Process
Enqueuer
PCBs
Ready
Queue
Dispatcher
Context
Switcher
CPU
Schedulers
 Short-term
scheduler (STS)
Selects a process from ready queue and give it CPU (dispatch)
 Determine if the running process should be preempted (preempt)

 Medium-term

When needed, chooses ready processes to be saved to disk
(suspend), or restored from disk (activate)
 Long-term

scheduler (MTS)
scheduler (LTS)
Initiates process (activate)
 LTS
and MTS determine the degree of multiprogramming
Processes may be either I/O-bound or CPU-bound
 want to keep a good mix of each type of process to maximize
resource utilization

Process queues
ready queue
i/o
cpu
I/O queue
child
executes
join
condition queue
resource queue
I/O request
time slice
expires
fork a
child
resource
request
terminated
Queues as linked lists of PCBs
Running
Ready
Disk1
Disk2
Printer
Process switching
 Switching
from one process to another
 Often tens of microseconds (must be fast!)
 Increases utilization of CPU
 I/O
and processing in parallel
 incurs
minimal overhead
 CPU may have a process switch instruction
Process switching
 A process

switch may occur whenever the OS is invoked
system call
explicit request by the program, such as open file
 the process may be blocked

• If so, OS will dispatch a new process

Trap (non-system call)

an error resulted from the last instruction
• may cause the process to be moved to the terminate state

Interrupt
the cause is external to the execution of the current instruction
 control is transferred to the exception handler
 After servicing the exception, a new process may be dispatched

Process switching interrupts
 Clock
 process
 the
uses all of its time slice
exception handler will preempt the process
 I/O
 an
I/O device has completed a transfer
 wakeup
processes waiting for this event and resume
interrupted process, or
 preempt interrupted process and dispatch a ready process with
higher priority
Mode switching
 Not
all interrupts entail process switching
 control
can just return to the interrupted program
 only processor state information needs to be saved
 This
is called mode switching
 move
 Less
 no
from user mode to protected mode
overhead than process switching
need to update PCB
Process switching steps
 Stop
the current process (process A)
 Save enough state information (or context) so that
process A can be restarted later
 Select a ready process (process B)
 Load B’s state
 memory
mapping info, program counter, general
registers, open file table (pointer), etc.
 (Re)start
B
Threads
 A sequential

execution stream within a process
sometimes called a lightweight process (LWP)
 The
major advantages of threads

low cost of thread switching

easy mechanism for shared resources

easily take advantage of multiprocessor system
 The
major disadvantages

harder to debug

unneeded overhead if threads aren’t used
Threads
 Threads
within a process (or task) share
 text
segment
 data segment
 OS resources (open files and signals)
 Each
thread has its own
 program
counter
 register set
 stack space
A Process (kernel view)
Program
Text
Data
Process Status
Resources
Kernel Support
Allocate resources
to processes when
they are needed
A task and its family of threads
Thread
Program
counters
Stack
Thread Status
Program
Global data
Text
Process Status
Task (Process)
Resources
Resources
Resources
Why threads become popular now?

SMPs (Symmetric Multiprocessors)
2
to 128 processors sharing
 System bus
 I/O
system
 Main memory
 One
operating system for all processors
Three types of thread systems
 Kernel-supported
threads (Mach, OS/2, NT)
 User-level threads; supported above the kernel, via a
set of library calls at the user level
 Hybrid approach implements both user-level and
kernel-supported threads (Solaris)
A simple view
A User Program
A User Program
Thread 1
Thread 1
Thread 0
Thread 0
Thread 2
Thread 3
Thread run time
libraries
Thread 2
Thread 3
System
call
Kernel (see process)
Kernel (see thread)
User-level
Kernel-level
Kernel-level versus User-level threads
 User-level
thread
User-level activities; no kernel involvement
 Basic scheduling unit in OS is process
 Threads of the same process can not run on different CPUs in
SMP in parallel

 Kernel-level
thread
Each process consists of several threads
 Basic scheduling unit is thread
 Can run on different CPUs in SMP in parallel

Advantages of kernel threads

Higher application throughput

if there were no kernel thread support


need I/O means the process goes into waiting state and wait until the I/O is
complete
with multiple kernel threads per task
Block the I/O requesting thread and continue to work on another thread
 Increases the overall throughput of the application

Advantages of user level threads
 Threads
 can
be implemented at user levels, no kernel resources
 Threads
 no
are cheap
are fast
system calls, switching modes involved
Using Threads - Windowing System
Application
Window Threads
Minimized thread switching time
Better response time
Other Examples
Robot control: single program, multiple concurrent
operations
 Airline reservations: one thread per customer



thread per task
Network server: single program, must handle concurrent
requests from multiple users (examples: Web server)

thread pool
Sun Solaris 2
 Mixed
approach
 OS
schedules light-weight process (LWP)
 User-level library schedules user-level threads
 User
threads are cheap, can be thousands per task
 Each LWP supports one or more user threads
 LWPs
are what we’ve been calling kernel threads
 Solaris has entities called kernel threads; they are
scheduling artifacts contained in the OS
Sun Solaris 2 (Mixed)
Light weight
process (LWP)
Task 1
Task 2
Kernel thread
CPU
CPU
User-level thread
Task 3
KERNEL
CPU
CPU
Examples of threads packages

POSIX-style threads:




Microsoft-Style threads:



OSF/DCE, Chorus threads, POSIX P1003.4a pthreads
SunOS Multi-Thread Architecture (Solaris 2)
IBM AIX 4.x, SCO UnixWare 2.0
WIN32 threads (Window95, NT)
OS/2 threads (IBM OS/2)
Others: C Threads in Mach OS (now part of Macintosh OS X)