To students who are interested in taking this course with me:
My OS course has an exciting project component. Follow my advice below to better prepare yourself for the course.
- Familiarize yourself with Linux command line interface (CLI). Kernel development relies heavily on CLI. Get a Linux box (maybe a virtual machine) and play with it without the GUI. Then you will feel much better when you are given a console to hack your kernel, instead of thinking of it as a “black hole”.
- Find yourself a few reliable teammates. I do as much as I can to make the project groups small, but all the projects will be group projects due to our large class size. Having some reliable teammates (and some backups) who have time and are willing to invest their time may be crucial for you.
- Reserve enough time on your busy schedule. Expect to spend 10 hours a week, consistently, not 80 hours a week before the deadline, is expected for you to do a good job in my class.
I spend a lot of time on preparing new and exciting project topics. We are going to have a lot of fun together. I look forward to seeing you in my class!
CSE 330 covers the basics of operating systems. The lectures will cover the important OS topics including OS structure, processes, threads, scheduling, synchronization, deadlocks, main memory, virtual memory, file systems, mass storage, and I/O systems.
The course also includes three or four lab exercises which involve implementing process management, memory management, and storage management in Linux (at kernel level), the most widely used open-source OS, and Android (at kernel level), the dominating mobile OS, on physical mobile devices. All the labs should be done by students in groups of two or three each.
- Operating System Concepts, Abraham Silberschatz, Peter Baer Galvin, and Greg Gagne, Wiley. (Required for students to understand the lectures and prepare for the quizzes and exams.)
- Understanding the Linux Kernel, Daniel P. Bovet, Marco Cesati, O’Reilly. (Required for students to work on the lab exercises.)
- OS Structures
- Process Management
- Memory Management
- Storage Management
- Kernel modules and system calls
- Kernel threads and synchronization
- Page tables, address translation, page reclamation, low-memory management, etc.
- Virtual file system, file system implementation, IO scheduler, etc.
- Spring 2010 (first time introduced all Linux-based kernel-level projects)
- Fall 2010
- Spring 2012
- Spring 2013 (first time used vMoodle for online learning)
- Spring 2014 (first time introduced all Android-based kernel-level projects using physical Android devices)
- Spring 2015 (first time at ASU, 140 students)