Enhetsdrivrutiner är den enskilt största bidragsgivaren till operativsystemets källkod med över 5 miljoner kodrader i Linuxkärnan, och orsakar betydande komplexitet, fel och utvecklingskostnader. Under de senaste åren har det varit mycket forskning som syftar till att förbättra tillförlitligheten och förenkla förarnas utveckling. Man vet dock inte mycket om vad som utgör denna enorma kodsamling utöver den lilla uppsättning av förare som används för forskning. I denna uppsats studerar vi källkoden för Linuxdrivrutiner för att förstå vad drivrutiner faktiskt gör, hur aktuell forskning gäller för dem och vilka möjligheter som finns för framtida forskning. Vi avgör om antaganden som gjorts av förarforskning, till exempel att alla förare tillhör en klass, verkligen är sanna. Vi analyserar också förarkod och abstractions för att avgöra om förare kan dra nytta av kodomorganisation eller hårdvarutrender. Vi utvecklar en uppsättning statiska analysverktyg för att analysera förarkod över olika axlar. I vår studie tar vi i stort sett upp tre aspekter av förarkoden (i) vilka är egenskaperna hos förarkodens funktionalitet och hur tillämplig är förarforskningen för alla förare, (ii) hur interagerar förarna med kärnan, enheterna och bussarna, och (iii) finns det likheter som kan abstrakteras in i biblioteken för att minska förarens storlek och komplexitet? Vi anser att många antaganden som gjorts av förarforskningen inte gäller alla förare. Minst 44 % av förarna har kod som inte fångas av en klassdefinition, 28 % av förarna stöder mer än en enhet per förare, och 15 % av förarna gör betydande beräkningar av data. Från förarinteraktionsstudien finner vi att USB-bussen erbjuder ett effektivt bussgränssnitt med betydande standardiserad kod och grovkornig åtkomst, perfekt för att köra förare isolerat. Vi finner också att förare för olika bussar och klasser har mycket varierande nivåer av interaktion mellan enheter, vilket tyder på att kostnaden för isolering kommer att variera beroende på klass. Slutligen, från vår studie av förarens likhet, finner vi att 8 % av alla förarkoder i stort sett liknar koder på andra håll och kan tas bort med nya abstraktioner eller bibliotek.
Kadav och Swift REF studerade den effektiva API-exporten av Linuxkärnan till enhetsdrivrutiner, samt enhetsdrivrutinernas interaktion med Linux-kompletterande till vår studie av hur program interagerar med kärnan eller kärnbiblioteken.
Understanding modern device drivers
{'venue': 'ASPLOS XVII', 'journal': None, 'mag_field_of_study': ['Computer Science']}