Laiksakritības vadības modeļi JVM platformas programmēšanas valodās
Author
Mieriņš, Mārtiņš
Co-author
Latvijas Universitāte. Datorikas fakultāte
Advisor
Straujums, Uldis
Date
2015Metadata
Show full item recordAbstract
Programmētājam izstrādājot lietotnes dažkārt nākas tajās realizēt skaitļošanas procesus, kuri notiek vienlaicīgi, t.i., laiksakritīgi. Šāda nepieciešamība kļuvusi vēl aktuālāka līdz ar daudzkodolu centrālo procesoru izplatību. Lai varētu pilnā apjomā izmantot daudzos kodolus uz tiem vienlaicīgi jādarbina kādas lietotnes daļas. Lai to sasniegtu jāizmanto tāda vai citāda veida laiksakritīgas programmēšanas veids, jo programmējot standarta paņēmieniem sasniedzama tikai laiksecīga programmas izpilde. Rodas jautājums par tāda vai citāda veida laiksakritības vadības modeļa izmantošanu, kas ļauj kontrolēt, kādā veidā laiksakritīgas lietotnes daļas izmanto datora resursus un mijiedarbojas savā starpā.
Bakalaura darbā pētīti laiksakritības vadības modeļi, kas sastopami dažās programmēšanas valodās, kuras darbojas uz Java virtuālās mašīnās, JVM platformas. Tiek apskatīts slēdzenes tipa modelis Java valodā, aktieru modelis valodā Scala un transakcionālās atmiņas vadības modelis valodā Clojure. Tāpat pētījuma ietvaros izveidotas divas dažādas viena uzdevuma versijas, izmantojot divus atšķirīgus laiksakritības modeļus.
Autors pētījuma rezultātā nonāk pie secinājuma, ka lēmums par izmantojamo laiksakritības vadības modeli drīzāk jāizdara balstoties nevis uz paša vadības modeļa pozitīvajām un negatīvajām īpašībām, bet gan balstoties uz konkrētā pielietojuma apgabala un konkrētajā programmatūras izstrādes projektā izvirzītajām prioritātēm. Programmers now and then are required to develop software that operate on multiple things at the same time, i..e., concurrently. The need for concurrent software has recently become even more important due to widespread availability of multicore central processors. To make full use of the many CPU cores, one has to run on them application code concurrently. To make this happen, concurrent programming has to be employed because by using standard programming approach only sequential execution of a program can be achieved. Concurrent programming drives the question of concurrency control which is required to control use of hardware resources and interaction between concurrent parts of application.
This bachelor paper investigates concurrency control models in scope of some languages to be found running on Java virtual machine, JVM platform. In detail lock based model in Java, actor model in Scala and software transactional model in Clojure are investigated. Also during the research two practical applications showcasing two different concurrency control models are developed.
Author comes to conlcusion that choice of concurrency control model has to based rather on properties and priorities of software development project instead of merely judging positive and negatives aspects of a specific concurrency control model itself.