VMA merging in Linux
Spojování VMA regionů v operačním systému Linux
diploma thesis (DEFENDED)

View/ Open
Permanent link
http://hdl.handle.net/20.500.11956/176288Identifiers
Study Information System: 233551
Collections
- Kvalifikační práce [11322]
Author
Advisor
Consultant
Tůma, Petr
Referee
Bulej, Lubomír
Faculty / Institute
Faculty of Mathematics and Physics
Discipline
Software Systems
Department
Department of Distributed and Dependable Systems
Date of defense
13. 9. 2022
Publisher
Univerzita Karlova, Matematicko-fyzikální fakultaLanguage
English
Grade
Excellent
Keywords (Czech)
Linux|kernel|virtual memory|CKeywords (English)
Linux|kernel|virtual memory|CTato práce se zaobírá se správou virtuální paměti v Linuxovém ker- nelu. Soubory nebo zařízení mohou být mapována do virtuální paměti pomocí systémového volání mmap(), které je také schopné vytvořit takzvané anonymní mapování. Ty nic nemapují a slouží pouze jako metoda alokace paměti, která může specifikovat ochranu paměti a příznaky pro vytvořenou anonymní oblast virtuální paměti (VMA). Mapování lze sloučit nebo rozdělit v závislosti na jeho příznacích, ochraně paměti, umístění ve virtuální paměti a dalších parametrech. Nicméně v některých případech, i když dvě VMA mají prakticky identické parametry, nemůžou být úspěšně sloučeny kvůli omezení implementace. Tato práce se zaměřuje na anonymní VMA a jejich parametry page offset a anon vma, které v některých případech brání sloučení v současném mainline kernelu. Je demonstrováno, že ve většině případů lze s přiměřeným úsilím odstranit překážky a dojde k sloučení. vi
This thesis deals with virtual memory management in the Linux kernel. Files or devices can be mapped into virtual memory using the mmap() sys- tem call, which is also capable of creating so-called anonymous mappings. Those do not map anything and serve only as a memory allocation method that can specify memory protection and flags for the created anonymous virtual memory area (VMA). A mapping can be merged or split depending on its flags, memory protection, location in the virtual memory and other parameters. However, in some cases even when two VMAs have practically identical parameters, they may not merge successfully because of implementation limitations. This thesis con- centrates on anonymous VMAs and their page offset and anon vma parameters, which in some cases prevent a merge in the current mainline kernel. It is demon- strated that in most of the cases with reasonable amount of effort the obstacles can be removed and the merges happen. v