Upload
others
View
4
Download
0
Embed Size (px)
Citation preview
CS143a Discussion Week 3Andrew Chio
Today’s Plan
• Going over a few things for HW1 (5 minutes)• Synchronous I/O vs Asynchronous I/O
• Other questions on HW1?
• Processes, Programs, and Threads (30 minutes)
• Code – Multithreading in C (5 minutes)
• Quiz Practice (5 minutes)
Synchronous I/O vs Asynchronous I/O (1)
• Scenario: User Process requests I/O
• Once I/O is started, two courses of action are possible:• Synchronous I/O
• wait instruction idles CPU until I/O is complete
• no simultaneous I/O processing, at most one outstanding I/O request at a time
• Asynchronous I/O• After I/O is initiated, control returns to the user program, without waiting for I/O
completion
• Keep track of many I/O requests at the same time:• Device Status table – holds type, address and state for each device
• OS indexes into I/O device table to determine device status and modify table entry to includeinterrupt
Synchronous I/O vs Asynchronous I/O (2)
Other questions for HW1?
• Two versions of the homework:• Only difference is on Question 1ci, 1ciii
• Poll via Chat: Do you need an extension? (Due: April 18th) • Can’t guarantee, but can ask if students would like one
Processes and Programsmain ()
{
…;
}
A() {
…
}
main ()
{
…;
}
A() {
…
}
Pro
gramP
rocess
• Process = Program in execution (sequentially)• Information stored in Process Control Block (PCB)
• More next slide
• Memory: text, data, heap, stack
• Other resources (e.g., opened files)
• Security attributes
Process Control Block
• Contains information associated with each process• Process State - e.g. new, ready, running etc.
• Process Number – Process ID
• Program Counter - address of next instruction to be executed
• CPU registers - general purpose registers, stack pointer etc.
• CPU scheduling information - process priority, pointer
• Memory Management information - base/limit information
• Accounting information - time limits, I/O status information
Process Control
Block
7
Process State
new admitted
interrupt
I/O or
event
completion
Scheduler
dispatchI/O or
event wait
exit
readyrunning
terminated
waiting
Process is being created, may have some resources
already
Process is admitted to system, has all
resources, ready to compete for CPU Process is now running
(assigned by scheduler)
Process exits when done.
Waiting on I/O or event (trigger for some other process to go from ready to running)
Event or I/O complete: go back
to ready (CPU might not be ready
yet)
Maybe process is not done, but interrupt
forces it to stop
Context Switching
Questions so far?
• Next: Process schedulers and profiles, Threads
Schedulers
• Long term scheduler / job scheduler• Selects which processes should be brought into the ready queue
• Invoked infrequently (seconds, minutes), may be slow
• Controls degree of multiprogramming
• Short term scheduler / CPU scheduler• Selects which process should execute next; allocates CPU
• Invoked very frequently (milliseconds) – must be very fast
• Medium Term scheduler• Swaps out process temporarily
• Balances load for better throughput
Process Profiles
• I/O bound Process: spends more time in I/O, has short CPU bursts• CPU is underutilized
• CPU bound Process: spends more time doing computations, has few long CPU bursts • I/O is underutilized
• The right job mix:• Long term scheduler: admits job to keep load balanced between I/O and CPU
bound processes
• Medium term scheduler: ensures the right mix by sometimes swapping out jobs and resuming them later
Linux Process Creation and Threads
• Process Creation• fork and exec used to create a new process and load a new program to run
• Processes do not share resources well• High context switching overhead, must copy all of memory space
• Threads: (What if we could share?) • Basic unit of CPU utilization
• Consists of program counter, register set, stack space
• Shares with peer threads: text, data, OS resources (e.g., open files, signals)
• Collectively called a task
Processes and Threads
Questions?
• Next: Types of Threads
Types of Threads
• Kernel Threads• Supported by kernel
• Thread can run/block independently
• A process may have several threads waiting on different things
• Cons? A bit expensive• Must schedule in kernel space
• Examples: Windows XP/2000, Linux, UNIX, Solaris, …
• Or, can have hybrid approach using both
• User Threads• Supported above the kernel
• Via library calls• Thread management done by user-level
threads library• User Program provides scheduler and
thread package• Mapping to kernel threads: Many to
one, one to one, many to many
• Pros: Cheap, Fast, Stay in User Mode• Cons: If kernel is single threaded,
syscall from a thread can block entire task
• Examples: POSIX pthreads, Win32 threads, Java threads
Multi-everything that you should know
• Multiprocessing: Multiple CPUs
• Multiprogramming: Multiple processes running concurrently
• Multithreading: Multiple threads per process
Code Demos: POSIX pthreads and OpenMP
• single.c: Just a double for loop, printing “Hello” 10x3 times• Compile with gcc –std=c99 single.c –o single
• pthreads_demo.c: 10 threads to each print “Hello” 3 times• Compile with gcc –std=c99 pthread_demo.c –o pthreads –lpthread
• openmp_demo.c: 10 threads, but pragmas do all the heavy lifting• Compile with gcc –std=c99 openmp_demo.c –o openmp -fopenmp
Quiz Practice
• Go to Gradescope > Quiz Practice to take the practice quiz
• Any Questions otherwise?