This preview shows page 1. Sign up to view the full content.
Unformatted text preview: Operating Systems II Spring 2009 MWF 9:009:50 am KEC 1003
firstname.lastname@example.org http://web.engr.oregonstate.edu/~paulson CS 411 Instructor: Paulson Office: KEC 2061 Stay tuned ... office hours might change MWF 10:00 am 12:00 noon other times by appointment Course community All course information Class mailing list https://secure.engr.oregonstate.edu/wiki/CS411 email@example.com http://engr.oregonstate.edu/mailman/archives/public/cs411sp09/ Mailing list archives Chuck Evans Vikram Iyer Ian Oberst, Rob Hess (unofficial, but essential) Teaching Assistants Get acquainted with these people. Help seminars: They will be your lifeline TBA Check course wiki for TA office hours, help seminars, and locations Required Text
Robert Love: Linux Kernel Development 2nd edition, Novell Press, 2005 ISBN: 0672327201 Check nerdbooks, amazon, half, etc. Additional Resources (recommended) New to Linux? Kernel tree kernelnewbies.org Kernel Cross Reference (useful for finding structure and function definitions) The Linux Kernel Archives (kernel.org) linuxhq.com Linux Weekly News Linux Online LinuxInsider The Linux Kernel by D. Rusling Linux Device Drivers, 3rd Edition by Corbet, Rubini, KroahHartman Tutorials Linux Online SVN Forums / Discussions Linux FAQs kerneltrap.org Linux Forums Online journals SVN The Linux FAQ The linuxkernel mailing list FAQ (tux.org) Subversion (version control system) C pointers Online books C Programming Notetaker needed $34.00 per credit hour If you have >= 2.5 GPA and take accurate, legible notes, please see me after class. Prerequisites: Official: CS 311 ECE 375 or CS 271 Knowledge of computer architecture Competence using linux /unix operating systems Experience programming in C Tenacity / flexibility Strong ethics / integrity Actual: Computer Architecture (prereq) Hardware Control CPU, ALU, registers, memory, buses, etc. System clock, instruction pointer, etc. Peripheral devices VonNeumann architecture Single/multiple processor configurations Stored program, instruction execution cycle, etc. linux / unix (prereq) Use a shell (bash, csh, xwindow, etc.) Log in, change password, etc. Get help (help, man, info, apropos, whatis, etc.) Commandline entry
System commands Start/stop jobs, shells, etc. History, autocomplete Assign/reference shell variables (set ) Manage processes Run processes in foreground/background List current processes linux / unix (prereq) File management Redirect output to another command's input Directory trees (ls) Create, append, remove Permissions (chmod) Symbolic links (ln ) Redirect I/O (<, >, >>, 2>, 2>>, &>, etc.) Pipe (|), tee, null less, more, head, tail, etc. linux / unix (prereq) Scripts Write shell scripts Start/stop shell scripts Utilities Make typescripts Note use of ctrld Other ssh, telnet, ftp, etc. pico, gcc, make, etc. grep, regular expressions Create Makefile for the make utility Etc. linux review ... http://www.linux.org/lessons/ Many other online courses Informal survey (show of hands): Have you ...
1. 2. 3. 4. 5. 6. used linux at the commandline level? written programs that invoke linux system commands? written / modified linux kernel code? submitted a patch to a linux development kernel? critiqued another contributor's patch in an official linux forum? had a patch accepted? Data structures (especially arrays, queues, and balanced trees) Functions, parameter passing Multimodule programs Pointers C programming (prereq) Pointers to structures Pointers to functions Pointers to structures of pointers Pointers to pointertype functions Pointers to pointers to structures of pointers to pointertype functions ... etc. C for kernel coding If needed, TAs will give evening seminar(s) Email me if this type of seminar would be useful. ... the most important prereqs: Tenacity / flexibility Ethics / integrity Kernel programming can be extremely frustrating Be able to look things up and figure out how to figure things out. Academic honesty is absolutely essential in order for learning to take place. Your approach to academic work forms the foundation of professional integrity in your career. See syllabus "Policies" section Definition of academic dishonesty: presenting, as your own work, material produced by or in collaboration with others, or permitting or assisting others to present your work as their own ... without proper permission and acknowledgment. Note: working in an "open source" environment presents unique challenges Calendar See wiki link Contains: Dates for quizzes and exams Due dates for homework, programming projects, etc. Dates for special events Check here every week; the schedule may be adjusted if it becomes apparent that more/less time is needed for some of the topics. Exams Midterm: Wednesday, May 6, in class Final: Monday, June 8, 6:00 7:50 pm If you have an exam conflict, be sure to resolve it before the end of the second week of classes. Lecture slides PowerPoint slides will be available on the course wiki, shortly after the actual lecture. Do not depend solely on these slides for the course material much of the lecture material will be covered using other media. Course Goals You should learn how modern operating systems are constructed, and understand some of the important design decisions and tradeoffs involved. You should learn how core operating system services are designed and constructed, including: You should learn how a major opensource project is developed and maintained. process management/scheduling synchronization / deadlock handling interrupt handling input/output management memory / virtual memory management file management etc. Course Methods There is no substitute for experience. Theory is also important There will be substantial programming assignments that involve developing OS functions for the linux kernel. Helps to prepare you to enter the workforce Helps you produce highquality project solutions Lectures, reading assignments, homework, quizzes, and exams will help to reinforce theoretical content. Open Source Does not fit into the traditional instructional paradigm For the required projects, we will simulate an open source environment One way to get some of the course credit is to participate in one of the "whole class" kernel janitor projects. There's more to open source than free code. (much) More later Reality Check This course is a work in progress Everyone can contribute to refining the course ... always will be All of us are guinea pigs Great flexibility is required Successes / failures of previous versions Learning to swim At the completion of this course, students will be able to ... Official CS411 Learning Objectives 1. design, implement, and test operating system related functions within a large and complex opensource code base. 2. select appropriately among processes, user threads, or kernel threads to solve a concurrent problem. At the completion of this course, students will be able to ... Learning Objectives 1. explain why synchronization is necessary for a concurrent processes scenario, and design synchronization solutions. 2. apply appropriate algorithms to avoid / recover from deadlock for given concurrent processes. At the completion of this course, students will be able to ... Learning Objectives 1. explain the strengths and weaknesses of several CPU scheduling algorithms with respect to wait time, turnaround time, throughput, and contextswitching implementation challenges. 2. explain various mechanisms for protection of memory, the operating system, and system/user files. At the completion of this course, students will be able to ... Learning Objectives 1. map virtual addresses to physical addresses. 2. analyze program data access patterns that may affect the performance of a virtual memory system. At the completion of this course, students will be able to ... Learning Objectives 1. explain various disk block allocation / freespace management strategies, and compute access times for various disk scheduling algorithms. 2. participate effectively in a team environment. Grading
5 Homework assignments "Open source" participation 2 quizzes 1 midterm exam Final exam 4 or 5 kernel development projects 45% 15% 15% 20% 0% 5% Grading To pass the course, you must earn at least a 60% average on quizzes / exams and Extra credit stays in its category at least a 60% average on the projects (can not carry over to another category) Final grades are based on the accumulated percentage, using the "usual" scale. Scores will be posted on the web ... You will receive a posting code number at your onid email address. After each graded activity go to the course wiki and click Score Posting Teams Projects are difficult (except project #1) For team work: Most students cannot complete the projects individually. You are required to work in a team to distribute the labor. (Objective #10) Each team member does his/her share. Each member works toward the team goal. Teams Choose your own team. Each team must have three or four members. One member sends the names of the team members to: firstname.lastname@example.org Confirmation will be sent to your onid address 2 and 3member teams may have another member (or 2) assigned at random If your team membership has not been reported by 3:30 pm today, you will be randomly assigned to a team. Grad students: stick together Project #1 Will be posted on the course wiki Easy project, but be sure to fulfill requirements Due Sunday, April 3, before midnight You will be notified by email Must be submitted electronically before midnight on the due date. http://
engr.oregonstate.edu/teach Submitting programs Each team member commits at least one change to the project, but ... Only one team member should submit a project. Submit as often as you like. Program Grading Criteria Programs are graded on a 100point scale, distributed as follows: 15 10 60 5 5 5 Preliminaries (plan, files, compilation, etc.) Documentation Verification
(Correctness, completeness, and robustness) Coding style / readability / modularity / Additional requirements Review (separate document from each team member) Program documentation
1. Always identify your team and the project at the top of each file. 2. Always use selfdocumenting code. 3. Always cite your sources. 4. Provide additional comments as needed. (Usually comment logical sections of code.) 5. More about documentation later when we discuss kernel coding style. * Additional requirements Programming assignments include a set of system requirements. Requirements specify certain methods, structures, etc., that must be used in the solution (even if they might not represent the "best" way to solve the problem). Remember that the purpose of these requirements is to reinforce the concepts. Note: It is possible to get only 60 out of 100 points on a program that "works perfectly". Distribution of labor and Version control For every project Each member of the team must commit some changes to the team's code repository This term we will use SVN Each team submits a Credit Distribution Agreement, signed by all team members Each team will have 1 GiB of space on ENGR for a code repository OK to use git Special Teams PFL Others? Get approval Questions? ASAP (Before 3:30 pm today) Get your team established Send team member names to Paulson Read Love Chapters 1 & 2 Before class on Wednesday Watch email for Project #1 announcement ...
View Full Document
- Spring '08
- Operating Systems