OS Internals - CS 572/Fall 2003 Jim Binkley Syllabus -------- Class time: M/W, 4-5:20 Classroom: OCATE Office(jrb): FAB 120-14 Email: Jim Binkley: jrb@cs.pdx.edu Office hours: Jim Binkley, Tu/Th 11-12. or by appointment. Feel free to make an appointment via email. Please do not show up and expect to be entertained otherwise. home page: Jim: http://www.cs.pdx.edu/~jrb/ui.html mail list: cs572@cs.pdx.edu Text/s: required: Understanding the Linux Kernel. Bovet, Cesati. O'Reilly. 2nd Edition. ISBN 0-596-00213-0. Dec. 2002. See http://www.oreilly.com for more information. Linux Device Drivers. Alessandro Rubini and Jonathan Corbet. O'Reilly. ISBN: 0-596-00008-1. Jan. 2001, 2nd edition. Note: 1st editions are not acceptable. Prerequisites ------------- Students must... - be familiar with the functions of a modern multiuser operating system (equivalent to what is learned in CS333 or CS 533), - be familiar with C. - have the ability to send Internet e-mail to the address above. Class Overview -------------- The class this quarter intends to perform a pedagogical experiment. We will basically lecture from the two Linux Kernel books, and try to cover as much material as possible. As it is not possible to cover every kernel topic in a quarter we will focus on device drivers, modules, and kernel process management including synchronization, with at least one assignment on developing a linux module. The first part of the quarter will have material from the Linux device drivers book. The second part will focus more on the Linux Kernel internals book. Other kernel topics will be introduced as time allows. There will essentially be one programming assignment to be done in small teams. More information on that subject will be presented below. IMPORTANT: please bring your book to class. Linux drivers first, then kernel internals book later. Calendar (will slip, if necessary) ----------------------------------- This is a very rough calendar and it may be wrong in terms of lecture material. When What Assignments ---- ---- ----------- week of Sept 29-Oct 1 intro/assignments/modules A1 out, reading: D Chapters 1, 2, 16. K. Chapter 1 Oct 6-8 kernel synchronization K. Chapter 5. Oct 13-15 io devices K. Chapter 13. A1 email progress report by friday Oct 20-22 char devices/debugging D. Chapters 3,4. Oct 27-29 networking drivers K. Chapter 18, D. Chapter 14. Nov 3-5 midterm on the 3rd A1 email progress report by friday. catchup time Nov 10-12 memory management K. Chapters 2, and 7 Nov 17-19 process management K. Chapters 3, and 8, A1 email progress report by friday Nov 24-26 system calls and interrupts K. Chapters 4, and 9 Dec 1-3 catchup-time A1 in on Dec 3, start of class. Dec 8 final, same time as class Books: D - device driver book. K - kernel book. Programming Assignment ---------------------- Students will be divided up into teams of 2-3 people and assigned a Linux box at PSU to work on (mostly in the netlab, but some may work in the linux lab or at home for that matter if you have linux at home). You will have the entire quarter to work on this assignment. The exact assignment will have the following nature: Develop a loadable kernel module ... where you are asked to 1. port the ourmon probe front-end (See http://ourmon.cat.pdx.edu/ourmon for source and documentation and functionality) to linux. It must use the BPF and it must be a loadable module installed with insmod. 2. make your own proposal ... however you must either work on a linux device driver or a loadable module system. Grading ------- Midterm 100 Final 100 In class contributions 50 Programming Assignment 150 Regarding "In class contributions": The class will be considered a seminar. Students are expected to not be passive, to ask questions, and to help the instructor discuss things as we go along. Yes, the instructor will lead us on our pilgrimage into the wonders of the Linux kernel. Still, students will be expected to contribute. Showing up late, not at all, not bringing the text/s, never asking a single question, will not be regarded favorably. Your final grade for the course is determined by determining the weighted percentage of the points you earn with respect to the total possible. Each letter grade occupies roughly a 10 point spread (A: 90%-100%, B: 80%-89%, etc). Initial Assignment ------------------- 1. Use the World Wide Web and take a look at the instructor's home page and the home page (under construction) for the class; i.e., http://www.cs.pdx.edu/~jrb http://www.cs.pdx.edu/~jrb/ui.html 2. subscribe to the class majordomo email mailing list. To subscribe send the following message via SMTP/Internet email: To: majordomo@cs.pdx.edu Subject: -------- subscribe cs572 If you drop out, please unsubscribe. Send email as above to majordomo and make the body "unsubscribe" (without quotes)