OS Lecture 06
OS Lecture 06
3
Process in Memory
4
Process State
As a process executes, it changes state
new: The process is being created
running: Instructions are being executed
waiting: The process is waiting for some event to occur
ready: The process is waiting to be assigned to a
processor
terminated: The process has finished execution
5
Diagram of Process State
6
Process Control Block (PCB)
Information associated with each process
(also called task control block)
Process state – running, waiting, etc
Program counter – location of instruction to next
execute
CPU registers – contents of all process-centric
registers
CPU scheduling information- priorities,
scheduling queue pointers
Memory-management information – memory
allocated to the process
Accounting information – CPU used, clock time
elapsed since start, time limits
I/O status information – I/O devices allocated to
process, list of open files 7
CPU Switch From Process to Process
8
Threads
So far, process has a single thread of execution
Consider having multiple program counters per
process
Multiple locations can execute at once
Multiple threads of control -> threads
Must then have storage for thread details, multiple
program counters in PCB
See next chapter
9
Process Representation in Linux
Represented by the C structure task_struct
pid t_pid; /* process identifier */
long state; /* state of the process */
unsigned int time_slice /* scheduling information */
struct task_struct *parent; /* this process’s parent */
struct list_head children; /* this process’s children */
struct files_struct *files; /* list of open files */
struct mm_struct *mm; /* address space of this process */
10
Process Scheduling
Maximize CPU use, quickly switch processes onto CPU
for time sharing
Process scheduler selects among available processes
for next execution on CPU
Maintains scheduling queues of processes
Job queue – set of all processes in the system
Ready queue – set of all processes residing in main
memory, ready and waiting to execute
Device queues – set of processes waiting for an I/O device
Processes migrate among the various queues
11
Ready Queue And Various I/O Device Queues
12
Representation of Process Scheduling
Queueing diagram represents queues, resources,
flows
13
Schedulers
Short-term scheduler (or CPU scheduler) – selects which process should
be executed next and allocates CPU
Sometimes the only scheduler in a system
Short-term scheduler is invoked frequently (milliseconds) (must be
fast)
Long-term scheduler (or job scheduler) – selects which processes
should be brought into the ready queue
Long-term scheduler is invoked infrequently (seconds, minutes)
(may be slow)
The long-term scheduler controls the degree of multiprogramming
Processes can be described as either:
I/O-bound process – spends more time doing I/O than computations,
many short CPU bursts
CPU-bound process – spends more time doing computations; few
very long CPU bursts
Long-term scheduler strives for good process mix 14
Addition of Medium Term Scheduling
Medium-term scheduler can be added if degree of
multiple programming needs to decrease
Remove process from memory, store on disk, bring
back in from disk to continue execution: swapping
15
Context Switch
When CPU switches to another process, the system
must save the state of the old process and load the
saved state for the new process via a context switch
Context of a process represented in the PCB
Context-switch time is overhead; the system does no
useful work while switching
The more complex the OS and the PCB the longer the
context switch
Time dependent on hardware support
Some hardware provides multiple sets of registers per
CPU multiple contexts loaded at once
16
Operations on Processes
System must provide mechanisms for:
process creation,
process termination,
and so on as detailed next
17
Process Creation
Parent process create children processes, which, in turn
create other processes, forming a tree of processes
Generally, process identified and managed via a process
identifier (pid)
Resource sharing options
Parent and children share all resources
Children share subset of parent’s resources
Parent and child share no resources
Execution options
Parent and children execute concurrently
Parent waits until children terminate
18
A Tree of Processes in Linux
i ni t
pi d = 1
l ogi n kt hr e add s s hd
pi d = 8415 pi d = 2 pi d = 3028
e mac s t cs ch
ps
pi d = 9204 pi d = 4005
pi d = 9298
19
Process Creation (Cont.)
Address space
Child duplicate of parent
Child has a program loaded into it
UNIX examples
fork() system call creates new process
exec() system call used after a fork() to replace the
process’ memory space with a new program
20
C Program Forking Separate Process
21
Creating a Separate Process via Windows API
22
Process Termination
Process executes last statement and then asks the
operating system to delete it using the exit() system
call.
Returns status data from child to parent (via wait())
Process’ resources are deallocated by operating system
Parent may terminate the execution of children processes
using the abort() system call. Some reasons for doing
so:
Child has exceeded allocated resources
Task assigned to child is no longer required
The parent is exiting and the operating systems does not allow
a child to continue if its parent terminates
23
Process Termination
Some operating systems do not allow child to exists if its parent
has terminated. If a process terminates, then all its children
must also be terminated.
cascading termination. All children, grandchildren, etc. are
terminated.
The termination is initiated by the operating system.
The parent process may wait for termination of a child process
by using the wait()system call. The call returns status
information and the pid of the terminated process
pid = wait(&status);
If no parent waiting (did not invoke wait()) process is a
zombie
If parent terminated without invoking wait , process is an
orphan 24
Interprocess Communication
Processes within a system may be independent or
cooperating
Cooperating process can affect or be affected by other
processes, including sharing data
Reasons for cooperating processes:
Information sharing
Computation speedup
Modularity
Convenience
Cooperating processes need interprocess communication
(IPC)
Two models of IPC
Shared memory
Message passing 25
Communications Models
(a)Message passing.
(b) Shared memory.
26
Cooperating Processes
Independent process cannot affect or be affected
by the execution of another process
Cooperating process can affect or be affected by
the execution of another process
Advantages of process cooperation
Information sharing
Computation speed-up
Modularity
Convenience
27
Producer-Consumer Problem
Paradigm for cooperating processes,
producer process produces information that
is consumed by a consumer process
unbounded-buffer places no practical limit on
the size of the buffer
bounded-buffer assumes that there is a fixed
buffer size
28
Interprocess Communication – Shared Memory
An area of memory shared among the processes that
wish to communicate
The communication is under the control of the users
processes not the operating system.
Major issues is to provide mechanism that will allow
the user processes to synchronize their actions when
they access shared memory.
Synchronization is discussed in great details in
Chapter 5.
29
Interprocess Communication – Message Passing
Mechanism for processes to communicate and to
synchronize their actions
Message system – processes communicate with each
other without resorting to shared variables
IPC facility provides two operations:
send(message)
receive(message)
The message size is either fixed or variable
30
User Threads and Kernel Threads
User threads - management done by user-level threads library
Three primary thread libraries:
POSIX Pthreads
Windows threads
Java threads
Kernel threads - Supported by the Kernel
Examples – virtually all general purpose operating systems,
including:
Windows
Solaris
Linux
Tru64 UNIX
Mac OS X
31
Pthreads
May be provided either as user-level or kernel-level
A POSIX standard (IEEE 1003.1c) API for thread
creation and synchronization
Specification, not implementation
API specifies behavior of the thread library,
implementation is up to development of the library
Common in UNIX operating systems (Solaris, Linux,
Mac OS X)
32
Pthreads Example
33
Pthreads Example (Cont.)
P t h r e a d s E x a m p le ( C o n t . )
34
Pthreads Code for Joining 10 Threads
O p e r a t in g S y s t e m C o n c e p t s – 9 t h E d it io n 4 .2 1 S ilb e r s c h a t z , G a lv in a n d G a g n e © 2 0 1 3
35
Windows Multithreaded C Program
36
Windows Multithreaded C Program (Cont.)
37
Any Questions?
38