Return to search

Safe Kernel Programming with Rust / Säker programmering i kärnan med Rust

Writing bug free computer code is a challenging task in a low-level language like C. While C compilers are getting better and better at detecting possible bugs, they still have a long way to go. For application programming we have higher level languages that abstract away details in memory handling and concurrent programming. However, a lot of an operating system's source code is still written in C and the kernel is exclusively written in C. How can we make writing kernel code safer? What are the performance penalties we have to pay for writing safe code? In this thesis, we will answer these questions using the Rust programming language. A Rust Kernel Programming Interface is designed and implemented, and a network device driver is then ported to Rust. The Rust code is analyzed to determine the safeness and the two implementations are benchmarked for performance and compared to each other. It is shown that a kernel device driver can be written entirely in safe Rust code, but the interface layer require some unsafe code. Measurements show unexpected minor improvements to performance with Rust. / Att skriva buggfri kod i ett lågnivåspråk som C är väldigt svårt. C-kompilatorer blir bättre och bättre på att upptäcka buggar men är ännu långt ifrån att kunna garantera buggfri kod. För applikationsprogrammering finns det tillgängligt olika högnivåspråk som abstrakterar bort den manuella minneshanteringen och hjälper med trådsäker programmering. Dock fortfarande så är större delar av operativsystemet och dess kärna är endast skriven i C. Hur kan vi göra programmering i kärnan säkrare? Vad är prestandakonsekvenserna av att använda ett säkrare språk? I denna uppsats ska vi försöka svara på dessa frågor genom att använda språket Rust. Ett programmeringsgränssnitt i Rust är implementerat i kärnan och en nätverksdrivrutin är portad till Rust. Källkoden skriven i Rust är analyserad för att bedömma säkerheten samt prestandan är jämförd mellan C och Rust implementationerna. Det är bevisat att vi kan skriva en drivrutin i enbart säker Rust om vi kan lita på några osäkra funktioner i gränssnittet. Mätningar visar lite bättre prestanda i Rust.

Identiferoai:union.ndltd.org:UPSALLA1/oai:DiVA.org:kth-233255
Date January 2018
CreatorsLundberg, Johannes
PublisherKTH, Programvaruteknik och datorsystem, SCS
Source SetsDiVA Archive at Upsalla University
LanguageEnglish
Detected LanguageSwedish
TypeStudent thesis, info:eu-repo/semantics/bachelorThesis, text
Formatapplication/pdf
Rightsinfo:eu-repo/semantics/openAccess
RelationTRITA-EECS-EX ; 2018:503

Page generated in 0.0022 seconds