lec 8: each thread has 2 stacks, fixed typo
authorKyle Spaans <kspaans@student.math.uwaterloo.ca>
Fri, 29 May 2009 19:03:55 +0000 (15:03 -0400)
committerKyle Spaans <kspaans@student.math.uwaterloo.ca>
Fri, 29 May 2009 19:03:55 +0000 (15:03 -0400)
lec08-0528.tex

index 6c1fec9..0f88d84 100644 (file)
@@ -35,6 +35,8 @@ that runs without special privileges, and one for when the kernel is executing
 privileged code on behalf of the thread. One of the benefits of this is for
 protecting sensitive data from snooping application (e.g. things that may be
 saved into stack frames but not zeroed out), and to simplify memory management.
+So there is a kernel stack for each thread, you can find a pointer to it in
+\texttt{struct thread}.
 Stacks can overflow, so if an application stack is nearly full and calls a
 large system call, then the kernel's stack frames may overflow that stack. By
 maintaining and managing it's own stack, the kernel doesn't have to worry about
@@ -46,7 +48,7 @@ system call. The difference is that exceptions are unintentional, mistakes that
 the program makes, such as accessing the wrong part of memory or dividing by
 zero. Each kind of exception has a unique code, see
 \texttt{arch/mips/include/trapframe.h} for the meaning of each one. The kernel
-look at this value to see what to do next. It'll decide what to do based on
+looks at this value to see what to do next. It'll decide what to do based on
 what generated the exception, or whether it was a system call that jumped into
 the exception handler, or perhaps a hardware interrupt.