Improving your 412 performance
Here is what I suggest if you want to improve your exam performance
and reduce the time spent in your project.
-
Get a global understanding of GeekOS
-
Find out all the threads that exist after initialization and what they do.
(Some (find out which) are of no concern to us.)
-
Read and understand the GeekOS overview.
-
Go over the following parts of GeekOS line by line
and make sure you understand it all.
-
setup.asm, main.c, and the Init_* functions called in Main()
-
kthread.c
If there is a call to a function in another file,
look it up and note what it does
(the comments usually suffice).
Make sure you understand every line of C code;
if you don't remember your C, relearn it (quickly).
-
Learn to write multi-threaded programs using semaphores
and no other synchronization construct
-
Read and absorb the multi-threading note.
-
Be able to write down from memory all the solutions in the note:
bounded-buffer, Peterson's, test-and-set, etc.
-
Learn what busy waiting means.
-
We'll be doing more problems.
Try to solve them on your own.
Work in groups if that helps.
-
I can give you take-home pracice quizzes (no weight)
if you want more practice.
-
Ask questions
-
If you don't understand something, ask:
on Piazza, in class, in office hours.
-
Put the effort to ask a something more specific than
"Explain Project 4" or "Explain paging".
-
I'm happy to expand my office hours (preferably before and after class)
and to have many of you there at the same time.
-
No guarantees
-
This is a hard 4-credits class.
If you are doing badly and
you don't have the time or energy to carry out these suggestions,
there is a good chance that you will not pass the class.
-
Your grade is based on performance and not effort.
-
There will be no extra work to make up for poor past performance.
As I've explained, my thresholds are low enough so that
a high score in exam 2 or 3 can overcome a D in exam 1
(just do the addition yourself).