half done lec 5 notes
authorKyle Spaans <kspaans@student.math.uwaterloo.ca>
Tue, 19 May 2009 19:22:50 +0000 (15:22 -0400)
committerKyle Spaans <kspaans@student.math.uwaterloo.ca>
Tue, 19 May 2009 19:22:50 +0000 (15:22 -0400)
lec05-0519.tex [new file with mode: 0644]

diff --git a/lec05-0519.tex b/lec05-0519.tex
new file mode 100644 (file)
index 0000000..5898cdd
--- /dev/null
@@ -0,0 +1,41 @@
+\documentclass{article}
+\usepackage{fullpage}
+\usepackage{amsmath}
+\author{Kyle Spaans}
+\date{May 15, 2009}
+\title{Operating Systems Lecture Notes}
+\begin{document}
+\maketitle
+
+\section*{Lecture 5 -- Interrupts and Locks}
+We are reminded that the test-compile system is online, and that we should
+submit assignments early and often.
+
+\subsection*{Bounded Buffer}
+We can use two semaphores to enforce both a lower and upper bound in the amount
+of items in, see code in course notes.
+
+\subsection*{Turning Interrupts On and Off}
+In looking again at the implementation of \texttt{P()}, we notice that it calls
+\texttt{thread\_sleep()} from inside of it's critical section, interrupts are
+turned off. Does this mean that \texttt{thread\_sleep()} will turn them back
+on? No, in fact the implemtation asserts that interrupts be turned off inside
+of \texttt{thread\_sleep()}. Think of it this way: interrupts will be turned 
+off during the entire process of the context switch (naturally). Therefore they
+will be turned back on when the thread is selected to run again, and execution
+pops it way down through the stack frames. For example, if another thread that
+gets context switched to was put to sleep from \texttt{thread\_sleep()} then
+it will eventually turn interrupts back on after continuing from the return
+from \texttt{thread\_sleep()}.
+
+Note that \texttt{thread\_wakeup()} will choose only a single thread to wakeup
+if there are more than one thread sleeping on a particular address. Also
+remember that \texttt{thread\_wakeup()} will not cause a context switch, it
+only moves thread to the ready queue, out of the sleeping queue.
+
+\subsection*{Implementing Locks}
+It should not be very hard to implement them, we just need to make sure that
+we've got them correct, since they will be used everywhere in the rest of
+\emph{OS161}.
+
+\end{document}