Windows Research Kernel

During the time of my PhD studies a colleague (Alexander Schmidt) and I maintained the blog WRK@HPI about the Windows Reseach Kernel. In the meantime the blog was closed - on the one hand because of no further activities by Microsoft to provide open kernel code for research purposes and on the other hand because Alex and I got our PhD.

This post collects all links to Windows Research Kernel related posts written by myself for the WRK@HPI blog.

Extending the Windows kernel

A central question when dealing with operating systems on a source code level is, how to extend the kernel and how to use new functionality in applications that are executed on top of the modified kernel. The usual way is to implement new system service calls. The following posts contain everything you need to know to implement new system service calls in the Windows Research Kernel.

Howto: Implementation of a new system service call (Part 1)
Howto: Implementation of a new system service call (Part 2)
Howto: Implementation of a new system service call (Part 3)

The Windows kernel is structured in multiple kernel modules. If you plan a complex extension of the WRK, you could create a new kernel module that contains all files of your implementation. How to integrate a new kernel module into the WRK build process is described in the following post.

Howto: Adding a new kernel module

Analysis / Experiments

Spin-locks are a fine-grained synchronization constructs used throughout the Windows kernel. The following post describes a way to measure spin-lock performance.

Measuring spin-locks

The amount of memory consumed by a single execution unit in the operating system determine the maximum degree of concurrent activities. The following post shows how much memory is used when creating a thread in the Windows kernel.

Memory allocations during thread creation

References

Just for reference purposes, the following posts give a short introduction to the list datastructures in the WRK, show a way to get the module name for an arbitrary memory address, and contain a list of all system service call implementations in the WRK and their source code location.

Linked lists
Getting module name for address
System service call list