Hårdvaruavbrott används ofta i världens kritiska mjukvarusystem för att stödja preventiva trådar, enhetsdrivrutiner, operativsystemkärnor och hypervisorer. Att hantera avbrott på rätt sätt är en viktig del av systemprogrammeringen på låg nivå. Tyvärr är avbrott också extremt svårt att resonera om: de dramatiskt ändra programkontrollflödet och komplicera invarianter i låg nivå samtidig kod (t.ex., genomförande av synkronisering primitiva). Befintliga formella verifieringstekniker-inklusive Hoare logik, maskinskrivna monteringsspråk, samtidig separation logik, och antagande-garantimetoden-har konsekvent ignorerat frågorna om avbrott; detta kraftigt begränsar tillämpligheten och kraften i dagens programverifieringssystem. I det här dokumentet presenterar vi en ny Hoare-logic-liknande ram för certifiering av systemprogram på låg nivå med både hårdvaruavbrott och förebyggande trådar. Vi visar att möjliggörande och inaktiverande avbrott kan formaliseras exakt med hjälp av enkla ägar-överföring semantik, och samma teknik sträcker sig också till den samtidiga inställningen. Genom att noggrant resonera om samspelet mellan avbrottshanterare, sammanhangsbyte och synkroniseringsbibliotek kan vi-för första gången-framgångsrikt certifiera en förebyggande trådimplementering och ett stort antal vanliga synkronisering primitiva. Vårt arbete ger en grund för resonemang om avbrottsbaserade kärnprogram och gör ett viktigt framsteg mot att bygga fullt certifierade operativsystemskärnor och hypervisorer.
I REF föreslås en Hoare-logic-baserad ram för att certifiera systemkod på låg nivå med avbrott och förebyggande uppgifter, men schemaläggaren och sammanhangsbyten utförs fortfarande med avbrott inaktiverade, och avbrytare kan inte avbrytas.
Certifying Low-Level Programs with Hardware Interrupts and Preemptive Threads
{'venue': 'Journal of Automated Reasoning', 'journal': 'Journal of Automated Reasoning', 'mag_field_of_study': ['Computer Science']}