The course projects will be in C. If you do not know C, or if it has been awhile since you've programmed in C, I encourage you to look at some C programming references before the start of the semester.
Prerequisite: CPSC 035 required. CPSC 033 or CPSC 52 recommended.
OR:
the 8th Edition of "Operating Systems Concepts" by these
authors, can be used in place of the above text
WEEK | DAY | ANNOUNCEMENTS | TOPIC & REFERENCES | INCLASS & ASSIGNMENTS |
1 | Aug 29 | Introduction, Processes | Chapt. 1, 3 lab 1 Wed lab |
|
2 | Sep 05 | add/drop ends (Sep 09) | Processes and Scheduling | Chapt. 3, 5 Wed lab |
3 | Sep 12 | Sccheduling and Threads | Chapt. 5, 4 | |
4 | Sep 19 | Synchronization | Chapt. 6 Wed lab hw 1 lab 2 |
|
5 | Sep 26 | No class Wed (Sep 28) | Synchronization cont. | Chapt. 6 Wed lab |
6 | Oct 03 | Memory Management | Chapt. 7 practice synchronization problems |
|
Oct 10 |
Fall Break |
|||
7 | Oct 17 | Midterm (Wed night 7-9pm, rm 199 Sci Cntr) (Oct 19) | Mem Mgmt | Chapt. 7 hw 2 |
8 | Oct 24 | Virtual Memory | Chapt. 8 lab 3 |
|
9 | Oct 31 | File System | Chapt. 9, 10 | |
10 | Nov 07 | File System, Storage the sounds of disks failing |
Chapt. 10, 11 | |
11 | Nov 14 | I/0 Subsystem | Chapt. 12 hw 3 lab 4 |
|
12 | Nov 21 | Thanksgiving break (Nov 25) | Protection and Security | Chapt. 13, 14 |
13 | Nov 28 | Advanced Topics | ||
14 | Dec 05 | |||
Dec 14 |
Final Exam (9am-noon) room 199 Sci Ctr |
20% Midterm Exam (Wednesday Evening Oct. 19, 7-9pm) |
25% Final Exam |
50% Labs and Written Homework |
05% Class Participation |
We will be using QEMU for Linux kernel projects. See the On-line Resources section for more information about using qemu.
Please read through the"Computer Lab Rules" under the "Introductions" section of the CS help pages.
Because we do not do backups of the /local file system,
for Linux kernel labs, you should periodically copy the kernel source
code files you modify (just the ones you modify) in /local to
your private git repository in /home. You can
use scp
to copy files between your Linux VM to your
project directory.
In addition, you may want to use some type of revision control software to
help you coordinate shared accesses to project files by you and your partner
and to allow a way for you to back-up working versions of your code. I'd
recommend using git. rsync
and scp
can be
used to copy source code from your VM to your CS Lab account.
See my
"Collaboration Tools" documentation for more information.
Lab assignments will be submitted on-line using
cs45handin
. You can submit the same assignment multiple times
up to the due date using cs45handin. Once you have
submitted your solution to an assignment, make sure to
keep a copy of it that you will not modify after you submit it (this way if
something goes wrong with cs45handin I can use the dates of your solution
files to determine when you submitted it).
Most assignments will require an
additional project demo. You will sign up for a demo slot during which you
and your partner will run your modified kernel for me with tests that
demonstrate that your modifications work as specified.
You are allowed to use up to 3 late days this semester for turning in programming assignments. However, at most 2 late days can be used on an individual assignment. One day late means turned in before the original time the assignment was due on the next day class meets. For example, if the original assignment is due on Monday before 1am, then if you submit it after Monday at 1am but before Wednesday at 1am it is one day late.
Use late days wisely; once you have used up your late days, I reserve the right to not accept any further late assignments from you, and if I do accept further late assignments from you, you will receive a significant late penalty on them. .
Discussing ideas and approaches to problems with others on a general level is fine (in fact, we encourage you to discuss general strategies with each other), but you should never read anyone else's code or let anyone else read your code. If you are in doubt about some help that you received, then credit the person(s) from whom you got help by citing them in a comment at the top of the file and discuss the situation with your instructor.
For this course, it is fine to help each other with using qemu, with building and booting a Linux kernel, with using Unix and C utilities and tools, with reading and understanding Linux kernel code, and with reading and understanding the assignments. However, you should avoid discussing the details of your solution with anyone other than your project partner, and you should never look at anyone else's code for a solution to a project (or to a similar project). In addition, there are many useful on-line Linux resources of which you should take advantage. However, make sure that you do not use these resources in such a way that it violates the spirit of our Academic Integrity statement. For example, you should not search the web for source code solutions to similar lab problems (I don't know if any exist, but it is possible), nor should you post questions to news groups or mailing lists seeking a solution to the specific problem you are asked to solve. Basically, the solution and code that you submit as your own should be your own. If you are unclear about what type of collaboration is okay and what type is not, ask me about your situation before proceeding.