Enhetsdrivrutiner kör vanligen i kärnan för att uppnå hög prestanda och enkel åtkomst till kärntjänster. Detta sker dock till priset av minskad tillförlitlighet och ökade svårigheter i programplaneringen. Driver programmerare kan inte använda användarläge utvecklingsverktyg och måste istället använda besvärliga kärnverktyg. Fel i kärnans drivrutiner kan orsaka att hela operativsystemet kraschar. Drivrutiner i användarläge har länge setts som en lösning på detta problem, men lider av antingen dålig prestanda eller nya gränssnitt som kräver en omskrivning av befintliga drivrutiner. Detta dokument introducerar Microdrivers arkitektur som uppnår hög prestanda och kompatibilitet genom att lämna kritisk vägkod i kärnan och flytta resten av drivrutinskoden till en användarläge process. Detta gör det möjligt för datahanteringsoperationer som är kritiska för I/O-prestanda att köras med full hastighet, medan hanteringsoperationer som initiering och konfiguration körs med reducerad hastighet i användarnivå. För att uppnå kompatibilitet presenterar vi DriverSlicer, ett verktyg som delar upp befintliga kärndrivrutiner i en kärnkomponent och en användarkomponent med hjälp av ett litet antal programmerareanteckningar. Experiment visar att så mycket som 65% av drivrutinskoden kan tas bort från kärnan utan att påverka vanlig prestanda, och att endast 1-6 procent av koden kräver kommentarer.
Microdrivers REF förbättrar prestandan genom att dela upp en drivrutin i en kärna och en användarkomponent med hjälp av programmeranteckningar, men de isolerar inte kärnans komponent.
The design and implementation of microdrivers
{'venue': 'ASPLOS', 'journal': None, 'mag_field_of_study': ['Computer Science']}