CS162 Operating Systems and Systems Programming Lecture 4 Thread Dispatching September 12 2005 Prof John Kubiatowicz http inst eecs berkeley edu cs162 Recall Modern Process with Multiple Threads Process Operating system abstraction to represent what is needed to run a single multithreaded program Two parts Multiple Threads Each thread is a single sequential stream of execution Protected Resources Main Memory State contents of Address Space I O state i e file descriptors Why separate the concept of a thread from that of a process Discuss the thread part of a process concurrency Separate from the address space Protection Heavyweight Process Process with one thread 9 12 05 Kubiatowicz CS162 UCB Fall 2005 Lec 4 2 Recall Single and Multithreaded Processes Threads encapsulate concurrency Active component of a process Address spaces encapsulate protection Keeps buggy program from trashing the system Passive component of a process 9 12 05 Kubiatowicz CS162 UCB Fall 2005 Lec 4 3 threads Per AS One Many of addr spaces Recall Classification One Many MS DOS early Macintosh Traditional UNIX Mach OS 2 Linux Embedded systems Geoworks VxWorks Windows 95 JavaOS etc Win NT to XP Solaris JavaOS Pilot PC HP UX OS X Real operating systems have either One or many address spaces One or many threads per address space Did Windows 95 98 ME have real memory protection No Users could overwrite process tables System DLLs 9 12 05 Kubiatowicz CS162 UCB Fall 2005 Lec 4 4 Goals for Today Further Understanding Threads Thread Dispatching Beginnings of Thread Scheduling Note Some slides and or pictures in the following are adapted from slides 2005 Silberschatz Galvin and 9 12 05 Kubiatowicz CS162 UCB Fall 2005 Lec 4 5 Gagne Recall Execution Stack Example A tmp 1 ret exit A int tmp if tmp 2 B ret A 2 B C ret b 1 printf tmp B C Stack Growth C A 2 A 1 9 12 05 Stack Pointer A tmp 2 ret C 1 Stack holds temporary results Permits recursive execution Crucial to modern languages Kubiatowicz CS162 UCB Fall 2005 Lec 4 6 0 MIPS Software conventions for Registers zero constant 0 16 s0 callee saves 1 at reserved for assembler callee must save 2 v0 expression evaluation 23 s7 3 v1 function results 24 t8 4 a0 arguments 25 t9 5 a1 26 k0 6 a2 27 k1 7 a3 28 gp Pointer to global area 8 t0 temporary caller saves 29 sp Stack pointer callee can clobber 30 fp frame pointer 31 ra Return Address HW 15 t7 temporary cont d reserved for OS kernel Before calling procedure After return assume Save caller saves regs Save v0 v1 Save ra 9 12 05 Callee saves reg OK gp sp fp OK restored Other things trashed Kubiatowicz CS162 UCB Fall 2005 Lec 4 7 Single Threaded Example Imagine the following C program main ComputePI pi txt PrintClassList clist text What is the behavior here Program would never print out class list Why ComputePI would never finish 9 12 05 Kubiatowicz CS162 UCB Fall 2005 Lec 4 8 Use of Threads Version of program with Threads main CreateThread ComputePI pi txt CreateThread PrintClassList clist text What does CreateThread do Start independent thread running given procedure What is the behavior here Now you would actually see the class list This should behave as if there are two separate CPUs CPU1 CPU2 CPU1 CPU2 CPU1 CPU2 Time 9 12 05 Kubiatowicz CS162 UCB Fall 2005 Lec 4 9 Memory Footprint of Two Thread Example If we stopped this program and examined it with a debugger we would see Two sets of CPU registers Two sets of Stacks Stack 1 How do we position stacks relative toStack 2 each other What maximum size should we choose for the stacks What happens if threads violate this Heap How might you catch violations Address Space Questions Global Data Code 9 12 05 Kubiatowicz CS162 UCB Fall 2005 Lec 4 10 Per Thread State Each Thread has a Thread Control Block TCB Execution State CPU registers program counter pointer to stack Scheduling info State more later priority CPU time Accounting Info Various Pointers for implementing scheduling queues Pointer to enclosing process PCB Etc add stuff as you find a need In Nachos Thread is a class that includes the TCB OS Keeps track of TCBs in protected memory In Array or Linked List or 9 12 05 Kubiatowicz CS162 UCB Fall 2005 Lec 4 11 Lifecycle of a Thread or Process As a thread executes it changes state new The thread is being created ready The thread is waiting to run running Instructions are being executed waiting Thread waiting for some event to occur terminated The thread has finished execution Active threads are represented by their TCBs TCBs organized into queues based on their state 9 12 05 Kubiatowicz CS162 UCB Fall 2005 Lec 4 12 Ready Queue And Various I O Device Queues Thread not running TCB is in some scheduler queue Separate queue for each device signal condition Each queue can have a different scheduler policy Ready Queue Head Tail Tape Unit 0 Head Tail Disk Unit 0 Head Tail Disk Unit 2 Head Tail Ether Head Netwk 0 Tail 9 12 05 Link Registers Other State TCB9 Link Registers Other State TCB6 Link Registers Other State TCB2 Link Registers Other State TCB16 Link Registers Other State TCB3 Link Registers Other State TCB8 Kubiatowicz CS162 UCB Fall 2005 Lec 4 13 Administrivia Group assignments now posted on website Check out the Group Section Assignment link Please attend your newly assigned section Nachos readers Available from Northside Copy Central Includes printouts of all of the code Warning you will be prompted for a passphrase We need to autogenerate ssh keys for you When prompted for a pass phrase don t forget it This is needed for group collaboration tools Not everyone has run the register program This should happen automatically when you login but you need to avoid hitting control C Time to start Project 1 Go to Nachos page and start reading up Start reading through the Nachos code reader 9 12 05 Kubiatowicz CS162 UCB Fall 2005 Lec 4 14 Asside Implementation Java OS Many threads one Address Space Why another OS Recommended Minimum memory sizes UNIX X Windows Windows Windows Windows 32MB 98 16 32MB NT 32 64MB 2000 XP 64 128MB What if want a cheap network point of sale computer Say need 1000 terminals Want 8MB Java OS Structure Java APPS OS Hardware What language to write this OS in C C ASM Not terribly high level Hard to debug Java Lisp Not quite sufficient need direct access to HW memory 9 12 05managementKubiatowicz CS162 UCB Fall 2005 Lec 4 15 Dispatch Loop Conceptually the dispatching loop of the operating system looks as follows Loop RunThread ChooseNextThread SaveStateOfCPU curTCB
View Full Document
Unlocking...