magistrsko delo
Povzetek
Pomnilnik je kljub uvedbi pomnilniške hierarhije še vedno najpočasnejši del računalniške arhitekture, zato je upravljanje z njim ključnega pomena pri hitrosti izvajanja programov. V zadnjih letih se predvsem na področju sistemskega programiranja vedno bolj uveljavlja programski jezik Rust, ki za čiščenje pomnilnika uporablja princip lastništva in izposoje, s katerima zna med prevajanjem zagotoviti predvidljivo in učinkovito sproščanje pomnilnika. V obsegu magistrskega dela nas zanima, ali je mogoče princip lastništva implementirati v len funkcijski programski jezik STG, ki se uporablja pri prevajanju jezika Haskell. V magistrskem delu implementiramo simulator STG stroja, v katerega dodamo analizo lastništva. Pri tem se izkaže, da s tem zelo omejimo delovanje jezika, saj onemogočimo deljenje objektov. Predstavimo dve rešitvi: globoko kloniranje objektov, za katerega se izkaže, da je zelo časovno in prostorsko potratno, in model lastništva, ki zahteva analizo premikov in izposoj. A izkaže se, da analize izposoj ni mogoče implementirati brez uvedbe bodisi dodatnih informacij o izračunanosti objektov bodisi neke oblike neučakanosti v len programski jezik.
Ključne besede
prevajalnik;nestroga semantika;len izračun;upravljanje s pomnilnikom;avtomatični čistilec pomnilnika;lastništvo objektov;magisteriji;
Podatki
Jezik: |
Slovenski jezik |
Leto izida: |
2024 |
Tipologija: |
2.09 - Magistrsko delo |
Organizacija: |
UL FRI - Fakulteta za računalništvo in informatiko |
Založnik: |
[N. Bizjak] |
UDK: |
004.3(043.2) |
COBISS: |
210384387
|
Št. ogledov: |
74 |
Št. prenosov: |
19 |
Ocena: |
0 (0 glasov) |
Metapodatki: |
|
Ostali podatki
Sekundarni jezik: |
Angleški jezik |
Sekundarni naslov: |
Ownership model instead of garbage collection during lazy evaluation |
Sekundarni povzetek: |
Despite the introduction of memory hierarchy, memory still remains the slowest part of computer architecture, making its management crucial for program execution speed. In recent years, the Rust programming language has been gaining prominence, particularly in the field of systems programming, due to its use of ownership and borrowing models in memory management. This master thesis explores whether the ownership model can be implemented in the lazy functional programming language STG, which is used in the compilation of Haskell. We implement a simulator for the STG machine with ownership analysis. However, we find that this approach severely restricts the language’s functionality, as it prevents object sharing. We investigate two solutions: deep cloning of objects and a borrowing model. The former has previously been proven to be very time- and space-consuming, while the latter, as we demonstrate, cannot be implemented without additional information about object evaluation or introducing some form of eager evaluation. |
Sekundarne ključne besede: |
compiler;non-strict semantics;lazy evaluation;memory management;garbage collection;ownership model;computer science;master's degree;Pomnilniki;Računalništvo;Univerzitetna in visokošolska dela; |
Vrsta dela (COBISS): |
Magistrsko delo/naloga |
Študijski program: |
1000471 |
Konec prepovedi (OpenAIRE): |
1970-01-01 |
Komentar na gradivo: |
Univ. v Ljubljani, Fak. za računalništvo in informatiko |
Strani: |
1 spletni vir (1 datoteka PDF (88 str.)) |
ID: |
25142698 |