In some ways, operating systems are just like any other user-space program. They are written in a high-level language, they allocate memory, and they have pointers, references, and array indexing. Enforcing memory safety for an operating system is conceptually the same as enforcing memory safety on user-space applications.

And yet, operating systems are not quite the same. They introduce new challenges. They often use custom alloctors, must induce very low overhead, and have time-critical functionality. Operating systems also perform certain operations that are rare in the application world: context switching, direct hardware I/O, and asynchronous event delivery, just to name a few.

It's therefore not surprising that operating systems have gotten special treatment in the research literature. Below are some papers on this specialized topic.

Operating System Memory Safety Papers