Note that section is mandatory! You will be expected to understand the material that we cover in section.
In the first section, we'll discuss kernel extensions. Kernel extensions allow an operating system to dynamically incorporate new code and data. Using extensions, a small base kernel can define core functionality (e.g., virtual memory management), and selectively incorporate additional functionality that is necessary for the local machine. For example, an OS might load an extension to deal with a particular kind of device that exists on the local machine.
Here's what you should do before section:
- Read this paper from HotOS 2019 (local copy)!
- After you read the paper, answer the following questions. Post your
answers at least one hour before section; post your answers as
a followup to the Ed announcement of section.
- What are two advantages of running kernel extensions in the same address space as the kernel?
- What are two disadvantages of running kernel extensions in the same address space as the kernel?
- Section 4.1 of the paper says that the
void* dataargument to
romfs_fill_super()is "difficult" and "completely opaque." Explain in your own words why the
void* dataargument is problematic.
- What questions did you have about the paper?
How to read research papers
There are many strategies for reading a research paper. James typically reads papers sequentially, starting at the beginning. However, particularly at the beginning of your career, sequential reading can be very difficult. You may want to skim for high-level ideas, and then read again to pick up additional details.
For advice on how to read a paper, take a look at S. Keshav’s “How to Read a Paper” (local copy). I especially recommend following his advice for the first pass, which aims to develop a mental framework for the paper as soon as possible. Once that framework has been established, reading for content and ideas becomes much easier.
You might also be interested in Michael Mitzenmacher’s paper-reading instructions.