The ``FreeBSD Kernel Internals: An Intensive Code Walkthrough'' course will be taught during the Spring of 2016. The class will be held at the historic Hillside Club at 2286 Cedar Street, Berkeley, CA 94709 just three blocks north of the Berkeley campus once per week from 6:30PM to 10:00PM starting Thursday January 21st and finishing on Thursday May 12th. You can sign up for the class here.
FreeBSD, like Linux, is an open-source UNIX-like operating system that is widely used to support the core infrastructure of many companies worldwide. Because it can be built with a small footprint, it is also seeing increased use in embedded applications. The licensing terms of FreeBSD do not require the distribution of changes and enhancements to the system. The licensing terms of Linux require that all changes and enhancements to the kernel be made available in source form at minimal cost. Thus, companies that need to control the distribution of their intellectual property increasingly are building their products using FreeBSD.
This course provides an in depth study of the source code of the FreeBSD 11 kernel. This course is aimed at users with a good understanding of the algorithms used in the FreeBSD kernel that want to learn the details of their implementation. Students are expected to have either taken the FreeBSD Kernel Internals class taught by the instructor (in either the 15 week night-class format, or the 15 class video class format) or to have throughly read and understood the textbook by Marshall Kirk McKusick, George V. Neville-Neil, and Robert N.M. Watson: The Design and Implementation of the FreeBSD Operating System, Second Edition, published by the Addison-Wesley subsidiary of Pearson Education. They are also expected to have a complete background in reading and programming in the C programming language. Students will not need to prove relationship with a source license holder, as the course will be based on the non-proprietary kernel sources released by The FreeBSD Project.
This course will provide a detailed background in the FreeBSD kernel. The course will cover all the basic parts of the system including process managment, memory management, scheduling, I/O structure, local and remote filesystems, and networking. The main emphasis will be on the machine independent parts of the system; little time will be spent on the machine specific parts of the system such as device drivers. Where machine specific topics are covered, the Intel 64-bit architecture will be used for illustration.
Each student receives a CD-ROM containing the FreeBSD 11.0 kernel sources with tags database.
The evening course meets once per week for fifteen weeks. The majority of the lecture time is spent reading kernel source code. The fifteen weeks are structured as follows:
1) Thurs Jan 21: Organization, overview of source layout 2) Thurs Jan 28: Kernel header files 3) Thurs Feb 4: System calls and file open 4) Thurs Feb 11: Pathname translation and file creation 5) Thurs Feb 18: Vnode interface mechanics, write to a FFS file 6) Thurs Feb 25: Matt Ahrens guest lecture: write to a ZFS file 7) Thurs Mar 3: Opening, using, and closing locally connected sockets One week break 8) Tues Mar 15: User datagram protocol and routing 9) Thurs Mar 24: TCP Algorithms 10) Thurs Mar 31: Fork, exit, and exec 11) Thurs Apr 7: Signal generation and delivery, scheduling 12) Weds Apr 13: Virtual memory header files and file mapping 13) Thurs Apr 21: Page fault service, pageout processing 14) Thurs Apr 28: NFS client and server operation One week break 15) Thurs May 12: Multiplexing with select, system startup 16) Weds May 18: Makeup date (if needed)
You can sign up for the class either in-person or by weekly installments as the class is taught here.
For those that do not live in the Bay Area, do not wish to wait until the course is next taught, or that are not generally free on Thursday evenings, the class will be available for purchase on DVD in June 2016.