Linux kernel userspace modules
Linux kernel userspace modules
diplomová práce (OBHÁJENO)
![Náhled dokumentu](/bitstream/handle/20.500.11956/17231/thumbnail.png?sequence=7&isAllowed=y)
Zobrazit/ otevřít
Trvalý odkaz
http://hdl.handle.net/20.500.11956/17231Identifikátory
SIS: 46276
Kolekce
- Kvalifikační práce [11264]
Autor
Vedoucí práce
Oponent práce
Tůma, Petr
Fakulta / součást
Matematicko-fyzikální fakulta
Obor
Softwarové systémy
Katedra / ústav / klinika
Katedra softwarového inženýrství
Datum obhajoby
24. 9. 2008
Nakladatel
Univerzita Karlova, Matematicko-fyzikální fakultaJazyk
Angličtina
Známka
Výborně
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.