Syscall emulation support in HelenOS
Emulace syscallů v HelenOSu
diplomová práce (OBHÁJENO)
Zobrazit/ otevřít
Trvalý odkaz
http://hdl.handle.net/20.500.11956/148818Identifikátory
SIS: 235328
Kolekce
- Kvalifikační práce [11217]
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 distribuovaných a spolehlivých systémů
Datum obhajoby
13. 9. 2021
Nakladatel
Univerzita Karlova, Matematicko-fyzikální fakultaJazyk
Angličtina
Známka
Výborně
Klíčová slova (česky)
syscall emulation|HelenOS|POSIXKlíčová slova (anglicky)
syscall emulation|HelenOS|POSIXExistují dva hlavní způsoby jak na jednom operačním systému spustit program určený pro jiný operační systém. Jedním z nich je modifikace samot- ného softwaru či jeho části pro cílové API. Druhý staví na poskytnutí vrstvy kompatibility transparentní z pohledu aplikace, tak aby aplikace nemusela být modifikována. První zmíněné již HelenOS umí, druhé realizujeme v této práci. Práce obsahuje popis binárního rozhraní kernelu a analýzu existujících řešení na Linuxu, Windowsu a dalších systémech. Zároveň popisuje imple- mentaci, která transparentně emuluje syscally. Emulace je implementovaná v userspace, s vyjímkou malé "trampolíny" v kernelu, a běží v kontextu emulo- vané aplikace. Výsledek umožňuje spouštění řady Linuxových utilit včetně GCC na platformě x86_64 v systému HelenOS. 1
There are two main options for running a program intended for one oper- ating system on a different one. We can modify the program to use the API of the new OS. Alternatively, we can provide a compatibility layer in the new OS, transparent to the program, without changing the application. HelenOS ecosystem already allows the first. This thesis focuses on supporting the lat- ter. This thesis describes the kernel binary interface and analyses existing solutions on Linux, Windows, and specialised systems. Then we describe our prototype that transparently traps syscalls and emulates them. The emula- tion is implemented fully in userspace (except for a small kernel trampoline), and its code is executed in the context of the original application. The result allows running some of the unmodified Linux programs (focusing on GCC toolchain) on the x86_64 instance of the HelenOS system. 1