added load balancing to lec 18 notes
[kspaans/CS350] / lec02-0507.tex
1 \documentclass{article}
2 \usepackage{fullpage}
3 \usepackage{amsmath}
4 \author{Kyle Spaans}
5 \date{May 7, 2009}
6 \title{Operating Systems Lecture Notes}
7 \begin{document}
8 \maketitle
9
10 \section*{Lecture 2 -- Threads}
11 Remember that the \emph{OS161} source code can be browsed online from the
12 course website. A1 should be released today or tomorrow.
13
14 Some MIPS specific details relevant to us: All 32 registers have conventional
15 uses (arguments, stack pointers, return addresses, scratch values, saved
16 values), and these conventions are followed by the compiler and all of the
17 source code. In our MIPS architecture, the stack grows downwards towards
18 memory address \texttt{0x0}.
19
20 \subsection*{What are threads?}
21 What is the context a program's execution? It's the various special and general-
22 purpose registers as well as the contents of memory: data and code stored in the
23 heap and stack. The idea is that a thread captures all of this data in such a
24 way that we could pause and resume any given thread if we wanted to. This
25 allows us to have multiple threads executing at the ``same time'', even if
26 there are fewer processor cores than threads.
27
28 \subsection*{Implementing Threads}
29 We need a thread library in order to implement threads (can be implemented in
30 the kernel or outside of it, we are given a kernel implementation). It is made
31 up of the code to save and restore registers and setup the thread structure
32 which we call the ``thread control block''. It's worthwhile to note that the
33 registers are not stored in the thread structure, but rather they are saved
34 to the stack by \texttt{kern/arch/mips/mips/switch.S}. The thread struct
35 has a pointer to the thread's stack, which contains all of the relevant
36 information. It also saves the old value of the PC from the old thread so that
37 the thread can be restarted at the exact same place. \texttt{Switch.S} does the
38 ``dispatch'' between two threads.
39
40 \end{document}