Transformace designu ovladače

03 Jul 2:59 pm


Original: http://pages.cs.wisc.edu/~swift/projects/drivers.htmlMichael M. Swift

Přehled
Ovladače zařízení jsou hlavním zdrojem složitosti, nespolehlivost a náklady na moderních operačních systémech. Jako důkaz, řidiči představují pro většinu zhroucení systému: Microsoft uvádí, že 89% nehod Windows XP jsou způsobeny ovladače zařízení a ovladače pro Linux kód měl až sedmkrát bug hustotu jiného kódu jádra. Cílem tohoto výzkumu je zlepšit ovladače zařízení (1) snižuje složitost a náklady na provedení ovladačů zařízení, (2) zvýšení odolnosti proti chybám ovladačů zařízení, a (3) zlepšení výkonu ovladačů na moderní hardware a software architektury.

Řidič Statická analýza
Statická analýza poskytuje užitečnou techniku ​​pro pochopení a manipulaci velké skupiny kódu ovladače. Postavili jsme DriverSlicer nástroj, pomocí CIL, analyzovat a upravovat kód ovladače. Nástroj byl původně vyvinut jako součást microdriver projekt popsaný níže, ale od té doby je aplikován na dva další projekty.

Carburizer

Hardwarová zařízení mohou selhat, ale mnozí řidiči předpokládat, že ne. Když jsou konfrontováni s reálnými zařízeními, která dovádění, mohou být tyto předpoklady vedou ovladače nebo selháním systému. Takové chyby mohou být snadno detekovány pravidelných zátěžových testů, protože poruchy jsou vyvolány zařízení a není určeno pro zatížení. Postavili jsme Carburizer, s krycím nástroj pro manipulaci a související runtime, který zvyšuje spolehlivost systému v přítomnosti vadných zařízení. Carburizer analyzuje zdrojový kód ovladače najít místa, kde řidič nesprávně důvěřuje hardware chovat. Carburizer identifikován téměř 1000 těchto chyb v ovladačů pro Linux s falešně pozitivním záchytu méně než 8 procent. S pomocí stínových motorů oživení, může automaticky opravit Carburizer 840 těchto chyb bez zapojení programátoru.

Řidič studie

Studujeme zdrojový kód ovladačů pro Linux, aby pochopili, co řidiči vlastně dělat, jak se současný výzkum se na ně vztahuje, a jaké možnosti existují pro budoucí výzkum. Vyvíjíme sadu static-analytických nástrojů pro analýzu kódu ovladače v různých osách. Zjistili jsme, že mnohé domněnky vyjádřené řidiče výzkumu se nevztahují na všechny řidiče. Nejméně 44% řidičů má kód, který není zachycen definice třídy, 28% řidičů podporuje více než jedno zařízení na řidiče, a 15% řidičů do značné výpočet nad daty. Ze studie interakce řidiče, zjistíme, že sběrnici USB nabízí efektivní Rozhraní sběrnice s významným standardizovaného kódu a hrubozrnné přístup, který je ideální pro spouštění ovladačů v izolaci. Také zjistíte, že ovladače pro různé autobusy a třídy mají různorodé úrovně interakci s telefonem, což znamená, že náklady na izolaci se bude lišit podle třídy. Konečně, z naší studie řidiče podobnosti, zjistíme, 8% ze všech kódu ovladače je v podstatě shodné s kód jinde, a mohou být odstraněny s novými odběry nebo knihovny.

Microdrivery a DriverSlicer
Velkým problémem při psaní kódu jádra ovladače je mnoho unenforced pravidel musí jádrem. Některé příklady z Windows obsahují:

Funkce, které blok může být tzv. při vysokých úrovních priority nebo Zablokování může dojít.
Zámky si poskytují vzájemnou vyloučení nad určitou úrovní priority, ale ne níže. Například KeAcquireSpinLockForDpc synchronizuje všechny účastníky s výjimkou přerušení rutiny.
Provádění kódu na vysokou prioritu nesmí získat přístup stránkovatelné paměti, protože k výpadku stránky, nemůžeme být spokojeni.
Adresy prošel z aplikací jsou přístupné pouze při spuštění na niti z aplikace procesu, ale ne na závity jádra pracovníka, např. při časovače zpětného volání.

Kódování na úrovni uživatele zjednodušuje vývoj ovladačů, protože tato pravidla neplatí. Kromě toho existuje mnoho dalších nástrojů softwarového inženýrství a programovací jazyky k dispozici, že další pomoc programátorům.
Vyvinuli jsme nový hybridní přístup k budování ovladače, které poskytuje jak vysoký výkon a kompatibilitu. Spíše než vykonat veškeré ovladače kód na uživatelské úrovni, navrhujeme vyjmout kernel-level microdriver z existujícího kódu ovladače. Microdriver obsahuje pouze kód potřebný pro high-výkon a uspokojit požadavky OS. My převést zbývající kód na userdriver, který provádí v uživatelsky úrovně procesu. Sdílené údaje je zařazen a kopírovat mezi dvěma částmi na volání funkcí. Chcete-li zachovat kompatibilitu s existujícím kódem, vytvořili jsme DriverSlicer, nástroj pro semi-automaticky rozdelit řidičů.


Bez kofeinu Ovladače

Řidiči bez kofeinu trvá nejlepší úsilí přístupu k zjednodušení řidiče rozvoji což většina kód ovladače musí být napsán na úrovni uživatele v jiných jazycích než C kofeinu Ovladače pomíjí mnohé z výše uvedených problémů tím, že opustí kód, který je rozhodující pro výkon a kompatibilitu v jádře v C. Všechny ostatní kód můžete přejít na uživatelské úrovni a do jiného jazyka, můžeme použít Java pro naši implementaci, protože má bohatý nástroj podporu pro generování kódu, ale architektura nezávisí na žádné funkce Java. Architektura kofeinu poskytuje společný případu výkonu srovnatelného s kernel-pouze řidiči, ale spolehlivost a programovatelnost zlepšovat velké množství kódu ovladače mohou být psány v Javě na úrovni uživatele.


Zákoutí

Zákoutí je spolehlivost subsystém, který se snaží výrazně zvýšit spolehlivost OS izoluje OS od řidiče selhání. Zákoutí přístup je praktický: spíše než zaručuje absolutní odolnost proti chybám prostřednictvím nového (a neslučitelný) OS nebo ovladače architektury, naším cílem je, aby se zabránilo drtivou většinu řidiče způsobených nehod s malou nebo žádnou změnu stávající ovladače a systémový kód. K dosažení tohoto cíle, zákoutí izoluje řidičů do lehkých ochranných oblastí uvnitř prostoru jádra adresu, kde je hardware a software zabránit jim kazit jádra. Zákoutí také sleduje řidiče využití jaderných zdrojů urychlit automatické vyčištění během obnovy.
Stínové Ovladače
Rozšířili jsme zákoutí se stínem řidiče, aby získala od řidiče selhání. Stín řidič je jádro agent, který (1) se skrývá řidič selhání od svých klientů, včetně operačního systému a aplikací, a (2) transparentně obnoví ovladač zpět do funkčního stavu. Tímto způsobem, aplikace a operační systém neví, že ovladač selhal, a proto i nadále správně provést sami.
Podpora
Tato práce je podporována z prostředků National Science Foundation (NSF) poskytuje CNS-0915363 a 0745517 centrálního nervového systému a grant od společnosti Google.


Publikace

Novinka!
Asim Kadav, Matthew J. Renzelmann, Michael M. Swift. Jemného Fault Tolerance pomocí zařízení kontrolní body. V ASPLOS’13: Proceeedings z 18. Mezinárodní konference o architektonické Podpora programovacích jazyků a operačních systémů, Houston, Texas, březen 16 – 20 2013.
Matthew J. Renzelmann, Asim Kadav a Michael J. Swift. SymDrive: Zkušební Řidiči bez zařízení. V OSDI ’12: Sborník 12. sympozia o designu operačního systému a provádění, říjen 2012
Asim Kadav a Michael J. Swift. Pochopení moderních ovladačů zařízení, v ASPLOS ’12: Sborník 17. mezinárodní konference o architektonické Podpora programovacích jazyků a operačních systémů, březen 2012.
Asim Kadav, Matthew J. Renzelmann a Michael J. Swift. Tolerovat poruch hardwarového zařízení v softwaru. In Sborník sympozia o zásadách operačních systémech října 2009.
Microdrivery
Matthew J. Renzelmann a Michael J. Swift. Kofeinu: Stěhování ovladačů pro moderního jazyka. ve sborníku USENIX výroční konferenci, technické června 2009.
Vinod Ganapathy, Matthew Renzelmann, Arini Balakrishnan, Michael Swift a Somesh Jha. Návrh a implementace mikrodriverům ve sborníku 13. mezinárodní konference o architektonické Podpora programovacích jazyků a operačních systémů, Seattle, WA, březen 2008.
Vinod Ganapathy, Arini Balakrishnan, Michael M. Swift a Somesh Jha. Microdrivery: Nová architektura ovladačů zařízení ve sborníku z 11. semináře o žhavých témat Operační systémy San Diego, Kalifornie, května 2007.
Stínové Ovladače
Asim Kadav, Michael M. Swift. Migrace na zařízení s přímým přístupem. V operačním systému Review, 43 (3), červenec 2009.
Asim Kadav, Michael M. Swift. Migrace na zařízení s přímým přístupem. In Sborník semináře o I / O virtualizace (WIOV), prosinec 2008.
Michael M. Swift, Damien Martin-Guillerez, Muthukaruppan Annamalai, Brian N. Bershad a Henry M. Levy. Live Update pro ovladače zařízení, Univ. Wisconsin Computer Sciences zprávě Technické CS-TR-2008-1634, březen 2008.
Michael Swift, Muthukaruppan Annamalai, Brian N. Bershad, Henry M. Levy. Obnovení ovladačů zařízení při transakcích ACM v počítačových systémech, 24 (4), 11. 2006.
Michael Swift, Muthukaruppan Annamalai, Brian N. Bershad, Henry M. Levy. Obnovení ovladačů zařízení, v Proceedings of the 6th ACM / USENIX symposia na operačních systémech Návrh a implementace, San Francisco, CA, 12. 2004. Best Paper Award.
Zákoutí
Michael M. Swift. Device Driver Spolehlivost, kapitola v příručce výzkumu pokročilých operačních systémů a aplikací jádra: techniky a technologie, editoval Yair Waisman a Song Jiang, 2009.
Michael Swift. Zlepšení spolehlivosti systému komoditních operační, Ph.D. Práce, říjen 2005.
Michael Swift, Brian N. Bershad, a Henry M. Levy. Zlepšení spolehlivosti systému komoditních provozu, v transakcích ACM v počítačových systémech, 23 (1), únor 2005.
Michael Swift, Brian N. Bershad, a Henry M. Levy. Zlepšení spolehlivosti systému komoditních provozu, v Sborník 19. ACM symposium o operačních systémech zásadách, Bolton Landing, NY, 10. 2003. Best Paper Award.
Michael Swift, Steven Martin, Henry M. Levy, a Susan J. Eggers. Zákoutí: architektura pro spolehlivé ovladače zařízení, ve sborníku desáté ACM SIGOPS Evropského semináře, Saint-Emilion, Francie, září 2002.

Prezentace
Softwarová podpora pro lepší mluvit Driver Spolehlivý UMass, UT Austin, 2009-2010. (Pdf)
Kofeinu: Stěhování ovladačů na moderního jazyka diskuse na USENIX, června 2009. (Pdf)
Návrh a implementace mikrodriverům mluvit ASPLOS, březen 2008. (Pdf)
Zlepšení Reliabibility o komoditních systémů operačních přednášce na UIUC Úvahy ACM / projekce konference, říjen 2006. (Pdf)
Zlepšení Reliabibility komoditních zaměstnání operační systémy přednášce na různých místech v roce 2005 (pdf)
Ovladače zařízení pro obnovu mluvit OSDI 2004, prosince 2004. (Pdf)
Obnovení ovladačů nebo čiłtění zákoutí diskuse ve třídě UW CSE551: Postgraduální operační systémy (pdf)
Stínové Ovladače: Transparentní Recovery pro plakát Kernel Rozšíření na UW Affiliates průmyslových, únor 2004 (pdf)
Zlepšení spolehlivosti systému komoditních operační mluvit SOSP 2003, říjen 2003 (pdf)
Zákoutí plakát na UW Affiliates průmyslových, únor 2003 (pdf)
Zákoutí: architektura pro spolehlivé ovladače zařízení mluvit ACM SIGOPS Worksop, září 2002 (ppt)
Zákoutí: architektura pro spolehlivé ovladače zařízení mluvit UW sítí a systémů Retreat, v červnu 2002 (ppt)

Comments are closed