Kredit:Pixabay/CC0 Public Domain
Ett operativsystems kärna fungerar som översättaren mellan användare och maskin. För att förbättra tillförlitligheten hos en kärna kan utvecklare isolera operativsystemets enhetsdrivrutiner och förhindra att ett fel i en komponent påverkar andra komponenter. Isolering kräver dock opraktiska mängder mänsklig ansträngning.
Ett team av forskare, ledda av G. Gary Tan och Trent Jaeger, professorer i datavetenskap och teknik vid Penn State, satte sig för att utveckla ett ramverk som skulle kunna automatisera och minska mängden manuellt arbete som behövs för isolering av drivrutiner i närvaro av utmanande kärnmönster.
Forskarna presenterade sitt ramverk vid det 16:e USENIX Symposium on Operating Systems Design and Implementation (OSDI '22), som ägde rum 11–13 juli i Carlsbad, Kalifornien. OSDI är en ledande konferens inom operativsystemforskning och samlar yrkesverksamma från akademisk och industriell bakgrund för att diskutera design, implementering och implikationer av systemprogramvara, enligt sin webbplats.
Operativsystemets kärna styr och koordinerar all hårdvara och mjukvara i datorn. Enhetsdrivrutiner tillåter kärnan att interagera med hårdvara utan att känna till komponentens detaljer. Till exempel, när en användare styr sin dator att skriva ut ett dokument, anropar kärnan vissa gränssnittsfunktioner som tillhandahålls av en skrivardrivrutin, som bearbetar data och skickar jobbet till skrivaren.
Enligt Tan, för att effektivt isolera drivrutiner och upprätthålla kärn-drivrutinkommunikation, behövde utvecklare inspektera det stora och komplexa kommunikationsgränssnittet mellan en drivrutin och kärnan och bestämma vilken data som behövde synkroniseras genom att undersöka alla interaktioner mellan drivrutinen och kärna. De behövde också hantera utmanande synkroniseringsmönster som datasamtidighet, skriva tusentals rader kod för att hålla verksamheten smidig.
"Isolering är en effektiv teknik för att förbättra tillförlitligheten i programvarusystem, som kärnan, men att förlita sig på mänskliga ansträngningar för att isolera drivrutiner är orealistiskt, så vi satte oss för att utveckla ett ramverk för att automatisera processen," sa Tan. "Med isolering begränsas fel i en komponent inom dess egen domän; buggar i en komponent kan inte direkt påverka resten av systemet. Detta förbättrar tillförlitligheten avsevärt."
De utvecklade KSplit, ett tillvägagångssätt som både automatiskt kan analysera det delade drivrutin-kärnans tillstånd och beräkna alla synkroniseringsbehov för just detta delade tillstånd. Programmet identifierar också områden som behöver manuellt ingripande, vilket minskar den manuella arbetsbelastningen till minimal kodning och datarangering.
"Före KSplit var processen arbetskrävande och risk för fel," sa Tan. "Med KSplit hanteras de flesta av dessa komplicerade isoleringsuppgifter automatiskt."
Forskarna utvärderade lösningen med 354 drivrutiner på nio delsystem i en Linuxkärna. För en komplex drivrutin krävde KSplit manuella uppdateringar av 53 av 2 476 rader kod, som genererades automatiskt gränssnittsspecifikationer, och 19 ytterligare ändringar av förarens kod. Det är mindre än 3 % av det manuella arbete som krävs utan KSplit.
"KSlit-analysen av de 354 drivrutinerna visar att en liknande del av manuellt arbete förväntas, vilket visar att KSplit är ett praktiskt verktyg för att automatisera nyckeluppgifter för att möjliggöra förarisolering," sa Jaeger. "Men ramverket fokuserar främst på att förbättra systemets tillförlitlighet. Vi planerar att utöka KSplit för att hårdna gränssnittet mellan kärnan och en drivrutin, med en säkerhetsgaranti för kärnan även i närvaro av en skadlig drivrutin."
Enligt Jaeger kan uppsättningen statiska analyser som tillhandahålls av KSplit, såsom beräkning av nödvändig data mellan olika systemdelar, utökas till programvara som kräver en exakt analys av dataåtkomstinformation, vilket belyser potentialen för att skydda mot avsiktliga säkerhetsintrång eller andra attacker . + Utforska vidare