% // vim: set ft=tex: \chapter{Concrete Research Tasks} \section{Definition Of Additional Analysis Rules To Extend Safety Checks} % TODO: Business Logic Checks % Examples: % TLB needs to be reset on Task Change % ISR-Stack-Frame needs to be updated on context-switch \section{Software Fault Isolation} % TODO: content from \cite{Balasubramanian2017} % TODO Which language items help with managing memory? % TODO How generic can the memory allocators be written? % TODO Guarantees to be statically checked: % TODO * Control access to duplicates in page tables % TODO * Tasks can't access unallocated (physical) memory % TODO * Tasks can't access other tasks memory \subsection{Paging} Setting up and maintaining the paging-structure, as well as allocating physical memory for the virtual pages is a complex task in the \gls{os}. Developing this part of the \gls{os} is error-prone, and is not well-supported by mainstream \glspl{proglang}. \chapter{Porting \glsentrytext{C} Vulnerabilities} \label{rnd::porting-c-vulns} In this chapter, the weakness manifestations given in \cref{context::common-mem-safety-mistakes::manifestations} are rewritten in \gls{Rust} to examine if these are mitigated just by porting them. This is done incrementally by first porting the vulnerability to unsafe Rust, followed by a rewrite to drop all unsafe code but keeping the intended functionality. % TODO stack frame manipulation % TODO official CWE-119 examples \chapter{\glsentrytext{LX} Modules Written In \glsentrytext{Rust}} \chapter{Existing \glsentrytext{os}-Development Projects Based On Rust} \label{rnd::existing-os-dev-with-rust} \section{Libraries} \subsection{Libfringe} % TODO: https://github.com/edef1c/libfringe \section{Systems} \subsection{intermezzOS} \subsection{Blog OS} \subsection{Redox} \subsection{Tock} %TODO: mention paper's by tockos team \chapter{\glsentrytext{imezzos}: Adding Preemptive \glsentrytext{os}-Level Multitasking} \label{rnd::imezzos-preemptive-multitasking} \section{Timed Interrupts For Scheduling and Dispatching} \section{Simple Stack Allocation Scheme} \section{Risk Of Stack-Overflow} % TODO: The compiler doesn't check for stack overflows. % TODO: Describe possible implementation. % Parameters: % Stack limit for each function: user defined constant, % Stack size for each function: calculated, % Call-Tree: calculated,