% // vim: set ft=tex:
\chapter{Topic Refinement}

\section{Static Checks}
* TODO: Difference between static- and runtime checks

\subsection{Define Additional Anlyse Rules}
* Example: TLB needs to be reset on Task Change

\subsection{Static Variable Declaration}



\section{Virtual Memory Management In Hard- and Software}
* Architecture choice: x86\_64
* CPU supports

* TODO: Is the static analysis of hardware specific assembly code possible and useful at all?
    * LLVM knows about the target and can potentially give hints about hardware specific instructions
* TODO: On which level can abstraction in Rust code start?

\subsection{Interrupts}
* https://software.intel.com/sites/default/files/managed/39/c5/325462-sdm-vol-1-2abcd-3abcd.pdf p. 2848


\section{Testing}
* How effective are tests?
* Are they necessary in addition to static checks?


\chapter{Using Rust Within Non-Rust Operating Systems}
\section{Linux Kernel Modules}

* TODO: describe Difficulties with Macros used Within Kernel

\chapter{OS Designs Based On Rust}

Thread Libraries:
* https://github.com/edef1c/libfringe

\section{Blog OS}
\section{intermezzOS}
\subsection{Memory Management}
* Which language items help with managing memory?
* How generic can the memory allocators be written?

Guarantees to be statically checked:
* Prevent access to unmapped physical memory
* Prevent duplicates in page tables
\section{Reddox}
\section{Tock}
