A lightweight containerization tool for evaluation of programming assignments
Odlehčený kontejnerizační nástroj pro hodnocení programovacích úloh
bakalářská práce (OBHÁJENO)
Zobrazit/ otevřít
Trvalý odkaz
http://hdl.handle.net/20.500.11956/202671Identifikátory
SIS: 282336
Kolekce
- Kvalifikační práce [11978]
Autor
Vedoucí práce
Oponent práce
Parízek, Pavel
Fakulta / součást
Matematicko-fyzikální fakulta
Obor
Informatika se specializací Systémové programování
Katedra / ústav / klinika
Katedra softwarového inženýrství
Datum obhajoby
5. 9. 2025
Nakladatel
Univerzita Karlova, Matematicko-fyzikální fakultaJazyk
Angličtina
Známka
Výborně
Klíčová slova (česky)
automatizované vyhodnocování|Linux|kontejnery|C++Klíčová slova (anglicky)
automated evaluation|Linux|containers|C++Automatizované vyhodnocování programovacích úloh zahrnuje spouštění neznámého kódu, a proto vyžaduje ochranný mechanismus, který zajistí bezpečnost vyhodnocova- cího systému vůči škodlivému nebo chybovému chování testovaného programu. Některé úlohy navíc vyžadují omezení dostupných knihoven či služeb, nebo přesné měření využití systémových prostředků. Tyto požadavky se obvykle řeší pomocí kontejnerů, avšak běžně používané nástroje jako Docker či Podman nejsou pro tento účel dostatečně flexibilní a je- jich režie představuje vysokou zátěž pro systém. Cílem této práce je návrh a implementace odlehčeného nástroje, který zajistí potřebnou izolaci přímo, pomocí mechanizmů Name- spaces a Cgroups moderního Linuxového jádra. Vzhledem k neúplné dokumentaci těchto funkcí práce zahrnuje studium dostupných zdrojů a experimentální ověřování chování sys- tému. Výsledkem je nejen samotný nástroj, ale i hlubší pohled na aspekty kontejnerizace v Linuxu. Nástroj je navržen pro integraci do systému ReCodEx jako náhrada a rozšíření jeho stávajícího mechanismu izolace procesů.
Automated evaluation of programming assignments includes execution of code that is not trusted; therefore, we need a protective mechanism that protects the evaluating system from malicious or inadvertent actions of the program being evaluated. In ad- dition, some assignments may require restrictions on available libraries or services or precise measurement of resource utilization. Such requirements are typically solved with containers; however, the well-known mainstream options, like Podman and Docker, are not sufficiently flexible and lightweight for this purpose. The goal of this thesis is the implementation of a lightweight utility that provides the required isolation directly, using the Namespace and Cgroup services of modern Linux kernels. Since these services are not completely well documented, the thesis shall involve investigation of the available documentation and experiments; thus, the thesis shall also provide insights into the con- tainerization aspects of Linux. The utility shall be designed to work with ReCoDex, as a replacement and extension of its current process-isolation subsystem.
