Kredit:Pixabay/CC0 Public Domain
Et operativsystems kerne fungerer som oversætteren mellem bruger og maskine. For at forbedre pålideligheden af en kerne kan udviklere isolere styresystemets enhedsdrivere og forhindre, at en fejl i én komponent påvirker andre komponenter. Isolation kræver imidlertid upraktiske mængder af menneskelig indsats.
Et team af forskere, ledet af G. Gary Tan og Trent Jaeger, professorer i datalogi og teknik ved Penn State, satte sig for at udvikle en ramme, der kunne automatisere og reducere mængden af manuelt arbejde, der kræves til isolering af enhedsdrivere i nærværelse af udfordrende kernemønstre.
Forskerne præsenterede deres rammer på det 16. USENIX Symposium on Operating Systems Design and Implementation (OSDI '22), som fandt sted 11.-13. juli i Carlsbad, Californien. OSDI er en førende konference inden for operativsystemforskning og samler fagfolk fra akademisk og industriel baggrund for at diskutere design, implementering og implikationer af systemsoftware, ifølge dets hjemmeside.
Operativsystemets kerne styrer og koordinerer al hardware og software på computeren. Enhedsdrivere tillader kernen at interagere med hardware uden at kende komponentens detaljer. For eksempel, når en bruger dirigerer deres computer til at udskrive et dokument, aktiverer kernen visse grænsefladefunktioner leveret af en printerdriver, som behandler dataene og sender jobbet til printeren.
Ifølge Tan, for effektivt at isolere enhedsdrivere og opretholde kerne-driver-kommunikation, var udviklere nødt til at inspicere den store og komplekse kommunikationsgrænseflade mellem en driver og kernen og beslutte, hvilke data der skulle synkroniseres ved at undersøge alle interaktioner mellem driveren og kerne. De var også nødt til at håndtere udfordrende synkroniseringsmønstre som f.eks. datasamtidighed, skrive tusindvis af linjer kode for at holde driften jævn.
"Isolation er en effektiv teknik til at forbedre pålideligheden i softwaresystemer, såsom kernen, men at stole på menneskelig indsats for at isolere drivere er urealistisk, så vi satte os for at udvikle en ramme til at automatisere processen," sagde Tan. "Med isolation er fejl i én komponent begrænset inden for dens eget domæne; fejl i én komponent kan ikke direkte påvirke resten af systemet. Dette forbedrer pålideligheden markant."
De udviklede KSplit, en tilgang, der både automatisk kan analysere den delte driver-kernetilstand og beregne ethvert af synkroniseringsbehovene for netop denne delte tilstand. Programmet identificerer også områder, der kræver manuel indgriben, hvilket reducerer den manuelle arbejdsbyrde til minimal kodning og datamarshaling.
"Før KSplit var processen arbejdskrævende og udsat for fejl," sagde Tan. "Med KSplit håndteres de fleste af disse komplicerede isoleringsopgaver automatisk."
Forskerne evaluerede løsningen med 354 enhedsdrivere på ni undersystemer i en Linux-kerne. For en kompleks driver krævede KSplit manuelle opdateringer til 53 af 2.476 linjer kode, som var automatisk genererede grænsefladespecifikationer og 19 yderligere ændringer af driverens kode. Det er mindre end 3 % af det manuelle arbejde, der kræves uden KSplit.
"KSlit-analysen af de 354 drivere viser, at en tilsvarende del af manuelt arbejde forventes, hvilket viser, at KSplit er et praktisk værktøj til at automatisere nøgleopgaver for at muliggøre driverisolering," sagde Jaeger. "Rammen fokuserer dog hovedsageligt på at forbedre systemets pålidelighed. Vi planlægger at udvide KSplit for at hærde grænsefladen mellem kernen og en driver, med en sikkerhedsgaranti for kernen selv i nærvær af en ondsindet driver."
Ifølge Jaeger kan sættet af statiske analyser leveret af KSplit, såsom beregning af nødvendige data mellem forskellige systemdele, udvides til software, der kræver en præcis analyse af dataadgangsoplysninger, hvilket fremhæver potentialet for at beskytte mod forsætlige sikkerhedsbrud eller andre angreb . + Udforsk yderligere