Detta dokument beskriver ett tillvägagångssätt för att utforma, genomföra och formellt verifiera den funktionella korrektheten hos en OS-kärna, kallad Hyperkernel, med en hög grad av korrekturautomation och låg bevisbörda. Vi baserar konstruktionen av Hyperkernels gränssnitt på xv6, ett Unix-liknande undervisningsoperativsystem. Hyperkernel introducerar tre nyckelidéer för att uppnå korrekturautomation: det finitiserar kärngränssnittet för att undvika obundna slingor eller rekursion; det separerar kärn- och användaradressrymder för att förenkla resonemanget om virtuellt minne; och det utför verifiering på LLVM mellanliggande representationsnivå för att undvika modellering av komplicerade C-semantik. Vi har verifierat genomförandet av Hyperkernel med Z3 SMT lösare, kontrollera totalt 50 systemsamtal och andra fälla hanterare. Erfarenheten visar att Hyperkernel kan undvika fel liknande dem som finns i xv6, och att verifiering av Hyperkernel kan uppnås med en låg bevisbörda.
REF rapporterar tryckknappsverifieringen av en kärna med hjälp av z3 SMT-lösaren.
Hyperkernel: Push-Button Verification of an OS Kernel
{'venue': "SOSP '17", 'journal': None, 'mag_field_of_study': ['Computer Science']}