Unformatted text preview:

Recall Modern Process with Multiple Threads Process Operating system abstraction to represent CS162 Operating Systems and Systems Programming Lecture 4 what is needed to run a single multithreaded program Two parts Multiple Threads Each thread is a single sequential stream of execution Protected Resources Thread Dispatching 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 September 12 2005 Prof John Kubiatowicz http inst eecs berkeley edu cs162 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 Recall Classification One Many One MS DOS early Macintosh Traditional UNIX Many Embedded systems Geoworks VxWorks JavaOS etc JavaOS Pilot PC Mach OS 2 Linux Windows 95 Win NT to XP Solaris HP UX OS X threads Per AS Threads encapsulate concurrency Real operating systems have either Active component of a process One or many address spaces One or many threads per address space Address spaces encapsulate protection 9 12 05 Keeps buggy program from trashing the system Passive component of a process Kubiatowicz CS162 UCB Fall 2005 of addr spaces Recall Single and Multithreaded Processes Lec 4 2 Did Windows 95 98 ME have real memory protection No Users could overwrite process tables System DLLs Lec 4 3 9 12 05 Kubiatowicz CS162 UCB Fall 2005 Lec 4 4 Goals for Today Recall Execution Stack Example Further Understanding Threads Thread Dispatching Beginnings of Thread Scheduling 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 Pointer Stack Growth C A 2 Note Some slides and or pictures in the following are adapted from slides 2005 Silberschatz Galvin and Gagne 9 12 05 Kubiatowicz CS162 UCB Fall 2005 Lec 4 5 A 1 9 12 05 MIPS Software conventions for Registers zero constant 0 16 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 15 callee saves Kubiatowicz CS162 UCB Fall 2005 Lec 4 6 Imagine the following C program temporary cont d reserved for OS kernel main ComputePI pi txt PrintClassList clist text What is the behavior here temporary caller saves 29 sp Stack pointer callee can clobber 30 fp frame pointer 31 ra Return Address HW t7 Stack holds temporary results Permits recursive execution Crucial to modern languages Single Threaded Example 0 s0 A tmp 2 ret C 1 Program would never print out class list Why ComputePI would never finish 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 9 12 05 Kubiatowicz CS162 UCB Fall 2005 Lec 4 8 Use of Threads Memory Footprint of Two Thread Example Version of program with Threads main CreateThread ComputePI pi txt CreateThread PrintClassList clist text 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 Two sets of CPU registers Two sets of Stacks Stack 1 Questions How do we position stacks relative to each other What maximum size should we choose for the stacks What happens if threads violate this How might you catch violations Address Space What does CreateThread do If we stopped this program and examined it with a debugger we would see Stack 2 Heap Global Data CPU2 Code Time 9 12 05 Kubiatowicz CS162 UCB Fall 2005 Lec 4 9 9 12 05 Per Thread State Kubiatowicz CS162 UCB Fall 2005 Lec 4 10 Lifecycle of a Thread or Process 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 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 11 9 12 05 Kubiatowicz CS162 UCB Fall 2005 Lec 4 12 Administrivia Group assignments now posted on website 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 Netwk 0 Head Tail 9 12 05 Link Registers Other State TCB9 Link Registers Other State TCB6 Link Registers Other State TCB2 Check out the Group Section Assignment link Please attend your newly assigned section Link Registers Other State TCB16 Link Registers Other State TCB3 Say need 1000 terminals Want 8MB Lec 4 13 9 12 05 Kubiatowicz CS162 UCB Fall 2005 Go to Nachos page and start reading up Start reading through the Nachos code reader 9 12 05 Lec 4 15 Lec 4 14 Conceptually the dispatching loop of the operating system looks as follows Loop RunThread ChooseNextThread SaveStateOfCPU curTCB LoadStateOfCPU newTCB OS Hardware Kubiatowicz CS162 UCB Fall 2005 Dispatch Loop Java APPS 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 management 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 Time to start Project 1 Asside Implementation Java OS Many threads one Address Space Why another OS Java OS Recommended Minimum memory sizes Structure What if want a cheap network point of sale computer Warning you will be prompted for a passphrase This should happen automatically when you login but you need to avoid hitting control C Link Registers Other State TCB8 UNIX X Windows 32MB Windows 98 16 32MB Windows NT 32 64MB Windows 2000 XP 64 128MB Available from Northside Copy Central Includes printouts of all of the code Not everyone has run the register program Kubiatowicz CS162 UCB


View Full Document

Berkeley COMPSCI 162 - Thread Dispatching

Documents in this Course
Lecture 1

Lecture 1

12 pages

Nachos

Nachos

41 pages

Security

Security

39 pages

Load more
Loading Unlocking...
Login

Join to view Thread Dispatching and access 3M+ class-specific study document.

or
We will never post anything without your permission.
Don't have an account?
Sign Up

Join to view Thread Dispatching and access 3M+ class-specific study document.

or

By creating an account you agree to our Privacy Policy and Terms Of Use

Already a member?