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 increasing are building their products using FreeBSD.
This course is of direct use to the professionals who work with FreeBSD systems. Applications developers can learn how to effectively and efficiently interface to the system; systems programmers can learn how to extend, enhance, and interface to the system; system administrators without direct experience with the FreeBSD kernel can learn how to maintain, tune, and configure the system; and individuals involved in technical and sales support can learn the capabilities and limitations of the system.
This course provides a broad overview of how the FreeBSD kernel implements its basic services. It will be most useful to those who need to learn how these services are provided. Students who will benefit from this course include operating-system implementors, system programmers, UNIX application developers, administrators, and curious users. This course is directed to users who have had at least a year of experience using a UNIX-like system. Knowledge of the C programming language is helpful, but not essential. They should have an understanding of fundamental algorithms (searching, sorting, and hashing) and data structures (lists, queues, and arrays).
This course will provide a firm background in the FreeBSD kernel. The course will start with an introduction to the kernel and the services that it provides. Next, the details of processes are described along with the unique FreeBSD jail facility that allows the creation of isolated virtual hosts running on the same system. Coverage includes process managements tasks such as signals, scheduling, and virtual memory. The course then turns to an I/O view of the kernel by introducing the I/O framework and detailing how it is accessed and configured and how it processes both character data and bulk data transfer such as disks. The course then covers the framework for and the support of both local and remote filesystems. Next the layering and implementation of the netwroking is covered including routing, forwarding, and security of the TCP/IP protocols. The course concludes by pulling the presented concepts together to show how they can be used to do performance measurement, system tuning, and security anaylsis. The presentations will emphasize code organization, data structure navigation, and algorithms rather than reviewing the kernel code itself. It will not cover the machine specific parts of the system such as device drivers.
Each student receives a copy of the textbook by Marshall Kirk McKusick and George V. Neville-Neil, The Design and Implementation of the FreeBSD Operating System, published by Addison-Wesley. Each student also receives a copy of the course notes which consist of a 550 page binder containing copies of all the overhead slides used in the course and a set of papers that provide supplemental reading to the text book. The evening class and video course also contain a set of weekly readings and exercises along with answers to the exercises.
Click here to get syllabus and class information for the short courses.
Click here to get syllabus and class information for the weekly course and information on how to obtain the class on video.
Click here or on the above to watch the first hour of the first lecture.