ECE 4984 Linux Kernel Programming
ECE 5984 Adv. Linux Kernel Programming

# Course presentation

 
Penguins picture

Home | Course Presentation | Projects | Resources

Table of contents

The information present here is also available in the course syllabus in PDF format (draft).

Course overview

The Linux kernel is one of the most, if not the most, advanced operating system kernels with wide acceptance in the industry and scientific worlds. It is used on a wide spectrum of computer hardware, from embedded and portable devices to servers and HPC platforms, also including regular desktop and laptop computers. Due to its diverse properties, many industrial projects are based on Linux (e.g., Google Android), and so is the majority of systems software academic research. Knowledge about the Linux kernel internals, as well as kernel programming skills, are invaluable for a software engineer, especially one involved with systems software, but also for a hardware engineer to test new features or devices.

The course will teach Linux kernel programming following two complementary directions: (A) the study of the the different subsystems constituting the Linux kernel (roles, functions, and implementation); and (B) the development of kernel code in the form of new kernel modules as well as the modification of existing subsystems. Study and programming will concern all of Linux subsystems: processes, threads and scheduling; memory management; interrupt handling; device drivers; file system and block layer; network stack; synchronization and time management; boot process. In addition, specific techniques for programming in that particular environment that is the kernel will be studied, including kernel debugging methods, and large code base management and browsing tools. Notions of performance evaluation for the previously mentioned subsystems and their interaction with user application will be approached.

Upon completion of the course, the student will be able to:


Back to top

Course outline (draft)

Back to top

Prerequisites

Back to top

Course meeting time and location

Meeting time: TBA.
Location: TBA.
Back to top

Course instructor

TBA.

Back to top

Office hours, GTA, and GTA office hours

Office hours: Graduate Teaching Assistant (GTA):

TBA.

GTA office hours: Back to top

Texts

Back to top

Grading (draft, Spring 2017 version)

4984 5984
Graded work Final grade % Graded work Final grade %
4 small projects
(~ 2 weeks of work each)
10-20 % each 3 small projects
(~ 1-2 week of work each)
5-10 % each
1 large project
(~ 4 weeks of work each)
~35 % 3 large projects
(~ 3-4 weeks of work each)
20-30 % each
Final exam 10 % Final exam 10 %

Most of the grade will come for programming projects. The final exam will be open-book.

Back to top

Development environment

Some of the programming projects will require the student to install one or several Linux distributions (natively, for example in a dual boot way) on their personal machines. Moreover, the student personal machine should support hardware virtualization. Here are some resources to check for hardware virtualization support on one’s personal machine: Back to top

Honor code policy

Adherence to Virginia Tech’s honor code (Undergraduate Honor System) is expected in all phases of this course. All graded work is expected to be the original work of the individual student unless otherwise directed by the instructor. In working on the homeworks and projects, discussion and cooperative learning are allowed and, in fact, encouraged. However, copying or otherwise using another person’s solutions to the homework/project problems is an honor code violation. Individual work is to be the work of the individual student. You may discuss general concepts, such as software libraries, Internet resources, or class and text topics, with others. However, any discussion or copying of homework/project solutions, specific code, or detailed report content is an honor code violation. All source material used in homework/project code and reports must be properly cited. If you are using a shared computer or disk, it is an honor code violation to leave your source, report, or other files on the computer where others may access them, and it is an honor code violation to access other students’ files. Please discuss any concerns about the honor code or any questions that you may have about what is or is not permitted with the instructor. Any violations of the honor code will automatically be forwarded to the Office of the Honor System. The Undergraduate Honor Code pledge that each member of the university community agrees to abide by states: "As a Hokie, I will conduct myself with honor and integrity at all times. I will not lie, cheat, or steal, nor will I accept the actions of those who do." Students enrolled in this course are responsible for abiding by the Honor Code. A student who has doubts about how the Honor Code applies to any assignment is responsible for obtaining specific guidance from the course instructor before submitting the assignment for evaluation. Ignorance of the rules does not exclude any member of the University community from the requirements and expectations of the Honor Code. For additional information about the Honor Code, please visit: \url{http://www.honorsystem.vt.edu/}.
Back to top

Special needs and circumstances

Any student with special needs or circumstances should feel free to meet with or otherwise contact the instructor. Back to top

Virginia Tech Systems Software Research Group