Smith Hall 108
office hrs: M 1:20-2:20pm, W 4:30-5:30pm, or by appointment (HAAS 220)
Teaching Assistants: (office hours in HAAS G50 unless otherwise specified)
email@example.com, W 12:30-2pm
firstname.lastname@example.org, T 5:30-7pm
email@example.com, F 12:50-2:20pm
firstname.lastname@example.org, F 11:20am-12:50pm
Sri V Cherukuri
email@example.com, R 5:30-7:30pm (HAAS G72)
firstname.lastname@example.org, R 1:30-3:30pm
PSOs: (HAAS 257)
M 9:30-11:20am (Zou)
M 11:30am-1:20pm (Jahandideh, Conley)
M 3:30-5:20pm (Ashutosh)
T 9:30-11:20am (Jahandideh)
T 11:30am-1:20pm (Jeong, Conley)
T 3:30-5:20pm (Zou, Cherukuri)
W 9:30-11:20am (Ashutosh)
R 11:30am-1:20pm (Jeong, Cherukuri)
Operating System Design – The Xinu Approach, Douglas Comer, latest edition
- The final is scheduled on May 4, 2020, 7-9pm, in CL50.
- lab1 has been graded. Please follow the instructions noted in class to access your scores in grades/username/lab1.rpt under the course directory. If you have questions, please contact the GTA(s) who graded the relevant problem(s). You have one week to follow up.
- The midterm is scheduled on March 9, 2020, in-class, closed book/note. Additional information will follow as we approach the date.
- No PSOs in the first two weeks of class. Although not required, it is strongly recommended that students attend the PSOs where lab assignments are discussed and further TA assistance is provided.
Please follow instructions given in class for accessing lecture slides (pdf). The topics listed below include material not covered in the pdf lecture slides. They should be referenced from class notes and additional pdf slides.
- What is CS 354 about? (pdf)
- Operating system concepts and background
- Von Neumann architecture (pdf), CPU instruction set, registers, main memory, programs, compilers, assembly and machine code, static and dynamic linker, loader
- Memory layout produced by C compilers, run-time stack and CDECL caller/callee convention (pdf)
- Steps of XINU boot loading and initialization on galileo backends
- Upper half/lower half organization of operating systems including XINU, Linux/UNIX, Windows
- Isolation/protection: motivation, hardware and software support
- x86-specific features: IDT, software disabling of memory segmentation, privilege levels and user/kernel mode, GDT set-up in XINU vs. Linux/Windows
- lab2 related x86 features, trapped system calls, interrupt handling software design and coding issues
- Invocation sequence of scheduler from kernel upper and lower halves
CS 250, 251, 252. Ability to understand and write complex programs in C. Familiarity with system development tools.
The grade will be determined by a midterm, final, and lab assignments. Their relative weights are:
Lab assignments, midterm, and final exams will have opportunities to earn bonus points. These points serve to more easily reach the maximimum achievable points in the three components. The points do not carry over and are capped at 25%, 30%, and 45%.
Labs and Policies
We will use the XINU operating system for the lab assignments. The XINU lab is located in the HAAS Building, room 257. The lab is comprised of frontend machines xinu01.cs.purdue.edu, xinu02.cs.purdue.edu, ..., xinu21.cs.purdue.edu which are Linux PCs. You will use the frontend machines for operating system code development (coding and compiling/linking) and to access one of the backend machines galileo101.cs.purdue.edu, galileo102.cs.purdue.edu, ..., galileo196.cs.purdue.edu. The fronend machines can be remotely accessed via secure shell. They can be used by multiple users concurrently to develop and test code. The backend machines are x86-compatible Intel Galileo boards equipped with Quark X1000 processors that are dedicated to running your implementation of XINU. Thus you are loading/running your own OS binary developed on the frontends on dedicated backend hardware. The specifics of developing and testing code in the XINU Lab will be covered in lab1.
Getting Your CS Account
Students registered in the course should have an account automatically set up. Please check by going to HAAS 257 and logging in to one of the frontend machines (Linux PCs). If you have registered but don't have an account, please contact ScienceHelp@purdue.edu.
To help manage unexpected scheduling demands, you are given a budget of 3 late days in total that may be used for late submissions of lab assignments. For example, you may submit 1 day late on three lab assignments, or 3 days late on one lab assignment. Any combination is valid as long as the total days delayed does not exceed 3. There will be a total of 5-6 lab assignments. Late days not utilized at the end of the semester will be converted to 20 bonus point each (maximum of 60).Due to the low-level systems nature of the lab assignments, coding and evaluating parts of an operating system running on hardware is time intensive. To encourage proactive handling of assignments, all submissions turned in 2 days prior to its deadline will be given a 5% bonus credit (as a fraction of the points received).
We wish to foster an open and collegial class environment. At the same time, we are vigorously opposed to academic dishonesty because it seriously detracts from the education of honest students. Because of this, we have the following standard policy on academic honesty, consistent with Purdue University's official policy.
All CS354 lab assignments are individual efforts and collaboration is not allowed. It is permissible to discuss general ideas with other students, or to make use of reference materials in the library or online. If you do this, you will be expected to clearly disclose with whom you discussed the ideas, or to cite the references used. Failure to do so will be considered cheating or plagiarism. Collaboration that entails discussing specific methods of solution is not allowed. This includes discussing and sharing of code.
Unless otherwise explicitly specified, all code that is submitted is to be entirely each student’s own work. Any discussion of coding related to lab assignments, be it in person or using electronic media (e.g., email, social media) is not allowed. Using any code or assignment from others is prohibited without advance prior permission from the instructor. This includes the use of code others have submitted in the past.
Students who share their work with others are as responsible for academic dishonesty as the student receiving the material. Students are not to show work to other students, in class or otherwise. Students are responsible for the security of their work and should ensure that printed copies are not left in accessible places, and that file/directory permissions are set to be unreadable to others (e.g. use "chmod -R 700 *" from your home directory). If you need assistance protecting your work, please contact the TAs or the instructor.
Students who encourage others to cheat or plagiarize, or students who are aware of plagiarism or cheating and do not report it are also participating in academically dishonest behavior.
Be aware that we will use a software tool called MOSS to check for copying among submitted assignments. Additionally, the instructor and TAs will be inspecting all submitted material to ensure honesty.
If you have any lab assignment related questions, please utilize the PSOs and office hours to resolve them. The main difference between getting help on coding related questions from the instructor/TAs and a fellow student is that the instructor/TAs will provide assistance that help you tackle a problem on your own without revealing the solution.
Any case of academic dishonesty will be dealt with by a severe grade penalty in the overall class grade and referral to the office of the Dean of Students.
In the event of a major campus emergency, course requirements, deadlines, and grading percentages are subject to changes that may be necessitated by a revised semester calendar. If such unusual circumstances arise, students may determine any such changes by contacting their instructors via email or phone, and checking the course web page for updates.
Emergencies and campus closings will be announced on local media and on the main Purdue University WWW site http://www.purdue.edu. Please consult the Purdue emergency preparedness resources web site for detailed information and relevant resources.
This is an undergraduate introductory course to operating systems that investigates how modern operating systems are architected and implemented. Extensive implementation experience is gained by coding, testing, and benchmarking key components of the XINU operating system on dedicated backend hardware. Our main implementation platform will be x86-compatible backend machines and Intel x86 frontend PCs where code is developed. Most coding is done in C, with some hardware dependent components utilizing assembly language.
The topics covered in the course include: evolution of computing systems and their operating systems, process management, inter-process communication, memory manangement, virtual memory, I/O subsystems and device management, file systems, virtualization and security, and mobile operating systems. In addition to implementing key OS features in XINU, we will examine case studies in Linux, UNIX (Solaris and BSD), and Windows that differ from XINU and each other in significant ways. One important example is how I/O subsystems are architected to handle a range of heterogenous devices and their interrupts, including high-speed USB and wired/wireless network interfaces, that characterize many of today's computing systems. Kernel dependence on changing hardware features and support is an important theme throughout the course that will help familiarize with recent developments such as non-traditional file systems for flash memory prevalent in mobile systems. We will touch upon mobile OS (e.g., iOS, Android) with emphasis on differences with desktop/server operating systems.