Linux kernel userspace modules
Linux kernel userspace modules
diploma thesis (DEFENDED)
View/ Open
Permanent link
http://hdl.handle.net/20.500.11956/17231Identifiers
Study Information System: 46276
Collections
- Kvalifikační práce [11242]
Author
Advisor
Referee
Tůma, Petr
Faculty / Institute
Faculty of Mathematics and Physics
Discipline
Software systems
Department
Department of Software Engineering
Date of defense
24. 9. 2008
Publisher
Univerzita Karlova, Matematicko-fyzikální fakultaLanguage
English
Grade
Excellent
Tato práce navrhuje způsob implementace Linuxových ovladačů jakožto aplikací v uživatelském prostoru. Definice pevného rozhraní umožňujícího přístup k funkcím a strukturám jádra operačního systému byla v úvodní analýze zamítnuta z důvodu malé flexibility. Pokud aplikace vyžadovala funkcionalitu, která nebyla rozhraním poskytována, aplikace byla nucena implementovat vlastní modul jádra operačního systému pro její zpřístupnění. Navrhované řešení umožňuje dynamickou tvorbu rozhraní dle požadavků aplikace. Definice rozhraní je uložena v binární podobě (kódu), která je dynamicky zavedena do jádra operačního sytému. V kódu je také uložena definice funkcí, které se při zavedení začlení do jádra. Tyto funkce pak mohou být volány z ostatních funkcí jádra a realizovat například obsluhu přerušení. Formát kódu je nezávislý na architektuře počítače i na konfiguraci jádra operačního systému a je snadno přenositelný. Navržené řešení umožňuje tvorbu ovladačů operačního systému Linux, které jsou implementovány jako uživatelské aplikace, aniž by ke své funkci vyžadovaly vlastní modul Linuxového jádra.
This thesis proposes and implements a new method of implementing Linux kernel drivers in userspace applications - userspace drivers. Instead of proposing fixed interface for accessing kernel functionality from userspace application and using dedicated kernel module to implement functionality not accessible via the interface, proposed method allows applications to define custom interfaces to the kernel. The interface is defined in special bytecode that is loaded into the kernel. The bytecode also provides functions that can be called from the kernel and that work even in atomic context (interrupt handlers, etc.). The bytecode is architecture and kernel configuration independent. The proposed method makes it possible to develop kernel drivers implemented in userspace applications without the need of dedicated kernel module.