SRL Publications Projects Courses

Courses

600.318/600.418

600.328/600.428

600.436

600.438

600.439

600.439: Microkernel Architecture and Design


 
Fall 2007 Syllabus (Preliminary)  

Last Update: 9/22/2007

This course provides a look at the architecture and design issues in a modern microkernel from the inside. The course will give an overview of the architecture of the Coyotos secure microkernel, and will walk through its source code from power-on through the first interprocess communication.

Source materials for this course will include the Coyotos documentation (online at www.coyotos.org), and the source code (online at dev.eros-os.com/hg/coyotos.

The 3 hour lecture format will be split each week into two parts, one dealing with overview or design issues and the other looking at some particular part of the kernel.

The basis for grading in this course will be classroom participation and software projects.

The syllabus that follows is a work in progress!

Week of Topic(s) and Papers
11 September

Overview and Introduction

Handouts

Coyotos Kernel Specification

Coyotos Developer Guide

Lecture

Organization, beginning of an introduction to the Coyotos system.

Audio

First Half audio was unrecoverable
Second Half: [mp3]

18 September

Further Overview, Booting the Pentium

Readings

Coyotos Kernel Specification

Source

boot.S.

Lecture

Further overview of Coyotos. Discussion of how the core objects implemented by the kernel correspond to the hardware memory-mapping system mechanisms.

Audio

First Half: [mp3]
Second Half: [mp3]

25 September

Physical Memory, Interrupts, Transactions, and Locking

Readings

Developer Guide

Source

init.c, kern_PhysMem.c, transmap.c, kern_malloc.c, kern_mutex.c.

Also the corresponding header files!

Lecture

Organization of the kernel source tree. Issues in desigining a microkernel for SMP support. How the Coyotos transaction model simplifies and complicates our lives. Discussion of how physical memory is discovered and provisioned, how physical memory regions are accessed by the kernel, and how the locking subsystem works.

Audio

First Half: [mp3]
Second Half: [mp3]

2 October

Forthcoming

Source

Cache.h, kern_Cache.c, kern_malloc.c, PhysMem.h, ObjectHeader.h,

Also the corresponding header files!

Lecture

Heap and memory management. The object cache. Capabilities and their relationship to objects. Scheduling, locking.

Audio

First Half: [mp3]
Second Half: [mp3]

9 October

Forthcoming

Audio

First Half: [mp3]
Second Half: [mp3]

16 October

Forthcoming

Audio

First Half: [mp3]
Second Half: [mp3]

23 October

Forthcoming

Audio

First Half: [mp3]
Second Half: [mp3]

30 October

Part 1: Walk-through of the tools and steps in building a Coyotos image, including mkimage.

Part 2: The capability invocation path.

Audio

First Half: [mp3]
Second Half: [mp3]

6 November

Part 1: Restart on the capability invocation path.

Part 2: Discussion of the project assignment.

Audio

First Half: [mp3]
Second Half: [mp3]

13 November

Part 1: Invocation path for kernel-implemented capabilities..

Part 2: Questions related to the project assignment.

Audio

First Half: [mp3]
Second Half: [mp3]

20 November

Part 1: What capability systems (might be) good for.

Part 2: Page fault handling.

Audio

First Half: [mp3]
Second Half: [mp3]

27 November

Part 1:

  • Protected payload vs. endpoint IDs. Rationale and usage.

  • What is an Object (and other religions)?

  • Defensive programming and notions of validity.

Part 2: Constructor, VirtualCopySpace

Audio

First Half: [mp3]
Second Half: [mp3]

4 December

Final lecture. Compare and contrast what UNIX got "right" vs. what Coyotos got "right."

Audio

First Half: [mp3]
Second Half: [mp3]