Project Details
Projekt Print View

Flashix II: Incremental verification of non-local refinements

Subject Area Software Engineering and Programming Languages
Term from 2010 to 2021
Project identifier Deutsche Forschungsgemeinschaft (DFG) - Project number 175408244
 
Final Report Year 2020

Final Report Abstract

Ausgangspunkt des Flashix-Gesamtprojekts war die zunehmende Verbreitung von Flash-Speichern, die sowohl in Consumer-Geräten (PCs, Tablets etc.) als auch in sicherheitskritischen, eingebetteten Systemen immer mehr eingesetzt werden. Im Rahmen von Flashix I wurde ein POSIX-konformes Dateisystem für Flash-Speicher entwickelt, das die spezielle Schreibcharakteristik von Flash-Speicher effizient ausnutzt. Es besteht aus 10 sequenziell programmierten Komponenten, die eine Verfeinerungshierarchie bilden. Es wurden Konzepte entwickelt, mit denen sich die Verifikation von funktionaler Korrektheit und Crash-Sicherheit (Stromausfälle führen zu einem konsistenten Dateisystem, mit klar definiertem Effekt) auf den Nachweis von Beweisverpflichtungen für einzelne Komponenten reduzieren ließ. Diese wurden mit dem interaktiven Theorembeweiser KIV generiert und interaktiv verifiziert. In Flashix II haben wir erfolgreich ein Konzept zur Modellierung und Verifikation entwickelt, das es ermöglicht, verschiedene neue effizienzkritische Aspekte inkrementell durch Modifikation der Verfeinerungshierarchie (horizontal) hinzuzufügen. Das Konzept der nicht-lokalen Verfeinerung ermöglicht es, sich bei der Verifikation auf die neuen Aspekte zu konzentrieren. Die Beweise für die alten Komponenten werden dabei nicht ungültig und können wiederverwendet werden. Die hinzugefügten Aspekte waren: 1) Nebenläufigkeit der Toplevel Dateisystem-Aufrufe. 2) Nebenläufige Hintergrundprozesse für Wear Leveling und Garbage Collection (erforderlich wegen der Charakteristik von Flash-Speicher) 3) Reihenfolgetreue Caches, die den Inhalt auf die Größe einer Seite (page) puffern, so dass kein unnötiger Speicherverschnitt entsteht. 4) Caches, die den Inhalt von Dateien puffern, so dass mehrfaches Schreiben einer Datei nur zu einer Modifikation des Flash-Speichers führt. Die nicht-lokale Verfeinerungstheorie für Nebenläufigkeit und Caching ist sehr generisch und kann auf beliebige Verfeinerungshierarchien angewandt werden. Für Nebenläufigkeit wurde Ownership verwendet, um Nebenläufigkeit an Schnittstellen so einzuschränken, dass Linearisierbarkeit gezeigt werden kann. Für Caches ergeben sich jeweils unterschiedliche Definitionen des Effekts von Crashes. Die Erweiterungen führen alle zu zusätzlichen Beweisverpflichtungen, für Nebenläufigkeit wurde eine Beweistechnik entwickelt, die Rely-Guarantee-Beweise mit Reduktion (nach Lipton) kombiniert. Alle Beweisverpflichtungen werden von KIV generiert, und konnten für die Fallstudie verifiziert werden. Insgesamt haben wir das erste voll verifizierte, realistische Dateisystem für Flash-Speicher bereitgestellt. Es umfasst 18k Zeilen verifizierten Codes, und entspricht dem aktuellen methodischen und technologischen Stand bei Flash-Dateisystemen. Es kann daher als Referenz für zukünftige Entwicklungen dienen.

Publications

 
 

Additional Information

Textvergrößerung und Kontrastanpassung